dashboard: artifact side panel — pinnable PR previews, file edits, Penpot frames, design-review screenshots #970
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Depends on
Reference
charles/claude-hooks#970
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As an operator I want to pin run artifacts (PR preview cards, individual file edits, Penpot frames produced by the designer, design-review screenshots) into a side panel separate from the chat scroll, so verifying agent output doesn't require rewinding through 200 events to find the latest version.
Context
Cursor 3 cloud agents "generate demos and screenshots of their work" specifically so operators don't scroll to verify (Cursor 3). Vercel chat templates and Claude.ai Artifacts both have this pattern.
Acceptance criteria
<ArtifactPanel>mounted as a tab in the run drawer (alongside Pipeline / Graph / Timeline). Empty state explains how to pin an artifact.<lucide.Pin />). Pinning a card adds a snapshot of its rendered output to the artifact panel.result.git.branches[*].prUrlor terminalresult)result.ok === true(collapsed by default; toggle to auto-pin)task_history.artifacts(JSON array). Survives refresh.Out of scope
Dependencies
<ToolCard>ticket (the pin affordance).References
<Artifact>: https://elements.ai-sdk.dev/components/artifact (concept reference; not a strict copy)🤖 Auto-assigned to dev (heuristic: area:dashboard + body 1784 bytes (≤ 2 KB) — code role). Reply
/unassignto reroute.🧹 janitor: this ticket has been idle-assigned since 2026-05-08T19:59:19.000Z. Re-dispatching.