Skip to content

chore(release): prepare stable 0.24.0 - #1205

Merged
benvinegar merged 3 commits into
mainfrom
release/0.24.0
Oct 19, 2026
Merged

benvinegar merged 3 commits into
mainfrom
release/0.24.0

Conversation

@benvinegar

@benvinegar benvinegar commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Summary

Prepare stable 0.24.0 from main 5fb99264. Do not tag or publish without the maintainer's explicit approval. This promotes the whole 0.24 series rather than releasing another beta.

Performance

Fresh five-sample snapshot: Bun 1.4.2, Linux x64.

  • Previous stable 0.23.0: all 58 existing gated metrics pass.
  • Beta.1: all 62 gated metrics pass.
  • Navigation p95 is 42.74 ms versus beta.1's 44.55 ms and 0.23.0's 46.32 ms.
  • Beta.0 remains faster on navigation p95 (36.35 ms). The snapshot explicitly carries forward the sidebar-follow tradeoff already accepted during beta.1, rather than hiding it or waiving any new stable/beta.1 regression. Final stable publication still awaits approval.
  • Focused geometry, repeated-navigation, and repeated-resize memory diagnostics passed.

Validation status

Passed locally: frozen install, release-note gate, typecheck, lint, formatting, dependency boundaries, generated docs/changelog checks, focused memory diagnostics, PTY integration (266 pass, 1 skip), TTY smoke (11 pass), real-Node broker conformance, review conformance, prebuilt npm build, source/prebuilt pack checks, prebuilt install smoke, and compiled extension-install/import tests.

The first default-suite runs and Linux CI exposed a GC-sensitive reload-retention assertion. Additional collection turns were not reliable, so the final test runs its unchanged reachability assertion in a fresh subprocess, isolating it from the shared runner's accumulated JIT/renderer state. It still requires zero earlier files retained. Both full default-suite runs now pass (2,427 pass, 3 skip each), and 20 focused isolated repetitions pass. A negative-control run against the pre-#1201 leaking hook still fails with all eight earlier files retained. No application runtime code changed after the benchmark snapshot.

Final-tip Firecracker validation passed all 16 scenarios at 0ade2843bdaf20a2d3e0cfbd1f2df6d09eebfbd6; the strict validator confirmed source identity 26849a527e3340c7dd67c51e3fd4bcdfc39118c01c87b03aa7a95a780c8b1df5. Evidence: tmp/install-vm/runs/release-stable-validated-5cxUH3Fl/result.json.

All final-tip remote CI passed: Linux/Windows/PTY validation, packaging, and website check/build. The branch is ready for review, but is deliberately unmerged pending the maintainer's go-ahead; tagging and publication are not authorized.

The editorial GitHub release draft covers the full v0.23.0 comparison, with compatibility notes, all 19 external contributor credits, and the complete merged-PR inventory (including this release-prep PR once merged). No tag, npm publication, GitHub release, or public release-body edit has been triggered. npm latest remains 0.23.0 and beta remains 0.24.0-beta.1; GitHub Latest remains v0.23.0.

This PR description was generated by Pi using GPT-6.1 (gpt-6.1-sol)

@vercel

vercel Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
hunk-web Ignored Ignored Preview Oct 19, 2026 3:41am UTC

Request Review

@benvinegar
benvinegar marked this pull request as ready for review October 19, 2026 03:51
@greptile-apps

greptile-apps Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[Low impact] The changes stay within release preparation and its website preview.

The release preparation has no established behavioral blocker, but the explicit environment-access requirement must be satisfied before merging.

Findings

  1. P2 Environment reads bypass the guide ▶
Fix with agent prompt
### Issue 1
packages/hunk/src/ui/hooks/useTerminalReview.test.tsx:519
The new test wrapper reads `process.env` here and spreads it into the child environment on line 528. The repository guide says “Never access `process.env` directly” and requires an approved accessor or values passed as arguments. Route these settings through that boundary before merging to satisfy the repository requirement.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

Prepares stable 0.24.0 without publishing it.

  • Hunk's package and changelog are prepared for stable version 0.24.0.
  • The 0.24 website lists 0.24.0 as Unreleased.
  • A release benchmark snapshot records measurements for version 0.24.0.
  • The reload-retention check runs in a fresh process.

Acknowledged intent: benvinegar explicitly carries forward the accepted sidebar-follow performance tradeoff. It is not reported as a new issue.

Review checks were read-only. Tests were not rerun. The social-card image could not be visually inspected because image input is unavailable.

Reviews (1) · Last reviewed commit: "test(ui): isolate reload retention asser..." · Reviewed by Greptile


test("releases files from earlier reloads once later reloads replace them", async () => {
// Isolate GC reachability from the shared runner's accumulated JIT and renderer state.
if (process.env.HUNK_TEST_RELOAD_RETENTION_CHILD !== "1") {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Environment reads bypass the guide

The new test wrapper reads process.env here and spreads it into the child environment on line 528. The repository guide says “Never access process.env directly” and requires an approved accessor or values passed as arguments. Route these settings through that boundary before merging to satisfy the repository requirement.

Context Used: guidelines.mdc Cursor rule (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: packages/hunk/src/ui/hooks/useTerminalReview.test.tsx
Line: 519

Comment:
**Environment reads bypass the guide**

The new test wrapper reads `process.env` here and spreads it into the child environment on line 528. The repository guide says “Never access `process.env` directly” and requires an approved accessor or values passed as arguments. Route these settings through that boundary before merging to satisfy the repository requirement.

**Context Used:** guidelines.mdc Cursor rule ([source](https://github.com/modem-dev/modem/blob/main/.cursor/rules/guidelines.mdc))

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@squad-robert squad-robert left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The scoped GC-regression and pre-tag metadata checks hold up at 0ade2843bdaf20a2d3e0cfbd1f2df6d09eebfbd6 against base 5fb9926470a70981aff8a9229d1db60f8602f067. This is corroboration of those parts, not full release certification or authorization to tag/publish.

Subprocess regression: I ran the exact head test on isolated base/head archives with the same Bun 1.4.2/Linux x64 environment and dependencies. The head test was copied into the base archive without changing production code. Both pass, as expected: the release base already contains #1201's fix. The head also passes 20 additional fresh parent-process repetitions and the full hook file (64 pass).

For a negative control, I kept the release-head archive/test unchanged except for replacing useTerminalReview.ts with its pre-#1201 version from 4b1594692ff67e5680ab7cfe72573d39177ff031. That file differs only by #1201's ref/callback fix. The child then fails the original assertion with 8 early files retained, expected 0, and the parent fails on its nonzero exit. The wrapper therefore still detects this known leak; it doesn't turn that failure into a pass.

Command on each archive:

bun test packages/hunk/src/ui/hooks/useTerminalReview.test.tsx \
  -t 'releases files from earlier reloads once later reloads replace them'

I did not reproduce the intermittent shared-runner failure or run the complete default suite, so these results don't establish that every source of GC-test nondeterminism is resolved.

Pre-tag checks actually performed:

  • bun run check:changelog passes; the 0.24.0 section is Unreleased, has no stable install command, and has no recorded stable date. The committed latest marker remains 0.23.0.
  • Prerelease state is removed. Only the public hunkdiff workspace version changes; private workspace versions remain unchanged. The lockfile change is only that version field; I reused the existing identical locked dependency installation, rather than performing a new install.
  • The read-only release-version validator accepts v0.24.0.
  • The committed benchmark snapshot comparison passes against stable 0.23.0 (58 gated metrics) and explicit beta.1 (62). This checks the supplied snapshot with the real comparator, not independently rerun benchmark measurements. The snapshot retains the documented beta.0 navigation exception; I haven't independently established its approval history.

No actionable defect found within this scope. Packaging, VM evidence/source identity, remote CI, Windows/macOS, full integration, and published npm/GitHub channel state were not independently validated here. No release or other remote mutation was performed apart from this review comment.

This comment was generated by Pi using GPT-6.1 Sol

@benvinegar
benvinegar merged commit 0c6fead into main Oct 19, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants