| 01-federation-mesh-hardening |
12 |
ui |
| vue |
| tailwind |
| flexbox |
| css-grid |
| web5 |
| scroll |
|
| phase |
provides |
| 01-federation-mesh-hardening |
Web5.vue's existing xl:grid-cols-2 row layout and Web5ConnectedNodes.vue's tabbed card (quick task 260729-je5 made the list fill the card's height; this plan adds the missing other half) |
|
|
| A bounded, sibling-matched scroll contract on Web5ConnectedNodes.vue's three tab panes (trusted/observers/requests), pinned by a structural vitest suite |
| Settled verdict on the second 'connected nodes' surface flagged by the originating todo: AccountInfoSection.vue's hits are changelog prose describing the feature, not a second scrolling list — no fix needed there |
|
| web5 |
| federation-mesh-hardening |
|
| added |
patterns |
|
|
| Sibling-matched equal-height row + inner-scroll: give the growing child `xl:flex-1 xl:basis-0` (zero flex-basis so it contributes no intrinsic height) instead of `flex-auto`/no-basis, so a CSS Grid row's default `align-items: stretch` sizes the card by its sibling, and the pane's own overflow-y-auto scrolls inside the leftover height. Card root needs `min-h-0` for the flex column to be allowed to shrink below content height, plus a row-breakpoint `xl:min-h-[Nrem]` floor for the case where the sibling itself is short. |
|
|
| created |
modified |
| neode-ui/src/views/web5/__tests__/Web5ConnectedNodesScroll.test.ts |
|
| neode-ui/src/views/web5/Web5ConnectedNodes.vue |
|
|
| Row-breakpoint height floor set to xl:min-h-[40rem] (not the planner's initial 20rem guess) — confirmed via Dorian's live-browser check: with node discovery disabled, Web5NodeVisibility (the row sibling) renders short, the floor takes over, and 20rem looked stunted; he asked for double, i.e. 40rem. |
| Settings 'connected nodes' surface (AccountInfoSection.vue) is unrelated to this defect — its 10 'connected' hits are all changelog/what's-new prose describing the Connected Nodes feature by name, not a second scrolling list component. No code change made there. |
| Live-browser verification for wide (>=1280px xl breakpoint, sibling-height match + forced-overflow scroll) and narrow (<1280px, stacked layout unchanged) viewports was performed by Dorian directly on his own already-running dev session, not by the executor — the executor does not touch :8100/:5173/:5175/:5959/:3141 (a hard constraint clarified mid-execution to mean 'never kill/restart/disturb', not 'never read from'). |
|
|
| id |
description |
requirement |
verification |
human_judgment |
| D1 |
The connected-nodes card's height at the xl (row) breakpoint tracks its Web5NodeVisibility sibling via CSS Grid stretch + a zero-basis flex child, instead of growing to fit every row |
UIFIX-02 |
| kind |
ref |
status |
| unit |
neode-ui/src/views/web5/__tests__/Web5ConnectedNodesScroll.test.ts#gives all three tab panes the bounded, sibling-matched scroll contract |
pass |
|
| kind |
ref |
status |
| manual_procedural |
Dorian's direct visual check on his running :8100 session, wide viewport — reported 'we are good' for height match, scroll, and stacked layout |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D2 |
The inner list scrolls within the matched height rather than growing scroll-free, for all three tabs (trusted/observers/requests) |
UIFIX-02 |
| kind |
ref |
status |
| unit |
neode-ui/src/views/web5/__tests__/Web5ConnectedNodesScroll.test.ts#gives all three tab panes the bounded, sibling-matched scroll contract |
pass |
|
| kind |
ref |
status |
| manual_procedural |
Dorian's direct visual check — scroll behaviour confirmed correct |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D3 |
A short sibling (discovery disabled) still leaves a usable list height via the xl:min-h-[40rem] floor, rather than collapsing to header+tabs |
UIFIX-02 |
| kind |
ref |
status |
| unit |
neode-ui/src/views/web5/__tests__/Web5ConnectedNodesScroll.test.ts#gives the card root a min-h-0 flex column with a row-breakpoint height floor |
pass |
|
| kind |
ref |
status |
| manual_procedural |
Dorian's direct feedback ('too short when discovery is disabled, should be twice as tall') drove the 20rem -> 40rem correction, applied and re-verified |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D4 |
The stacked (below-xl) single-column layout is byte-identical to before: same capped max-h-72 height, same scroll |
UIFIX-02 |
| kind |
ref |
status |
| unit |
neode-ui/src/views/web5/__tests__/Web5ConnectedNodesScroll.test.ts (max-h-72 asserted on all three panes; git diff confirms Web5.vue untouched and no script-block change) |
pass |
|
| kind |
ref |
status |
| manual_procedural |
Dorian's direct visual check, narrow viewport — stacked layout confirmed unchanged |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D5 |
The zero-node/empty-list edge case still renders the existing empty/loading row and the pane stays in the tree (does not collapse) |
UIFIX-02 |
| kind |
ref |
status |
| unit |
neode-ui/src/views/web5/__tests__/Web5ConnectedNodesScroll.test.ts#still renders the empty-state row for each pane when the node list is empty |
pass |
|
|
false |
|
| id |
description |
verification |
human_judgment |
| D6 |
The second 'connected nodes' surface flagged by the originating todo (settings AccountInfoSection.vue) is investigated and given an explicit verdict rather than silently skipped |
| kind |
ref |
status |
| other |
grep -n -i connected neode-ui/src/views/settings/AccountInfoSection.vue — all 10 hits are changelog prose, not a scrolling list |
pass |
|
|
false |
|
|
105min |
2026-07-31 |
complete |