note the WorkspaceView tests and the TrafficLights defect in §9
This commit is contained in:
@@ -1010,6 +1010,31 @@ they are marked below, because a dead-code list that is itself wrong is the wors
|
|||||||
now registered in `test-setup.ts`, where preload's lack of a file scope makes it global. Adding
|
now registered in `test-setup.ts`, where preload's lack of a file scope makes it global. Adding
|
||||||
one test file broke fourteen assertions in `DataTable.test.tsx` before both were understood.
|
one test file broke fourteen assertions in `DataTable.test.tsx` before both were understood.
|
||||||
|
|
||||||
|
- [x] **`WorkspaceView`, and the second consecutive bug a test found that review had not.** _(`bfa9967`,
|
||||||
|
branch `agent-coordination-mvp`)_ — 11 tests over the last untested mutator, driving the real
|
||||||
|
`WorkspaceView` through the real `WorkspaceRenderer` and `PanelSlot`, so the buttons under test
|
||||||
|
are the buttons. Two properties: every layout write is an *updater* rather than a computed tree
|
||||||
|
(two of the paths are deferred — the 500 ms resize debounce, and a window resize firing `onLayout`
|
||||||
|
on every group at once — so a computed tree silently undoes the write before it and resurrects an
|
||||||
|
older `config`); and `usePanelClose` fires on close *intent* only, never on the unmounts a drag,
|
||||||
|
a swap or a mobile switch cause.
|
||||||
|
Four of the eleven failed on the first run, all on one defect. `TrafficLights` took `onRemove`
|
||||||
|
**and** `isLastPanel` and used `isLastPanel` only to pick the tooltip: the red button read "Close
|
||||||
|
panel" and called `onClearApp` regardless, so closing a panel from its own chrome was impossible —
|
||||||
|
the panel stayed, emptied, and the context menu was the only path that worked. Introduced by
|
||||||
|
`25f5f74`. Cosmetic before identity lived in the layout; not now, because clearing the app drops
|
||||||
|
the `config` that named the panel's agent while the panel survives to be renamed by whatever is
|
||||||
|
put in it next. The pin is "a panel that is NOT the last is removed".
|
||||||
|
One hardening came out of the same pass, and it stands on its own merits: the ephemeral pane's
|
||||||
|
sizing effect now try/catches. `react-resizable-panels` **asserts** rather than no-ops when asked
|
||||||
|
to size a group it has not laid out yet, and an assert thrown from an effect aborts the commit —
|
||||||
|
trading a file preview's geometry for the whole dashboard. Also worth recording as method: the
|
||||||
|
assert fires in happy-dom (no layout, so the group's size array never populates) and **not** in a
|
||||||
|
real browser — measured, six panels on `/dashboards`, empty console — and a `ResizeObserver` +
|
||||||
|
`getBoundingClientRect` stub written to "fix the environment" turned out to fix nothing. The
|
||||||
|
try/catch was the whole difference, and the stub was deleted rather than left behind as a comment
|
||||||
|
claiming credit for it.
|
||||||
|
|
||||||
- [x] **A panel is told where it is, instead of being handed a key to reverse-engineer.** _(`dbe585f` +
|
- [x] **A panel is told where it is, instead of being handed a key to reverse-engineer.** _(`dbe585f` +
|
||||||
`717580f` + `585f234`, branch `agent-coordination-mvp`)_ — the first three items of §5.9. The
|
`717580f` + `585f234`, branch `agent-coordination-mvp`)_ — the first three items of §5.9. The
|
||||||
context field `dashboardId: string` — which was never an id, always the whole `workspace.key` —
|
context field `dashboardId: string` — which was never an id, always the whole `workspace.key` —
|
||||||
|
|||||||
Reference in New Issue
Block a user