3.2 KiB
Projection switching and canvas inspection
Branch contribution for #42
and #43,
based on published preview 715036e132677dd2bc2fb37ed316d93dc9987aec.
Owner: Codex-ytr83r, session 01a0d706. This is a candidate, not integrated
acceptance or a replacement release. Live status belongs to the linked issues.
Decision and alternatives
String projections are presentation filters over one authored diagram. Preserve opposite-layer placements, routes and visibility selections when switching away from Traceability; ordinary projections render only their declared layer. This extends the existing documented preservation of inapplicable element kinds. Deleting incompatible placements loses authored arrangements; automatically creating a second view fragments the user's work and makes repeated switching ambiguous. Neither alternative satisfies reversible view switching as directly.
Missing identities and wrong reference kinds/families remain errors. StateMachine and Scenario keep strict typed membership. Frozen versions 1–6 retain their old layer admission before migration. The current version-7 correction adds no fields or wire shapes; older version-7 readers may reject newly admitted latent records. That compatibility limit must remain explicit until coordinated version adoption. The explicit RelocateNode operation continues to require a compatible destination layer or Traceability view; retaining latent records is distinct from moving a placement into an incompatible destination.
Canvas inspection carries the originating route context and preserves view/layer. Explicit model navigation continues to follow the target layer. Draft validation and stale-context rejection apply before inspection. Existing production group selection already retained the canvas; fallback edge/port selection and canvas context actions require the correction. Actual native reproduction must establish which path accounts for the user's reported click; source diagnosis alone does not.
Acceptance
- OA and SA switches through all ordinary projections preserve the complete model except projection, source/JSON/bundle round trips, and one-step Undo/Redo.
- Returning to Traceability restores applicable placements; parent, port and edge projection never leaks an opposite-layer record into an ordinary view.
- Invalid references and State/Scenario membership still reject; source and JSON versions 3–6 retain their old layer checks and located diagnostic identities.
- Actual canvas clicks, context Properties/Hide and explicit navigation exercise the intended selection distinction; stale packets and invalid drafts preserve selection and source/history.
- Windows native selection, projection switching, Save, Undo/Redo and fresh reopen are checked against predeclared full-model/source expectations. Compilation and automated handler tests do not substitute for this acceptance.
Linux remains excluded by the existing user pause. Independent design critique identified saved visibility selectors and frozen migration as additional admission paths; both are included. Automated and native outcomes are not yet recorded.