3.3 KiB
3.3 KiB
PR-07b Asset Navigator and Row Subscriptions
Domain owner: docs/studio
Briefing
Refactor the navigator side of the Assets workspace so the list and each asset row update through event subscriptions instead of workspace-wide rerendering.
Objective
Make navigator behavior event-directed and component-local.
After this PR:
- the navigator list subscribes to projection changes it actually needs;
- each asset row subscribes to row-scoped summary/selection updates;
- search and filters change the navigator projection without rebuilding the whole workspace;
- selection styling and row patching happen without forcing a full list refresh from the workspace root.
- the navigator and row patterns are implemented in a way that other Studio workspaces can reuse for list/detail navigation surfaces.
Dependencies
./PR-07a-assets-event-topology-and-lifecycle-foundation.md../specs/4. Assets Workspace Specification.md
Scope
- extract the navigator into dedicated controls
- separate navigator projection calculation from visual control ownership
- introduce row-scoped subscriptions and row identity handling
- keep reusable list/projection primitives outside
Assets-only naming where they are genuinely cross-workspace - publish projection updates for:
- search changes
- filter changes
- structural asset collection changes
- per-asset summary patches
- selection changes
- remove direct row bookkeeping from the workspace root where possible
Non-Goals
- no details-panel refactor in this slice
- no final mutation confirmation flow refactor in this slice
- no broad service-layer redesign beyond what navigator subscriptions require
Execution Method
- Introduce an
AssetNavigatorControlor equivalent host with lifecycle-managed subscriptions. - Extract row rendering into an
AssetRowControlor equivalent lifecycle-managed component. - Move search/filter handling to event publication plus projection recalculation.
- Publish selection updates as typed events that row controls can consume directly.
- Replace root-owned row maps and manual selection restyling with row-scoped update flow.
Acceptance Criteria
- asset rows are no longer rebuilt by default on every local navigator change
- search and filter changes update the navigator projection only
- selecting an asset updates only the controls that depend on selection
- patching one asset summary updates the affected row without requiring a full workspace reload
- navigator controls subscribe and unsubscribe through the lifecycle support
- reusable navigator/list subscription patterns are left available for future Studio workspaces
Validation
- unit tests for navigator projection event flow
- unit tests for row identity stability across patches
- unit tests for selection update behavior without full projection rebuild
- UI smoke validation for search, filters, and selection transitions
Affected Artifacts
prometeu-studio/src/main/java/p/studio/workspaces/assets/AssetWorkspace.java- new navigator and row controls under
prometeu-studio/src/main/java/p/studio/workspaces/assets/... prometeu-studio/src/main/java/p/studio/events/...- tests for navigator projection and row update behavior