prometeu-studio/docs/studio/pull-requests/PR-07b-asset-navigator-and-row-subscriptions.md

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

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

  1. Introduce an AssetNavigatorControl or equivalent host with lifecycle-managed subscriptions.
  2. Extract row rendering into an AssetRowControl or equivalent lifecycle-managed component.
  3. Move search/filter handling to event publication plus projection recalculation.
  4. Publish selection updates as typed events that row controls can consume directly.
  5. 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