Skip to content

v0.1.31

Choose a tag to compare

@github-actions github-actions released this 24 Jul 04:11
1fef6a3

Electron and React are the product authority

T4 Code has standardized on the Electron desktop shell and canonical React renderer. The abandoned
Flutter migration, its duplicate platform targets, and its CI and release plumbing have been
removed. macOS is the primary desktop target, Linux remains supported, and React/Capacitor Android
plus the responsive Tailnet browser/PWA remain compatibility clients for paired hosts.

The standardization preserves T4's standalone host, typed wire, OMP authority boundary, current
session and transcript behavior, native Browser workspace, terminal, files, review, secure
credentials, and signed update path. The public demo now builds from the same React client shipped
inside Electron, eliminating a second product implementation.

A session rail built for large libraries

T4 Code v0.1.31 makes a large session library easier to navigate. The rail now supports text search, activity filters, newest/oldest sorting, grouped and flat layouts, collapsible project folders, and saved display preferences. Those controls follow the Codex desktop organization model while keeping OMP as the source of truth.

Project menus can create a session in that folder, reveal the folder in the system file manager, collapse the group, or hide it from the rail. Hidden projects are not deleted and can be restored from the filter menu. The reveal action is deliberately narrow: the host accepts only project paths already present in its session catalog.

Faster transcripts and easier context sharing

Opening a large session paints its newest saved transcript entries before older history finishes loading. The composer can insert bounded file references from the active workspace, and the session menu can export a transcript without exposing hidden host state. Session activity labels now follow authoritative runtime events, so a settled session no longer appears busy because of stale client-side timing.

Workspace polish and stable empty panes

The workspace shell, transcript, home pane, composer, and supporting panes now share a clearer and denser visual hierarchy. Empty activity, agent, file, review, and terminal panes keep their normal header and close control visible, so an empty result never traps the user in a pane without navigation.

More reliable macOS upgrades

When a bundled OMP upgrade temporarily fails to stop the existing macOS service, T4 Code now retries the stop-and-replace sequence. This avoids leaving the installed backend half-updated during normal desktop upgrades while preserving the existing signed-runtime checks.

The bundled backend now also recovers from an inactive Unix socket when the crashed owner's process ID still appears alive. It confirms the endpoint is unreachable more than once and revalidates every ownership file before reclaiming it, while leaving a responsive backend untouched.

T4 now owns the host service

T4 Code now packages its own standalone t4-host executable instead of running the network host inside OMP. The desktop replaces the old service definition directly and automatically repairs a stopped default service when the local connection falls back to reconnecting. The service label and local socket stay stable, so ordinary local clients and administrative commands keep using the same connection point.

OMP remains the authority for session files, locks, agent execution, credentials, and takeover decisions. The smaller omp bridge --stdio command exposes only the versioned authority operations T4 needs. T4 validates the exact t4-omp-authority/1 bridge before accepting an OMP installation and rejects older appserver-only runtimes.

Native Browser workspace

The desktop app now includes a built-in Browser workspace that is distinct from the existing host-backed Browser Preview workspace. Its tabs expose stable native surface state for navigation and rendering. New tabs use the credential-isolated isolated-session profile. Authenticated profiles are never selected automatically: each use requires the exact user-selected profile with explicit opt-in.

Native Browser automation is bounded to its surface contract. Touch input is currently unsupported and returns a capability error. The desktop closes native Browser surfaces and releases their supporting controllers when the renderer reloads, the window closes, or the app stops.

Host Browser Preview workspace

Session-linked Host Browser Previews continue to open in their dedicated workspace. The client projects bounded, sanitized preview state from the host, maps pointer and keyboard input through explicit permission gates, and uses leases so two clients cannot silently control the same preview at once. Preview activity records origins and paths without storing query strings, page pixels, credentials, or backend error text.

Runtime provenance

T4 Code v0.1.31 vendors app-wire 0.7.0 from integration commit 796bb7dc, source tree 0c195a01ba0bb98fbf4d4863aee59bf23a6e81b7. The frozen package remains compatibility evidence; T4 owns the active omp-app/1 wire schema.

The verified OMP 17.0.5 runtime is built from commit fc0c3913 and tagged t4code-17.0.5-appserver-13. It provides the bounded authority bridge used by T4's standalone host and no longer exposes the old public appserver launchers. It pages snapshot-consistent session inventories across bounded frames, marks over-limit inventories partial, and allows lifecycle actions only when a lock is missing or provably stale. It also keeps session-list metadata sparse before bridge encoding, publishes xd:// mounts atomically with their transport tools, and preserves bounded newest-first transcript paging, stale-owner recovery, privacy-safe local project reveal, lazy session indexing, cross-session attention and transcript search, and the negotiated browser-preview command surface. Unsupported optional capabilities remain hidden when the host does not advertise them.

The integration is based on the official upstream v17.0.5 tag, commit 9fd6e971. Official upstream OMP v17.0.5 has no appserver command and cannot host T4 Code.

Packages

The Android APK is signed and supports Android 7.0 or later. Linux packages target x86_64. macOS packages target Apple Silicon and are signed and notarized. Verify downloads with SHA256SUMS.txt.

What's Changed

  • style: workspace shell, transcript, and home empty state aesthetic polish by @wolfiesch in #76
  • fix: preserve pane title and close button when Agents, Activity, or Review is empty by @wolfiesch in #77
  • fix: retry transient macOS service upgrades by @wolfiesch in #81
  • feat(web): match Codex rail organization by @wolfiesch in #82
  • release: ship T4 Code 0.1.29 by @wolfiesch in #83
  • test(web): add unit tests for terminal paste guard by @dylantirandaz in #78
  • test(web): add unit tests for usage format helpers by @dylantirandaz in #79
  • fix(web): use locale-independent lowercase in search matching by @dylantirandaz in #80
  • release: ship T4 Code 0.1.30 by @wolfiesch in #89
  • feat(browser): add native desktop Browser workspace by @riverpilot in #88
  • feat(web): add transcript export to the session menu by @dylantirandaz in #87
  • feat(web): add composer file-reference picker by @dylantirandaz in #85
  • refactor: move T4 host ownership into monorepo by @wolfiesch in #90
  • feat: paint cold transcript tails before full history by @wolfiesch in #91
  • fix(host): harden migrated host boundaries by @wolfiesch in #92
  • chore(runtime): adopt OMP appserver 9 by @wolfiesch in #94
  • fix(ui): make session activity state truthful by @wolfiesch in #96
  • fix: automatically recover local OMP service by @wolfiesch in #97
  • feat: replace the OMP-hosted appserver with the T4 host by @wolfiesch in #95
  • release: ship the standalone T4 host in v0.1.30 by @wolfiesch in #99
  • chore: add Taskfile development commands by @wolfiesch in #100
  • feat: add workspace super-app foundation by @wolfiesch in #101
  • feat: unify workspace action entrypoints by @wolfiesch in #103
  • docs: establish T4 Hub collaboration foundation by @wolfiesch in #105
  • docs: keep Hub planning speed-first by @wolfiesch in #107
  • feat(flutter): add native T4 client for Android, iOS, and macOS by @wolfiesch in #104
  • feat(flutter): make transcript opening feel instant by @wolfiesch in #93
  • feat: search project files from Quick Open by @wolfiesch in #106
  • docs: align Hub planning with official OMP adapter by @wolfiesch in #108
  • docs: define canonical local and managed T4 architecture by @iarbpairs in #109
  • feat(protocol): add OMP operation capability contract by @iarbpairs in #111
  • feat(runtime): classify official OMP operations by @iarbpairs in #113
  • test(runtime): prove official OMP restart continuity by @iarbpairs in #114
  • feat: add the universal working set by @wolfiesch in #112
  • ci: skip unaffected platform jobs by @iarbpairs in #116
  • fix(client): preserve OMP operation capabilities by @wolfiesch in #117
  • feat: expose official OMP capabilities in clients by @wolfiesch in #118
  • docs: narrow T4 operator ownership boundary by @iarbpairs in #119
  • fix: harden runtime operation capability contracts by @wolfiesch in #120
  • feat(flutter): add quick open and session controls by @wolfiesch in #121
  • feat: add default-off Kubernetes cluster operator by @usr-bin-roygbiv in #115
  • feat: prove official OMP Gate 0 by @wolfiesch in #124
  • feat: prove packaged official OMP host by @wolfiesch in #127
  • fix(web): materialize Android picker images on selection by @brainage04 in #122
  • fix(host): contain discovered session transcripts by @riverpilot in #134
  • fix(desktop): accept current projection cache version by @riverpilot in #129
  • fix(ci): provision native build headroom by @riverpilot in #132
  • fix(mobile): restore polished interaction contracts by @riverpilot in #131
  • fix(site): defer Flutter demo until CSP is active by @iarbpairs in #138
  • docs: define final product operator architecture by @usr-bin-roygbiv in #135
  • fix(flutter): allow wheel scrolling away from transcript tail by @wolfiesch in #140
  • fix(ci): isolate legacy Cargo scratch from workflow PVC by @usr-bin-roygbiv in #142
  • fix(cluster): isolate runtime credentials and proxy identity by @wolfiesch in #143
  • [codex] add private model credential gateway by @wolfiesch in #147
  • fix(host-service): authorize remote heartbeat pings by @brainage04 in #145
  • release: promote T4 Code 0.1.31 candidate by @wolfiesch in #152

New Contributors

Full Changelog: v0.1.28...v0.1.31