Skip to content

Task, plan and setup UI fixes - #541

Merged
alex-clickhouse merged 8 commits into
mainfrom
alex/fb-task-ui
Oct 21, 2026
Merged

alex-clickhouse merged 8 commits into
mainfrom
alex/fb-task-ui

Conversation

@alex-clickhouse

Copy link
Copy Markdown
Collaborator

What

  • Form fields are visible in dialogs in both themes. FIELD_BASE used the
    same background and border as the Modal panel, so in the dark theme an
    empty field (for example in the New Task dialog) showed only when it had
    focus. Fields now take the recessed surface and the full-strength border,
    the tokens that the setup wizard already used. The wizard's own override
    is removed.
  • The task detail (page and board dialog) shows the task's latest plan
    with its version, status and "Open plan". A pending plan with no revision
    request shows "A plan waits for your review" with a primary button. The
    section reads the plans again when the task row changes; every plan
    change (propose, update, revision request, approve, decline) writes a
    note on the task, so the section follows the plan without a reload. The
    plan status chip is now one shared component.
  • The setup Overview counts only the steps that apply on this instance. A
    step closed by policy or by a lockdown stays in the list with its badge,
    but a finished setup reads "5 of 5 steps done", not "5 of 9".
  • The Setup nav entry hides from the nav rail when setup is finished. A
    gear button labelled "Setup" in the rail footer keeps the wizard one click
    away. On a phone, Setup stays in the More drawer.
  • The Memory page's category summary editor no longer puts its field on a
    surface of the same colour.

How

  • web/src/components/ui/styles.ts, Setup/Field.tsx, Setup/SecretField.tsx
  • web/src/components/Tasks/TaskPlan.tsx (new), Plans/PlanStatusBadge.tsx (new)
  • web/src/components/Setup/Overview.tsx, navigation.ts (appliesHere)
  • web/src/components/Layout/navItems.ts, NavRail.tsx, BottomNav.tsx
  • web/src/pages/MemuPage.tsx (one class)
  • docs: tasks.md, setup.md, web-ui.md

Tests

  • npm run build; npm test: 72 files, 998 tests (base 71 / 989).
  • New specs for the task plan section, the Overview count with closed and
    locked steps, and the Setup entry and the rail gear.
  • Screenshots of the New Task dialog before and after, light and dark;
    axe contrast audit of the changed routes shows no new findings.

🤖 Generated with Claude Code

alex-clickhouse and others added 8 commits October 21, 2026 16:56
FIELD_BASE painted fields with the same background and border as the
Modal panel (bg-surface-raised, border-border-subtle). In the dark theme
an empty field in a dialog, for example the New Task dialog, showed only
when it had focus.

Fields take the recessed surface and the full-strength border, which the
setup wizard already used for its own controls. That box is darker than
the page, a card and a dialog panel in both themes. The wizard's own
override (CONTROL_CLASS) is now the shared default, so it is removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The task detail, on its own page and in the board's dialog, showed
nothing about plans, although GET /api/tasks/{id}/plans exists. The user
had no way to get from a task to the plan that waits for a decision.

The task detail now reads the task's plans and shows the latest version
with its status and an "Open plan" action. A pending plan with no
revision request shows "A plan waits for your review" with a primary
"Open plan" button. The plans are read again when the task row changes,
which happens when plan_propose writes its note on the task.

The plan status chip moves to a shared PlanStatusBadge, so that the plan
list, the plan page and the task detail use one tone table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Overview counted every step in "N of M steps done", also the steps
that the instance closed. On an instance that keeps no credentials on
disk, memory, channels, sources and agents are "Not available on this
instance", so a finished setup read "4 of 6 steps done".

M now counts only the steps that a person can complete here, now or
after the Mode step. A step closed by policy or by a lockdown stays in
the list with its badge. This matches the server, which never counts
such a step as left to do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Setup entry stayed in the navigation after setup was finished, as if
work was left. It now leaves the list when the checklist says
"finished". To keep the wizard reachable, for example to change the
model later, a gear button labelled "Setup" shows in the footer of the
nav rail, and a "Setup" row in the footer of the phone's More drawer.
Both show only when setup is finished. On a finished setup page the
phone's More button is marked as current, as for the other entries in
the drawer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On a locked instance with no templates yet, the server marks a step
that waits for Mode as `lockdown` but keeps the "Choose a mode first"
reason. The server does not count it, and setup can be finished, so the
Overview must not count it either. appliesHere now also reads
`blocked_kind`.

The phone's position line no longer claims to use the Overview's M:
the position counts all steps, the Overview only those that apply.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The category summary editor put its TextArea on a bg-bg-sunken strip.
Fields use the same sunken surface, so the field had no visible fill
when it lost focus. The edit strip drops its own background and the
field shows on the panel behind it. The read-only strip keeps its
background.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On a phone Setup is already a row in the More drawer, a place for
rarely used destinations. A finished setup keeps that row in the list,
so the drawer needs no separate footer row and no own current-page
handling. The nav rail keeps its gear button.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The TaskDetailBody spec already checks, end to end, that the plan
section reads the plans again when the task's updated_at changes, so
the narrower TaskPlan copy of that test goes. The component comment
names every plan change that writes a task note, not only a proposal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@alex-clickhouse
alex-clickhouse marked this pull request as ready for review October 21, 2026 17:35
@alex-clickhouse
alex-clickhouse merged commit 069f7bb into main Oct 21, 2026
4 checks passed
@alex-clickhouse
alex-clickhouse deleted the alex/fb-task-ui branch October 21, 2026 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants