Open files, context, transcript & invocations
threadle can show local text files, interactive transcripts, reconstructed session context, tool / skill / reasoning invocation dumps, and library context payloads in floating windows without leaving the UI. Use open / view for a quick read. Use open in ⟨editor⟩ (⟨/⟩) when you want to edit. Use ⇓ for the full file.
Where it appears
Section titled “Where it appears”| Place | How |
|---|---|
| Sessions detail | ≡ transcript → ⌗ blueprint → → workflow (transcript when the session has messages / a known path) |
| Files / Activity | open next to open in editor on text paths |
| Session blueprint | Detail panel or right-click. See Blueprint actions. Topbar: ≡ transcript → ↗ urls → → workflow / ⇓ bundle |
| Canvas (skill, rules, agent with a source path) | Right-click → open / open in … / copy path / copy content |
| Inspector / artifact panel | Same open / open in editor pair |
open only shows for paths that look like text (.md, .ts, .json, .yaml, Makefiles, .env*, and similar). Binaries stay editor-only.
Blueprint actions
Section titled “Blueprint actions”| Node | Floating viewers / downloads |
|---|---|
| Session root | view transcript, open context (+ materialize / download / reference) |
| Subagent (⎇) | Same for the child session: view transcript, open context, view reasoning / download, plus ⌗ open blueprint |
| Reasoning (∴) | view reasoning / ⇓ download reasoning |
| Tool / skill | view invocations / ⇓ download invocations |
| Context payload (❝) | view context (payload body) / ⇓ download payload (raw JSON) |
| File / rules / skillset | open / open in … / copy path / copy content |
Detail-panel buttons sit under the side list (invocations, transcript preview, edited lines). Same place as rule-file open / open in ….
Window controls
Section titled “Window controls”- Drag the title bar. resize from any edge or corner (min ≈ 320×200).
- Several windows can be open. Click one to bring it forward.
- Esc closes the frontmost window (again for the next).
- Title-bar ⇓ downloads when possible:
- disk files → loaded text
- context / transcript → full context via API
- invocations / reasoning → full dump via API (every call, not the 60-row side list)
- Title-bar ⟨/⟩ opens in your editor (disk files directly. Context is written to
~/.config/threadle/tmpfirst). Invocations / reasoning are download-only (no materialize path yet). - Title-bar → (context windows) saves as a library reference and seeds a new workflow.
- ✕ closes.
Format / highlighting
Section titled “Format / highlighting”The title-bar dropdown picks how the body is rendered:
| Mode | Behavior |
|---|---|
| auto | From the file extension, then a light content sniff for .txt / unknown |
| markdown | Rendered markdown (fenced code highlighted) |
| json | Pretty-printed when valid, then syntax-highlighted |
| txt | Plain text |
| language modes | typescript, python, shell, yaml, … |
When the dropdown is auto, a small chip shows the resolved format (e.g. typescript).
Size cap (preview)
Section titled “Size cap (preview)”Reads are capped at 1.5 MB. Larger files, session contexts, and invocation dumps still open, but only the first 1.5 MB is shown, with a banner:
preview. Showing first 1.5 MB of … · open in editor / download for the full …
| Source | Endpoint |
|---|---|
| Files | GET /api/files/read?path=… → { content, size, truncated, previewMaxBytes } |
| Context | GET /api/sessions/:provider/context/:id?preview=1 → same shape |
| Invocations | GET /api/sessions/:provider/invocations/:id?kind=tool|skill|reasoning&name=…&preview=1 → same shape |
| Payload | GET /api/payloads/:hash → full ContextPayload JSON (viewer shows content) |
Without ?preview=1, the context and invocations routes return a full .md download. Context also supports ?materialize=1 (writes under ~/.config/threadle/tmp/ and returns { path } for the editor). For invocations, name is required for tool / skill. Omit it for reasoning.
View transcript
Section titled “View transcript”view transcript / ≡ transcript opens the interactive message list (roles, tools, thinking) in a floating window. The same viewer used in Search and the canvas inspector. Works for every provider that can return a transcript, including Codex rollouts under ~/.codex/sessions.
On Sessions detail and the blueprint topbar, ≡ transcript leads the action row when available (transcript → urls → workflow …). On the blueprint topbar, ↗ urls opens the outbound-URL modal (see Session blueprint → Outbound URLs). transcript file in session info still opens the raw on-disk JSONL when the provider exposes a path.
Live follow & unread
Section titled “Live follow & unread”The transcript opens pinned to the latest page. While you stay near the bottom, new messages merge into the tail from sessions.changed / live.status events (and a ~1 s poll while the session is running or waiting). Scroll up to unpin. Use ↓ latest to jump back, or ↓ N new when unread messages accumulated off-screen. Load previous / Load more do not cancel follow. While the session is busy, the footer shows thinking (running) or waiting.
Open context
Section titled “Open context”open context shows the session’s reconstructed model context. The same markdown as download context. In a floating window. Large threads are almost always preview-capped.
On a session or subagent blueprint node (detail panel or right-click):
| Action | What it does |
|---|---|
| view transcript | Floating interactive transcript for that session (or child) |
| open context | Floating viewer (preview-capped when large) |
| open context in … | Materialize full context to tmp and open in your editor |
| copy path | Absolute project path to the clipboard |
| ⇓ download context | Full context markdown download |
| → workflow · reference | Store + tag reference, seed a new workflow with that context node |
| library · reference | Store + tag only. Drag later from Library / palette › library |
| view reasoning | Every thinking block for that session (subagent detail) |
| ⌗ open blueprint | Child blueprint (subagent only) |
View invocations / view reasoning
Section titled “View invocations / view reasoning”view invocations opens every call for a selected tool or skill as markdown. Reasoning nodes (and subagent detail) use the same dump labeled view reasoning.
The blueprint side list is capped at 60 rows (+N more not shown · download for full). The viewer loads the full dump from the transcript and applies the same 1.5 MB preview cap as context. When capped, the banner points you to download for the rest.
| Action | What it does |
|---|---|
| view invocations / view reasoning | Floating viewer for the full dump (preview-capped at 1.5 MB when large) |
| ⇓ download invocations / ⇓ download reasoning | Uncapped markdown of every call (same as title-bar ⇓) |
Each entry is pretty-printed tool input (or full thinking text for reasoning). Per-call bodies are capped around 8 KB so a single giant Write/Edit payload cannot blow the dump unboundedly.
View context (❝ payload)
Section titled “View context (❝ payload)”Selecting an extracted or injected context node on the blueprint opens:
| Action | What it does |
|---|---|
| view context | Floating viewer for the payload body |
| ⇓ download payload | Raw payload JSON from /api/payloads/:hash |
Context → workflow (reference)
Section titled “Context → workflow (reference)”- On a session (or subagent) blueprint: → workflow · reference (or → in the context viewer).
- threadle snapshots the same markdown as open context, stores it as a
transcript-excerptpayload, and tags itreference. - A new graph opens with one pre-materialized context node. Wire it into agents / converters as usual.
- To reuse in another graph: Library or palette › library, filter
reference, drag onto the canvas.
API: POST /api/context/reference with { "source": { "provider", "sessionId" } } → { hash, kind, preview, tags }.
This is the zero-friction path when you want the full reconstructed thread (thinking + full tool I/O), not a distilled brief or a default extract. Distill / extract from a context node remain available when you want a shorter or filtered capture.
Trust / limits
Section titled “Trust / limits”- Paths must be absolute local files. The server never writes them for the viewer. It only reads (or writes tmp materializations / payload library entries you request).
- Content that fails the text heuristic (NUL bytes, non-text extensions) is rejected. Open in your editor instead.
- Highlighting / markdown render skips very large bodies (~200 k chars) and falls back to plain text so the UI stays responsive.
- Invocation / reasoning dumps are rebuilt from the session transcript on each request (read-only).
Related
Section titled “Related”- Session blueprint. Where transcript, open context, view invocations / reasoning, and reference actions live
- Context library. Payloads tagged
reference - Context nodes. Distill / extract / files on the canvas
- Settings. Which editor ⟨/⟩ opens