Repository navigation
release: 0.13.2 - #72
Merged
Merged
Conversation
…fontdb 0.24.0 drops ttf-parser - The ignore's comment said "Revisit by 2026-10-23 or when fontdb publishes a maintained parser migration". Re-read on 2026-10-23: fontdb 0.24.0 is published, and its dependencies (log, slotmap, tinyvec; optional fontconfig-parser and memmap2) no longer include ttf-parser. fontdb 0.23.0 depends on ttf-parser 0.25, and it is the lock's only path to it, through ghosttea-text. - The ignore stays: RUSTSEC-2026-0192 is an unmaintained notice with no patched version, not a known vulnerability, and future ttf-parser advisories remain fatal. Moving ghosttea-text to fontdb 0.24 is semver-breaking and is its own lane after 0.13.2; it removes ttf-parser and this ignore together. - One comment line, dated at its source. cargo audit stays clean, and .cargo/audit.toml is not an input of the Apple native source digest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ships what main carried since 0.13.1: the ctutils advisory fix (#69), the lifecycle soak's metric fix (#70), and the tokio advisory fix with zod for the dev tooling (#71). The commits under this one carry them, so this commit stays a pure bump plus its CHANGELOG section, as 1541256 and ccfb3e4 were. It is a patch release: no public declaration, wire shape or default changes. - RUSTSEC-2026-0385 (ctutils < 0.4.4: non-constant-time mask generation and `u128` comparisons). #69 (b09caeb) moved Cargo.lock to ctutils 0.4.5 under digest 0.11.3 <- sha2 0.11.0 + hmac 0.13.0 <- truffle-core 0.7.19. 0.13.1's prebuilt `ghosttead` daemons embed 0.4.3; 0.13.2's build against 0.4.5. - RUSTSEC-2026-0386 (tokio < 1.53.3 on the 1.52 line: the safe `AsyncFd` constructors accept a descriptor the caller does not own). #71 (50343dd) moved Cargo.lock to tokio 1.53.3; neither ghosttea nor truffle-core calls those constructors. #71's f88df38 moved the dev-only zod to 4.6.7 (GHSA-mrhx-c7xc-m3w5); no published package ships zod, so the CHANGELOG gives it no line. - The soak: #70 (256cb11, ff3d318) measures the Windows handle rate per session churned since the baseline, and records the retained Windows handle as open in native/ghosttea/README.md. - Version 0.13.1 -> 0.13.2 in every ghosttea-owned manifest: - the root and `[workspace.package]` versions; - all ten `packages/*`, versions and internal `@vibecook/ghosttea*` / ghosttead pins; - the three `apps/*`; - the sibling-crate `version =` pins in native/**/Cargo.toml. That is 45 replacements in 20 files, ccfb3e4's count; no third-party version moved. - Cargo.lock moves only the 11 workspace versions. It was resolved offline with the ghosttea-config patch line set aside, then Cargo.toml was restored byte for byte (f17a0ff's method), and `cargo metadata --locked` agrees. - package-lock.json follows the workspace versions. - The iOS inventory is regenerated by its documented chain (update:ios-rust-components, check-ios-release-bom --write, update:ios-release-resources). It moves the same five files ccfb3e4 moved, changing only the versions and the hashes derived from Cargo.lock and the BOM. - CHANGELOG.md gains the 0.13.2 section, dated 2026-10-23 for the planned tag: Fixed (RUSTSEC-2026-0385 and -0386, each by id) and Validation (the soak metric, under the heading 0.10.1 used for a test-only witness change). Nothing else. `release-notes.mjs 0.13.2` renders it. - Not here: the Apple native artifact. #69's and #71's lock changes already moved its source digest (fa08d019…, the pinned 0.13.1 artifact's, to 369b5f27… and then 0c82a3a6…), and this bump moves it again through Cargo.lock, Cargo.toml, native/ghosttea/Cargo.toml, and ghosttea-core's and ghosttea-vt's Cargo.toml. The artifact is rebuilt from this commit and pinned in the next one. Verified here: - cargo audit is clean (263 crates), and npm audit --audit-level=high is 0 (3 dev-only moderates); - the release-notes, release-channel and npm-publisher tests pass 31/31, and `release-notes.mjs 0.13.2` renders Fixed with both advisory ids, and Validation; - check:workspace-names and prettier --check over format:check's paths pass; - check:ios-release-bom, check:ios-release-resources, check:ios-app-store and check:swiftpm:manifests pass, and `cargo metadata --locked` agrees with the lock. The compile and test proof is CI's: the artifact's candidate job and the release gates, dispatched on this branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Package.swift and apple-native-artifact.lock.json now name ghosttea-apple-native-21a593e3611b. ghosttea-apple-native-artifact.yml run 40047394201 built it from the clean release commit 8263cf0 (release/0.13.2), then: - qualified it: the complete SwiftPM suite (298 tests), and a local-artifact consumer linking all 18 public library products against the candidate; - attested it (attestation 59304697); - published it after promotion through the protected release environment. - The fields come from the SERVED release, not the run. The lock's tag, url, checksum, size, contentDigest, sourceDigest, entries and slices equal the published GhostteaAppleNative.xcframework.zip.json, field for field. - Here: the served archive's SHA-256 41e7a5ec… equals `swift package compute-checksum`, and its size is 45310278. The source digest 0c9f828e… is `nativeSourceDigest()` of this tree, and `check:apple-native-artifact` and `check:swiftpm:manifests` pass. - In CI: the promotion job re-downloaded the published assets and re-derived from those bytes the checksum, the content digest 21a593e3… (137 entries), the three slice digests and the source digest (`verify:ghosttea-apple-native-package`). - `check:apple-native-artifact:release` was not run here, because this release has no local build window. The release PR's `audit-published` runs it against this lock, with the published-artifact consumer. - It supersedes ghosttea-apple-native-6c5898e91c6a, the 0.13.1 artifact. #69's ctutils move, #71's tokio move and the 0.13.2 bump moved the native source digest (fa08d019… to 369b5f27…, 0c82a3a6…, then 0c9f828e…) through Cargo.lock, Cargo.toml, native/ghosttea/Cargo.toml, and ghosttea-core's and ghosttea-vt's Cargo.toml. A field-only update was not possible. #70's soak change and the audit.toml line are outside the digest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jamesyong-42
added a commit
that referenced
this pull request
Oct 25, 2026
…ksum — the audit jobs stop compiling it - `cargo install cargo-audit --version 0.22.2 --locked` compiled the tool on every run: 106 s of dependency-audit's 128 s on PR #72 (run 40052723708), and 169 s of rust-audit's 188 s on v0.13.1 (run 39899120469). - Both jobs now download cargo-audit-x86_64-unknown-linux-musl-v0.22.2.tgz from rustsec/rustsec's cargo-audit/v0.22.2 release, check it against a pinned SHA-256 and install it into ~/.cargo/bin. The version stays 0.22.2, so `cargo audit` and .cargo/audit.toml behave as before. - The pinned hash, 7fb9497f…c428, is the sha256 of the served asset. It equals the hash that taiki-e/install-action's manifest records for the same file. The musl build is static, so it does not depend on the runner's glibc. - publish-release's rust-audit only runs on tags. dependency-audit runs the identical step on ubuntu-24.04 in this PR. - Verified here: the asset's sha256 and its archive layout (`cargo-audit-…-v0.22.2/cargo-audit`); both workflows parse and keep their step order. Not run here: prettier (no Node on this machine). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jamesyong-42
added a commit
that referenced
this pull request
Oct 25, 2026
…ed while their inputs are unchanged — validate-package-manifests skips about seven minutes - validate-package-manifests rebuilt both native inputs from source on every run: build:ghostty-vt:apple took 177 s and build:ssh:apple 248 s of the job's 762 s on PR #72 (run 40052723838). - The cache key hashes everything those builds depend on: - ghostty.lock.json, native/patches, ssh.lock.json and ios-toolchain.lock.json; - the six bootstrap, build and validate scripts, plus ghostty-vt-target.mjs, their only local import; - the runner architecture; - `xcodebuild -version` and the macOS, iOS and simulator SDK versions of both DEVELOPER_DIR (26.6) and GHOSTTY_DEVELOPER_DIR (26.3). - A runner image that moves an Xcode build or SDK therefore misses and rebuilds. The rebuild is where build-ghostty-vt-apple.mjs checks the toolchain against ghostty.lock.json's appleBuilder. - A hit can only restore outputs that a successful run built from identical inputs, because actions/cache saves on success only. - The cache holds only what build:apple-native reads and the job uploads: the two xcframeworks in apple/GhostteaKit/Artifacts and the two build-metadata.json files. Zig's cache directories and the OpenSSL build tree stay out. - The bootstraps still run on a hit, because build-ghosttea-apple-native.mjs runs sync-ghosttea-fonts.mjs, which needs native/vendor/ghostty at the locked commit. - Unchanged: the publication build (build-candidate in ghosttea-apple-native-artifact.yml) and publish-release never use this cache. - Verified here: the step order and conditions parse as intended, and grep finds the consumers of each cached path. This PR's first run misses and saves; a re-run of the job exercises a hit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jamesyong-42
added a commit
that referenced
this pull request
Oct 25, 2026
…variants and the release flow - Commands as package.json and the workflows run them, including the local prerequisite ci:desktop needs (bootstrap:ghostty-vt for the font sync) and how to run one Rust, TypeScript, Node or Swift test. - The desktop frame path, the two local planes, and what each crate and package owns. - Invariants checked against the source: - protocol minors (service.rs constants and asserts) and TRF1's additive sections; - the stdout test and the input actor's weak session reference; - the vt-sys build-script guard and the renderer command allowlist; - the iOS inventory chain after a Cargo.lock change, and the Apple artifact's source digest. - The release outline from PUBLISHING.md and the release commits, with the `release` environment's current settings: no required reviewer since 2026-10-24, and `v*` tags admin-only through the "release tags" ruleset. It also notes auto-merge's limit: it waits only for the required verify and windows checks. - One process note: don't dispatch desktop-release-gates or ios-release-hardening by hand on a branch that has a PR. On PR #72 both ran twice, and the PR's verify waited 68 s for a macOS runner. - Not run here: prettier (no Node on this machine). The file follows its markdown rules by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ships 0.13.2, the security patch for 0.13.1's prebuilt daemons. It carries the three PRs merged since 0.13.1:
Why now. 0.13.1's prebuilt
ghostteaddaemons on npm embed ctutils 0.4.3 and tokio 1.52.3. Both advisories entered their databases on 2026-10-23, after 0.13.1's audits had passed. 0.13.2's daemons build against ctutils 0.4.5 and tokio 1.53.3. The crates carry no lockfile, so crates.io consumers resolve their own versions.The commits in this PR
chore(audit): one dated comment line under RUSTSEC-2026-0192's ignore. The ignore said to revisit by 2026-10-23, and the re-read found that fontdb 0.24.0 drops ttf-parser. The ignore stays: it is an unmaintained notice with no patched version. Moving ghosttea-text to fontdb 0.24 is its own lane after this release.release: 0.13.2: a pure bump made the way ccfb3e4 and 1541256 were. It is 45 replacements in 20 manifests, Cargo.lock moves only the 11 workspace versions, and it touches 1541256's 28 files. CHANGELOG.md gains the dated 0.13.2 section:release: pin 0.13.2 Apple native artifact: the rebuilt artifact.It is a patch. No public declaration, wire shape or default changes. The daemons move two dependencies, and the rest is a test, docs, one audit-config comment and dev tooling.
The Apple native artifact is rebuilt. Cargo.lock is one of its source inputs. #69, #71 and the bump moved the native source digest from the pinned 0.13.1 artifact's
fa08d019…to0c9f828e…, socheck:apple-native-artifactrequires a new publication.ghosttea-apple-native-21a593e3611b(checksum41e7a5ec…) through thereleaseenvironment.shasum -a 256equalsswift package compute-checksum, and the tree's digest equals the servedsourceDigest.A full release. Like every release, 0.13.2 publishes all 10 npm packages and 7 Rust crates under one shared version, and npm's
latestmoves to 0.13.2.Checks
audit-publishedrunscheck:apple-native-artifact:releaseand links every public product against the published artifact.check:apple-native-artifactandcheck:swiftpm:manifestspass on the pinned tree;node scripts/release-notes.mjs 0.13.2renders Fixed with both advisory ids, and Validation.ci:desktopdid not run locally. This Mac had no build window, so the compile and test proof is CI's.After the merge, James signs and pushes
v0.13.2on the merge commit, as with 0.13.1 (ee3b721e).🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.