agentHomeHero.test.tsxfeat(tables,chat): make a document from the composer, and let the agent build it with you The composer's `+` creates a document, table or board, opens it beside the chat and attaches it — and the chat opens with the agent explaining what the thing is for, so an empty grid teaches what to ask of it. The artifact panel that holds it is now the agent view's geometry (back gutter, centered column, editable title, no divider) rather than a bordered strip with an X. Prompts move out of the middle of the empty chat: the file surface's cards are a tab in the pinned strip, which is now the only place the chat offers one. Server-side, an attached table stops looking like markdown the agent could rewrite whole: it carries a brief naming the `table` tool, the schema frontmatter as its marching orders, and the loop for building one WITH the user — propose the columns and their fill instructions, source the rows, then fan out in parallel. The `documents` skill also gains the `table` tool it had been documenting without providing on the granular surface. Co-Authored-By: Claude Opus 5 (1M context) <<email>>Sep 2, 2026, 6:58 PMagenticTable.test.tsfeat(tables,chat): make a document from the composer, and let the agent build it with you The composer's `+` creates a document, table or board, opens it beside the chat and attaches it — and the chat opens with the agent explaining what the thing is for, so an empty grid teaches what to ask of it. The artifact panel that holds it is now the agent view's geometry (back gutter, centered column, editable title, no divider) rather than a bordered strip with an X. Prompts move out of the middle of the empty chat: the file surface's cards are a tab in the pinned strip, which is now the only place the chat offers one. Server-side, an attached table stops looking like markdown the agent could rewrite whole: it carries a brief naming the `table` tool, the schema frontmatter as its marching orders, and the loop for building one WITH the user — propose the columns and their fill instructions, source the rows, then fan out in parallel. The `documents` skill also gains the `table` tool it had been documenting without providing on the granular surface. Co-Authored-By: Claude Opus 5 (1M context) <<email>>Sep 2, 2026, 6:58 PMDisplayArtifactPanel.test.tsxfeat(tables,chat): make a document from the composer, and let the agent build it with you The composer's `+` creates a document, table or board, opens it beside the chat and attaches it — and the chat opens with the agent explaining what the thing is for, so an empty grid teaches what to ask of it. The artifact panel that holds it is now the agent view's geometry (back gutter, centered column, editable title, no divider) rather than a bordered strip with an X. Prompts move out of the middle of the empty chat: the file surface's cards are a tab in the pinned strip, which is now the only place the chat offers one. Server-side, an attached table stops looking like markdown the agent could rewrite whole: it carries a brief naming the `table` tool, the schema frontmatter as its marching orders, and the loop for building one WITH the user — propose the columns and their fill instructions, source the rows, then fan out in parallel. The `documents` skill also gains the `table` tool it had been documenting without providing on the granular surface. Co-Authored-By: Claude Opus 5 (1M context) <<email>>Sep 2, 2026, 6:58 PMHomeView.test.tsxdocs: seed layout-shell wiki + fix stale HomeView test; pause url-driven-layout 3-7 - Seed apps/mail/docs/wiki/layout-shell.md: 3-column shell architecture, the persistent AppShell/PersistentShell perf model, and the load-bearing URL-sync gotcha (conversationSection + hotkey scope, no e2e harness). - Fix pre-existing stale HomeView.test.tsx (HomeView no longer mounts the deleted FullScreenChat — it's just the DisplayArtifactPanel context column). - Record in the design doc why Phases 3-7 are paused for supervised/app-running execution (interlocked; not headless-gateable) + inline migration note on thread-conversation-url-sync. Co-Authored-By: Claude Opus 4.8 (1M context) <<email>>Jul 13, 2026, 12:50 PMperMessageOpenContext.test.tsxfeat(chat): a document you can open, and sources you can click Writing a document is the whole gesture now. It attaches to the thread as a chip and opens beside the transcript when nothing else is open there; if the user is already reading something, it stays put and the chip is the way in. `display-document` is gone — asking the model to remember to reshape someone else's screen meant it usually didn't, and when it did it took the panel regardless of what was in it. `attachToContext` goes with it: no caller set it and the `document` family never declared it, so on that surface it could not be reached at all. Guards on what the doc IS (no thread, a buffer path, a fan-out row scope) do the work the flag was pretending to. The card was also dead on arrival on the family surface: those tools nest their payload under the action key and only the SDK harness un-nested it, so `result.id` was undefined and the row rendered an inert "Document written" with no filename. Same shim now runs on the Mastra path. `getDisplayArtifact()` returns null when nothing is open. Its `agenda` default was a lie about the app — the panel resolves its own resting content and never read that branch — and its only real effect was making "nothing is open" un-expressible. Web claims carry a source badge instead of a link in the prose. The research tools number every page they find, stable for the run, and the answer's `[N]` resolves against the sources that existed when it was written — not a thread-wide list, which would relabel every badge on screen the moment a second search ran. Co-Authored-By: Claude Opus 5 <<email>>Sep 3, 2026, 12:08 AMthreadTitleProcessor.test.tsxfeat: agent-generated thread title (design: chat-context-set phase 8) set-thread-title tool (name + optional summary in context jsonB, thread-title-updated SSE); workflow nudges the agent to title only in the first 1-2 responses while the title is a placeholder; frontend processor updates the name live. isDefaultThreadTitle helper. Unit + gated e2e + jest tests. Co-Authored-By: Claude Opus 4.8 (1M context) <<email>>Jul 5, 2026, 11:27 PM