ci(deps): bump actions/checkout from 4 to 7 - #2
Closed
dependabot[bot] wants to merge 1 commit into
Closed
Conversation
Contributor
Author
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
force-pushed
the
dependabot/github_actions/actions/checkout-7
branch
from
July 7, 2026 17:42
459a4c0 to
c978c54
Compare
Contributor
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
This was referenced Jul 12, 2026
github-actions Bot
pushed a commit
that referenced
this pull request
Jul 15, 2026
Seventh PR of the v0.4.0/v0.5.0 transition. Doc-only. Auto-merge eligible per CLAUDE.md rule 2. What this ships: - docs/v0.5.0_plan.md — the v0.5.0 cycle scope and PR sequence. The cycle is named "Ground Truth" because the work is about validating the abstractions we shipped in v0.3 / v0.4 against real hardware, and adding the narrow features that real-car owners actually need first. Cycle spine (3 PRs, in order): - PR #1 — Real-car u8_enum validation harness. Doc-only. Mirrors the v0.4.0_first_pr.md shape. Gives an F/G-series owner with an ENET adapter a small checklist to validate the example enum DIDs (gear / engine_state / knock_detect) marked [needs verification] in b58.toml / n55.toml since PR #60. - PR #2 — Real-car fuel-trim / adaptation readout. Adds the DIDs (typically 0x4116 / 0x4117 / 0x4118 on BMW DME) and marks them [needs verification]. Likely no new decoder needed (existing s16_div100 handles the typical scaling). Protected path (live.rs is adjacent to protocol/). - PR #3 — Real-car knock-detection visualisation polish. Pure JS; extends the Logging tab's per-channel display to flag severity-bearing enum values (Moderate / Severe) with a visual indicator. Uses LiveValue.text from PR #60. Out of v0.5.0 scope (deferred to v0.6+ or Backlog per ROADMAP.md): OBDLink MX+, ENET/DoIP auto-detection, trigger- based logging, log merge/comparison, custom math channels, cloud sync, Pi CAN bridge, plugin system, Bootmod3, multi- language UI, web-based shared-log viewer. Each of those has a specific blocker documented in ROADMAP.md. The plan also explicitly notes: - Sibling-agent race in this repo (CLAUDE.md + multi-writer skill): work in fresh sibling clones, branch off origin/main, push from the clone. - origin/main drift (local main was stale vs origin/main during the v0.4 cycle): always git fetch origin before basing a branch, diff against origin/main not main. - CLAUDE.md rule 2: only doc-only PRs auto-merge. PRs #2 and #3 must go through human review. Verification: - node --test src/js/histogram.test.js → 13/13 (run via direct invocation; origin/main's package.json has a missing comma that breaks 'npm run test:*' — NOT fixed here, per commit-discipline 'discovering a broken sibling commit is not license to fix it'. That breakage is inherited from PR #68 / #69 area; a separate doc-only PR can fix it.) This PR does not touch code, workflows, or protected paths. 195 insertions in one new file. Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
github-actions Bot
pushed a commit
that referenced
this pull request
Jul 15, 2026
First PR of the v0.5.0 "Ground Truth" cycle. Doc-only. Auto-merge eligible per CLAUDE.md rule 2. What this ships: - docs/validation/u8_enum-validation.md — the actual validation harness. Pre-flight checklist (cable, adapter, ignition, simulator NOT in use), per-DID test procedure for the three example enum DIDs shipped in v0.4.0 (gear / DA0A, engine_state / 4004, knock_detect / 401F), results-submission instructions (PR the [verified YYYY-MM-DD] labels back into b58.toml / n55.toml), and a 'what if a byte doesn't match' section for the most-likely failure mode. - docs/v0.5.0_first_pr.md — the cycle's written record of why this PR exists. Mirrors the v0.4.0_first_pr.md shape so future contributors can follow the same pattern. Why this is the first PR of v0.5.0: The v0.5.0 cycle plan (docs/v0.5.0_plan.md, PR #70) lists three PRs in order: 1. THIS PR — validation harness (doc-only, lands first because it unblocks the rest) 2. Real-car fuel-trim readout (PR #2) 3. Real-car knock visualisation polish (PR #3) Real-car evidence was the only 🟡 blocker for the v0.4.0 'Tuner Friendly' cycle to retire. The example enum DIDs shipped in PR #60 all carry [needs verification] markers because the byte-to-state mappings came from OBDb (CC-BY-SA 4.0) and have not been validated on real hardware. This harness is the smallest possible next step for an F/G-series owner with an ENET adapter to retire that blocker: a checklist they can fill in and PR back, with no developer hand-holding required. What this PR does NOT do: - No code change. Doc-only. - No new tests. Validation is manual (a person running the app against a real car). - No change to the [needs verification] markers in b58.toml / n55.toml. Those stay until a results PR lands. Verification: - node --test server/dtc/test/ingestor.test.js → all green (no regression) - node --test src/js/histogram.test.js → all green - git diff origin/main...HEAD --stat → 2 files, 305 insertions, 0 deletions (clean; both files new) - This PR does not touch code, workflows, or protected paths. A reviewer with an F/G-series car + ENET adapter is the authoritative verifier. Note on the broken package.json: origin/main's package.json has a missing-comma bug (introduced by a sibling agent in the PR #68/#69 area; noted in PR #70 and #71 bodies). It breaks 'npm run test:*' but does NOT break 'node --test' directly. A separate doc-only PR can fix it. Not fixed here per commit-discipline's 'discovering a broken sibling commit is not license to fix it.' Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
This was referenced Jul 15, 2026
github-actions Bot
pushed a commit
that referenced
this pull request
Jul 15, 2026
Continuation of the v0.5.0 close-out pattern. Doc-only. Auto-merge eligible per CLAUDE.md rule 2. What this PR ships: - docs/v0.6.0_plan.md — the proposed v0.6.0 cycle scope and PR sequence. The cycle is named 'Real Hardware' because the work is about turning the now-validated decoder pipeline (v0.3 / v0.4) plus the real-car harness (v0.5.0) into actual tuner-facing workflows on real data. Cycle spine (3 PRs, in order): - PR #1 — Log-merge / comparison (PR #2 in cycle-plan numbering; this is the first v0.6.0 PR). Pure JS / CSS. Adds a 'Compare logs' button next to 'Export CSV' on the Logging tab. Diff-modal shows per-channel meanΔ, std-devΔ, maxΔ, countΔ. ~30 lines of business logic in a new src/js/log_diff.js, ~150 lines of UI. Tested via the existing node --test harness. - PR #2 — Injector duty cycle (decoder + DIDs). Touches src-tauri/src/data/live.rs (new decoder) and the profile TOMLs. Protected path — flag for human review. - PR #3 — OBD-II PID auto-discovery. Pure diagnostic utility (scans standard 0x01 PIDs 0x00..0x7F, reports which respond). The first non-BMW-specific surface shipped via UDS. Touches src-tauri/src/protocol/mod.rs (new scan helper) and src-tauri/src/commands.rs (new #[tauri::command]). Protected path — flag for human review. Out of v0.6.0 scope (deferred per the cycle-plan): The remaining ROADMAP 🟡 items (custom math channels, knock viz polish, AFR polish, adaptation / fuel trim readout polish, trigger-based logging, OBDLink MX+, ENET/DoIP auto-detection, real-car validation B58 / N55 F-series) move to v0.7.0+. All Backlog items (i18n, plugin system, web log viewer, Bootmod3, automatic service manual lookup, OBD-II PID auto-discovery, VIN database) also stay deferred. The plan explicitly notes: - 'No feature without a Discussion' per COMMUNITY_FRAMEWORK.md. This plan is a seed for the Discussion thread, not a substitute for it. No v0.6.0 code should land before the Discussion concludes. - Sibling-agent race in this repo (CLAUDE.md + multi-writer skill): work in fresh sibling clones, branch off origin/main, push from the clone. - origin/main drift (local main was stale during the v0.4 and v0.5 cycles): always git fetch origin before basing a branch, diff against origin/main not main. - CLAUDE.md rule 2: only doc-only PRs auto-merge. PRs #2 and #3 must go through human review. Verification: - node --test server/dtc/test/ingestor.test.js → all green (no regression) - node --test src/js/histogram.test.js → all green - node --test src/js/test/live_format.test.cjs → all green - git diff origin/main...HEAD --stat → 1 file, 210 insertions, 0 deletions (clean; this PR is a new doc file only) - This PR does not touch code, workflows, or protected paths. Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
This was referenced Jul 15, 2026
ohgeeceee
added a commit
that referenced
this pull request
Jul 18, 2026
…rofile theme colors (#109) Ready-to-Claim pile, three items in one Tier A commit: 1. Theme toggle completed: the pre-existing toggle only re-skinned a handful of panels; app.css now routes every theme-relevant surface through CSS variables with a full body[data-theme=dark] override block. The light default stays pixel-identical (:root gains the exact literals that were hardcoded before). Persistence moves from localStorage to workspace.json (one persistence system). 2. Workspace layout persistence: theme, app mode, active tab, connection panel choices, live/log profile selectors, traffic auto-refresh, and the per-profile log channel enabled map save debounced to ~/beeemuu-exports/workspace.json via the new async read_export_text command (writes reuse export_text). First boot migrates beeemuu_dark/beeemuu_settings/beeemuu_mode from localStorage; corrupt/missing files fall back to defaults. Also fixes the legacy connOptsOpen flag, which ANDed the two option panels and was effectively always false. 3. Gauge [profile.theme] blocks: ProfileToml/Profile carry an optional theme map, surfaced via list_profiles (omitted from JSON when empty) and round-tripped by export_profile/import_profiles. gauges.js resolves nine colour keys with per-key fallback and CSS.supports validation; b58.toml ships the reference block; syntax documented in DECODE_FUNCTIONS.md section 9. Tests: cargo 95 -> 97 lib (+2 community theme parse tests) + 1 integration guard (command count 44 -> 45); node --test 43 -> 57 (+14 workspace round-trip/migration tests). Plan deviations: theme toggle already existed (completed, not added); light is the default theme (plan said dark); [profile.theme] needed a minimal Rust pass-through (plan claimed the TOML format already supported it); workspace file lives in ~/beeemuu-exports/ (plan said ~/beeemuu/). Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
github-actions Bot
pushed a commit
that referenced
this pull request
Jul 18, 2026
Planning document for the post-v0.7.0 cycle, drafted against main @ ba14141. Docs-only: the plan, plus the ROADMAP/README updates it implies. No code, no data changes. Gap analysis (evidence-level, ISTA+ vs BeeEmUu): - SHIPPED: live data, logging/replay/compare, VIN/vehicle info, freeze-frame decode, transports (K+DCAN, ENET/DoIP + discovery, sim, ISO-TP reassembly). - PARTIAL: DTC coverage (26 built-in texts; 12-address scan table; 6 simulator-grade service functions, none chassis-validated; thin freeze schemas; embryonic guided fault finding). - Broken today: community/dtc_texts.toml truncated mid-string (TOML parse fails, 0 overlay entries load) and CONTRIBUTING.md truncated mid-table — CI can't catch this because lint-toml.js checks whitespace, not parseability. - OUT-OF-SCOPE with reasons: flashing/programming, FSC/AOS, coding writes (this cycle), ISTA repair-doc corpus, immobiliser functions. Four slices: PR #1 data integrity + TOML parse gate (Tier A), PR #2 service-function breadth with [UNVERIFIED] write discipline (Tier B, protected paths flagged), PR #3 B48/S58/N57 profiles (Tier A), PR #4 ECU scan-table breadth + addressing-model doc (Tier A). Each with acceptance criteria and test expectations. ROADMAP.md: v0.7.0 marked merged (PRs #108-110), v0.8.0 active-plan block added, Ready-to-Claim pile pruned of shipped items (theme toggle, workspace, gauge theming, ISO-TP, OBD-II auto-discovery, N20/S55). README.md: "What's coming" refreshed for v0.7.0 merged + v0.8.0 plan link. Flagged for owner (Tier C, not touched): CLAUDE.md invariant notes are stale — keep-alive (#87), ISO-TP (#88), and protocol::read_vin all shipped but still read NOT-YET-IMPLEMENTED. Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
9 tasks
ohgeeceee
added a commit
that referenced
this pull request
Jul 18, 2026
Planning document for the post-v0.7.0 cycle, drafted against main @ ba14141. Docs-only: the plan, plus the ROADMAP/README updates it implies. No code, no data changes. Gap analysis (evidence-level, ISTA+ vs BeeEmUu): - SHIPPED: live data, logging/replay/compare, VIN/vehicle info, freeze-frame decode, transports (K+DCAN, ENET/DoIP + discovery, sim, ISO-TP reassembly). - PARTIAL: DTC coverage (26 built-in texts; 12-address scan table; 6 simulator-grade service functions, none chassis-validated; thin freeze schemas; embryonic guided fault finding). - Broken today: community/dtc_texts.toml truncated mid-string (TOML parse fails, 0 overlay entries load) and CONTRIBUTING.md truncated mid-table — CI can't catch this because lint-toml.js checks whitespace, not parseability. - OUT-OF-SCOPE with reasons: flashing/programming, FSC/AOS, coding writes (this cycle), ISTA repair-doc corpus, immobiliser functions. Four slices: PR #1 data integrity + TOML parse gate (Tier A), PR #2 service-function breadth with [UNVERIFIED] write discipline (Tier B, protected paths flagged), PR #3 B48/S58/N57 profiles (Tier A), PR #4 ECU scan-table breadth + addressing-model doc (Tier A). Each with acceptance criteria and test expectations. ROADMAP.md: v0.7.0 marked merged (PRs #108-110), v0.8.0 active-plan block added, Ready-to-Claim pile pruned of shipped items (theme toggle, workspace, gauge theming, ISO-TP, OBD-II auto-discovery, N20/S55). README.md: "What's coming" refreshed for v0.7.0 merged + v0.8.0 plan link. Flagged for owner (Tier C, not touched): CLAUDE.md invariant notes are stale — keep-alive (#87), ISO-TP (#88), and protocol::read_vin all shipped but still read NOT-YET-IMPLEMENTED. Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
2 tasks
This was referenced Jul 18, 2026
ohgeeceee
added a commit
that referenced
this pull request
Jul 18, 2026
… gating (plan PR #2) (#117) Tier B: touches src-tauri/src/data/service_functions.rs and the command-adjacent UI surface; commands.rs itself is UNCHANGED (the new verified flag flows through the existing Serialize derive on list_service_functions). Audit: all six routine IDs (0x0F01-0x0F04, 0x0A01, 0x0A02) are v0.4.0 simulator placeholders - the sim answers any 0x31 ID, and no in-repo source (research/, TECH_SPECS.md, backend seeds) grounds any real ID; bmw_diag_landscape.md documents BMW routine IDs as security-sensitive, unpublished. Zero new routine IDs ship; DPF regen, throttle/Valvetronic adaptation, steering-angle calibration, EGS adaptation reset and EMF service mode are documented as known-missing in the new harness doc. Changes: - ServiceFunction gains a verified flag; all six entries marked verified: false with per-entry provenance comments. - UI renders an UNVERIFIED tag and prepends a routine-ID-not-chassis- validated preamble to the run confirmation (risk dialog preserved). - docs/validation/service-functions.md: real-car harness (preconditions, per-routine observations, NRC interpretation, label-removal path); CONTRIBUTING.md rule 3 now references it. - Contract tests: new all_shipped_entries_marked_unverified tripwire (lib count 99 -> 100); multi_routine_construction_round_trip gained the mechanical verified field. Count/ID/routine-ID/risk preservation tests deliberately untouched. Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
1 task
ohgeeceee
added a commit
that referenced
this pull request
Jul 18, 2026
Owner directive: work lands on GitHub as PRs as soon as it's done - no Discussion seed, no thread-conclusion gate. - COMMUNITY_FRAMEWORK.md: Rule 2 rewritten from "No Feature Is Accepted Without Public Discussion" to "Work Lands Directly as Pull Requests". Reasoning moves into the PR body; Discussions stay as an optional venue for genuinely open questions, never a gate. Rules 1/3/4 untouched. - docs/v0.9.0_plan.md + docs/v0.8.0_plan.md: seed-for-Discussion framing and cycle-starts-when-thread-concludes gates removed; plans stand on their own as PRs. - ROADMAP.md: v0.9.0 section + footer now say slices dispatch as PRs directly. - README.md: decisions-in-public row, ideas-being-explored section, and contributor commitment #2 updated to the direct-PR model. - CONTRIBUTING.md: feature-ideas path is now PR-first; Discussion optional for open directions. Deliberately kept: Discussions as a venue/contact channel (framework intro + heads-up line, README contact URL, CONTRIBUTING optional link) and historical mentions in CHANGELOG.md / RELEASE_NOTES_v0.3.0.md / v0.5.0-v0.7.0 plan docs (records of what the rule was at the time). CLAUDE.md has no Discussion references (verified by grep).
ohgeeceee
added a commit
that referenced
this pull request
Jul 18, 2026
…#119) * docs: v0.9.0 cycle plan — "Guided Fault Finding" (gap survey + 5 slices) Seed-for-Discussion plan for the next cycle, mirroring the v0.8.0 plan's shape. Survey of the existing guided-fault-finding surface (3 Opinions TOML files, 2 Oracle JSON files / 7 patterns, 2 Story TOML files / 8 entries — all flat, none branching) identifies the extension points: a new community/testplans TOML tree with [[step]] branching (inherits the v0.8.0 PR #1 TOML parse gate), a read-only plan query command, and a walkthrough UI mounted in the existing fault-detail composition. Also surfaces that community/oracle/*.json has no parse gate today. Five slices: (1) test-plan schema + branch-integrity gate + oracle JSON gate (Tier A, test-only); (2) grounded first corpus of ~8-10 DTC plans with per-step source citations + known-missing list (Tier A data); (3) loader + read-only get_test_plan command (Tier B, protected paths); (4) walkthrough UI with live-data measurement deep-links and freeze-frame seeding (Tier A frontend); (5) validation harness + label conventions (Tier A docs). Standing NOT-do list gains guided-diagnostics-adjacent items: emissions-monitor tampering, VIN/odometer fraud, imported ISTA test plans, auto-executing writes, unreviewed LLM procedures, cloud fault upload. ROADMAP: v0.8.0 status updated (merged #114/#115/#116, #117 pending human merge), v0.9.0 planned section added. README What's-coming refreshed to match. * docs: replace Discussion-gate process with direct-PR model Owner directive: work lands on GitHub as PRs as soon as it's done - no Discussion seed, no thread-conclusion gate. - COMMUNITY_FRAMEWORK.md: Rule 2 rewritten from "No Feature Is Accepted Without Public Discussion" to "Work Lands Directly as Pull Requests". Reasoning moves into the PR body; Discussions stay as an optional venue for genuinely open questions, never a gate. Rules 1/3/4 untouched. - docs/v0.9.0_plan.md + docs/v0.8.0_plan.md: seed-for-Discussion framing and cycle-starts-when-thread-concludes gates removed; plans stand on their own as PRs. - ROADMAP.md: v0.9.0 section + footer now say slices dispatch as PRs directly. - README.md: decisions-in-public row, ideas-being-explored section, and contributor commitment #2 updated to the direct-PR model. - CONTRIBUTING.md: feature-ideas path is now PR-first; Discussion optional for open directions. Deliberately kept: Discussions as a venue/contact channel (framework intro + heads-up line, README contact URL, CONTRIBUTING optional link) and historical mentions in CHANGELOG.md / RELEASE_NOTES_v0.3.0.md / v0.5.0-v0.7.0 plan docs (records of what the rule was at the time). CLAUDE.md has no Discussion references (verified by grep). --------- Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
ohgeeceee
added a commit
that referenced
this pull request
Jul 18, 2026
Guided Fault Finding cycle, slice 2 of 5 (Tier A, data-only). 11 branching test plans under community/testplans/, every step cited to an in-repo source (opinions / oracle / stories / research dim01+dim04 / TECH_SPECS): 2A82, 29E0, 29E1, 29E2, 30FF, 29CC, 2E81, 2E82, P0171, P0300, P0420. - P0171 uses the N55/S55 fuel-trim DIDs 0x1201 (LTFT) / 0x1202 (idle adaptation) from TECH_SPECS § 5 for did-measurement steps. - P0420 ends at 'diagnose the leak or the cat' — readiness-monitor masking is a permanent exclusion (v0.9.0 plan). - Coolant-pump plans (2E81/2E82) never auto-fire a write; activation hands off to the service-function UI. - docs/testplans.md: corpus table + known-missing list (2A99, wastegate 30FF branch, P0011/P0014, P0087, P0128, VANOS timing family). All 11 pass shipped_testplans_branch_integrity; lint-toml clean (35 files); data-only, no production code change. Co-authored-by: Jon currie1 <ohgeeceee@users.noreply.github.com>
This was referenced Jul 18, 2026
github-actions Bot
pushed a commit
that referenced
this pull request
Jul 19, 2026
ROADMAP v0.9.0 'Guided Fault Finding' moves Planned -> In progress. PRs #1/#2/#3/#4 (#120/#121/#122/#123) marked Done; PR #5 (validation harness + contribution path) remains Ready/Not yet dispatched. Footer refreshed to 2026-07-19. Doc-only, no code change. Tier A per CLAUDE.md. Co-authored-by: hermes-agent <ohgeeceee@users.noreply.github.com>
ohgeeceee
added a commit
that referenced
this pull request
Jul 19, 2026
…125) Completes the v0.9.0 'Guided Fault Finding' cycle. - New docs/validation/testplans.md: a real-car harness that upgrades a plan from verified = 'needs verification' (the default on every plan) to 'verified', mirroring service-functions.md (pre-flight, walk-the-plan, negative-result handling, report-filing). - community/testplans/README.md gains the plan-level verification-label contract; CONTRIBUTING.md gains the plan axis (rule 4) alongside the existing read/write axes. - All 11 PR #2 corpus plans now ship 'verified = "needs verification"' so a future UI NEEDS VERIFICATION badge has its data contract. The marker lives in TOML and is ignored by the loader (no deny_unknown_fields), so the branch-integrity gate stays green (cargo test shipped_testplans_branch_integrity passes). Tier A docs; no Rust/Python change beyond the data marker. Acceptance: docs only, links resolve, CONTRIBUTING conventions consistent. Co-authored-by: hermes-agent <ohgeeceee@users.noreply.github.com>
This was referenced Jul 21, 2026
5 tasks
ohgeeceee
added a commit
that referenced
this pull request
Jul 31, 2026
…#190) Cycle plan: docs/v0.14.3_plan.md (slice 3 lines 103-124). Tier B (frontend + CSS; no transport/** changes, no protocol/** changes, no Rust changes — the backend contract was already shipped by PR #187). Per CLAUDE.md Tier B rules: PR is the review; no self-merge even if all checks pass. Awaiting human merge. ## What this slice ships ### 1. live_data_panel.js — new `classifyNrc(err)` helper Categorises each `LiveError` from `read_live_data`'s new `LiveSweepResult { values, errors }` shape into one of three buckets the UI acts on: - "unsupported" — the PID is structurally absent on this ECU (NRC 0x11 / 0x12 / 0x31 / 0x14); user should be offered the "remove from profile" affordance. - "transient" — ECU is unhappy right now (NRC 0x22 conditionsNotCorrect, NRC 0x33 securityAccessRequired, NRC 0x78 responsePending, etc.); no UI action — the next sweep will retry. - "unknown" — no structured sid/nrc to act on (transport timeout, "Not connected", "Unexpected DID response: ..."); same UI treatment as transient. Uses the structured (sid, nrc) fields populated by `protocol::nrc_from_error` (PR #187) as the fast path. Falls back to parsing `err.error` (the verbatim protocol error string) via `parseNrcError` when the structured fields are null, so legacy callers and any race where the backend populated `error` but not the structured fields still get a sensible classification. Exported from the public surface so main.js can call it as `window.beeemuuLiveDataPanel.classifyNrc(err)`. ### 2. live_data_panel.test.js — 5 new tests Pinned tests for classifyNrc covering: - structured (sid, nrc) fast path: unsupported for the four canonical NRCs - structured (sid, nrc) fast path: transient for non-unsupported NRCs - structured nrc=null falls back to parsing err.error - structured nrc=null + unparsable error string returns 'unknown' - defensive: null / non-object / missing fields never throw Total: 20 tests in this file (was 15). ### 3. main.js — three call sites rewired for `LiveSweepResult` The new return shape of `read_live_data` (PR #187) breaks the three call sites that did `const values = await invoke("read_live_data", ...)`. All three are updated: - pollOnce (Live Data tab, line 1365) — main consumer; iterates `result.values` for the gauge loop, then a NEW loop over `result.errors` that classifies each PID and either (a) logs the canonical "unsupported" line + dims the gauge cell + appends a one-click "Remove from profile" button that calls the async `remove_profile_pid` Tauri command, or (b) logs the transient / unknown case and skips UI affordance. Clears any prior dim state on a successful read (PID may recover after a re-key cycle). - buildLogParams (Logging tab channel list, line 2109) — iterates `result.values` only; the Logging tab doesn't render error UI. - logTick (Logging tab chart tick, line 2203) — iterates `result.values` only. New handler `removePidFromProfile(pidId, pidLabel)` — gated behind `window.beeemuuDialog.ask()` (the same `tauri-plugin-dialog` confirmation pattern the v0.14.1 issue-#161 fix uses). On success, removes the gauge cell from the DOM (the PID is gone from the in-memory profile + the on-disk TOML, so the next sweep won't return it). New panel-head count badge `#live-unsupported-count` — hidden when zero, shows "N unsupported on this ECU" otherwise. ### 4. index.html — `#live-unsupported-count` slot One-line addition in the Live Data panel head, next to the profile selector. `hidden` by default; populated by pollOnce. ### 5. app.css — dimmed state + remove button + count badge Three new rule blocks: - `.gauge-cell.dimmed` — opacity 0.45 + " (unsupported)" appended to the label via ::after pseudo-element. Cleared on next sweep. - `.pid-remove` — minimal inline button that sits inside the gauge cell below the peak label. Hover colour is the project's --err. - `.live-unsupported-count` — small muted text in the panel head. ## What this PR does NOT do - No Rust changes. PR #187 already shipped `protocol::nrc_from_error`, `LiveSweepResult { values, errors }`, `LiveError`, and the async `remove_profile_pid` Tauri command. This PR is the frontend consumer. - No transport/** changes (K+DCAN / ENET transports untouched). - No protocol/** changes. - No new crate / dependency. - No change to the v0.14.0 Live Gauges panel (still sim-only, per the v0.14.2 cycle-pick conversation). - No version bumps. The release cut (Cargo.toml + tauri.conf.json + git tag) is a separate Tier C step that follows slice 3b. ## Tier B per CLAUDE.md — `src/js/main.js` + `src/js/live_data_panel.js` + `src/index.html` + `src/css/app.css`. Per CLAUDE.md Tier B rules: "PR is the review; auto-merge disabled even if all checks pass. Awaiting human merge." ## Verification - [x] `node --check src/js/main.js` — rc=0 - [x] `node --check src/js/live_data_panel.js` — rc=0 - [x] `node --test src/js/*.test.js` — 168/168 pass (was 163, +5 new for classifyNrc) - [x] `cargo test --lib --offline protocol::` — 15/15 pass (no regression on the backend surface this slice consumes) - [x] `pytest backend/tests/` — 166/166 pass (one test, test_app_live_endpoint::test_endpoint_returns_ok, was order- dependent flaky on first run; passed on re-run — not introduced by this slice) ## Cross-references - v0.14.3 plan: docs/v0.14.3_plan.md (slice 3 lines 103-124) - Backend contract this PR consumes: PR #187 — feat(v0.14.3): per-PID NRC errors + remove_profile_pid command - Prior slice shipping the NRC-aware helpers + friendlier log line: PR #177 — feat(v0.14.2): Live Data panel UX polish (parseNrcError + isUnsupportedNrc were drafted there as dead-but-not-yet-usable helpers; this slice activates them via the per-PID error loop + classifyNrc) - Re-enabled orphan from v0.14.2 slice 2 WIP: docs/v0.14.3_plan.md §"Open question #2" — the `#live-unsupported-count` badge + the dim/remove UI together fulfil the deferred WIP Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
5 tasks
github-actions Bot
pushed a commit
that referenced
this pull request
Aug 2, 2026
Tier A, docs only. v0.15.0 "Live Gauges from the Bench" cycle plan - the next feature cycle per the forward- roadmap doc's plan (DID-projection bridge + Live Gauges data source flip + update_can_listen async Tauri command). Mirrors the v0.14.4 / v0.14.5 / v0.14.6 cycle plan shape (plan doc + ROADMAP header + CHANGELOG entry per cycle). This PR also bundles a small fix-up: the v0.14.6 cycle shipped in PR #226 + #227 without a ROADMAP.md v0.14.6 cycle block - the audit shipped the docs (forward- roadmap + ROADMAP v0.14.5 closeout + public landing- page updates) but the ROADMAP v0.14.6 block was missed. This PR adds the v0.14.6 block as a "Shipped 2026-08-02" close-out alongside the v0.15.0 block. ## What this PR adds - docs/v0.15.0_plan.md (new, 322 lines): the v0.15.0 cycle plan doc per the established docs/v0.14.x_plan.md convention. Includes premise (DID-projection bridge + Live Gauges data source flip + update_can_listen async command, mirroring the v0.14.0 Live Gauges panel), slice list (4 slices: 1 Tier A docs-only cycle plan + 2 Tier A frontend slices + 1 Tier B Rust slice), tier split, execution order, "what this cycle does NOT ship" claim, open questions for the maintainer, cross-references. - ROADMAP.md: v0.14.6 cycle block added (Shipped 2026-08-02, Done rows for PRs #226 + #227, verification close-out, "What this cycle does NOT ship" carried-forward, "Next cycle" pointer to v0.15.0). v0.15.0 cycle block added (In Progress - slice 0, with 3 Slices planned: DID-projection bridge, data source flip, update_can_listen async command, with the Tier B flagged per CLAUDE.md golden rule #2). - CHANGELOG.md: ## [0.15.0] - Unreleased section inserted before the v0.14.5 section. Includes the cycle status blockquote (slice 0 in flight - this PR; slices 1 + 2 Tier A batch + slice 3 Tier B are open), the "Planned - Tier A surface (feature cycle)" section listing the 4 slices, and the "What this cycle does NOT ship" claim. ## Tier A per CLAUDE.md - docs only, no transport/**, no protocol/**, no commands.rs, no src-tauri/Cargo.toml, no src/js/**, no src/css/**, no src/index.html. Auto- merge eligible once required CI checks pass. The actual feature slices (1, 2, 3) dispatch as separate PRs. Slice 3 is Tier B (the only Tier B in the v0.15.0 cycle) because commands.rs is on the protected path - flag at the top of the PR body per CLAUDE.md golden rule #2 + the multi-writer skill's Tier B/C gate. ## Verification (pre-merge) - git diff --cached --stat: 3 files, 554 insertions, 0 deletions (no phantom diff from line-ending normalization; verified per the v0.14.3 slice-4 lessons' CRLF stat-noise trap - the new docs/v0.15.0_plan.md was normalized to CRLF on disk before git add, which then normalized it to LF in the index, matching the committed-blob convention) - git ls-files --stage vs git ls-tree HEAD: staged blob SHAs differ for both modified files; the new file docs/v0.15.0_plan.md has a legitimate new blob SHA. No phantom commit. - Branched off origin/main @ 83aef4c (the post-#227 v0.14.6 release cut tip), NOT off the local main ref (the multi-writer skill's "local main can be stale" trap) - Working tree clean post-stage; no other modifications, no untracked files - Author ohgeeceee@users.noreply.github.com (GH007 bypass; content unchanged) Author note: commit authored with ohgeeceee@users.noreply.github.com to bypass GH007 (private-email push block). Content unchanged. Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.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.
Bumps actions/checkout from 4 to 7.
Release notes
Sourced from actions/checkout's releases.
... (truncated)
Changelog
Sourced from actions/checkout's changelog.
... (truncated)
Commits
9c091bbupdate error wording (#2467)1044a6dgetting ready for checkout v7 release (#2464)f028218Bump the minor-npm-dependencies group across 1 directory with 3 updates (#2462)d914b26upgrade module to esm and update dependencies (#2463)537c7efBump@actions/coreand@actions/tool-cacheand Remove uuid (#2459)130a169Bump js-yaml from 4.1.0 to 4.2.0 (#2461)7d09575Bump flatted from 3.3.1 to 3.4.2 (#2460)0f9f3aaBump actions/publish-immutable-action (#2458)f9e715ablock checking out fork pr for pull_request_target and workflow_run (#2454)df4cb1cUpdate changelog for v6.0.3 (#2446)