docs(v0.14.3): cycle closeout — PR #190 merged - #194
Conversation
Closes the v0.14.3 cycle for real. PR #188 (slice 4) closed the cycle table on its own merge but the cycle itself was incomplete — slice 3b was still open, gating the release cut. PR #190 (slice 3b, merged 2026-07-30T18:58:11Z into origin/main @ 10f58c8) closed that gate. This PR updates the stale docs to match reality. ## What this PR ships ### ROADMAP.md - "Last updated" header: bumped from "partial close" to "closed"; tier split bumped from "3 Tier A + 1 Tier B + 1 Tier B still open" to "3 Tier A + 2 Tier B + 0 Tier C"; all five cycle slices now listed as merged (#185, #186, #187, #188, #190). - v0.14.3 cycle section header: "In Progress — slices 1, 2, 4 done; slice 3 split" → "Shipped 2026-07-30". - Cycle table slice 3b row: 🔲 Open → ✅ Done (PR #190), with full notes describing the `classifyNrc` helper, the per-PID dim + one-click-remove UI, the `#live-unsupported-count` panel-head badge, and the new `.gauge-cell.dimmed` / `.pid-remove` CSS. - Cycle table other rows updated to attribute by PR number (#188) instead of the original "this PR" placeholder. - Release-cut paragraph: "Cannot be cut until slice 3b merges" → "is a separate Tier C step — all five cycle slices are merged but the version-surface bump requires an explicit release-cut PR". ### CHANGELOG.md - v0.14.3 "Cycle status" blockquote: bumped from "slices 1, 2, 3a, 4 merged; slice 3b still open" to "all five slices merged — #185 (decoders), #186 (profile entries), #187 (slice 3a backend), #188 (slice 4 harness extension + cycle closeout), #190 (slice 3b frontend rewire)". - v0.14.3 "Added — Tier B surface" bullet: merged the slice 3a (PR #187) and slice 3b (PR #190) descriptions into a single "Per-PID NRC backend + frontend + remove-from-profile UI" entry with PR sub-bullets. Removed the now-stale "slice 3b is still open" note. - v0.14.3 "Notes on the version surface" — README badge paragraph: rewrote to acknowledge slice 3b is now merged but the release-cut PR hasn't run, so the badge correctly stays at v0.14.0 until the Tier C release-cut PR. - v0.14.3 closing paragraph: "follows slice 3b's merge" → "follows the release-cut PR's merge. Until that lands, this entry stays `## [0.14.3] — Unreleased`". ## What this PR does NOT do - ❌ No README badge bump. CLAUDE.md golden rule #5 still applies — the release-cut PR (Tier C) hasn't run, so v0.14.3 isn't a released version. Bumping now would replace one lie with another. - ❌ No `Cargo.toml` / `tauri.conf.json` version bumps. These are part of the Tier C release cut (separate PR). - ❌ No git tag, release notes, or installer build. Tier C. - ❌ No code changes. Docs only. ## Tier **A** — `CHANGELOG.md` + `ROADMAP.md`. PR auto-merge eligible per CLAUDE.md Tier A rules. ## Verification - [x] `node --test src/js/*.test.js` — 168/168 pass (includes the slice 3b `classifyNrc` tests added in PR #190) - [x] `cargo test --lib --offline protocol::` — 15/15 pass (regression check; no code changes) - [x] `npm run build` — `rc=0`, both MSI + NSIS bundles built (1m 52s) - [x] ROADMAP cycle section header now reads "Shipped 2026-07-30" - [x] CHANGELOG `[0.14.3]` header preserved as "Unreleased" (correctly — release cut is separate) ## Cross-references - PR #188 — v0.14.3 slice 4 (the original cycle-closeout PR that flagged slice 3b as the gating slice) - PR #190 — v0.14.3 slice 3b (now merged; the close this PR's docs are catching up to) - PR #192 — v0.14.1 + v0.14.2 CHANGELOG backfill (the previous round of version-surface housekeeping) - CLAUDE.md golden rule #5 — version-surface sync (the rule this PR enforces retroactively for v0.14.3's slice 3b)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 356713c9bd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| --- | ||
|
|
||
| ## v0.14.3 — "Finish the Bench" (In Progress — slices 1, 2, 4 done; slice 3 split) | ||
| ## v0.14.3 — "Finish the Bench" (Shipped 2026-07-30) |
There was a problem hiding this comment.
Mark the cycle merged rather than shipped
Calling v0.14.3 “Shipped” tells readers that a v0.14.3 release is available, but this same change keeps the CHANGELOG entry Unreleased and states below that the version bumps, tag, release notes, and installer build have not happened. This is especially misleading for users checking the roadmap for an installable release; use a status such as “Cycle closed” or “Merged” until the Tier C release cut is completed.
Useful? React with 👍 / 👎.
Two `this PR` placeholders survived the v0.14.3 cycle closeout (PR #194) because they were inside multi-line cell text in the v0.14.2 ROADMAP row and inside the v0.14.3 Tier A bullet list in CHANGELOG. Both refer to PR #188 (v0.14.3 slice 4: N62 / E70 harness-doc extension). - ROADMAP.md line 528: v0.14.2 row notes column — "see PRs #185 (decoders), #186 (profile entries), and slice 4 (this PR, harness extension)" → "see PRs #185 (decoders), #186 (profile entries), and slice 4 (PR #188, harness extension)". - CHANGELOG.md line 200: v0.14.3 Tier A bullet — "**N62 / E70 harness-doc extension** (this PR, slice 4, Tier A)" → "**N62 / E70 harness-doc extension** (PR #188, slice 4, Tier A)". These are the only remaining "this PR" references in CHANGELOG or ROADMAP (verified via `grep -nE '\(this PR[, ]|\bslice [0-9]+ \(this PR\b'`). The fenced `## Template for next release` block in CHANGELOG lines 952-972 is intentional — it's a documentation template showing the format for future entries, not stale. Tier A docs-only. No code changes. Verification: - [x] node --test src/js/*.test.js — 168/168 pass (no JS changes) - [x] npm run build — rc=0, both bundles built Diff: +2 / -2 (one substitution in each of 2 files). Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
Tier C release cut for the v0.14.3 "Finish the Bench" cycle. All five slices are merged on origin/main @ 1c7b9fd; this PR bumps the version string across the four config files that declare it, refreshes the CHANGELOG header date, and rewrites the "Notes on the version surface" blockquote to reflect that the release-cut PR has landed. ## What this PR ships ### Version bump (0.10.0 → 0.14.3) The version drift accumulated because v0.14.1, v0.14.2, and v0.14.3 all shipped without a version bump. CLAUDE.md golden rule #5 ("don't let the badge lie") was violated since v0.14.1 — the README badge has read v0.14.0 across three shipped cycles. Bumping to v0.14.3 (the most-recently-shipped cycle, per CLAUDE.md's "the badge moves only when something actually ships" rule) corrects the surface in one retroactive catch-up step. - `package.json` — `0.10.0` → `0.14.3` - `src-tauri/Cargo.toml` — `0.10.0` → `0.14.3` - `src-tauri/tauri.conf.json` — `0.10.0` → `0.14.3` - `src-tauri/Cargo.lock` — refresh via `cargo check`; beeemuu package version bumped to `0.14.3`. The productName stays `BeeEmUu` and the identifier stays `com.beeemuu.diag` (no product-naming changes in this release). - `README.md` — release badge from `v0.14.0` to `v0.14.3`. ### CHANGELOG.md - `## [0.14.3] — Unreleased` → `## [0.14.3] — 2026-07-30`. The date reflects the day all five cycle slices landed on origin/main; the section content is unchanged (already documented via PR #188 cycle closeout + PR #192 backfill + PR #195 stale-reference cleanup). - Cycle status blockquote rewritten: "The v0.14.3 release cut (version bump in `Cargo.toml` + `tauri.conf.json`, git tag, release notes publish, installer build) is a separate Tier C step — the slices are all merged but the version-surface bump requires an explicit release-cut PR. Until that PR lands, this entry stays `## [0.14.3] — Unreleased` per Keep-a-Changelog convention." → "Version surface bumped in the release-cut PR (this PR) to `0.14.3` across `package.json`, `src-tauri/Cargo.toml`, `src-tauri/tauri.conf.json`, and the README badge. The git tag + release publish + installer build are the next step (run locally via `git tag v0.14.3 && git push --tags` to trigger `.github/workflows/release.yml`)." - Closing paragraph rewritten: "follows the release-cut PR's merge. Until that lands, this entry stays `## [0.14.3] — Unreleased`." → "runs locally via `git tag v0.14.3 && git push --tags`, which triggers `.github/workflows/release.yml` and publishes a draft release on GitHub." ## What this PR does NOT do - ❌ No `git tag v0.14.3`. That's the next step (maintainer's call, Tier C). The PR sets the version strings; the tag publishes. - ❌ No `git push --tags`. Same — runs after the maintainer reviews and merges this PR. - ❌ No changes to `productName`, `identifier`, or any other config surface. Pure version bump. - ❌ No README content changes. The badge URL changes, but the surrounding badge block stays identical. - ❌ No CHANGELOG content changes for v0.14.1 / v0.14.2 (already backfilled via PR #192). ## Tier **C** per CLAUDE.md — "Releases: version bumps, git tags, publishing installers." Per CLAUDE.md Tier C rules: "always a human decision (propose, never execute)." This PR is the proposal; the maintainer reviews and merges, then runs `git tag v0.14.3 && git push --tags` to trigger the release.yml workflow. ## Verification (pre-cut) - [x] `node --test src/js/*.test.js` — 168/168 pass - [x] `cargo test --lib --offline` — 149/149 pass - [x] `pytest backend/tests/` — 166/166 pass - [x] `npm run build` — `rc=0`; both MSI + NSIS bundles built with the new `0.14.3` version: - `BeeEmUu_0.14.3_x64_en-US.msi` (5,009,408 bytes) - `BeeEmUu_0.14.3_x64-setup.exe` (3,488,856 bytes) - [x] Rustc compile log confirms: `Compiling beeemuu v0.14.3` - [x] `Cargo.lock` regenerated by `cargo check`: `name = "beeemuu" version = "0.14.3"` - [x] `git status` clean (no other modifications) ## Post-merge steps for the maintainer ```bash # 1. Verify the PR landed cleanly on origin/main git log origin/main --oneline -1 # 2. Tag the release git tag v0.14.3 # 3. Push the tag (triggers .github/workflows/release.yml) git push origin v0.14.3 # 4. Watch the release workflow gh run watch --repo ohgeeceee/beemuu # 5. Once the draft release is published, review it at # https://github.com/ohgeeceee/beemuu/releases/tag/v0.14.3 # and promote from draft to public. ``` The release.yml workflow (`.github/workflows/release.yml`) will: - Build Windows installers via `tauri-apps/tauri-action@v1` - Generate the MSI + NSIS bundles with the `0.14.3` version - Publish a draft GitHub release with the standard release notes (NSIS .exe + MSI .msi + safety warning banner) - Deploy the `_release_info.json` to `beemuu.com/frontend/` via the deploy SSH key (writes the new version into the public site's "Latest release" card) ## Cross-references - PR #188 — v0.14.3 slice 4 (the cycle-closeout PR that flagged the release cut as the next step) - PR #194 — v0.14.3 cycle closeout after slice 3b (updated ROADMAP + CHANGELOG to "Shipped" / "Unreleased" state) - PR #195 — "this PR" reference cleanup (prerequisite consistency for this PR's CHANGELOG edit) - `.github/workflows/release.yml` — the workflow that publishes the release on `v*` tag push - `docs/forward_roadmap_14.4_to_16.9.md` — the next cycle plan (v0.14.4 "N62 Bench Verification") Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
#198) * release(v0.14.3): version surface bump + CHANGELOG date Tier C release cut for the v0.14.3 "Finish the Bench" cycle. All five slices are merged on origin/main @ 1c7b9fd; this PR bumps the version string across the four config files that declare it, refreshes the CHANGELOG header date, and rewrites the "Notes on the version surface" blockquote to reflect that the release-cut PR has landed. ## What this PR ships ### Version bump (0.10.0 → 0.14.3) The version drift accumulated because v0.14.1, v0.14.2, and v0.14.3 all shipped without a version bump. CLAUDE.md golden rule #5 ("don't let the badge lie") was violated since v0.14.1 — the README badge has read v0.14.0 across three shipped cycles. Bumping to v0.14.3 (the most-recently-shipped cycle, per CLAUDE.md's "the badge moves only when something actually ships" rule) corrects the surface in one retroactive catch-up step. - `package.json` — `0.10.0` → `0.14.3` - `src-tauri/Cargo.toml` — `0.10.0` → `0.14.3` - `src-tauri/tauri.conf.json` — `0.10.0` → `0.14.3` - `src-tauri/Cargo.lock` — refresh via `cargo check`; beeemuu package version bumped to `0.14.3`. The productName stays `BeeEmUu` and the identifier stays `com.beeemuu.diag` (no product-naming changes in this release). - `README.md` — release badge from `v0.14.0` to `v0.14.3`. ### CHANGELOG.md - `## [0.14.3] — Unreleased` → `## [0.14.3] — 2026-07-30`. The date reflects the day all five cycle slices landed on origin/main; the section content is unchanged (already documented via PR #188 cycle closeout + PR #192 backfill + PR #195 stale-reference cleanup). - Cycle status blockquote rewritten: "The v0.14.3 release cut (version bump in `Cargo.toml` + `tauri.conf.json`, git tag, release notes publish, installer build) is a separate Tier C step — the slices are all merged but the version-surface bump requires an explicit release-cut PR. Until that PR lands, this entry stays `## [0.14.3] — Unreleased` per Keep-a-Changelog convention." → "Version surface bumped in the release-cut PR (this PR) to `0.14.3` across `package.json`, `src-tauri/Cargo.toml`, `src-tauri/tauri.conf.json`, and the README badge. The git tag + release publish + installer build are the next step (run locally via `git tag v0.14.3 && git push --tags` to trigger `.github/workflows/release.yml`)." - Closing paragraph rewritten: "follows the release-cut PR's merge. Until that lands, this entry stays `## [0.14.3] — Unreleased`." → "runs locally via `git tag v0.14.3 && git push --tags`, which triggers `.github/workflows/release.yml` and publishes a draft release on GitHub." ## What this PR does NOT do - ❌ No `git tag v0.14.3`. That's the next step (maintainer's call, Tier C). The PR sets the version strings; the tag publishes. - ❌ No `git push --tags`. Same — runs after the maintainer reviews and merges this PR. - ❌ No changes to `productName`, `identifier`, or any other config surface. Pure version bump. - ❌ No README content changes. The badge URL changes, but the surrounding badge block stays identical. - ❌ No CHANGELOG content changes for v0.14.1 / v0.14.2 (already backfilled via PR #192). ## Tier **C** per CLAUDE.md — "Releases: version bumps, git tags, publishing installers." Per CLAUDE.md Tier C rules: "always a human decision (propose, never execute)." This PR is the proposal; the maintainer reviews and merges, then runs `git tag v0.14.3 && git push --tags` to trigger the release.yml workflow. ## Verification (pre-cut) - [x] `node --test src/js/*.test.js` — 168/168 pass - [x] `cargo test --lib --offline` — 149/149 pass - [x] `pytest backend/tests/` — 166/166 pass - [x] `npm run build` — `rc=0`; both MSI + NSIS bundles built with the new `0.14.3` version: - `BeeEmUu_0.14.3_x64_en-US.msi` (5,009,408 bytes) - `BeeEmUu_0.14.3_x64-setup.exe` (3,488,856 bytes) - [x] Rustc compile log confirms: `Compiling beeemuu v0.14.3` - [x] `Cargo.lock` regenerated by `cargo check`: `name = "beeemuu" version = "0.14.3"` - [x] `git status` clean (no other modifications) ## Post-merge steps for the maintainer ```bash # 1. Verify the PR landed cleanly on origin/main git log origin/main --oneline -1 # 2. Tag the release git tag v0.14.3 # 3. Push the tag (triggers .github/workflows/release.yml) git push origin v0.14.3 # 4. Watch the release workflow gh run watch --repo ohgeeceee/beemuu # 5. Once the draft release is published, review it at # https://github.com/ohgeeceee/beemuu/releases/tag/v0.14.3 # and promote from draft to public. ``` The release.yml workflow (`.github/workflows/release.yml`) will: - Build Windows installers via `tauri-apps/tauri-action@v1` - Generate the MSI + NSIS bundles with the `0.14.3` version - Publish a draft GitHub release with the standard release notes (NSIS .exe + MSI .msi + safety warning banner) - Deploy the `_release_info.json` to `beemuu.com/frontend/` via the deploy SSH key (writes the new version into the public site's "Latest release" card) ## Cross-references - PR #188 — v0.14.3 slice 4 (the cycle-closeout PR that flagged the release cut as the next step) - PR #194 — v0.14.3 cycle closeout after slice 3b (updated ROADMAP + CHANGELOG to "Shipped" / "Unreleased" state) - PR #195 — "this PR" reference cleanup (prerequisite consistency for this PR's CHANGELOG edit) - `.github/workflows/release.yml` — the workflow that publishes the release on `v*` tag push - `docs/forward_roadmap_14.4_to_16.9.md` — the next cycle plan (v0.14.4 "N62 Bench Verification") * docs: refresh CLAUDE.md hardware/timing invariants — items now shipped Pure docs fix. The 'Hardware & timing invariants' section has been stale since the v0.6.0 release blocker resolved. Four claims were wrong against `main` @ 1c7b9fd: - **Async commands** listed 7 transport commands as 'still sync'. All 7 are `async fn` today; the migration is complete. `tests/async_commands.rs` parses `src/commands.rs` and asserts every non-async command is in the 24-entry `SYNC_ALLOWLIST` of in-memory / local-filesystem helpers. Refreshed the bullet to point at the guard. - **Tester Present keep-alive** marked `NOT YET IMPLEMENTED`. `src-tauri/src/keepalive.rs` (210 LOC) ships `INTERVAL = 3000 ms` / `FRAME = [0x3E, 0x00]` / `tauri::async_runtime::spawn`, wired into `connect`, `run_service_function`, `security_access`, with `keepalive::tests::` covering session survival, compressed-idle, and transport-error backoff. - **ISO-TP multi-frame** marked `NOT YET IMPLEMENTED`. `src-tauri/src/transport/isotp.rs` (430 LOC, ~25 unit tests) implements FF/CF/FC per ISO 15765-2. Called via `transport::IsoTpTransport` per `transport/kdcan.rs:25`. - **VIN reads** said `read_vin` does not exist and `connect`/`read_vehicle_info` do raw UDS DID reads. Both false — `protocol::read_vin` is at `src-tauri/src/protocol/mod.rs:296`, and all VIN callers in `commands.rs` (lines 70, 533, 677, 930) route through it. Each claim now cites the specific file + line number that pins it, and is tagged 'INVARIANT — enforced' to match the test-time guards. The remaining 'still not implemented' item (ENET/DoIP UDP discovery) is honestly preserved as such. Verified locally: - node --test src/js/**/*.test.js src/js/**/*.test.cjs → 226/226 - cd src-tauri && cargo test --lib --offline → 149/149 - cd src-tauri && cargo test --test async_commands --offline → 1/1 (the literal guard cited in the bullet) - pytest backend/tests/ -q → 166/166 No code changes. No `transport/**`, `protocol/**`, `commands.rs`, or `.claude/**` touches. Tier A docs-only, self-merge per CLAUDE.md rule 2 once CI is green. Closes the doc-rot half of the v0.14.3 cycle's housekeeping. PR #183 ('docs(proposal): fix stale NOT YET IMPLEMENTED claims in CLAUDE.md + .claude/agents/fix-drafter.md') proposed similar byte-exact diffs but landed as a proposal; this PR applies them to `CLAUDE.md`. The `.claude/agents/fix-drafter.md` half is left for a separate Tier C PR per CLAUDE.md's '.claude/agents/**' rule. --------- Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
docs(v0.14.3): cycle closeout — PR #190 merged
Closes the v0.14.3 cycle for real. PR #188 (slice 4) closed the cycle table on its own merge but the cycle itself was incomplete — slice 3b was still open, gating the release cut. PR #190 (slice 3b, merged 2026-07-30T18:58:11Z into
origin/main @ 10f58c8) closed that gate. This PR updates the stale docs to match reality.What this PR ships
ROADMAP.md#185,#186,#187,#188,#190).classifyNrchelper, the per-PID dim + one-click-remove UI, the#live-unsupported-countpanel-head badge, and the new.gauge-cell.dimmed/.pid-removeCSS.#188) instead of the original "this PR" placeholder.CHANGELOG.md## [0.14.3] — Unreleased".What this PR does NOT do
Cargo.toml/tauri.conf.jsonversion bumps. These are part of the Tier C release cut (separate PR).Tier
A —
CHANGELOG.md+ROADMAP.md. PR auto-merge eligible per CLAUDE.md Tier A rules.Verification
node --test src/js/*.test.js— 168/168 pass (includes the slice 3bclassifyNrctests added in PR feat(v0.14.3): slice 3b — frontend rewire for per-PID NRC + remove UI #190)cargo test --lib --offline protocol::— 15/15 pass (regression check; no code changes)npm run build—rc=0, both MSI + NSIS bundles built (1m 52s)[0.14.3]header preserved as "Unreleased" (correctly — release cut is separate)Cross-references