Skip to content

docs(plans): project & task board redesign — master-detail desktop, in-review lifecycle, agent-aware DnD#364

Merged
physercoe merged 2 commits into
physercoe:mainfrom
agentfleets:docs/project-task-board-plan
Jul 23, 2026
Merged

docs(plans): project & task board redesign — master-detail desktop, in-review lifecycle, agent-aware DnD#364
physercoe merged 2 commits into
physercoe:mainfrom
agentfleets:docs/project-task-board-plan

Conversation

@agentfleets

Copy link
Copy Markdown
Collaborator

What

A second design plan: docs/plans/project-task-board-redesign.md — the Project/Task counterpart to the transcript plan (PR #363). Docs-only, no code changes.

Why

The desktop Projects area under-serves widescreen, and mobile is (unusually) ahead of desktop here:

  • Desktop TasksTab = five fixed 220px columns with dead space on wide monitors; cards show two fields (title + assignee); the TaskDetail modal lacks assign action, spawn/transcript link, result summary, timestamps, and audit — all of which mobile has. No DnD, no filters, no search.
  • The hub data model is ahead of the reference products: task statuses are agent-derived (agent_spawns.task_id: spawn→in_progress, crash→blocked, terminate→done) and projects carry phase gates (deliverables + acceptance criteria + auto-advance). So this is a rendering gap, not a model gap.

The plan (Vibe Kanban's task loop + cloud-agent review flow, adapted)

  • W1 — Desktop master-detail + rich cards + stretchy columns: board | task-detail split (modal retires on ≥1100px), cards gain priority dot / live assignee pip / result snippet / timestamps, columns flex to fill.
  • W2 — in_review lifecycle end-to-end: agent termination → in_review (was done); human accept → done; send-back with note. "Done means reviewed" — the Vibe Kanban / Claude-Code-web / Codex-cloud lifecycle, honoring ADR-029's auto-derivation semantics. Hub migration + both clients.
  • W3 — DnD with agent semantics + filters/search: drag into in_progress opens the assign/spawn sheet (status flips via derivation, not PATCH); agent-owned states drag-disabled; toolbar chips + search.
  • W4 — Attempts framing + left-nav parity: "New attempt" over the existing 1:N spawn link; desktop left nav gains attention badges / phase pills / progress / children rollups (mobile _ProjectListCard parity).
  • W5 — Review-feedback loop: per-task Changes rollup + line comments → feedback into the assignee session. Explicitly shared with PR docs(plans): agent transcript redesign — tool groups, state chips, slash picker, kimi M4 wire-tail #363's P5 — one implementation, whichever lands first.

Kept as differentiators (non-goals): the phase-gate model (deliverables/criteria/auto-advance), real hosts over VK's sandboxes, no GitHub-PR-centric completion, mobile keeps its list pattern. Vibe Kanban reference screenshots embedded (board master-detail + widescreen workspace). Five open questions in §6 (status-vs-flag for in_review, send-back target, DnD-assign UX, breakpoints, W5 home).

Verification

agentfleet and others added 2 commits July 23, 2026 00:03
…n-review lifecycle, agent-aware DnD

Borrows Vibe Kanban's task-execution loop for the Projects area:
master-detail board with stretchy columns + mobile-parity cards (W1),
an in_review status between agent-terminated and accepted (W2), DnD
that honors the agent-derived status semantics (drag to in_progress =
assign/spawn) + filters/search (W3), attempts framing over the existing
1:N spawn link + left-nav parity (W4), and a review-feedback loop shared
with the transcript plan's P5 (W5). Reference screenshots embedded;
phase gates explicitly kept as the differentiator (non-goal).
…t radius, rollout order, decisions

Maintainer review amendments before merge:
- §6 open questions closed as decisions: in_review as a new status;
  send-back to in_progress when the assignee session is alive, else
  todo; DnD always opens the agent picker; resizable split with
  automatic tri-pane at >=1600px; W5 review-feedback lands in THIS
  plan (transcript plan's P5 rollup stays a cross-link).
- §1/§4/W2: the derivation was flattened — agent terminated splits on
  result_summary (with summary -> done, without -> cancelled, v1.0.619
  abandoned-task rule), and blocked/cancelled are never overwritten
  (v1.0.628). W2 now flips only terminated+summary to in_review;
  abandoned tasks stay cancelled and never enter the review queue.
- W2: 'migration for the new enum value' removed — task status has no
  CHECK constraint; the real hub surface is named instead:
  deriveTaskStatusFromAgent, proposePermittedTaskStatuses (send-back
  needs the propose vocabulary extended), digest_store.go:303 assignee
  query (must include in_review), handlers_agents.go:1351 spawn gate
  (in_review must allow spawns = new attempt / send-back).
- W2: rollout order added — clients learn in_review (plus an
  unknown-status fallback bucket, issue physercoe#61 bug class) BEFORE the hub
  flips derivation.
- W3: desktop AgentSpawn has no task_id plumbing today; the reuse adds
  the prop.
- W4: progress bar labeled as the phase-weighted /v1/insights metric,
  not a task count. TL;DR: physercoe#363 is merged (c97c522), not in flight.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@physercoe physercoe closed this Jul 23, 2026
@physercoe physercoe reopened this Jul 23, 2026
@physercoe
physercoe merged commit c797538 into physercoe:main Jul 23, 2026
5 of 7 checks passed
physercoe pushed a commit to agentfleets/termipod that referenced this pull request Jul 23, 2026
…d transport, envelope re-seal, host-key trust, decisions

Maintainer review amendments before merge:
- Teleport reordered pause-first per ADR-014's single-appender
  invariant: terminate-after-verify cut the engine-state bundle while
  the source engine could still append (silent turn loss) and put two
  engines on one logical store during the verify window. Pause is now
  step 2; every later failure falls back to resume-on-source — the
  existing resumePausedSession path.
- Transport section added: /v1/blobs caps at 25 MiB and buffers
  uploads in memory, so single-blob tars (256 MB workdir cap, large
  engine stores) are impossible — teleport rides a chunked bundle
  manifest (<=25 MiB parts + manifest blob + whole-tar hash).
- E3 x Part 2 interaction stated: env_secret_envelope is sealed to the
  source host's key; the initiating client re-resolves and re-seals to
  the target host during teleport; headless teleport of secret-bearing
  sessions is impossible by design.
- E3 host-key enrollment gains ADR-052 D-4's explicit trust step
  (fingerprint short-code confirm, pinned thereafter, re-key =
  re-trust) — without it a hub could substitute keys and open every
  envelope.
- env_profile_rev dropped: the entity has no revision machinery;
  snapshot = materialize resolved env_vars + setup_script into the
  spawn spec, env_profile_id kept for provenance.
- Open questions closed as decisions; companion links updated (physercoe#363
  c97c522, physercoe#364 c797538; branch merged with main so both resolve).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
physercoe pushed a commit that referenced this pull request Jul 23, 2026
…retchy columns

Implements W1 of docs/plans/project-task-board-redesign.md (PR #364).
Desktop-only, no hub change — renders existing task payload fields.

- Stretchy columns: .kanban-col flex 0 0 220px -> 1 1 200px and drop the
  min-width:min-content that left widescreen dead space to the right.
- Master-detail: on >=1100px a selected task opens an inline right-hand
  detail panel (board stays visible); below that it stays a modal. Driven
  by a matchMedia useMinWidth hook so it reflows on resize.
- Rich cards (mobile tile parity at desktop density): priority dot, title,
  one-line body snippet, result-summary snippet, live assignee pip + handle,
  relative age; blocked flagged, cancelled struck-through, selected highlighted.
- Rich detail (shared TaskDetailBody, used by both modal + panel): live
  assignee pip + Open-transcript (selectAgent to the assignee session),
  result_summary, started/completed timestamps, plus the existing
  status/priority pickers and markdown body — all fields verified present on
  the hub task payload (handlers_tasks.go:67-71).
- i18n en+zh for the four new task.* strings.

Verified: tsc --noEmit clean; lint-desktop-tokens clean (65 baseline, no
phantom); vite build green. W2 (in_review lifecycle) is the next wedge and
touches the hub + both clients.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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