-
-
Notifications
You must be signed in to change notification settings - Fork 64
Comparing changes
Open a pull request
base repository: jdx/hk
base: v1.44.1
head repository: jdx/hk
compare: v1.44.2
- 12 commits
- 32 files changed
- 4 contributors
Commits on Apr 24, 2026
-
fix(docs): stack banner message and link on mobile (#865)
## Summary - On narrow viewports the site banner rendered cramped: `flex-wrap: nowrap` forced the message onto two squeezed lines while the "Read more" link sat jammed against the text. - At `<=640px`, switch the banner to `flex-direction: column` so the message and link stack cleanly. Also shrink the font slightly, tighten line-height, add `text-wrap: balance` for even two-line breaks, and nudge the close button flush to the corner. Matches the identical fix going out to the mise and aube docs. ## Test plan - [ ] Visit hk.jdx.dev on a mobile device (or DevTools <=640px) after deploy and confirm the banner stacks cleanly. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk CSS-only change limited to the banner’s `@media (max-width: 640px)` styling. > > **Overview** > Adjusts `docs/.vitepress/theme/banner.css` to improve the banner on narrow viewports by switching to `flex-direction: column` with tighter mobile spacing and typography (`gap`, `font-size`, `line-height`, `text-wrap: balance`). > > Also nudges the close button position (`right`) on mobile to better align with the updated layout. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 2cce073. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
Configuration menu - View commit details
-
Copy full SHA for 12e790b - Browse repository at this point
Copy the full SHA 12e790bView commit details -
fix(docs): pin banner close button to top-right corner on mobile (#867)
## Summary Follow-up to #865. With `flex-direction: column` the mobile banner is now taller, and the base rule's `top: 50%; transform: translateY(-50%)` centering floats the × button in the vertical middle of the stacked content instead of in the top-right corner. Override `top` and `transform` inside the `<=640px` media query so the button pins flush to the corner. ## Test plan - [ ] Open hk.jdx.dev at a <=640px viewport, clear `localStorage['jdx-banner-dismissed']`, confirm the × button sits in the top-right corner rather than floating in the middle. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk CSS-only change scoped to the mobile banner close button positioning with no functional or data-impacting logic changes. > > **Overview** > Adjusts `docs/.vitepress/theme/banner.css` so that on `<=640px` viewports the banner close button no longer uses `top: 50%` + `translateY(-50%)` centering. > > Within the mobile media query, it explicitly sets `top: 0.25rem` and removes the transform to keep the × button pinned to the top-right corner when the banner stacks vertically. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit fbf8067. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
Configuration menu - View commit details
-
Copy full SHA for c744fe1 - Browse repository at this point
Copy the full SHA c744fe1View commit details -
chore(deps): bump communique 1.0.3 → 1.0.4 (#868)
## Summary Bumps the [communique](https://github.com/jdx/communique) CLI used in the release workflow from 1.0.3 to [1.0.4](https://github.com/jdx/communique/releases/tag/v1.0.4). 1.0.4 salvages partial `submit_release_notes` submissions at the retry limit instead of hard-failing with a generic `malformed N times` error, and replaces that error with a miette diagnostic that embeds the received JSON and lists the specific per-field failures. ## Test plan - [x] `mise.lock` updated via `mise up communique` 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk lockfile-only dependency bump; the only impact is the version/asset metadata for the `communique` CLI used in tooling. > > **Overview** > Updates `mise.lock` to bump the pinned `communique` CLI from `1.0.3` to `1.0.4`, including refreshed per-platform download URLs, checksums, and asset IDs. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit af9928c. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 1208c91 - Browse repository at this point
Copy the full SHA 1208c91View commit details
Commits on Apr 25, 2026
-
chore(deps): update anthropics/claude-code-action digest to 2da6cfa (#…
…869) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [anthropics/claude-code-action](https://redirect.github.com/anthropics/claude-code-action) ([changelog](https://redirect.github.com/anthropics/claude-code-action/compare/e58dfa55559035499a4982426bb73605e8b5ad8e..2da6cfae686f4d400300e440e0228b971388afed)) | action | digest | `e58dfa5` → `2da6cfa` | --- ### Configuration 📅 **Schedule**: (in timezone America/Chicago) - Branch creation - Only on Friday (`* * * * 5`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/jdx/hk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNDEuMyIsInVwZGF0ZWRJblZlciI6IjQzLjE0MS4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 7a3c02a - Browse repository at this point
Copy the full SHA 7a3c02aView commit details -
chore(deps): update anthropics/claude-code-action digest to 567fe95 (#…
…870) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [anthropics/claude-code-action](https://redirect.github.com/anthropics/claude-code-action) ([changelog](https://redirect.github.com/anthropics/claude-code-action/compare/2da6cfae686f4d400300e440e0228b971388afed..567fe954a4527e81f132d87d1bdbcc94f7737434)) | action | digest | `2da6cfa` → `567fe95` | --- ### Configuration 📅 **Schedule**: (in timezone America/Chicago) - Branch creation - Only on Friday (`* * * * 5`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/jdx/hk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNDEuMyIsInVwZGF0ZWRJblZlciI6IjQzLjE0MS4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 288fbf2 - Browse repository at this point
Copy the full SHA 288fbf2View commit details -
fix(ci): serialize docs lint step (#874)
## Summary - mark the docs lint step as exclusive so `mise run docs:build` does not race Cargo checks during `mise run lint` - fixes the macOS CI failure where `cargo-check` lost Cargo fingerprint files while docs generation was also compiling/running ## Validation - `mise run pkl:gen && pkl eval hk.pkl >/dev/null` _This PR was generated by Codex._ <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk config change that only affects hook/lint step scheduling; main risk is longer lint runtimes or unintended serialization if `exclusive` is misapplied. > > **Overview** > Marks the `docs` lint step in `hk.pkl` as `exclusive` so `mise run docs:build` runs serialized instead of concurrently with other lint steps. > > This prevents CI races (notably on macOS) where docs generation and Rust `cargo` checks contend for Cargo fingerprint/build artifacts during `mise run lint`. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 280228f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
Configuration menu - View commit details
-
Copy full SHA for ed73dc2 - Browse repository at this point
Copy the full SHA ed73dc2View commit details -
docs(site): show release version and github stars (#872)
## Summary - read the latest site release label from `Cargo.toml` and show it as the releases nav item - add a GitHub star counter to the VitePress social nav, matching the existing aube/mise pattern ## Validation - `npm run docs:build` in `/home/jdx/src/hk-release-version/docs` _Note: local git hooks were skipped for commit/push because the fresh worktree hook config could not evaluate `pkl/Builtins.pkl`; the targeted docs build passed._ _This PR was generated by Codex._ <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk docs-only changes, but adds build-time parsing of `Cargo.toml` and an optional GitHub API call that could affect docs builds if environment/network assumptions change. > > **Overview** > Updates the VitePress docs nav to show the current release label (e.g. `vX.Y.Z`) by parsing `Cargo.toml` at build time, replacing the static “Releases” text. > > Adds an optional GitHub star counter: `stars.data.ts` can fetch `stargazers_count` from the GitHub API (gated by env vars/tokens and tolerant of offline/rate limits), and the theme injects/stylizes a `.star-count` badge onto the GitHub social link using a `MutationObserver` for late-rendered DOM. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 7235569. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
Configuration menu - View commit details
-
Copy full SHA for 9a50d39 - Browse repository at this point
Copy the full SHA 9a50d39View commit details
Commits on Apr 26, 2026
-
chore(deps): bump communique to 1.1.2 (#875)
## Summary - update the communique mise lock entry to v1.1.2 - refresh release asset URLs and checksums, including musl assets ## Validation - monitored jdx/communique release workflow 24960017639 to success - `mise install --locked communique` <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk lockfile-only change that updates the pinned `communique` tool binary and its download metadata; main risk is install/CI breakage if any platform URL/checksum is incorrect. > > **Overview** > Updates `mise.lock` to bump the pinned `communique` tool from `1.0.4` to `1.1.2`. > > Refreshes per-platform release asset URLs, `url_api` IDs, and checksums (including switching to distinct `*-musl` assets where applicable) so `mise install --locked communique` pulls the new binaries. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 4be0ba2. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
Configuration menu - View commit details
-
Copy full SHA for 4ed7a2a - Browse repository at this point
Copy the full SHA 4ed7a2aView commit details -
chore: add pr-closer workflow (#876)
## Summary - Adds `.github/workflows/pr-closer.yml`, ported from `jdx/mise` - Runs daily and closes non-jdx PRs idle for 30+ days; uses a different message when CI was failing - Skips PRs labeled `keep-open` ## Test plan - [ ] Trigger via `workflow_dispatch` once merged to confirm it runs cleanly 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Introduces an automated GitHub Actions job that closes pull requests, which can unintentionally close active work if the search criteria or labels are misapplied. Otherwise isolated to repo maintenance and uses standard `GITHUB_TOKEN` permissions. > > **Overview** > Adds a new GitHub Actions workflow, `pr-closer`, that runs daily (and via manual dispatch) to close open PRs not updated in 30+ days. > > The job excludes PRs authored by `jdx` and PRs labeled `keep-open`, and posts a different close comment when CI checks are detected as failing. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit cfeef5d. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 79abff2 - Browse repository at this point
Copy the full SHA 79abff2View commit details -
fix(config): include main pkl path in cache fresh files (#879)
## Summary - Closes [discussion #877](#877). - When `HK_PKL_BACKEND=pklr` was set, edits to `hk.pkl` weren't picked up until `hk cache clear` was run. The default `pkl` CLI didn't have this issue. - Always append the main config `path` to the config cache's `fresh_files` so changes to `hk.pkl` invalidate the cache regardless of which backend's `analyze_imports` is used. ## Root cause `Config::load_config_cached` built `fresh_files` from `analyze_imports`'s output. The two backends return different things: - The **`pkl` CLI** path reads `pkl analyze imports`'s `resolvedImports` map. Its keys include the main file itself plus its transitive imports, so `hk.pkl` ended up in `fresh_files` by accident. - **`pklr::analyze_imports`** parses the source and returns only the direct/transitive `import` URIs — it never includes the source file in its output. With `pklr`, `fresh_files` therefore did not contain `hk.pkl`. Editing `hk.pkl` updated its mtime but no file in `fresh_files` was newer than the cache, so `is_fresh()` returned true and the stale `Config` was reused. The pre-existing comment ``// Build the config cache with all fresh files (imports + main config)`` shows the intent already was *"imports + main config"* — this was a missed step in implementation, not a design decision. ## Test plan - [x] Build with `mise run build`. - [x] Reproduce against `main`: with `HK_PKL_BACKEND=pklr` and a scratch `hk.pkl`, run `hk check --why`, then rename a step name in `hk.pkl`. Confirmed `hk check --why` still reports the old name without the fix; reports the new name with the fix. - [x] Repeat without `HK_PKL_BACKEND` (default backend): edits picked up correctly — no regression. - [x] `mise run test:cargo` — 145 passed. - [x] `test/config_pkl_imports.bats` — passes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: small change limited to cache invalidation inputs for `.pkl` configs, with minimal chance of side effects beyond slightly more frequent cache refreshes. > > **Overview** > Ensures `.pkl` config cache invalidation always considers the main config file by inserting `path` into the `fresh_files` set built from `analyze_imports`. > > This fixes stale `Config` reuse when `HK_PKL_BACKEND=pklr`, where `analyze_imports` doesn’t include the source file (while avoiding duplicates for the `pkl` CLI backend via `IndexSet`). > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit ec979b0. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 4b28d64 - Browse repository at this point
Copy the full SHA 4b28d64View commit details -
fix(builtins): silence pklr deprecation warnings on Builtins.pkl load (…
…#880) ## Summary - Closes [discussion #878](#878). - With `HK_PKL_BACKEND=pklr`, every load of `Builtins.pkl` printed `[pklr] WARNING: property 'check_byte_order_marker' is deprecated` and the same for `fix_byte_order_marker`, even when the user's `hk.pkl` did not reference those aliases. - Combine the upstream pklr fix with a generator change so the warning only fires when a user actually references the deprecated aliases. ## Two coordinated changes 1. **Bump `pklr` 0.4.1 → 0.4.2** ([jdx/pklr#58](jdx/pklr#58), [jdx/pklr#61](jdx/pklr#61)). pklr now treats `@Deprecated` lazily — the warning fires on field access, not on module evaluation. 2. **`scripts/gen_builtins.py`**: special-case the deprecated aliases. Skip them in the auto-loop and emit them as `@Deprecated` bindings that point at the canonical `byte_order_marker` step. With this, `Builtins.pkl`'s own bindings no longer access a deprecated property at load, so even the lazy field-access warning stays silent until the user explicitly references `Builtins.check_byte_order_marker` / `.fix_byte_order_marker`. The deprecated stub files (`pkl/builtins/check_byte_order_marker.pkl`, `pkl/builtins/fix_byte_order_marker.pkl`) keep their `@Deprecated` annotations untouched — the migration nudge is preserved for direct importers. ## Test plan - [x] `mise run test:cargo` — 145 passed. - [x] End-to-end with `HK_PKL_BACKEND=pklr`: - import `Builtins.pkl` without using deprecated aliases → **silent** (was 2× warnings per load). - access `Builtins.check_byte_order_marker` → warning fires once per evaluation. - [x] `hk` pre-commit hooks pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: changes are limited to a dependency patch bump and generation/mapping of builtin aliases to reduce deprecation warnings, with no impact on core hook execution logic beyond alias resolution. > > **Overview** > Stops `Builtins.pkl` from triggering deprecation warnings on load when using the `pklr` backend. > > This bumps `pklr` from `0.4.1` to `0.4.2` and updates `scripts/gen_builtins.py` to *skip* generating deprecated builtin bindings in the main loop, then re-add them as explicit `@Deprecated` aliases pointing to the canonical `byte_order_marker` builtin. > > The pre-commit migration map is updated so `check-byte-order-marker` and `fix-byte-order-marker` now resolve directly to `Builtins.byte_order_marker` instead of the deprecated alias names. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 549c070. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
Configuration menu - View commit details
-
Copy full SHA for e95c30b - Browse repository at this point
Copy the full SHA e95c30bView commit details -
### 🐛 Bug Fixes - **(builtins)** silence pklr deprecation warnings on Builtins.pkl load by [@jdx](https://github.com/jdx) in [#880](#880) - **(ci)** serialize docs lint step by [@jdx](https://github.com/jdx) in [#874](#874) - **(config)** include main pkl path in cache fresh files by [@jdx](https://github.com/jdx) in [#879](#879) - **(docs)** stack banner message and link on mobile by [@jdx](https://github.com/jdx) in [#865](#865) - **(docs)** pin banner close button to top-right corner on mobile by [@jdx](https://github.com/jdx) in [#867](#867) ### 📚 Documentation - **(site)** show release version and github stars by [@jdx](https://github.com/jdx) in [#872](#872) ### 🔍 Other Changes - add pr-closer workflow by [@jdx](https://github.com/jdx) in [#876](#876) ### 📦️ Dependency Updates - bump communique 1.0.3 → 1.0.4 by [@jdx](https://github.com/jdx) in [#868](#868) - update anthropics/claude-code-action digest to 2da6cfa by [@renovate[bot]](https://github.com/renovate[bot]) in [#869](#869) - update anthropics/claude-code-action digest to 567fe95 by [@renovate[bot]](https://github.com/renovate[bot]) in [#870](#870) - bump communique to 1.1.2 by [@jdx](https://github.com/jdx) in [#875](#875) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/bugbot) is generating a summary for commit 62ff432. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: mise-en-dev <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 3cb88fb - Browse repository at this point
Copy the full SHA 3cb88fbView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v1.44.1...v1.44.2