-
-
Notifications
You must be signed in to change notification settings - Fork 3
Comparing changes
Open a pull request
base repository: jdx/communique
base: v1.0.2
head repository: jdx/communique
compare: v1.0.3
- 8 commits
- 12 files changed
- 3 contributors
Commits on Apr 23, 2026
-
fix(deps): bump rustls-webpki to 0.103.13 (RUSTSEC-2026-0104) (#107)
## Summary - Bump `rustls-webpki` 0.103.12 → 0.103.13 in `Cargo.lock` to address [RUSTSEC-2026-0104](https://rustsec.org/advisories/RUSTSEC-2026-0104) (reachable panic in certificate revocation list parsing), flagged by `cargo audit` in CI. ## Test plan - [x] `cargo build` succeeds - [ ] `cargo audit` passes in CI 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low code-change risk since this is a lockfile-only dependency bump, but it affects TLS certificate validation behavior and should be verified in CI to avoid unexpected runtime differences. > > **Overview** > Updates `Cargo.lock` to bump `rustls-webpki` from `0.103.12` to `0.103.13` (checksum updated) to pick up the security fix referenced by `RUSTSEC-2026-0104`. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 28c6a88. 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 536b3d5 - Browse repository at this point
Copy the full SHA 536b3d5View commit details -
chore(release): append en.dev sponsor blurb to release notes (#106)
## Summary - Appends a **Sponsor communique** section to every GitHub Release body, run after `communique generate` in the `enhance-release` job in [`.github/workflows/release-plz.yml`](.github/workflows/release-plz.yml). - Same pattern as [mise#9272](jdx/mise#9272), adapted for communique. ## What it looks like Rendered at the bottom of each release body: > ## 💚 Sponsor communique > > communique is developed by [@jdx](https://github.com/jdx) at [**en.dev**](https://en.dev), an independent studio behind developer tools like [mise](https://mise.jdx.dev/), [aube](https://aube.en.dev/), hk, and more. Ongoing work on communique is funded by sponsorships. > > If communique is drafting your release notes or changelogs, please consider [sponsoring at en.dev](https://en.dev). Every sponsor — individual or company — helps keep the project independent and actively maintained. ## Test plan - [x] \`actionlint\` + \`yamllint\` pass on the modified workflow - [ ] Next tagged release produces a GitHub Release whose body ends with the sponsor section 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Low code risk, but it changes release automation to rewrite GitHub release bodies; mistakes could overwrite or misformat published release notes for new tags. > > **Overview** > After `communique generate` runs in the `enhance-release` GitHub Actions job, the workflow now fetches the current GitHub release body for the new tag, appends a **“Sponsor communique”** section, and updates the release notes via `gh release edit`. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit ab79012. 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 1585680 - Browse repository at this point
Copy the full SHA 1585680View commit details -
docs: add cross-site announcement banner (#109)
## Summary - Adds `docs/.vitepress/theme/banner.ts` + `banner.css` — a small module that fetches banner config from `https://jdx.dev/banner.json` and renders a dismissible announcement bar at the top of the docs - Wires it in by extending `DefaultTheme` with an `enhanceApp` hook - Dismissals persist per banner id in `localStorage`; bumping the id in the source JSON re-shows it to everyone Used to announce en.dev, and any future cross-site announcements. ## Test plan - [ ] Run docs dev server, confirm banner appears at top of page - [ ] Click the \u00d7 \u2014 banner disappears and stays dismissed across reloads - [ ] Clear localStorage `jdx-banner-dismissed`, reload \u2014 banner returns \U0001F916 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Adds client-side runtime code to the docs site that fetches remote JSON and injects DOM/CSS, which could affect layout/availability if the endpoint is slow/unavailable or serves unexpected content. > > **Overview** > Adds a dismissible, fixed top announcement banner to the VitePress docs theme, driven by a remote `https://jdx.dev/banner.json` config and persisted per-banner via `localStorage`. > > Wires the banner initialization into the theme’s `enhanceApp` hook and adjusts layout by setting/clearing `--vp-layout-top-height` based on the rendered banner height. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 2c70cbc. 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 eb49d11 - Browse repository at this point
Copy the full SHA eb49d11View commit details -
docs: polish banner + add en.dev footer (#110)
Follow-ups to #109 that landed after the merge, plus the en.dev footer. ## Summary ### Banner polish - **Contrast**: switch to dark text on the pink brand bg (white text failed contrast) - **z-index**: bump to 1001 so the banner stays above the site's nav - **Centering**: message + link centered; dismiss button pinned to the right via absolute positioning - **Analytics**: drop `rel=noreferrer` so en.dev gets referrer attribution. Keep `rel=noopener`. ### Footer - Adds the en.dev footer matching the one on the mise docs, via VitePress's `layout-bottom` slot ## Test plan - [ ] Run docs dev server, confirm banner text is centered and readable - [ ] Confirm en.dev footer appears at the bottom of pages - [ ] Click the \u00d7 on the banner \u2014 dismisses and stays hidden across reload \U0001F916 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: docs-only theme/CSS tweaks plus a small `rel` attribute change on an external link; no backend or data model impact. > > **Overview** > Polishes the docs site announcement banner styling to improve readability and layout (dark text, centered content, higher `z-index`, and an absolutely positioned dismiss button), with updated responsive padding. > > Adds a new `EndevFooter` component and wires it into VitePress via the `layout-bottom` slot, and adjusts the banner link to use `rel="noopener"` (dropping `noreferrer`). > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 151266a. 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 bfef7f6 - Browse repository at this point
Copy the full SHA bfef7f6View commit details -
docs: banner cache + fallback color tweaks (#111)
Follow-ups after #110 merged. ## Summary - Drop \`cache: \"no-cache\"\` from the banner fetch. The server already sends \`Cache-Control: public, max-age=300, must-revalidate\`, so default browser caching gives 5-min freshness without a conditional GET on every page load. - Fix the banner background fallback color. Previously fell back to \`#3451b2\` (VitePress dark blue), which rendered black banner text unreadable if \`--vp-c-brand-1\` ever fails to resolve. Now falls back to \`#ff71ce\` (the actual communique brand). \U0001F916 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: only adjusts docs-site banner styling and removes a `no-cache` fetch option, which may slightly change how quickly banner updates propagate but doesn’t affect core app logic. > > **Overview** > Updates the docs announcement banner to rely on default browser caching by removing `cache: "no-cache"` from the `fetch` in `initBanner()`. > > Also changes the banner background fallback color in `banner.css` to `#ff71ce` to keep text readable if `--vp-c-brand-1` isn’t defined. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 67ff10a. 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 5eaf571 - Browse repository at this point
Copy the full SHA 5eaf571View commit details -
docs: keep banner height in sync via ResizeObserver (#112)
## Summary Follow-up fix for the banner. \`--vp-layout-top-height\` was set once in a single rAF and never updated. On window resize, orientation change, or text reflow the banner height could change, leaving VitePress's nav offset stale and causing overlap or a visible gap. Observe the banner element and resync the variable whenever its size changes; disconnect the observer on dismiss. \U0001F916 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk docs-theme tweak that only affects banner layout; potential issues are limited to browsers without `ResizeObserver` support or unexpected observer behavior. > > **Overview** > Keeps VitePress’s `--vp-layout-top-height` CSS var in sync with the announcement banner’s actual height by introducing a `syncHeight` helper and observing the banner with `ResizeObserver`. > > On dismiss, the observer is disconnected and the layout height var is removed, replacing the previous one-time `requestAnimationFrame` height set with ongoing updates on resize/reflow. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 6393ae0. 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 21267b3 - Browse repository at this point
Copy the full SHA 21267b3View commit details -
fix(prompt): truncate recent release bodies on UTF-8 char boundary (#113
) ## Summary `src/prompt.rs`'s style-reference truncation sliced `&body[..3072]` directly, which panics whenever byte 3072 falls inside a multi-byte UTF-8 character. aube's release-notes style uses the em-dash `—` (3 bytes) heavily, so `communique generate` against [endevco/[email protected]](https://github.com/endevco/aube/releases/tag/v1.0.0) blew up with: ``` thread 'main' panicked at src/prompt.rs:137:52: byte index 3072 is not a char boundary; it is inside '—' (bytes 3070..3073) of `aube v1.0.0-beta.12 is a reliability and reach release…` ``` (See the failed [enhance-release job](https://github.com/endevco/aube/actions/runs/24854719507/job/72767529235).) Fix: walk back from 3072 to the nearest char boundary before slicing. ## Test plan - [x] New regression test `test_user_prompt_recent_releases_truncation_on_char_boundary` reproduces the aube panic (em-dash straddling the 3072 cutoff) and now passes - [x] `cargo test prompt::` — 8/8 pass - [x] `cargo clippy` / `cargo fmt --check` clean (pre-commit hooks passed on push) 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: change is limited to prompt-string truncation logic and adds a regression test; main risk is only in edge-case formatting of truncated output. > > **Overview** > Fixes a panic in `user_prompt` when truncating "recent release" bodies by ensuring the 3072-byte cutoff is adjusted backward to a valid UTF-8 character boundary before slicing. > > Adds a regression test covering the multi-byte character boundary case to prevent future crashes during style-reference generation. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit c48ae1c. 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 5e74d55 - Browse repository at this point
Copy the full SHA 5e74d55View commit details -
v1.0.3: UTF-8 boundary fix + rustls-webpki security bump (#108)
A small patch release that fixes a panic when generating notes against releases with multi-byte characters in their bodies, and picks up a security fix in `rustls-webpki`. ## Fixed - **Don't panic on multi-byte chars in style-reference bodies** — `communique generate` truncates each recent release body to 3072 bytes to keep the prompt small, but previously sliced `&body[..3072]` directly. If byte 3072 fell inside a multi-byte UTF-8 character (common with em-dashes, which are 3 bytes), the command would panic with `byte index 3072 is not a char boundary`. The truncation now walks back to the nearest char boundary before slicing, with a regression test covering the case. ([#113](#113)) (@jdx) ## Security - **`rustls-webpki` bumped to 0.103.13** — Addresses [RUSTSEC-2026-0104](https://rustsec.org/advisories/RUSTSEC-2026-0104), a reachable panic in certificate revocation list parsing. Lockfile-only change. ([#107](#107)) (@jdx) ## Docs - Added a dismissible cross-site announcement banner and an en.dev footer to the documentation site, with follow-up polish (contrast, centering, z-index), smarter caching, and `ResizeObserver`-based height syncing so VitePress's nav offset stays correct on resize. ([#109](#109), [#110](#110), [#111](#111), [#112](#112)) (@jdx) --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 8c2d1d5 - Browse repository at this point
Copy the full SHA 8c2d1d5View 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.0.2...v1.0.3