Repository navigation
ROCMAI-817: split ui/modal.rs into help, warnings, theme-picker and menu modules - #843
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues remain for the extraction of dashboard modal renderers into focused modules.
No open issues 🎉
What changed in this PR
Completes ROCMAI-817 by splitting the remaining dashboard modal renderers into focused modules, building on #827’s extraction of shared popup geometry. Rendering logic remains unchanged, while the former public renderer paths are deliberately removed.
Changes:
- Moves help, warnings, theme-picker, and menu renderers into four modules, alongside their existing tests.
- Updates dispatch paths and visibility, centralizes shared test fixtures, and preserves the four public geometry-helper re-exports.
- Updates architecture documentation and source comments to reflect the new layout.
| File | Description |
|---|---|
tests/e2e-cucumber/tests/e2e/dash_steps.rs |
Updates a comment naming the Esc-menu renderer’s location. |
docs/architecture.md |
Documents the extracted modules and their dependencies. |
crates/rocm-dash-tui/src/ui/warnings_modal.rs |
Houses warning rendering, truncation helpers, and existing tests. |
crates/rocm-dash-tui/src/ui/theme_picker.rs |
Houses the theme list and live-preview rendering. |
crates/rocm-dash-tui/src/ui/panel.rs |
Updates documentation references to the relocated renderers. |
crates/rocm-dash-tui/src/ui/modal.rs |
Retains only documentation and four geometry-helper re-exports. |
crates/rocm-dash-tui/src/ui/mod.rs |
Registers modules, redirects rendering calls, and shares test fixtures. |
crates/rocm-dash-tui/src/ui/menu.rs |
Houses menu, palette, Options, logo helpers, and existing tests. |
crates/rocm-dash-tui/src/ui/help_modal.rs |
Houses both help renderers, shared content-height sizing, and existing tests. |
Review effort: Balanced
|
ROCMAI-817 says the crate's public surface stays as it is after the earlier dash-tui split. On main, The simplest fix that keeps the move pure is to widen the renderers to Separately, the branch is based on |
nowycondro
left a comment
There was a problem hiding this comment.
🤖 Automated review (Claude Code) · 3482672
This automation never files a GitHub approval, so no approving review will appear here whatever the outcome — the merge decision stays with a human reviewer.
Review — needs work
Full review of the whole change.
Implements ROCMAI-817 (split ui/modal.rs into help/warnings/theme-picker/menu modules); the PR body states it "delivers the whole ticket," but the change violates one of the ticket's own explicit restated rules (see Blocking).
Blocking
- Public surface narrowed in violation of the owning ticket's explicit rule —
crates/rocm-dash-tui/src/ui/modal.rs(all rendererpub fns removed),crates/rocm-dash-tui/src/ui/help_modal.rs:37,159,195,crates/rocm-dash-tui/src/ui/warnings_modal.rs:79,crates/rocm-dash-tui/src/ui/theme_picker.rs:24,crates/rocm-dash-tui/src/ui/menu.rs:45,87,129.
Ticket ROCMAI-817's "Rules (epic ROCMAI-27, restated)" state verbatim: "Visibility widening and import-path edits are allowed; nothing else changes" and "The crate's public surface stays as it is after Phase 8.1-F." Before this PR,draw_help,draw_global_help,draw_warnings,draw_theme_picker,draw_menu,draw_palette, anddraw_optionswerepub fninsidepub mod modalinsidepub mod ui(crates/rocm-dash-tui/src/lib.rs), reachable from outside the crate asrocm_dash_tui::ui::modal::draw_helpetc. This PR changes every one of them topub(super), anddraw_theme_preview/draw_logo/opt_rowto private, removing that reachability — a narrowing, not a widening. The PR description discloses this directly ("Because the new modules are private and only the four geometry helpers are re-exported, those paths no longer exist... it is a surface change I would rather state than leave implicit") while the same description claims the PR "delivers the whole ticket." No in-repo consumer currently depends on the removed paths (confirmed: the only remaining user,tests/dash_characterization.rs, only reaches the four still-re-exported geometry helpers), so nothing breaks today — but the ticket states the rule unconditionally, not contingent on current consumers.
Confidence 85 · architectural · Fix: either keep the renderer functions reachable at their pre-PR public path (re-export them frommodal.rsalongside the four geometry helpers, or make the new modulespub modwith the rendererspub), or get explicit sign-off to amend ROCMAI-817's rule before merging and note the amendment in the PR body.
Non-blocking
None
Decisions for the author
popup_height_for's placement inhelp_modal.rsrather than beside the other shared popup-geometry helpers inpanel.rs— tradeoff.warnings_modal.rsreaches intohelp_modal.rsfor this one piece of content-sizing math even though "warnings" isn't conceptually part of "help"; keeping it wheredraw_help/draw_global_helpalso use it avoids a third tiny module, but means one feature module depends on another for a shared utility rather than both depending on a neutral one. Confirm this is the intended shape as more content-sized modals are added.- Shared test fixtures (
flat,rows,bottom_border_row) now live inui/mod.rs's owntestsmodule aspub(in crate::ui)— non-blocking-improvement. This growsmod.rs's test module beyond its own tests. A dedicatedui::test_support-style module would keep it focused as more modules come to share fixtures, though at today's size it reads fine either way.
Positive signals
- The verification methodology in the PR body — a line-multiset comparison of old vs. new files, a before/after test-name-list diff, and one commit per module each independently compiling — is exactly the discipline a pure-move refactor needs; an independent review of all four new files plus the wiring confirmed the move is in fact byte-faithful (only visibility keywords, import paths, and doc-link wording differ from the original
modal.rs). - The PR candidly surfaces the public-surface narrowing itself rather than leaving a reviewer to discover it — the disclosure is accurate and specific, even though (see Blocking) it still conflicts with the ticket's stated rule.
Deployment notes
rocm-dash-tuiis workspace-internal (publish = false), so the public-surface narrowing above has no crates.io/semver exposure; it only matters to other code in this workspace or a downstream fork reaching intorocm_dash_tui::ui::modal::draw_*.- At review time, two self-hosted E2E lanes (
E2E tests (Strix Halo, Ubuntu, release, current)and(..., nightly, current)) showedCANCELLED, and two more (MI300X,W7900) wereIN_PROGRESS/QUEUED; every other required check (clippy, coverage, Windows build/test, the rest of the E2E matrix, CodeQL, license/doc-link checks) was green. Cancelled/pending self-hosted runs are commonly infra scheduling rather than this change (a Rust-only, behavior-preserving move touching no e2e-visible surface beyond one comment), but confirm they finish green before merge.
What this covered
Every file in the diff, completely: crates/rocm-dash-tui/src/ui/{help_modal.rs, warnings_modal.rs, theme_picker.rs, menu.rs, modal.rs, mod.rs, panel.rs}, docs/architecture.md, and tests/e2e-cucumber/tests/e2e/dash_steps.rs, plus the surrounding code each touched function needed (the pre-split modal.rs, ui/theme.rs, ui/gradient.rs, ui/sparkline.rs, lib.rs's module tree, and tests/dash_characterization.rs). Reviewed as four independent fan-out passes grouped by coupling (help+warnings; theme-picker; menu; the mod.rs/modal.rs/panel.rs/docs wiring), each cross-checked against a line-multiset diff of the whole move run independently, plus a workspace-wide grep for any remaining reference to the pre-split paths (none found).
f52cc5b0ceb5d0afeb56daa669f0ee54f2df25ba…34826722f8996cd4eefa51783b925194dda8be7b — note the PR API's reported base sha (6eeec620c…) is main's current tip, which has advanced past this branch's fork point; the diff was taken against the true merge-base instead (the stacked/behind-branch case), and that recomputed base matches the PR's own reported file/line counts exactly (9 files, +1585/−1489).
Did not run: cargo test/cargo clippy/cargo doc locally (no Rust toolchain available in this review environment) — relied on static inspection plus the project's own CI results (read via gh pr view --json statusCheckRollup, taken at face value, not re-derived from workflow definitions), green on every completed required check at review time. History pass (git log on modal.rs/panel.rs) surfaced only the expected lineage (#827's prior split, used here as background only). Prior-changes pass: this PR's own comment thread and #827's review discussion were deliberately not read, per instructions. Agent-instruction pass checked the repo's AGENTS.md (doc-link format, module-privacy conventions, architecture-doc rules) with no violations found beyond the Blocking item above, which comes from the ticket rather than AGENTS.md.
Not reconciled against any discussion on this PR — its own comment thread was not read.
🤖 Generated with Claude Code
|
I read the whole diff at 3482672 and checked it as a pure move. I compared every non-blank, non-comment line of the old One thing for the author and ticket owner to decide, not a defect in the move: the seven render functions were This looks safe to approve after final validation. That is what a read of the diff can show; it is not a CI result or a runtime check, and I did not build or run it, so the remaining checks (the W7900 e2e lane was still running) and the maintainer's own pass still apply. This is not itself an approval. |
Move draw_theme_picker, draw_theme_list, draw_theme_preview and badge out of ui/modal.rs, unchanged, so the file keeps one concern per module. The picker has no tests of its own, so none move. Non-move edits: the module is private (mod theme_picker in ui/mod.rs) and draw_theme_picker is pub(super) for the one caller in ui/mod.rs, which now calls it by its new path; draw_theme_preview, which nothing outside the picker calls, drops from pub to private. The popup helpers are imported from ui/panel.rs directly rather than through the modal.rs re-export, and modal.rs loses the imports it no longer uses. rustfmt re-wrapped the moved call in ui/mod.rs for its longer path. docs/architecture.md gains an entry for the new file and drops the theme picker from the modal.rs entry. Signed-off-by: Jussi Elo <jussi.elo@amd.com>
Move draw_help, draw_global_help and their helpers (help_title, popup_height_for, key_line, help_columns, help_group_lines) out of ui/modal.rs, with the six tests that exercise them, unchanged. The three test fixtures the help and warnings tests share (flat, rows and bottom_border_row) move to the ui/mod.rs test module as pub(in crate::ui), so the help tests and the tests still in modal.rs use one copy; this is the only test code that is not in the file of the code it exercises. Non-move edits: the module is private (mod help_modal in ui/mod.rs); draw_help and draw_global_help are pub(super) for their callers in ui/mod.rs, which now call them by the new path, and popup_height_for is pub(super) because modal.rs still calls it for the warnings modal. The test module is named tests rather than ported_chrome_tests, so the comment in draw_help that names it follows, and the doc link to draw_warnings in popup_height_for now spells out its path. The doc link to draw_help in ui/panel.rs is repointed. The popup helpers are imported from ui/panel.rs directly, and modal.rs loses the imports it no longer uses. rustfmt re-wrapped lines that its new indentation changed. docs/architecture.md gains an entry for the new file and drops the Help modals from the modal.rs entry. Signed-off-by: Jussi Elo <jussi.elo@amd.com>
Move draw_warnings, warning_lines and WARNING_MAX_LINES out of ui/modal.rs, with the eleven tests that exercise them (including the painted_multi_line_warning helper that only they use), unchanged. Non-move edits: the module is private (mod warnings_modal in ui/mod.rs); draw_warnings is pub(super) for its caller in ui/mod.rs, which now calls it by the new path. popup_height_for, which modal.rs used for the warnings modal, is now imported from ui/help_modal.rs by the new module, and modal.rs drops that import and the imports it no longer uses. The doc links to draw_help in draw_warnings now spell out the path of ui/help_modal.rs, and the link to draw_warnings in popup_height_for points at the new module. The test fixtures rows and bottom_border_row come from the ui/mod.rs test module. docs/architecture.md gains an entry for the new file, drops the warnings modal from the modal.rs entry, and the help_modal.rs entry names its new caller. Signed-off-by: Jussi Elo <jussi.elo@amd.com>
…nel into ui/menu.rs Move draw_menu, draw_palette, draw_options, draw_logo and opt_row, the menu sizing constants and menu_fits, with the tests that exercise them (including p4_overlays_render_key_content, which also renders the global help and so imports draw_global_help from ui/help_modal.rs), out of ui/modal.rs, unchanged. What is left in modal.rs is its module doc and the re-export of the four popup helpers, which keeps their ui::modal paths resolving; nothing else is re-exported. Non-move edits: the module is private (mod menu in ui/mod.rs); draw_menu, draw_palette and draw_options are pub(super) for their callers in ui/mod.rs, which now call them by the new path, and draw_logo and opt_row, which only this module and its tests call, drop from pub to private. The test module is named tests rather than ported_chrome_tests. The banner comment above the overlays no longer lists the global Help, which is in ui/help_modal.rs, and the module doc of modal.rs is rewritten to say what the file now holds. The comments that name ui/modal.rs for the grey_overlay test (ui/mod.rs), the Esc menu items (the e2e dash step) and the importers of the popup geometry (ui/panel.rs) are repointed. docs/architecture.md gains an entry for the new file, rewrites the modal.rs entry to say it is only the re-export, lists the four new renderer files as importers of the popup geometry, and corrects the app/types.rs entry, which said modal.rs renders MENU_ITEMS (the menu renders its own item list and count, not that constant). Signed-off-by: Jussi Elo <jussi.elo@amd.com>
The split made the Modal renderers reachable only inside the crate, which removed ten paths that were public at rocm_dash_tui::ui::modal. Make the renderers pub in their new modules and re-export all of them from modal.rs next to the four popup helpers, so the crate's public surface is unchanged. A new integration test calls each of the ten through ui::modal and asserts the text only that renderer paints, so dropping or swapping a re-export fails it. Signed-off-by: Jussi Elo <jussi.elo@amd.com>
3482672 to
e407b24
Compare
|
Thanks for the reviews. Addressed in e407b24, pushed together with a rebase onto main as of d7faa84 (no conflicts; the four move commits are unchanged apart from the rebase). The existing approval was given on 3482672 and is still showing as the current review decision after the push. The public surface: all three of you flagged that the renderers stopped being reachable at To keep it from regressing, On the two decisions in the automated review: I'm leaving One thing to know: I pushed this update with the pre-push hooks skipped, so CI is the first full run of the workspace gate on the rebased branch. |
tomastola
left a comment
There was a problem hiding this comment.
Reviewed the whole change at e407b24. The four move commits are faithful relocations: line-by-line, the old modal.rs against the four new modules differs only in imports, visibility, module docs and repointed doc links, and the test inventory is unchanged. e407b24 restores every item that was public at ui::modal. I checked the new modal_renderers_stay_reachable_through_ui_modal test by swapping the draw_menu/draw_palette re-exports, the only mix-up that compiles, and it fails as intended. dash_characterization passes 22/22 locally on the head.
Two non-blocking notes:
crates/rocm-dash-tui/src/ui/panel.rs:366: repointing the link tohelp_modal::draw_helpleft this doc line at 114 characters, against the 75–80 of the lines around it. rustfmt won't rewrap comments, so it needs a manual rewrap.crates/rocm-dash-tui/src/ui/menu.rs:198:[`gradient::lerp3_t`]doesn't resolve, becausemenu.rshas nogradientin scope, andcargo doc --document-private-itemswarns about it. This is pre-existing (your description already notes it), but since these lines are moving anyway,[`crate::ui::gradient::lerp3_t`]fixes it cheaply.
nowycondro
left a comment
There was a problem hiding this comment.
🤖 Automated review (Claude Code) · e407b24
This automation never files a GitHub approval, so no approving review will appear here whatever the outcome — the merge decision stays with a human reviewer.
Review — no blocking findings
Full review of the whole change (base 6eeec620…head e407b246, the review-fix commit on top of the previously-reviewed 34826722). Implements ROCMAI-817 (split ui/modal.rs into help_modal.rs/warnings_modal.rs/theme_picker.rs/menu.rs). The prior round's one blocking finding — this split narrowed the crate's public surface in violation of the ticket's own explicit "visibility widening only, public surface stays as it is" rule — was independently re-checked against the current code rather than assumed fixed.
Blocking
None. The public-surface narrowing is resolved: crates/rocm-dash-tui/src/ui/modal.rs at e407b246 now re-exports every renderer that was pub at ui::modal before the split (draw_help, draw_global_help, draw_menu, draw_palette, draw_options, draw_logo, opt_row, draw_warnings, draw_theme_picker, draw_theme_preview), alongside the four geometry helpers already covered — confirmed by reading the file directly at this commit, not taken from the prior round's prose.
Non-blocking
crates/rocm-dash-tui/src/ui/panel.rs:366's doc-link line, after repointing tohelp_modal::draw_help, is 114 characters against the surrounding ~75-80. rustfmt does not rewrap comments, so this needs a manual rewrap.
Confidence 80 · mechanicalcrates/rocm-dash-tui/src/ui/menu.rs:198's[`gradient::lerp3_t`]doc link does not resolve (menu.rshas nogradientin scope at either the pre- or post-split location, socargo doc --document-private-itemswarns on it) — pre-existing, not introduced by this PR, but since these lines moved anyway,[`crate::ui::gradient::lerp3_t`]would fix it at negligible cost.
Confidence 75 · mechanical
Decisions for the author
None outstanding — the two scope decisions already disclosed in the PR body (popup_height_for's placement in help_modal.rs rather than panel.rs; shared test fixtures growing ui/mod.rs's own test module) were already reasoned through in the prior round and are unaffected by this fix-up commit.
Positive signals
- Independently diffed
menu.rs's relocated functions (draw_menu,draw_palette,draw_options,draw_logo,opt_row,menu_fits) and their five tests against the pre-splitmodal.rsbody: function and test bodies are byte-for-byte identical apart from one legitimate cross-module call-path change (super::draw_global_help→crate::ui::help_modal::draw_global_help, matchingdraw_global_help's actual new location exactly). - The consolidated test-only
flat()buffer helper now lives once incrate::ui::tests::flatrather than being duplicated per split-out file — confirmedmenu.rsimports it rather than carrying its own copy, and the import list was correctly pruned to exactly what the relocated functions use (no leftoverConstraint/Direction/Layout/Wrap/GradientGaugeimports that belonged to functions that didn't move here). modal_renderers_stay_reachable_through_ui_modal(per a prior approving reviewer's own verification, independently plausible from the re-export list above) is the regression guard against this exact class of re-export drift recurring.- CI on this head: all completed required checks (build-and-test, clippy, Windows build/test, Test (affected crates), CodeQL, coverage) are green; only a few self-hosted GPU E2E lanes are still queued/in-progress, none failing.
Deployment notes
None — rocm-dash-tui is workspace-internal (publish = false), so even the now-resolved public-surface question had no crates.io/semver exposure.
What this covered
Independently re-verified at head e407b24635a43673109d5376a61837b505da6c3b: crates/rocm-dash-tui/src/ui/modal.rs (full file, fetched directly), confirming the re-export fix. One independent blind fan-out worker did a body-for-body diff of menu.rs against the pre-split modal.rs (functions, tests, imports, the shared flat() helper, and the gradient::lerp3_t doc-link question) and found no behavioral differences. I did not re-read help_modal.rs/warnings_modal.rs/theme_picker.rs/mod.rs/panel.rs/docs/architecture.md in full this round — the prior round (at 34826722) already read all of them completely as a faithful byte-level move, and the only thing that changed between that commit and this one is the modal.rs re-export fix, which this round verified directly.
Did not run: cargo build/test/clippy/cargo doc locally (no Rust toolchain in this environment) — relied on the prior round's direct inspection plus this round's targeted re-verification, and on CI's own green build/test/clippy/doc-link results for this exact commit. Not reconciled against this PR's own review discussion (including the two prior human approvals), which was not read beyond what the mandatory claim-check surfaced.
🤖 Generated with Claude Code
Why
ROCMAI-817: after the dash-tui module split (#827) moved the popup geometry and the menu data out of
crates/rocm-dash-tui/src/ui/modal.rs, the file still held the renderers for several unrelated modals (Help, global help, warnings, theme picker, Esc menu, command palette, Options) plus about 600 lines of their tests in one 1,483-line file. This PR splits it into focused modules as a pure, behaviour-preserving move, and delivers the whole ticket.What changes
One commit per new module, each one compiling and passing clippy on its own, plus a last commit that keeps the crate's public surface as it was:
ui/theme_picker.rs:draw_theme_picker,draw_theme_list,draw_theme_preview,badge. It has no tests of its own.ui/help_modal.rs:draw_help,draw_global_helpand their helpers (help_title,popup_height_for,key_line,help_columns,help_group_lines), with the six tests that exercise them.ui/warnings_modal.rs:draw_warnings,warning_lines,WARNING_MAX_LINES, with the eleven warnings tests (including thepainted_multi_line_warninghelper). It importspopup_height_forfromhelp_modal.rs, which does not import it back, so there is no new cycle.ui/menu.rs:draw_menu,draw_palette,draw_options,draw_logo,opt_row, the menu sizing constants andmenu_fits, with their tests.p4_overlays_render_key_contentalso renders the global help, so it importsdraw_global_helpfromhelp_modal.rs; I kept it whole rather than splitting it so the test inventory stays identical.ui/modal.rsis now its module doc andpub uselines only: the four popup helpers from #827 (centered_rect,centered_width,draw_popup_frame,grey_overlay) and the ten renderer items that were public atui::modalbefore this split (listed under the public surface below). I used the grouping the ticket proposes, since it matched the code: help and global help share the sizing helpers, the warnings modal shares onlypopup_height_forwith them, and the menu, palette and Options panel share the logo and the settings row.Everything besides the moved code is one of these edits, each also listed in the commit message that makes it:
modinui/mod.rs, and the call sites inui/mod.rsuse the new paths (rustfmt re-wrapped the longer theme picker call). The ten items that werepubinmodal.rsstaypubin their new modules so thatmodal.rscan re-export them;popup_height_forispub(super)becausewarnings_modal.rscalls it and it was never public.flat,rows,bottom_border_row) moved to theui/mod.rstest module aspub(in crate::ui), next to the helpers ROCMAI-758: split the dash-tui app module, event loop and ui modules into focused files #827 already widened there. The test modules are namedtestsrather thanported_chrome_tests.ui/panel.rsrather than through themodal.rsre-export, andmodal.rslost the imports it no longer needs.draw_helpthat names the test module, the doc links betweendraw_help,draw_warningsandpopup_height_for(now explicit paths), the banner above the overlays inmenu.rs(it listed the global Help, which is now inhelp_modal.rs), the doc link inpanel.rs, the module doc ofpanel.rs, the comment inui/mod.rsthat names where thegrey_overlaytest lives, and the comment in the e2e dash step that names where the Esc menu items are.docs/architecture.md: one entry per new file, themodal.rsentry rewritten to say it is only re-exports, thepanel.rsentry lists the four renderer files as importers of the popup geometry, and theapp/types.rsentry now saysui/menu.rsrenders the palette destinations and options tabs. The old text saidmodal.rsrendersMENU_ITEMS, which was never true (the menu draws its own item list and count), so I corrected it rather than carrying it over.modal_renderers_stay_reachable_through_ui_modalintests/dash_characterization.rs, described below.Public surface
uideclarespub mod modal, so the ten items that werepubin it (draw_help,draw_global_help,draw_warnings,draw_theme_picker,draw_theme_preview,draw_menu,draw_palette,draw_options,draw_logoandopt_row) were reachable asrocm_dash_tui::ui::modal::*. The ticket says the crate's public surface stays as it is, so all ten arepubin their new modules and re-exported frommodal.rs, next to the four popup helpers; every path that resolved before this PR still resolves. An earlier revision of this PR made them crate-private instead, which review correctly flagged as a narrowing; nothing in the workspace used those paths, but the ticket states the rule without that condition.The new test calls all ten through
ui::modalfrom outside the crate (astests/dash_characterization.rsalready does for the four popup helpers) and asserts the text only that renderer paints, so dropping a re-export fails to compile and swapping one for another renderer fails an assertion.Verification
Run locally:
cargo test -p rocm-dash-tui --all-targets -- --listand the same with--ignored, keeping lines ending: test, stripping the module path and sorting without-u, onorigin/mainand on this branch. The only difference is the one added test (1016 and 1017 names; the 4 ignored names are unchanged).cargo test -p rocm-dash-tui --all-targetspasses (977 lib tests, 4 ignored, plus the integration targets, including the new test).draw_paletteunder the namedraw_menufrommodal.rsfails thedraw_menuassertion. The test names each of the ten throughui::modal, so a dropped re-export fails to compile; I did not run that mutation separately.cargo fmt --all --check,cargo clippy -p rocm-dash-tui --all-targets -- -D warnings,cargo check -p rocm,cargo xtask manifest --checkandcargo xtask check-crate-edgesall pass.modal.rsagainst the five resulting files, taken on the four move commits, shows only the edits listed above, and the leak scan of the diff againstorigin/mainis clean.cargo doc --document-private-itemsreported no new warnings for the touched files on those commits (it still reports the unresolvedgradient::lerp3_tlink in thedraw_logodoc, which was already unresolved inmodal.rs).Not run locally: the full workspace tests, the
tests/e2e-cucumbersuite and the Windows lane, which run in CI. The only e2e-visible change is a comment in a dash step. The pre-push hooks were skipped for the last push, so CI is the first full run of the workspace gate on the rebased branch.Scope
A pure move of the
Modal::*renderer bodies and their tests, with the visibility, re-export, import, comment and architecture-doc edits above and no behaviour change. Out of scope: any behaviour change and the other dash-tui and workspace refactoring tickets.