aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
3 hoursdocs: add Releasing procedure to CLAUDE.mdHEADmasterDanilo M.1-1/+40
Document the full version-cut flow (bump, changelog, man rebuild, tests, VM smoke-test before tagging, signed commit+tag, push to all three remotes, GitHub/forge Releases). Also point Installation at install.sh and fix the completion path to the underscore form. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 hoursrelease: v1.4.0 — RepoVer --list columnv1.4.0Danilo M.8-15/+188
Add a RepoVer column to --list showing the newest version built in PACKAGES_DIR (repo_version / repo_has_packages helpers). The column is auto opt-in: shown only when at least one package is built, hidden otherwise. It turns magenta when the built version lags the newer of the hint/.info version, a colour kept distinct from the green newer-source cell so the two comparisons don't blur. In a matched (yellow) row the RepoVer cell keeps its own colour. Tests T70-T74. Bump MKHINT_VERSION to 1.4.0 and cut the CHANGELOG section (also covering install.sh and the expanded dependency docs shipped since v1.3.1). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 hoursdocs: add install.sh, Dependencies/Requirements sectionsDanilo M.4-11/+115
Add install.sh: system install as root, user install (~/.local, XDG) as normal user, with a PATH warning and an uninstall subcommand. It detects the bash-completion dir (underscore vs hyphen). Expand the README Dependencies section (required vs optional) and point Installation at the script; add a REQUIREMENTS section to the man page. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
10 hoursrelease: v1.3.1 — nvtake timing fix, -V .info completion, NoDL columnv1.3.1Danilo M.3-3/+4
- fix: nvtake deferred to slackrepo confirm (no stuck oldver on interrupt) - feat: -V/--set-version completes from .info VERSION for --new - feat: NoDL column in --list Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
10 hoursfeat: add NoDL column to --listDanilo M.7-7/+54
-l now shows a NoDL column (✓ when the hint has NODOWNLOAD=yes) next to the existing DelReq column. Detected via grep -qi '^NODOWNLOAD=yes', padded with _pad_glyph for multibyte alignment. Tests T68/T69 cover populated and blank NoDL. Docs (CLAUDE.md, README, man page) updated and mkhint.1.gz rebuilt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
10 hoursfeat: complete -V from .info version for --newDanilo M.1-9/+18
The -V/--set-version completion suggested a version only when -f/--hintfile <pkg> was on the line (from the hint's VERSION). Extend it to also fire for -n/--new <pkg>, pulling VERSION from the SBo .info at REPO_DIR/<category>/<pkg>/<pkg>.info. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
10 hoursfix: defer nvtake to slackrepo confirmDanilo M.5-12/+26
nvchecker's oldver is now synced (nvtake) only when the slackrepo prompt is confirmed, per package, just before slackrepo runs. Moved out of the hint-rewrite step in --check and the version-accept step in --hintfile (both now route through run_slackrepo). Confirming slackrepo acknowledges the versions; a stopped/failed slackrepo can be rerun without nvchecker re-reporting already-committed versions. Fixes the stuck state where interrupting a run between hint-rewrite and slackrepo left oldver behind the hint, so nvchecker logged a phantom 'updated' line every subsequent --check. Tests T20/T23 answer Y to slackrepo so nvtake fires. Dead check_nvchecker_take flag removed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
11 hoursdocs: add backslash-continuation TODO for bundle-manifests loaderDanilo M.1-1/+2
Multi-line manifest entries with trailing \ silently break the one-line-per-entry loader (rest becomes \, submodule path %5C, 404). Track the fix; workaround is a one-lined openvino entry on the VM. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
11 hoursrelease: v1.3.0 — sha-mode bundle reconcile + submodule inventoryv1.3.0Danilo M.2-1/+19
Bump MKHINT_VERSION to 1.3.0, add CHANGELOG entry. Feature verified live on the buildsystem VM against openvino 2026.2.1: Job A reports all 8 bundled dep SHAs current, Job B roster shows 8 bundled + 19 ignored submodules, no drift. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 hoursdocs: sha-mode bundle reconcile + submodule inventory in CLAUDE.mdDanilo M.1-3/+34
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 hoursfeat: wire sha reconcile + inventory into --check/--forceDanilo M.2-3/+58
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 hoursfeat: submodule inventory roster (Job B, set-drift)Danilo M.2-0/+130
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 hoursfeat: sha-mode bundled-dep reconcile (Job A)Danilo M.2-3/+197
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 hoursfeat: github token + contents-API submodule sha helpersDanilo M.2-9/+108
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 hoursrefactor: split reconcile into url/sha dispatch, url logic unchangedDanilo M.1-2/+17
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 hoursrefactor: 3-field bundle manifest (pkg mode rest); url mode explicitDanilo M.2-16/+41
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 hoursdocs: implementation plan for SHA-mode bundle reconcileDanilo M.1-0/+872
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 hoursdocs: spec for SHA-mode bundle reconcile + submodule inventoryDanilo M.1-0/+308
Job A: SHA-drift reconcile for openvino-style bundles whose deps are git submodules pinned by commit SHA (no upstream deps.txt, off-tag pins). Manifest gains a 3-field <pkg> <mode> <rest> shape; new sha mode names each submodule path, compares hint SHA vs the contents-API SHA, rewrites + re-md5s drifted lines. neovim migrates to explicit url mode. Job B: full submodule inventory roster on bump or --force. Diffs .gitmodules across old/new refs, flags added/removed, marks the non-bundled submodules (ignored), raises ACTION on a bundled dep gone upstream. FYI only, never auto-edits the bundle set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 hoursfeat: --info version-compare row; fix -i completion; release v1.2.6v1.2.6Danilo M.8-19/+136
--info/-i now prints a version-compare row between the header and the README: SBo .info version vs the hint's, greening the higher side (< / >), yellow on equal (=), '(no hint)' when no hint carries a version, skipped when the .info has no version. Header stays pinned, version row scrolls with the README. Completion: -i now completes package names (was flag-only); package-name completion for -n/-i drops the broken -maxdepth 2 .info scan for a param-expansion sweep of REPO_DIR/*/*/ dirs, ~7s -> ~60ms. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 hoursdocs: spec for --info version-compare rowDanilo M.1-0/+59
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
33 hoursfix: newline before closing fence in nvchecker stanza echov1.2.5Danilo M.2-1/+4
The body branch used printf '%s' (no trailing newline) so the closing fence glued onto the last body line. Use printf '%s\n'. Regression test T16 asserts the fence sits on its own line. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 hoursdocs: mark v1.2.5 TODO items doneDanilo M.1-3/+3
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 hoursfeat: nvchecker autodetect expansion, -n stanza echo, --info/-i; release v1.2.5Danilo M.6-5/+42
Documents the Task 1-6 additions that shipped without doc updates: expanded nvchecker source autodetection (gitlab, bitbucket, gitea, codeberg, pagure, npm, gems, crates.io, cpan, hackage, packagist, cran, in addition to github and pypi), the fenced stanza echo on --new/-n, and the --info/-i command (category/program header plus paged README). Updates show_help, bash completion, mkhint.1.md (rebuilds mkhint.1.gz), CLAUDE.md, and CHANGELOG.md. Bumps MKHINT_VERSION to 1.2.5. No program logic changed; 224/224 tests still pass.
35 hoursfeat: --info/-i shows category/program header + READMEDanilo M.2-2/+115
35 hoursfeat: --info/-i arg parsing and mutual-exclusion guardDanilo M.1-0/+11
35 hoursfeat: expand nvchecker autodetect + echo stanza on -n/-CDanilo M.2-29/+91
35 hoursfeat: _extract_nvchecker_section reads one config blockDanilo M.2-0/+38
35 hoursfeat: _detect_nvchecker_source maps forge+registry hostsDanilo M.2-0/+106
36 hoursfeat: _registry_name_from_url helper for nvchecker autodetectDanilo M.2-0/+50
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 hoursdocs: implementation plan for nvchecker autodetect, -n stanza, --info/-iDanilo M.1-0/+840
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 hoursdocs: spec for nvchecker autodetect expansion, -n stanza output, --info/-iDanilo M.2-1/+282
Expand nvchecker source autodetection in add_nvchecker_section (the single global emitter used by --new and --check populate) to cover gitlab, bitbucket, gitea.com, codeberg, pagure, npm, gems, cratesio, cpan, hackage, packagist, cran, in addition to the existing github/pypi. Also spec the -n stanza echo and the --info/-i README viewer. Marks the v1.2.4 continuation-suppression TODO done. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 daysfeat: suppress continuation-URL prompt for manifest-listed pkgs; release v1.2.4v1.2.4Danilo M.6-15/+82
On a primary version bump of a manifest-listed package, mkhint used to prompt interactively for each extra DOWNLOAD (continuation) URL, then Phase 2 (reconcile_bundle_deps) rewrote those same lines from the upstream manifest — a pointless double-touch (13 prompts for neovim). update_hint_file now detects a listed package and threads a skip_cont flag through update_checksums -> _process_download_var, which leaves the continuation URLs for the manifest reconcile and prints a short notice instead of prompting. Non-listed packages prompt exactly as before. Also fixes a set -e abort: the manifest-lookup guard was written as `pkg_has_manifest ... && _skip_cont=1`, whose false result (non-listed package) killed the run right after the backup. Rewritten as an if. This would have broken every non-listed --hintfile -V update. Verified live on a non-listed multiline package (exploitdb). Tests: T-BM18 now asserts the listed-pkg suppression, T-BM25 guards against over-suppression (non-listed still prompts); the read -p prompt is invisible under piped stdin, so both assert on the always-echoed "line N (current)" header. 184 passed. Also defers the multi-file split TODO with a rationale and revisit triggers (extract only the bundled-dep block when the time comes). Bump MKHINT_VERSION and man title to 1.2.4, rebuild mkhint.1.gz. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 daysfix: skip bundled-dep apply prompt when nothing changed; release v1.2.3v1.2.3Danilo M.5-15/+60
After the version-aware reconcile, a --force run on an up-to-date bundle package still asked "Apply bundled-dep updates?" with nothing to apply. reconcile_bundle_deps report mode now signals whether there is anything to apply via its exit code: 2 = changes present, 0 = all current / no deps / fetch fail. The --check and --hintfile -V callers prompt only on exit 2. apply mode still returns 0. Adds T-BM24 (all-current → no prompt); 183 passed. Bump MKHINT_VERSION and man title to 1.2.3, rebuild mkhint.1.gz. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 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>
2 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>
3 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>
3 daysfeat: add --force flag (check-only, mutually exclusive elsewhere)Danilo M.2-1/+27
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 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>
3 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>
3 daysfeat: fetch_manifest + fake-wget manifest fixture supportDanilo M.2-8/+41
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 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>
3 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>
3 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>
3 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>