Skip to content

tracking(workbar): rebuild every panel on the Astryx idiom, shell included #2188

Description

@Astro-Han

Problem

#2158 rebuilt the workbar column on Astryx primitives and made it a plate of the same kind as the conversation beside it. It stopped at the column. Every panel inside still carries a pre-Astryx interior, and the set of panels has changed since this issue was filed: Task Ledger is gone (#4400), Tasks is now SessionTodoPanel, and Work Board, Terminal and Side Chat are new. Each panel still decides on its own what an empty state, a failure, a count and a dense list look like, so the column reads as eight apps in a tab strip.

The workbar is also the surface the architecture review calls "a second window manager" (A3 in docs/frontend-architecture-astryx-review-2026-08-09.md): tab chrome, panel headers and resize affordances are product CSS on top of controls Astryx already ships.

Goal

One column, one idiom. Every panel composes Astryx Section/Heading/Toolbar/List/EmptyState/Banner/Spinner/MetadataList, obeys DESIGN.md (surface ladder, One Means Rule, two ink tiers, radius ladder), and is verified at 320px, 400px and the stacked layout below 990px. Inspector stays the reference.

Work items

Each sub-issue is one PR with BEFORE/AFTER Storybook captures (light and dark) in the Product/Session Workbar story group.

Shell (I take this first; it sets the frame the panels land in)

  • Tab strip and panel header on Astryx Toolbar/Button/Heading; retire workbar-local chrome CSS.
  • Column plate on --surface-raised with one separator against the canvas; no fill+border+shadow stack.
  • Resize handle and collapse affordance on tokens only; no local --maka-* namespaces (they are undeclared and resolve to fallbacks).

Panel interiors (one sub-issue each, open for claiming)

  • Review — diff list rows on List/Item, file header as MetadataList, empty and error states on EmptyState/Banner.
  • Tasks (SessionTodoPanel) — rows on the List idiom, status via StatusDot, no decorative Badge.
  • Browser — toolbar already on Toolbar (P2.1); audit URL field, loading and blocked states against the idiom.
  • Files — filename and size no longer overlap at 320px; diffs scroll inside their own container at 400px.
  • Terminal — header, disconnected and restarting states on Banner/EmptyState; no bespoke chrome.
  • Work Board — cards on the ladder (raised plate, one separator), status vocabulary shared with Tasks.
  • Side Chat — header, quote chip and close confirmation on Astryx Dialog/Button; quote chip Button overrides shrunk to themeProps (P3.1).

Cross-panel

  • One failure vocabulary: every panel states a failure as Banner with a labelled retry.
  • One empty vocabulary: every panel's empty state is EmptyState with a single next action.

How to claim a panel

Comment with the panel name; I will open the sub-issue, assign it, and link it here. Start from the Inspector as the reference and from the shell PR once it lands. Keep each PR to one panel.

Out of scope

Panel behaviour and data flow (owned by the feature slice, apps/desktop/src/renderer/features/workbar/README.md); AppShell composition (#4582); WorkHub (#3492).

Refs #2158, #4400, #4582, #4679

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is needed

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions