Make ticket pages open in T3 Code's file viewer, and show plans, mocks and progress inline in the thread

This commit is contained in:
Gabriel Brown committed 2026-10-30 14:58:46 -04:00
1 parent e21a4c24f0
commit 4e39be860c
9 files changed
+235 -42

No files matched your search

+30 -2
View File
@@ -7,7 +7,6 @@ sees. It is a personal working file, exempt from the prose bar like the rest of
```
.claude/docs/epics/
_site/site.css, site.js # shared renderer, refreshed from templates/site/ on every write
<EPIC-KEY>/
index.html, epic.data.js # the epic index, in build order
<TICKET-KEY>/
@@ -16,6 +15,35 @@ sees. It is a personal working file, exempt from the prose bar like the rest of
tickets/<TICKET-KEY>/ # same shape, for a ticket with no epic, and no index
```
Each `index.html` carries the renderer from `templates/site/` inline, rewritten on every
write, and loads only its own data file beside it. That is what lets T3 Code's file viewer
show it: an HTML file there can load files from its own folder and below, nothing above.
## In T3 Code
Gib follows the work in a T3 Code thread, so the page and the plan come to him there.
- **The live page.** `ticket-page open <KEY>` refreshes the page and prints its absolute path.
Link that path in your reply, and it opens in T3's file viewer beside the thread, still
reloading as you write. Outside T3 (no `T3CODE_THREAD_ID`) it also opens the browser.
Never start an http server for the page.
- **Inline snapshots.** `ticket-page view <KEY> <view>` prints a self-contained page styled
with T3's theme. Pass its output, verbatim, to `html_preview`, check the screenshot, then
to `html_render` with the `contentHeight` it reported (capped at 2000) as the height. Do not
restate what the snapshot shows in your reply. Snapshots do not update, so render one at
the moment it is for, not on every write.
| Moment | View |
|---|---|
| Plan ready for approval (Phase 1, last step) | `plan`, then `mocks --mock <id>` once per artboard |
| Hand-off for pre-mr-review, and on resume | `progress` |
- One artboard per render, so each can be expanded full screen on its own and options sit
one after another for comparison. `view` refuses a page over html_render's 512 KB and
names the artboards to render one at a time.
- Keep artboards light: CSS and real copy, not base64 screenshots. A screenshot pasted into an
artboard as a data URI is most of its size, and every byte goes through the conversation.
## Write through `ticket-page`, always
`~/.agents/skills/ticket/scripts/ticket-page` is the only writer of the data files. It validates
@@ -31,7 +59,7 @@ the repo.
| Moment | Command |
|---|---|
| Issue fetched to a scratch path | `init <KEY> --issue <issue.raw.json>`. Prints the ticket folder, then any populated Jira fields the page does not show. |
| Issue fetched to a scratch path | `init <KEY> --issue <issue.raw.json>`. Prints the ticket folder, then any populated Jira fields the page does not show. Then `open <KEY>` and link the path. |
| Attachments downloaded, a video transcribed, frames extracted | `scan <KEY>` |
| Ticket branch resolved, ticket classified | `meta <KEY> --branch <name> --classified bounded` |
| Research notes worth keeping: what a video says, what a spreadsheet holds, a check against prod | `note <KEY> "<Title>" --file notes.html` |