Summary
Replace permissive any usage around workspace windows with typed interfaces and clearer state boundaries.
Why
WorkspaceCanvas drives high-value interaction logic. Weak typing here increases the risk of subtle state bugs during drag, resize, docking, and activation flows.
Current evidence
src/components/workspace/WorkspaceCanvas.tsx uses any[] for windows and any for update payloads.
Scope
- Use
ReaderWindow-based props and update payloads.
- Make drag/resize helpers type-safe.
- Clarify which fields are mutable in update callbacks.
- Avoid broad partial updates where a narrower command model would be safer.
Acceptance criteria
WorkspaceCanvas no longer exposes any in its public props.
- Window interaction logic compiles with strong types.
- Refactors in window state become safer and easier to review.
Out of scope
- A full rewrite of the workspace interaction model.
Summary
Replace permissive
anyusage around workspace windows with typed interfaces and clearer state boundaries.Why
WorkspaceCanvasdrives high-value interaction logic. Weak typing here increases the risk of subtle state bugs during drag, resize, docking, and activation flows.Current evidence
src/components/workspace/WorkspaceCanvas.tsxusesany[]forwindowsandanyfor update payloads.Scope
ReaderWindow-based props and update payloads.Acceptance criteria
WorkspaceCanvasno longer exposesanyin its public props.Out of scope