Skip to content

feat(platform): expert task board on Home (POC) - #15538

Draft
0ubbe wants to merge 33 commits into
devfrom
0ubbe/expert-task-board-poc
Draft

0ubbe wants to merge 33 commits into
devfrom
0ubbe/expert-task-board-poc

Conversation

@0ubbe

@0ubbe 0ubbe commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Why / What / How

Why: A lighter take on #15494 to try the idea on Home before building the full board with projects and server-side state.

What: The "Your recap" section under the Home prompt becomes a task board. Each chat session is one card. Columns start as Scheduled / In progress / Done, and users can add their own. A New task card at the top of In progress focuses the Home composer.

How:

  • Cards follow the chat: not started, started or running → In progress; idle for 3+ days → Done.
  • Users drag a card, or use its "Move to" menu, to place it. The placement holds until the chat has new activity, then the card follows the chat again. A running chat always shows in In progress.
  • Columns and placements live in localStorage per signed-in user for the POC. Timestamp comparisons preserve placement after reload and refetch.
  • Archive: "Clear" on the Done column archives its chats, with an Undo toast. ChatSession.archivedAt (new nullable column) hides a chat from the session list, its count and search; the next turn in that chat clears it. History readers (the memory pipeline, Otto's expert-chat tool, kickoff adoption) pass include_archived=True and still see archived chats.
  • GET /api/chat/sessions now returns last_message: the first line of the newest user or assistant text (server-injected context removed). It comes from one lateral query on the (sessionId, sequence) index, about 2 ms for 50 sessions locally. If the query fails, the list loads without summaries.

Changes 🏗️

  • Backend: get_last_message_texts in copilot/db.py (skips hidden rows), last_message on SessionSummaryResponse, route test.

  • Backend archive: migration 20261015120000_chat_session_archived_at; set_chat_sessions_archived (raw UPDATE scoped to "userId" = $2, ids the user does not own are skipped, updatedAt untouched); POST /api/chat/sessions/archive (1–100 ids, archived true/false); include_archived on get_user_chat_sessions / get_user_session_count / get_user_sessions; admit_chat_session_turn clears archivedAt. Route tests for archive/restore/validation. openapi.json regenerated.

  • Backend files: file_count on SessionSummaryResponse from count_generated_files_by_session in data/workspace.py, one grouped query that counts what the chat's files button counts (no uploads, agent.json or internal tool output). User ID check: it joins UserWorkspace on "userId" = $1, so only the caller's own files are counted.

  • Files icon: FileAttachmentIcon on task cards, the chat's files toggle, the mobile and composer files buttons, and the sidebar's Files link.

  • Schedules: a read-only Scheduled column first on the board (scheduled chat turns and workflow schedules from /api/schedules/followups and /api/schedules, soonest first, dashed cards with expert or workflow, recurrence and time to next run). Chat cards with a pending follow-up show a clock badge with when it fires. No backend change.

  • Recent work: a list of the 5 latest things the team did, under the board, one plain sentence each, worded by fixed rules from the existing /api/home recent_work feed (files made/updated/deleted, runs finished or failed, services used, schedules changed). No AI and no backend change.

  • Frontend: new home/components/TaskBoard (board, column, card, add-column), rendered in EmptySession in place of HomeRecap. EmptySession tests now check the board instead of the recap.

  • Left for later: the recap code stays in the repo (the team page uses the Needs-you parts) but Home no longer renders it, so home_viewed no longer fires there. The board shows only the sessions the sidebar has loaded (first 50). There is no "New task" button in To do yet.

  • Review fixes: archive and restore in batches of at most 100 chats, keep Undo for completed batches after a partial failure, and isolate board state by user.

  • Test correction: folder navigation checks the folder query parameter while allowing the page’s existing default sort parameter.

  • Regression tests cover board persistence, account changes, bulk archive/Undo, schedules, recent work, archive ownership/resume, message previews, and file-count ownership/filtering.

Agents and large language models used

  • Claude Code with Claude Opus 5.5
  • Codex with GPT-6

Checklist 📋

For code changes:

  • I have clearly listed my changes in the PR description
  • I have made a test plan
  • I have tested my changes according to the test plan:
    • Home shows the board below the prompt; the recap is gone
    • New task card focuses the composer; a new chat shows in In progress and pulses while running
    • Cards show the expert, time since last activity, title and a one-line summary
    • Drag a card to Done; it stays there after reload; a new message moves it back to In progress
    • "Move to" menu works from the keyboard
    • Add and remove a custom column; it persists across reloads
    • "Clear" on Done archives its chats: gone from the board, sidebar and search; "Undo" brings them back
    • A chat that produced files shows the file icon and count on its card, matching the chat's files button
    • Scheduled column lists follow-ups and workflow schedules, soonest first; a follow-up in an existing chat shows a clock badge on that chat's card
    • Recent work shows up to 5 plain sentences, newest first, each linking to its chat or run; repeats collapse into "N times"
    • Sending a message in an archived chat (via its URL) brings it back to the sidebar and board

Review validation

  • Focused frontend tests: 34 passed.
  • Backend chat, session, expert-chat and memory-fetch tests: 372 passed.
  • Three database tests passed against a separate Postgres instance after applying every migration.
  • Full frontend suite with TZ=UTC: 963 files passed; 10,524 tests passed and four expected failures. UTC matches the billing date fixtures.
  • Frontend format/lint/types and backend lint/types passed.
  • Final CI checks: all passed or skipped.

🤖 Generated with Claude Code

Replace the Home recap with a task board below the chat prompt. Each chat
session is a card in To do / In progress / Done, plus columns the user
adds. Cards follow the chat (not started -> To do, started or running ->
In progress, idle 3+ days -> Done) until the user drags or moves them;
new activity hands the card back to the chat. Board layout is kept in
localStorage for now.

The session list now returns last_message, the first line of the newest
user or assistant text, for the one-line card summary.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added platform/frontend AutoGPT Platform - Front end platform/backend AutoGPT Platform - Back end cla: pending CLA not yet signed by all contributors labels Oct 15, 2026
The expert kickoff prompt is stored with metadata.hidden = true and is
kept off every user surface; the card preview query now skips it too.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added cla: signed CLA signed by all contributors and removed cla: pending CLA not yet signed by all contributors labels Oct 15, 2026
0ubbe and others added 4 commits October 15, 2026 19:57
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Status icons on column headers and cards, flat bordered cards with the
expert as the meta line and avatar, a Working chip while a turn runs, and
an "Updated" footer. Column options and card moves sit in "..." menus.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added cla: pending CLA not yet signed by all contributors and removed cla: signed CLA signed by all contributors labels Oct 15, 2026
0ubbe and others added 3 commits October 15, 2026 20:02
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added cla: signed CLA signed by all contributors and removed cla: pending CLA not yet signed by all contributors labels Oct 15, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added cla: pending CLA not yet signed by all contributors cla: signed CLA signed by all contributors and removed cla: signed CLA signed by all contributors cla: pending CLA not yet signed by all contributors labels Oct 15, 2026
ChatSession gets a nullable archivedAt. Archived chats drop out of the
session list, its count and search; the next turn in a chat clears it.
History readers (memory pipeline, Otto's expert-chat tool, kickoff
adoption) still see them.

POST /api/chat/sessions/archive archives or restores up to 100 of the
user's sessions without touching updatedAt. The Done column gets a Clear
button that archives its cards, with an Undo toast.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the cla: pending CLA not yet signed by all contributors label Oct 15, 2026
0ubbe and others added 2 commits October 15, 2026 20:33
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The composer's + now uses the same frosted circle as the task board's
New task and New schedule cards, shared as GLASS_CIRCLE_CLASS.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added cla: pending CLA not yet signed by all contributors cla: signed CLA signed by all contributors and removed cla: signed CLA signed by all contributors cla: pending CLA not yet signed by all contributors labels Oct 15, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 88.51351% with 51 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.87%. Comparing base (9849b32) to head (c1b54a6).

Additional details and impacted files
@@            Coverage Diff             @@
##              dev   #15538      +/-   ##
==========================================
- Coverage   86.87%   86.87%   -0.01%     
==========================================
  Files        4947     4965      +18     
  Lines      378328   378754     +426     
  Branches    33657    33832     +175     
==========================================
+ Hits       328656   329024     +368     
- Misses      44196    44258      +62     
+ Partials     5476     5472       -4     
Flag Coverage Δ
platform-backend 90.24% <98.47%> (+<0.01%) ⬆️
platform-frontend 71.67% <85.38%> (+0.07%) ⬆️
platform-frontend-e2e 29.54% <2.85%> (+0.05%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
Platform Backend 90.25% <98.47%> (+<0.01%) ⬆️
Platform Frontend 72.97% <84.34%> (+0.04%) ⬆️
AutoGPT Libs ∅ <ø> (∅)
Classic AutoGPT 28.43% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

The card composer's mic drops its grey circle and matches the Test mode
toggle beside it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d-poc

# Conflicts:
#	autogpt_platform/frontend/src/app/(platform)/copilot/components/ChatInput/ChatInput.tsx
#	autogpt_platform/frontend/src/app/(platform)/copilot/components/EmptySession/EmptySession.tsx
0ubbe and others added 5 commits October 16, 2026 17:57
The five latest things the team did, one plain sentence each ("Maria
made notes.md", "Otto couldn't finish Lead sync", "Remy used Google 4
times"), worded by fixed rules from the existing /api/home recent_work
feed. Runs in a row with the same subject and action collapse into one
line with a count. Hidden while loading and when there is nothing yet.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… empty

Files the chat made come from the workspace file list (newest generated
files, minus tool output and agent.json), which also has files the
activity log never recorded. Runs, services and schedule changes still
come from /api/home. The section now stays visible with an empty line
instead of disappearing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added cla: pending CLA not yet signed by all contributors and removed cla: signed CLA signed by all contributors labels Oct 16, 2026
Comment thread autogpt_platform/frontend/src/app/(platform)/home/components/TaskBoard/helpers.ts Outdated
Co-authored-by: GPT-6 (Codex) <agent@example.invalid>
@github-actions github-actions Bot added cla: signed CLA signed by all contributors and removed cla: pending CLA not yet signed by all contributors labels Oct 16, 2026
Co-authored-by: GPT-6 (Codex) <agent@example.invalid>

This branch has not been deployed

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

Labels

cla: signed CLA signed by all contributors platform/backend AutoGPT Platform - Back end platform/frontend AutoGPT Platform - Front end size/xl

Projects

Status: 🆕 Needs initial review
Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant