feat(timeline): action-specific system message titles, icons & markdown bodies - #192
Merged
Merged
Conversation
…n foundation Add systemMessageKind enum + systemMessageSubject payload to the client/turn/requested event and the user conversation timeline row; decode onto the row with stored-event legacy defaults (unlabeled/null). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Parent-change rows render the linked thread name (+ null-parent fallback); shared family-a-verbs constant removes title-split drift; schedule-due stamping tested at the real emit site; dedupe thread-label helper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New GeneratedConversationMessage.stories.tsx (Overview: one row per Family-B kind + agent reference + unlabeled fallback); System.stories provisioning/ interrupted rows show the new thread-named titles. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…system messages Render system-message bodies as markdown (remark plugin preserves @thread mention pills); remark-breaks keeps single newlines; agent bodies keep the offset renderer (path mentions); grouped MarkdownPreview threadMentions prop. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove dead family-a-verbs exports (OWNERSHIP_CHANGE_VERB_LIST, OwnershipChangeVerbAction) flagged in the integration review. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolve conflicts with main's #95 (remove apps feature). Drop the workflow-* and schedule-due taxonomy kinds (their subsystems/templates were removed on main); keep ownership + child taxonomy, Family A titles, per-action icons, and markdown bodies. Integrate main's route-paths/ RouteAnchor rename, side-chat childOrigin props, and centralized matchMedia. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…age-spec-thr_jbs4nhgqm7
…e-row fixture CI typecheck caught a smoke fixture missing the new required row fields. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ed preview, add icon coverage - Icons: child-interrupted/thread-interrupted -> AlertCircle, child-needs-attention -> AlertTriangle, compaction -> CircleArrowShrink (newly registered). - Collapsed preview renders inline markdown (+ @thread pills) for system messages instead of raw text; block nodes flattened to one clamped line. - Exhaustive unit tests for both icon mappers (systemMessageIconName, systemOperationLeadingIcon); update the collapsed-preview test; extend the conversationRow fixture with systemMessageKind/subject; add a Markdown body story. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Include thread mention props in MarkdownPreview memo comparison - Preserve parent-change thread names containing ownership verbs
…age-spec-thr_jbs4nhgqm7
SawyerHood
added a commit
that referenced
this pull request
Jun 17, 2026
…read-cancel #199) Resolve conflicts and reconcile our automations migration with main's hand-authored thread-search migrations: - Backfill drizzle snapshots for main's hand-authored 0039_thread_search and 0040_thread_search_rowid_fts (replayed via drizzle-kit against main's schema, preserving main's FTS SQL); regenerate our automations migration as 0041_add_automations with its own snapshot. Full snapshot chain now intact. - migration-journal.test.ts: add a CI guard that every journal entry has a snapshot and the prevId chain is unbroken (prevents snapshot-less hand-authored migrations from recurring). - migrate.test.ts: keep both cleanup paths in the thread-provenance rewind; add resetMigrationsAfterThreadSearch so the thread-search replay tests stay valid now that a migration (automations) lands after thread search. - AppSidebar.tsx / ProjectList.tsx: keep both main's thread-search UI and our Automations nav entry. - CLI timeline fixtures: add systemMessageKind/systemMessageSubject (required on the user conversation row since #192). - pnpm install for main's new remark-breaks dependency. Verified: turbo build typecheck lint test --force --continue -> 69/69 tasks pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Action-specific timeline system message titles
Replaces the timeline's generic system-message rendering with action- and thread-specific titles, per-action icons, a conservative body de-duplication, and markdown bodies for system messages. Built from the approved spec
timeline-system-message-taxonomy-108f.What changes
Provisioned thread→ "Fix auth bug provisioned"; also provisioning (active/failed/cancelled/interrupted), thread-interrupted, and parent-change (assign/release/transfer, unlinked fallback when a parent is missing). Provider warnings/deprecations/unhandled and compaction stay generic by design.[child] finished/failed/was interrupted(split by the child'sturnStatus),N threads updated(batch),[child] needs attention,[child] assigned to you/unassigned. Legacy messages fall back to "System Message".operationKind/systemMessageKind.ownership-assigned/ownership-removedcollapse to title-only (their one-line body equals the title).@threadmention pills (remark plugin), withremark-breaksso single newlines still break. Agent bodies keep the offset renderer; assistant rendering unchanged.GeneratedConversationMessageLadle story (Overview) covering every kind.Design
systemMessageKindenum +systemMessageSubjectpayload on theclient/turn/requestedevent and the user conversation row; stamped at each emit site, decoded onto the row. Legacy events default tounlabeled/nullonce at the stored-event boundary — no migration.titlestays a flat string; the app composes the linked title from the row'sthreadId/parentChange(sharedfamily-a-verbsconstants prevent builder/splitter drift).Scope note (rebased onto current main)
main's #95 ("remove the apps feature entirely") deleted the workflows and scheduling subsystems and their templates. The
workflow-*andschedule-duetaxonomy kinds were therefore dropped during the merge (their emit sites no longer exist); the thread/child/ownership taxonomy, Family A titles, icons, and markdown bodies are unaffected.Testing
@bb/domain,@bb/server-contract,@bb/thread-view,@bb/server,@bb/app.🤖 Generated with Claude Code