Skip to content

Add attached Work Column docking #980

Open

Description

@jeonghun-jj-lee

Important

Problem -- The Work Column has a fixed right-side geometry, so researchers cannot arrange the attached surface around the task at hand.

Approach -- Add an editor-scoped attached presentation model with right, left, and bottom docks, one shared side width, one bottom height, feasibility clamping, and an imperative dock action that later interaction code can call.

Scope -- in: attached desktop geometry, persistence, resize handles, feasibility rules, and renderer-preserving layout transitions. out: native-tab detachment, drag gestures, keyboard bindings, and cross-webview state transfer.

Assumptions -- The durable Work Column record and lease journal from #979 own logical state; this slice changes only the attached host's presentation.

Acceptance Criteria

  • An attached Work Column can render on the right, left, or bottom of Chat from one dock action API.
  • Right and left reuse one persisted side width; bottom persists an independent height for the same editor tab.
  • A newly created editor tab uses the default right dock, while reload restores its saved attached geometry.
  • The resize handle appears on the Work Column-facing edge for every dock and clamps values to feasible geometry.
  • A dock change preserves the same in-document Preview renderer instance and active inspector state.
  • When an editor is too small for a target dock, the action reports infeasibility and leaves the current dock unchanged.
  • Resizing never silently detaches or changes the Work Column lease owner.
  • Mobile and legacy layouts remain unchanged.

Testing Decisions

Extend the existing Work Column geometry tests with every dock transition, editor-scoped persistence, side and bottom dimensions, infeasible targets, and resize clamping. Extend the Preview browser regression suite to compare stable renderer instance identity across all attached dock transitions.

Key Decisions

  • Presentation only -- attached geometry does not transfer, journal, or recreate logical Work Column content.
  • One side dimension -- crossing Chat does not create a second width preference; bottom is the sole orientation-specific dimension.
  • Feasibility before mutation -- an invalid target refuses before changing layout state.

Constraints & Invariants

  • This slice must retain Add durable Work Column record and lease journal #979's attached lease throughout every transition.
  • Attached in-document Preview identity remains intact.
  • The dock action is intentionally interaction-agnostic so later drag and command UI can use it.

Prior Art

  • Existing Work Column width policy and resize tests.
  • Existing Preview retained-renderer browser contract.

Source

Part of #977. Blocked by #979. ADR 0014, Dockable Work Column.

Review Amendment (2026-09-10)

  • Key attached presentation by Add durable Work Column record and lease journal #979's Work Column ID, not the current server-global layout value. Persist dock, side width, and bottom height under that identity; migrate the legacy global width and default fresh records to right dock.
  • Establish one stable attached Work Column host and move it with grid areas or equivalent CSS only. Branch-specific JSX may not mount a second panel or dispose the existing one.
  • Add a browser sentinel that proves stable Work Column mount identity, active Preview file, dirty content, mode, zoom, selected inspector state, and renderer identity through every attached dock transition.
  • Define a pure geometry resolver with explicit minimum Chat and Work Column width and height, gap accounting, and discriminated infeasibility results that leave geometry, record revision, and lease unchanged.
  • Make the attached host own the only outer resize handle: right uses horizontal start, left horizontal end, and bottom vertical start. Disable competing nested v2 handles.
  • Add accessible resize semantics: focusable separator, orientation and value bounds, Arrow/Home/End behavior, visible focus, and browser coverage. Keep command bindings in Add Work Column detach gestures and keyboard commands #985.
  • Keep dock preferences inert outside desktop new-layout mode and add mobile and legacy regression coverage.

Metadata

Metadata

Labels

afkImplementable without human interaction

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions