docs(v0.11.0): cycle plan — Share the Trace (4 slices, all Tier A) - #135
Conversation
|
🤖 Doc-only change — auto-merge enabled. Will merge once required checks pass. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 984731db03
ℹ️ 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".
| |---|---|---|---|---| | ||
| | 1 | PNG export of logging + histogram charts | A | ✅ Done (#131, d2d1d07) | Chart.js `toBase64Image()` → browser-native download. Buttons enable only once a chart exists. | | ||
| | 2 | SVG export of logging + histogram charts | A | 🔲 Open | Same UX as PNG; Chart.js has no `toSVG()`, so serialize the chart config + a small inline SVG renderer in `src/js/`. Pure frontend. | | ||
| | 3 | CSV-with-units export option | A | 🔲 Open | Adds a checkbox on the logging "Save" panel: "Include units row" → row 2 of the CSV is `<DID>,<unit>,<unit>`. Loader parses both shapes; existing logs keep loading unchanged. `src-tauri/src/data/logging.rs` is touched additively. | |
There was a problem hiding this comment.
Scope the CSV slice around the frontend implementation
In the inspected commit, src-tauri/src/data/logging.rs does not exist: CSV generation is in src/js/main.js (buildLogCsv), while Rust's export_text command only writes the supplied string. There is also no CSV parser or handler for btn-log-load anywhere in the tree, so the promised dual-shape loader and Rust round-trip test cannot be implemented as this slice specifies; this needs to identify the required frontend writer/parser work and test it in JavaScript rather than presenting it as a small additive Rust change.
Useful? React with 👍 / 👎.
| | Chart rendering | Chart.js lines (logging panel) + histograms | `src/js/chart.js`, `src/js/histogram.js` | Look at it in-app; nothing else | | ||
| | Trace comparison | Diff modal merges two logs side-by-side | `src/js/merge.js` | Same as above | | ||
| | Walkthrough | Step-by-step panel in fault detail | `src/js/walkthrough.js` (v0.9.0 PR #4) | App-only | |
There was a problem hiding this comment.
Point the survey at the actual frontend modules
Three paths in this architecture survey are absent from the commit tree: chart rendering lives primarily in src/js/main.js, comparison uses src/js/log_diff.js plus main.js, and walkthrough traversal is in src/js/testplan_walk.js, not chart.js, merge.js, or walkthrough.js. Since this plan is the execution handoff for contributors, these nonexistent entry points send each planned slice to the wrong place and should be replaced with the actual files.
Useful? React with 👍 / 👎.
| | 2 | SVG export of logging + histogram charts | A | 🔲 Open | Same UX as PNG; Chart.js has no `toSVG()`, so serialize the chart config + a small inline SVG renderer in `src/js/`. Pure frontend. | | ||
| | 3 | CSV-with-units export option | A | 🔲 Open | Adds a checkbox on the logging "Save" panel: "Include units row" → row 2 of the CSV is `<DID>,<unit>,<unit>`. Loader parses both shapes; existing logs keep loading unchanged. `src-tauri/src/data/logging.rs` is touched additively. | | ||
| | 4 | Static HTML walkthrough bundle | A | 🔲 Open | "Share walkthrough" button on a completed walkthrough panel → produces `walkthrough-XXXX.html` (single file, inline CSS + JS, replay-from-log-file). Pure frontend; no Rust round-trip. The output file can be attached to a forum post or opened from a USB stick on a phone. | | ||
| | 5 | ROADMAP v0.10.0 closure | A | 🔲 Open | v0.10.0 already shipped but the ROADMAP cycle-header / footer table never landed (v0.9.0 has the pattern; v0.10.0 only carries the `Started` line). Pure docs. | |
There was a problem hiding this comment.
Mark the roadmap-closure slice complete
This commit is slice 5 and the accompanying ROADMAP.md row already marks it ✅ Done (this PR), but the canonical cycle plan still records the same slice as open and later calls it dispatchable. Once this commit lands, contributors will see contradictory cycle state and may try to claim already-completed work, so this row should be marked done consistently.
Useful? React with 👍 / 👎.
| - **PR #131 (already landed)** — manual smoke (PNG export → file opens in image viewer); node --test count unchanged; cargo unchanged. | ||
| - **Slice 2 (SVG)** — manual smoke (SVG export → file opens in browser at 1×, 2×, 4× zoom without blur); add `node --test` cases for the SVG serializer (axis ticks, legend, histogram bin shape); cargo unchanged. | ||
| - **Slice 3 (CSV-with-units)** — add a Rust unit test that round-trips a log file with and without the units row and confirms both load; node unchanged. | ||
| - **Slice 4 (static HTML)** — manual smoke (save bundle → open in a fresh browser with no dev tools → walkthrough replays from the inline log data); no new unit tests needed beyond what the bundle exercises (it reuses the walkthrough reducer already tested in v0.9.0 PR #4); document the bundle shape in `docs/validation/testplans.md` or a sibling doc. |
There was a problem hiding this comment.
Test the generated walkthrough bundle itself
The existing testplan_walk.js tests only map diagnostic-plan steps and answer sequences; they never consume log samples or exercise inline-data serialization, generated HTML, chart playback, or asset embedding. Consequently, a bundle that fails for channel labels or values containing quotes/newlines, omits required runtime code, or cannot replay its trace would leave those tests green, so this slice needs automated coverage for the bundle serializer and replay state rather than treating the traversal reducer's tests as sufficient.
Useful? React with 👍 / 👎.
|
|
||
| | Owner need | BeeEmUu today | v0.11.0 ships | Why deferred | | ||
| |---|---|---|---| | ||
| | Paste a chart into a forum post | ✗ | ✅ PNG export (#131 already in) | — | |
There was a problem hiding this comment.
Account for the already-shipped PNG export
This plan is explicitly drafted after PR #131 and later marks PNG export as done, but the gap table still says BeeEmUu cannot paste a chart into a post. The inspected frontend already exposes working PNG downloads for both the logging and histogram charts, so treating all visual export as absent makes the current-state survey and prioritization contradictory; only the remaining SVG or bundle gaps should be marked missing.
Useful? React with 👍 / 👎.
| subreddit. The **first thing** they need is the picture: a chart they | ||
| can paste straight into a post, and an opinion library they can skim | ||
| without running the app. BeeEmUu already logs, draws, histograms, |
There was a problem hiding this comment.
Either scope the opinion export or remove the promise
None of the planned slices makes the opinion library available outside the app: opinions are a separate src-tauri/src/opinions.rs/loadOpinion surface, while the static bundle is scoped to a test-plan walkthrough and log replay. Therefore, even after all listed slices ship, owners still cannot skim the opinion library without running BeeEmUu as this premise promises; either add that data to the bundle/export scope or remove it from the cycle's user promise.
Useful? React with 👍 / 👎.
| |------|--------|------|-------| | ||
| | Plan verification badge in walkthrough header | ✅ Done (PR #127) | A | Reads `meta.verified` per plan; renders **NEEDS VERIFICATION** (amber) / **✓ Verified** (green) in the walkthrough panel header. Rust change additive (`verified: Option<String>` on `PlanMeta` + `TestPlan`); legacy plans with no marker render no badge. | | ||
| | Clickable NEEDS VERIFICATION badge + fix repo URL | ✅ Done (PR #130) | A | Badge now links to `docs/validation/testplans.md` so a tech lands on the contribution path with one click. About modal `ohjoncurrie/beeemuu` → `ohgeeceee/beeemuu`. | | ||
| | Bump version to 0.10.0 (matches released state) | ✅ Done (PR #128) | C-executed | `Cargo.toml` + `package.json` synced to `0.10.0`. | |
There was a problem hiding this comment.
Record the Tauri config in the version-bump slice
PR #128 also updated src-tauri/tauri.conf.json, but this closure row records only Cargo.toml and package.json as synchronized. The Tauri config is an independent bundle-version source, so this historical release checklist is incomplete and could be copied in a later release while leaving the packaged application on a stale version; list all three files that the cited commit actually changed.
Useful? React with 👍 / 👎.
What
Docs-only PR that scopes the v0.11.0 cycle ("Share the Trace") and closes out the v0.10.0 ROADMAP table that was never formally landed.
Why
main. Without a cycle plan on disk, that slice is the only thing carrying the v0.11.0 name — which is fine for one merged PR, but no contributor (human or agent) can tell what else belongs in this cycle vs the next one.Startedwith no cycle-table / footer (only thev0.9.0row has the canonical "Released + Planned slices" pattern). That drift makes the ROADMAP an unreliable state tracker.What this PR adds
docs/v0.11.0_plan.md— the cycle plan. Same shape asv0.8.0_plan.md/v0.9.0_plan.md: premise, surface survey, gap analysis, planned slices with Tier labels, "what we will NOT do" list, per-PR test plan, dispatch/execution handoff.ROADMAP.md— adds the v0.10.0 cycle table (Released, retroactively) and the v0.11.0 cycle table (Started), and prunes the now-completed "PNG/SVG export" item from the 🟢 Ready-to-Claim list since both PNG and SVG export are tracked under v0.11.0.v0.11.0 scope (5 slices; 1 already in, 4 open, all Tier A)
toBase64Image()→ browser-native download.data/logging.rs; loader parses both shapes..htmlreplays the log + steps in any browser. Reuses v0.9.0 reducer. Pure frontend.None of the four open slices touch protected paths — slice 3's additive change to
src-tauri/src/data/logging.rsis read-path-preserving and the PR body will call outdata/even though it's not in the Tier B list.What we are NOT doing this cycle (explicit)
Test plan
docs/v0.11.0_plan.md↔ROADMAP.mdcross-link is bidirectional).npm run buildnot required (docs only).Unrelated working-tree noise (not in this PR)
These three files are modified locally but staged only my two intended files; the rest is left untouched per the repo's staging discipline:
CLAUDE.md— your own rewrite (Tier C, yours to land)frontend/index.html,frontend/schematics.html— the recurring third-party "network bar" injection (untrusted, not propagated)Tier
A — docs only, no code, no protected path. Self-merge once CI is green (CI will mostly run the docs/markdown lint path; expect green).