thatmike1/t3code · release-feed

fork of pingdotgg/t3code · build of 30 Sep 2026

T3 Code,
with the extras.

Nine additions on top of upstream. Pick what your machine can run.

33 commits · 109 files · +7,534 −107 · on upstream main of 21 Sep

The tray at the bottom left is live. The numbered dots jump to each feature.

added 15 Sep · Ctrl+W 16 Sep

Ctrl+Tab and Ctrl+W between threads

Hold Ctrl and tap Tab to walk threads by recency. Ctrl+W settles the current one and drops you in the one before.

How it works
  • One tap flips between the last two. Shift walks back, Escape cancels.
  • Ctrl+W closes the right panel first if one is open, and never closes the window.
  • The recency list lives in memory and starts fresh after a restart.

apps/web/src/components/ThreadSwitcher.tsxapps/web/src/thread-switcher.logic.tsapps/desktop/src/window/ThreadSwitcherInput.ts

Switch

Settle

Browsers keep these chords, so click the keys, or hold q for Ctrl and press w for Tab.

added 15 Sep

The chat sits where you look

On an ultrawide, a left-anchored column with an adjustable gutter keeps the chat left of the screen's middle.

How it works
  • Settings, Chat layout: Centered or Left, gutter 0 to 500px. The default stays Centered.
  • The gutter gives way first when the pane narrows, so the column keeps its 48rem width.
  • Messages, the scroll-to-end pill and the composer share one left edge.

packages/contracts/src/settings.tsapps/web/src/index.css (.chat-reading-column)apps/web/src/components/settings/SettingsPanels.tsx

column starts at
width
gutter in use

Modelled at 2560px with a 260px sidebar, so the numbers are close, not exact.

added 14 Sep · model keys 23 Sep

Effort and model on the keyboard

Alt+2 and Alt+5 step reasoning effort. Five more Alt keys pick the model for a new thread.

How it works
  • Effort follows the selected model's own control and stops at the ends. Ultrathink and Ultracode are skipped.
  • Alt+1 Opus 5.5, Alt+3 Sol, Alt+4 Fable 5.1, Alt+6 Astra, Alt+9 Luna, only before a thread starts.
  • A key whose model your providers do not offer does nothing. All keys are rebindable in Settings.

apps/web/src/components/chat/TraitsPicker.tsxapps/web/src/quick-model-shortcuts.tspackages/shared/src/keybindings.ts

Effort

Model

Alt+digit switches browser tabs, so click the keys or press the bare digits while this is on screen.

improved 14 Sep

Pinned threads get their own block

A hairline under the pinned group separates it from the rest of the list.

How it works
  • Pure styling: sidebar-foreground at 20%, so it follows both themes.
  • It hides during a drag and sits 4px clear of the next row's hover highlight.

apps/web/src/components/Sidebar.tsx (SidebarDragBoundary)

upstream
fork

added 23 Sep

Any file, by its path

Paste a path like ~/.config/app/config.json and it opens in the project editor, editable.

How it works
  • Works in the Files panel and in Ctrl+P. Paths are read on the machine the server runs on.
  • Saving checks the file has not changed on disk. Text files over 1 MB stay read-only.
  • A missing path offers Create empty file: parents made, mode 0600, never overwrites.
  • Relative paths still cannot leave the project.

apps/server/src/workspace/WorkspaceFileSystem.tsapps/web/src/components/files/FilePreviewPanel.tsxapps/web/src/components/files/ProjectFilePicker.tsx

added 30 Sep

Agents start their own threads

An agent can hand work to new threads. They sit under the thread that started them, each with its own status, so background work is never out of sight.

needs one rule The tool tells agents to prefer their own subagents, so they reach for it only when asked. Paste the rule into your CLAUDE.md or AGENTS.md and they start threads on their own.

How it works
  • The tool is create_threads on T3's own MCP server, up to 20 threads a call. It is upstream's open PR #11795, carried early.
  • New threads share the caller's project, branch and worktree. They cannot get broader permissions and they do not report back.
  • The fork adds the parent link and the group. Pin, snooze or settle a thread and it leaves the group with a robot mark.

apps/server/src/agentThreads/apps/web/src/components/sidebar/SidebarAgentGroup.tsxapps/web/src/components/sidebar/SidebarAgentThreads.logic.ts

CLAUDE.md · AGENTS.md
## T3 Code threads

When I ask for a background job, a parallel job, or work "in a new thread", start it as a T3 thread with the `create_threads` tool on the `t3-code` MCP server. Do not use a subagent or a detached CLI process for it: I can watch, steer and stop a thread in the sidebar, and I cannot see a subagent.

- A thread starts with no memory of this conversation. Put the whole task in `prompt`: the goal, the files, and what done looks like.
- Give every thread a short `title`.
- Threads share this checkout: same project, branch and worktree. Split the work by files so no two threads edit the same one.
- Threads do not report back. Have each one commit its result or write it to a file, and tell me where to look.
- A thread uses your provider and model unless you pass a `target`. Call `orchestrator_capabilities` first to see what is available.
- Keep subagents for quick lookups whose answer you need in this turn.

The rule is in English because it is written for the agent. Change the trigger words to your own.

The fork itself

install

Download the Linux AppImage, with in-app updates. Or build from source:

bash
git clone https://github.com/thatmike1/t3code
cd t3code && git checkout release-feed
vp install && vp run dist:desktop:linux

Linux x64 is available now. Windows installers are next.

keeping up

One script rebases the branch stack onto upstream, checks it and stages a new AppImage.

  1. release-feedreleasedin-app updates from this fork
  2. fork-markthe hand-drawn fork mark
  3. agent-threadsagent-launched threads grouped under their parent
  4. tab-tinttab tint stripe, click to focus
  5. batch-2switcher, chat layout, Ctrl+W, model keys, files by path
  6. batch-1short bead ids, effort keys, pinned rule
  7. bead-linksbead chips
  8. widgetscontract, watcher, sidebar tray
  9. origin/mainpingdotgg/t3code of 21 Sep
  1. statusHow far upstream moved, where each branch sits.
  2. rebaseTags the old heads, moves the whole stack.
  3. verifyTypecheck plus the tests the fork touches.
  4. pushPushes the stack to thatmike1/t3code.
  5. buildStages a new AppImage, checks the fork is inside.
  6. publishReleases a tested build for in-app updates.

Rebased three times, on 15, 16 and 21 Sep; the last took in 206 upstream commits with one conflict.

fixes

Six rough edges in the fork's own features, and one bug upstream has since fixed.

  • 11 SepupstreamHTML previews render againPages over 1 KB rendered as source; worked around 11 Sep, fixed upstream in Effect rc.115, workaround dropped 21 Sep.
  • 15 Sep39b7fcbCtrl release is not lostThe switcher never switched on X11. The chord now runs in the desktop main process.
  • 15 Sep6dc56beLeft chat lines up with its scrollbarTimeline and composer reserve the same scrollbar gutter, so the columns stay aligned.
  • 15 Sepb465f49Pinned rule clears the hoverA row's hover highlight covered the rule by a pixel. Now it clears it by four.
  • 22 Sepb1317fdLonger bead ids link againFour-character ids showed as plain text. The patterns now take three to eight.
  • 23 Sepa47daccA missing file says it is missingThe tab names a missing file and offers to create it, not a generic error.
  • 30 Sep4602aceTab tint sees commands run after startupThe scan skipped commands run after server start, so new pages never earned a stripe.

sent upstream

PR #9439 fixes T3's usage page under-counting Claude output tokens by about a third.

T3 reported, 28 Aug to 3 Sep5.26M
in the transcripts8.14M
pingdotgg/t3code#9439 still open