feat(channels): add the structured Activity view (4/4) - #3815
Conversation
|
React Doctor found 1 issue in 1 file · 1 warning. 1 warning
Reviewed by React Doctor for commit |
This stack of pull requests is managed by Graphite. Learn more about stacking. |
b5a9f27 to
7098f03
Compare
5903d4d to
99fdf5c
Compare
7098f03 to
54ec82c
Compare
1bdb330 to
4c2e2fb
Compare
0d48de6 to
b517013
Compare
3d8a6d7 to
8f2e076
Compare
|
😎 Merged directly without going through the merge queue, as the queue was empty and the PR was up to date with the target branch - details. |
PR overviewAll previously flagged issues have been addressed. No open security concerns remain on this pull request. Security reviewNo open security issues remain on this pull request. Fixed/addressed: 1 · PR risk: 0/10 |
dbdbb67 to
c8452c4
Compare
8a9e6f2 to
8bda314
Compare
fa1742a to
2a1cd89
Compare
|
✅ Visual changes approved by @puemos — baseline updated in 12 removed. |
| ) { | ||
| const cloudRunState = useCloudRunState(taskId, task); | ||
| const { prUrl, effectiveBranch, repo, isRunActive } = cloudRunState; | ||
| const prUrl = prUrlOverride ?? cloudRunState.prUrl; |
There was a problem hiding this comment.
When this switches to a historical PR, usePrChangedFiles retains the previous query data via placeholderData, and changedFiles also falls back to cloudRunState.fallbackFiles whenever the selected PR has not returned files yet. As a result, the review can render the latest/previous PR files while prUrl already names the historical PR; actions such as comments then target the new PR URL with the wrong diff visible. Please keep the historical selection loading until its own files resolve and do not use latest-run fallbacks for an explicit override.
Merge activity
|
8bda314 to
21c9bce
Compare
Replace the flag-gated task thread with Timeline, Artifacts, and Comments views. Include multi-run artifacts and selected historical pull request review while leaving flag-off behavior unchanged. Generated-By: PostHog Code Task-Id: 6190e713-9b80-43d9-a05c-5e3b1ecdf297
The Activity panel's header was padding-sized (~41px) while the pane to its left — TabbedPanel's tab bar — is a fixed 32px row, so the two bottom borders never lined up. The panel also stacked a title row on top of a tabs row where the left pane has a single strip. Give ActivityPanel its own 32px header carrying the tabs directly: no separate "Activity" title row, the tab list fills the row so the line indicator lands on the bottom border, and the window controls sit right-aligned. Matches TabbedPanel and ReviewToolbar, which share the same height and border token. The shared ThreadPanelHeader is now the legacy panel's alone, so it stays exactly as it was — flag-off chrome is unchanged. Generated-By: PostHog Code Task-Id: 8ccf3555-2c68-4dbb-8b9f-1a96fd85d95a
Starring a channel is already reachable from the sidebar back row's hover star and the channel list's context menu, so the header's copy was a third affordance for the same action sitting next to the channel name chip. Generated-By: PostHog Code Task-Id: 8ccf3555-2c68-4dbb-8b9f-1a96fd85d95a
The pane read the run artifact manifest and then dropped everything on `type === "plan"` — a type nothing in the product has ever written. The only deliverable type agents actually produce is `output`, via the `upload_artifact` tool, so the manifest branch was unreachable and files handed back by a run never appeared. Verified against a live run's manifest: 6 `output`, 2 `user_attachment`, zero `plan`. The `plan` row was speculative — down to a bare-UUID fallback for names that never arrive — so it goes rather than shipping a UI affordance for data that doesn't exist. It can come back with a producer. Same inversion is why the conversation's Files box showed these while the pane said "No artifacts yet": it filters to `output`, the exact complement. - `parseRunPlans` becomes `parseRunArtifacts(raw, types)`, and reads the `size`/`content_type`/`uploaded_at` the rows need. - Re-uploads collapse to the newest per name: agents revise a deliverable and upload it again, and keeping every copy buries the current one under its own drafts. - `formatFileSize` moves out of CloudArtifactDownloads so both surfaces format sizes the same way. Generated-By: PostHog Code Task-Id: 8d187d00-0633-4706-8443-f79130b65f9f
The rows already use the same FileIcon the chat's file list does, so markdown resolves to the markdown icon and HTML to the HTML one. Lock that in — the row it replaced hardcoded a single clipboard glyph, and nothing else would catch a regression back to a generic icon. Generated-By: PostHog Code Task-Id: 8d187d00-0633-4706-8443-f79130b65f9f
5048498 to
1dbd099
Compare

Problem
The task thread has no structured place for lifecycle history, durable artifacts, and human comments.
Changes
This is PR 4 of the stack, based on #3814. It completes the flag-on Spaces + Activity experience.
How did you test this?
pnpm --filter @posthog/core test -- src/canvas/runArtifactSchemas.test.tspnpm typecheckinpackages/uiAutomatic notifications
Created with PostHog Code