- Route sidebar: add alignContent: "start" so the three grid rows
size to content instead of stretching to fill the viewport. Inner
grids stop cascading, queue links collapse to natural height.
- Item workbench: only show the "Loading item…" placeholder when
there's no data yet. Previously every itemQuery.refresh() (e.g. on
a chat send) flipped loading=true, unmounted WorkbenchTwoColumn
and reset ChatPanel's local history state, so user/assistant
messages never rendered.
- Transition toast: label the destination by state ("Approved")
rather than the button copy ("Approve").
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Backend defaulted ingested items to stateKey="draft" while the UI
hardcoded its workflow on "new", so fresh installs rendered the raw
stateKey with no transition buttons. Extract the v1 default state and
transition lists into src/workflow-defaults.ts and have both the worker
(seed + in-memory store) and the UI (state pill, TransitionBar, action
form) derive their state keys from that single module.
transitionItem now also validates the destination against the queue's
configured triage_queue_transitions and rejects unknown destinations
with a 422 invalid_state_transition so direct API callers can't push
items into made-up states.
Regression tests assert the ingested stateKey matches the UI's
allowedTransitions keys, that the UI sources from workflow-defaults,
that the SQL column default agrees, and that transitionItem rejects
unknown / skipped destinations.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Phase 6 of PAP-9815. Builds the user-facing triage workbench on top of
the Phase 2-5 worker/data plumbing:
- Queue route sidebar with queue list, item counts, and queue-scoped
section links (Items / Workflow / Guidance / Transition actions).
- Queue list home page with create, archive, and open actions.
- Per-queue overview that groups items by workflow state with linked
work-issue badges.
- Two-column item workbench: slim assistant chat on the center/left
pinned to the current item, item document/properties editor on the
right. Direct edits and chat-sent messages both target the same item.
- Mobile-friendly tab switch between Chat and Document under 900px wide.
- Guidance side panel + reflection diff with accept / reject / revise.
- Folder-style guidance editor for guidance.md plus extra path-keyed
docs (style.md, examples.md, rubric.md, ...).
- Default workflow view and constrained create_or_update_issue
transition action editor with variable palette and template fields.
- Settings page keeps the managed resource reconcile surface.
Adds 9 render-level Vitest specs in jsdom that exercise the queue list,
queue overview, two-column workbench, transition editor, settings, and
the reflection diff. Also adds a Playwright+esbuild screenshot harness
under tests/screenshots that captures 9 desktop + 9 mobile shots into
packages/plugins/plugin-triage/screenshots.
Co-Authored-By: Paperclip <noreply@paperclip.ing>