summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
3 daysfix: complete version-aware reconcile against real URL shapes; release v1.2.2v1.2.2Danilo M.7-31/+117
1.2.1 made the bundled-dep reconcile version-aware but _url_version mis-parsed several real-world URL shapes, so 1.2.1 was never correct in the field (found by running mkhint -C --force neovim against the live 0.12.4 hint). _url_version now derives the version by stripping the URL's own github repo name from the basename: - dep names containing digits/dashes (lua-compat-5.3) parse correctly instead of splitting the name as a version - a bare-tag basename with no name prefix is taken as the whole version, fixing package-rev suffixes (luv 1.52.1-0 was truncated to 0) - non-github and the shared neovim/deps blob host fall back to the trailing-version/sha heuristic _url_repo is lowercased so JuliaStrings/utf8proc matches juliastrings/utf8proc (github repos are case-insensitive); utf8proc had reported no-match and appeared in the manifest-only FYI. Verified against all 13 live neovim 0.12.4 bundled deps: all match and report current, no false change, a real bump still detected. Adds T-BM22 (one case per URL-shape class) and T-BM23 (case-insensitive repo match); T-BM17 unchanged. 182 passed. Bump MKHINT_VERSION and man title to 1.2.2, rebuild mkhint.1.gz. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 daysfix: version-aware bundled-dep reconcile; release v1.2.1v1.2.1Danilo M.7-17/+102
reconcile_bundle_deps flagged a dep as changed on raw URL-string inequality. Manifests serve bare-tag archive URLs (.../archive/v0.26.7.tar.gz) while hints use the SBo-fetched tree shape (.../archive/v0.26.7/tree-sitter-0.26.7.tar.gz) — same version, different path — so every dep was reported changed at a version that had not moved. Add _url_version to parse and normalize the version from a URL basename, and detect change by version rather than URL string. Only rewrite a line when the version actually differs. Change report now shows "name old-ver -> new-ver". Regression test T-BM17 pins the same-version, different-shape case as no change (180 passed). Bump MKHINT_VERSION and man title to 1.2.1, rebuild mkhint.1.gz. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 daysdocs: TODO v1.2.1 bug — reconcile change-detection must be version-awareDanilo M.1-0/+2
Real neovim 0.12.4 run flagged all 13 deps as changed because the manifest serves bare-tag archive URLs while the hint uses the SBo-fetched URL shape; same version, different path. Raw-URL-equality detection is wrong; compare upstream version/pin instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 daysfix: reconcile backup, versioned change report, no double reportv1.2.0Danilo M.3-9/+71
Review findings before v1.2.0 deploy: - apply mode now writes a .bak before mutating (parity with every other mutator; the --force recovery path had no rollback) - the changed-deps report shows old->new basenames so bumps are visible, not the version-stripped 'dep -> dep' - apply mode no longer re-prints the report (report/apply split) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 daysdocs: document bundled-dep reconcile + --force; release v1.2.0Danilo M.5-3/+58
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 daysfeat: --force completion + bundle-manifests.exampleDanilo M.2-1/+10
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 daysfeat: --hintfile -V reconciles bundled deps for listed packagesDanilo M.2-0/+49
Parity with --check: the update path runs Phase 2 (report + apply) after the primary bump. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 daysfix: primary manifest entry no longer flagged as missing in reconcile FYIDanilo M.2-0/+11
The bundled-dep FYI iterated all manifest URLs but only extra (index>=1) hint URLs were tracked as matched, so the manifest's primary entry was always reported as 'not in hint'. Seed the primary's manifest match (without reconciling index 0) so the FYI is accurate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: --check Phase 2 reconciles bundled deps for listed packagesDanilo M.2-34/+144
Runs after the primary bump; auto when the primary changed this run, otherwise only with --force. Report then per-package apply confirm. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: add --force flag (check-only, mutually exclusive elsewhere)Danilo M.2-1/+27
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: --new prints a manifest reconcile report for listed packagesDanilo M.2-0/+59
Report-only at creation time; the .info version is kept, upstream disagreement is flagged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: reconcile_bundle_deps core (report/apply)Danilo M.2-1/+149
Match each extra DOWNLOAD line to the manifest, rewrite changed lines and recompute their md5 in apply mode, report only in report mode, and print the manifest-only-deps FYI. Primary line untouched. Also guard the main "$@" call at the bottom of mkhint behind a BASH_SOURCE check so tests can source the whole script (needed to reach parse_multiline_var/build_multiline_value/download_file alongside the new function) without triggering the no-args CLI path, which previously called exit 1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: fetch_manifest + fake-wget manifest fixture supportDanilo M.2-8/+41
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: load_bundle_manifests + manifest_url_forDanilo M.2-0/+48
Parse the pkg->url-template config and substitute {VERSION}. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: match_dep_url maps a hint download line to a manifest URLDanilo M.2-0/+87
Repo-path match first, exact basename-stem fallback for blob hosts. Blob host repo (owner/deps) is excluded from repo-path matching so it resolves by stem. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: parse_manifest reads NAME_URL entries from a deps manifestDanilo M.2-0/+29
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfeat: add BUNDLE_MANIFEST_FILE config varDanilo M.2-0/+7
Opt-in per-package manifest for bundled-dep reconciliation. No behavior yet; wires the config default and the test-harness path patch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysdocs: add post-1.2.0 followups to TODODanilo M.1-1/+10
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysdocs: add TODO.md for future ideasDanilo M.1-0/+2
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysdocs: implementation plan for bundled-dep manifest updatesDanilo M.1-0/+1297
12 tasks (TDD): parser/matcher helpers, --new report hook, --check + --hintfile Phase 2 reconcile with --force gate, completion, docs, release v1.2.0, VM deploy. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysdocs: spec for manifest-driven bundled-dep updatesDanilo M.1-0/+286
Design for reconciling a bundle package's extra DOWNLOAD lines against an upstream deps manifest (neovim's cmake.deps/deps.txt). Opt-in per package via BUNDLE_MANIFEST_FILE, --check two-phase flow with a --force gate on the manifest reconcile, report-only on --new. Target v1.2.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 daysfix: bump dash-form dated URLs on version changev1.1.3Danilo M.5-3/+65
--hintfile -V and --new -V only substituted the packaged underscore form of the old version, so download URLs using the upstream dash form (dates like 2026-07-07, tags) kept pointing at the old tarball and their md5 went stale. Now both the underscore and dash variants of old->new are rewritten. exploitdb was the trigger case. Tests T74 (--hintfile) and T75 (--new) cover the dashed-URL bump. Release v1.1.3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 dayschore: release v1.1.2v1.1.2Danilo M.4-4/+22
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 dayschore: release v1.1.1v1.1.1Danilo M.4-3/+5
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: point slackrepo references to aclemons forkDanilo M.2-1/+3
David Spencer (idlemoor) abandoned slackrepo; Andrew Clemons now maintains it at github.com/aclemons/slackrepo. Update the CLAUDE.md link and add a README credit line naming both. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: changelog for man page and compact --helpDanilo M.1-0/+11
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: document man page install and compact --helpDanilo M.2-0/+23
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysfeat: compact --help, move reference to man pageDanilo M.2-23/+13
Trim show_help to a usage synopsis, the options list, the runtime paths, and a 'man mkhint' pointer. The usage examples, variable-order note, and exit-code table now live in the man page. Add T73 asserting --help exits 0 and points at the man page. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: build gzipped mkhint.1 man pageDanilo M.3-26/+27
Escape double-dashes in option names and drop the markdown link so pandoc's man output renders --flags and text correctly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: add mkhint.1 man page sourceDanilo M.1-0/+198
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: plan for man page + compact --helpDanilo M.1-0/+460
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: spec for man page + compact --helpDanilo M.1-0/+108
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysfeat: show config-file presence in --helpDanilo M.1-0/+1
Add a 'Config file:' line to the help output reporting whether $MKHINT_CONFIG is present and sourced or absent (defaults in use). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 dayschore: release v1.1.0v1.1.0Danilo M.2-2/+2
Bump MKHINT_VERSION to 1.1.0, close CHANGELOG [Unreleased] as [1.1.0]. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: config file and slackrepo build-vs-updateDanilo M.3-6/+33
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysfeat: completion sources ~/.config/mkhint/configDanilo M.1-1/+7
5 daystest: config file overrides PACKAGES_DIRDanilo M.1-0/+25
5 daysfeat: slackrepo build for new packages, update for existingDanilo M.2-11/+125
5 daystest: harness support for slackrepo stub and PACKAGES_DIRDanilo M.1-0/+23
5 daysdocs: implementation plan for config file + build-vs-updateDanilo M.1-0/+537
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 daysdocs: spec for config file + slackrepo update-vs-buildDanilo M.1-0/+180
Config file at ~/.config/mkhint/config sourced with baked-in defaults, moving REPO_DIR/HINT_DIR (and new PACKAGES_DIR) out of hardcoding in both mkhint and the completion script. --check/--hintfile pick `slackrepo build` for packages not yet in the repo, `update` for existing ones. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysdocs: add CHANGELOG, document SemVer and -V/--set-version renamev1.0.0Danilo M.3-27/+56
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysfeat: completion knows -V/--set-version, -v/--version terminalDanilo M.1-2/+2
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysdocs: show version in --help, rename version flag in help textDanilo M.1-8/+9
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysfeat!: -v/--version prints tool version; hint version moves to -V/--set-versionDanilo M.2-13/+48
BREAKING CHANGE: the hint-version flag is now -V/--set-version. -v/--version now prints the tool's own version and exits. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysdocs: implementation plan for semver adoptionDanilo M.1-0/+376
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysdocs: spec for semver adoptionDanilo M.1-0/+171
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysdocs: document -l directional color and DelReq columnDanilo M.2-2/+7
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysfeat: -l colors newer version cell green, adds DelReq columnDanilo M.2-10/+123
Equal versions keep the yellow row (and MATCHED_PKGS for -R). When versions differ, sort -V picks the newer side and only that cell is green. New DelReq column (before Created) shows a check when the hint has a populated DELREQUIRES. Tests T60-T64 added. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 daysdocs: implementation plan for -l color + DelReqDanilo M.1-0/+346
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>