| Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
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>
|
|
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>
|
|
- 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>
|
|
-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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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>
|
|
--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>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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>
|
|
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>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Report-only at creation time; the .info version is kept, upstream
disagreement is flagged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Parse the pkg->url-template config and substitute {VERSION}.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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>
|