Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
320 commits
Select commit Hold shift + click to select a range
1d58f2e
refactor(tailscale): keep package internals private (#10011)
juliusmarminge Sep 5, 2026
cd92a7e
ci: reject unused tailscale exports with Knip (#10012)
juliusmarminge Sep 5, 2026
eced382
fix(web): keep chat media at a stable size while it loads (#9938)
juliusmarminge Sep 5, 2026
31fb210
refactor(server): keep manifest age parsing private (#10028)
juliusmarminge Sep 5, 2026
37bf4e6
refactor(mobile): remove unused awareness relay URL normalizer (#10029)
juliusmarminge Sep 5, 2026
f5d9d12
refactor(server): remove unused startup heartbeat launcher (#10030)
juliusmarminge Sep 5, 2026
86f0799
refactor(shared): keep search ranking comparator private (#10031)
juliusmarminge Sep 5, 2026
68aa7aa
refactor(server): keep telemetry identity errors private (#10032)
juliusmarminge Sep 5, 2026
83a2897
refactor(mobile): test composer persistence through the live decoder …
juliusmarminge Sep 5, 2026
5cb6965
refactor(web): remove unused sidebar selectors (#10034)
juliusmarminge Sep 5, 2026
ad3721e
refactor(server): keep Cursor fallback models private (#10038)
juliusmarminge Sep 5, 2026
07fb04d
refactor(web): remove unused xterm link range helpers (#10040)
juliusmarminge Sep 5, 2026
c059d09
refactor(mobile): remove obsolete review list builder (#10039)
juliusmarminge Sep 5, 2026
a21c0d7
test(server): remove duplicate VCS error constructor checks (#10042)
juliusmarminge Sep 5, 2026
5e828bf
refactor(mobile): keep appearance calculations private (#10043)
juliusmarminge Sep 5, 2026
5a4287c
refactor(web): remove unused sidebar menu action (#10044)
juliusmarminge Sep 5, 2026
6615d3d
refactor(web): test live Ghostty link resolution directly (#10041)
juliusmarminge Sep 5, 2026
df370c3
test(server): exercise Codex prompts through public assembly (#10045)
juliusmarminge Sep 5, 2026
62e74cd
refactor(shared): remove unused elapsed-time adapter (#10046)
juliusmarminge Sep 5, 2026
91ba05e
refactor(web): remove unused preview thread reset helper (#10049)
juliusmarminge Sep 5, 2026
56a2f42
refactor(desktop): remove test-only error predicates (#10047)
juliusmarminge Sep 5, 2026
c2aff91
refactor(mobile): keep review reset hashing private (#10048)
juliusmarminge Sep 5, 2026
a98dad7
test(web): remove AppRoot element order snapshot (#10052)
juliusmarminge Sep 5, 2026
62e4ae4
refactor(codex): keep app-server client internals private (#10035)
juliusmarminge Sep 5, 2026
4631000
ci: reject unused Codex client exports with Knip (#10036)
juliusmarminge Sep 5, 2026
45f5a5f
refactor(server): simplify native telemetry error internals (#10057)
juliusmarminge Sep 5, 2026
5b7f6bc
refactor(mobile): remove write-only terminal font cache (#10058)
juliusmarminge Sep 5, 2026
80f775a
refactor(web): remove obsolete HSL theme generator (#10061)
juliusmarminge Sep 5, 2026
d524eb9
refactor(mobile): remove obsolete native diff token stream (#10062)
juliusmarminge Sep 5, 2026
bc24d98
test(server): remove title prompt editorial snapshots (#10063)
juliusmarminge Sep 5, 2026
160e337
test(server): remove repeated runtime prompt interpolation cases (#10…
juliusmarminge Sep 5, 2026
43700b8
refactor(web): observe preview tests through the live registry (#10064)
juliusmarminge Sep 5, 2026
fedf84a
test(server): remove keybinding default assignment snapshot (#10065)
juliusmarminge Sep 5, 2026
4db2c54
refactor(mobile): remove obsolete whole-file review highlighters (#10…
juliusmarminge Sep 5, 2026
0acf05f
test(server): cover CLI runner detection through command suggestions …
juliusmarminge Sep 5, 2026
ee150e1
refactor(mobile): remove unused cloud relay URL normalizer (#10068)
juliusmarminge Sep 5, 2026
009c13f
refactor(web): test live keybinding resolvers directly (#10069)
juliusmarminge Sep 5, 2026
25cbcd6
test(server): cover Grok skill parsing through discovery (#10070)
juliusmarminge Sep 5, 2026
38812c1
test(web): remove mocked diff view prop snapshot (#10073)
juliusmarminge Sep 5, 2026
19ea3c5
test(web): remove mocked annotation options snapshot (#10074)
juliusmarminge Sep 5, 2026
688e594
refactor(web): keep pending action labels private (#10075)
juliusmarminge Sep 5, 2026
b92a812
refactor(mobile): remove unused cloud pending-status mapper (#10071)
juliusmarminge Sep 5, 2026
ab0933a
refactor(web): remove unused model picker hint helpers (#10072)
juliusmarminge Sep 5, 2026
c843c19
fix(server): resume checkpointing after git init (#10078)
Yash-Singh1 Sep 5, 2026
09aac71
feat(web): first-run welcome wizard with agent setup and project impo…
t3dotgg Sep 5, 2026
2271a27
fix(server): keep Homebrew mise shims manual-only (#10085)
juliusmarminge Sep 5, 2026
39802c0
fix(ssh): report remote package installation failures accurately (#10…
juliusmarminge Sep 5, 2026
bd7f7ea
fix(web): keep bulk thread deletion going after failures (#4615)
m-de-graaff Sep 5, 2026
be7796d
fix(web): scale agent spawn rows with interface font (#10092)
juliusmarminge Sep 5, 2026
485782b
fix(web): prevent sidebar tooltip title clipping (#10086)
UtkarshUsername Sep 5, 2026
c1d27e5
fix(web): keep the composer expanded until the thread can scroll (#9965)
t3dotgg Sep 5, 2026
761d4ba
fix(web): preserve original mention text in the composer (#10100)
juliusmarminge Sep 5, 2026
6a8f4d3
refactor(mobile): remove unused pairing redaction wrapper (#10147)
juliusmarminge Sep 5, 2026
47e250a
test(web): drop provider banner styling assertions (#10148)
juliusmarminge Sep 5, 2026
29c3a54
refactor(client-runtime): remove unused relay token waiter (#10151)
juliusmarminge Sep 5, 2026
a324cab
test(web): drop sidebar artwork styling snapshots (#10152)
juliusmarminge Sep 5, 2026
3fbc497
refactor(ssh): keep package internals private (#10144)
juliusmarminge Sep 5, 2026
62ed748
ci: reject unused SSH exports with Knip (#10145)
juliusmarminge Sep 5, 2026
cb9a694
refactor(acp): keep protocol implementation exports private (#10165)
juliusmarminge Sep 5, 2026
2c301fd
fix(shared): validate cloudflared with the version subcommand (#9880)
maria-rcks Sep 5, 2026
60e1b73
fix(desktop): separate LAN and Tailscale pairing endpoints (#9882)
maria-rcks Sep 5, 2026
311f05c
fix(server): install pinned runtime when pnpm node lacks npm (#9923)
maria-rcks Sep 5, 2026
8d3c56b
fix(web): hide sidebar search shortcut on mobile (#9932)
maria-rcks Sep 5, 2026
89bd637
fix(web): align tool disclosure chevrons with expanded state (#9935)
maria-rcks Sep 5, 2026
6349a0e
fix(antigravity): distinguish session initialization auth failures (#…
maria-rcks Sep 5, 2026
0d8a91a
fix(cursor): cache successful model discovery between refreshes (#9918)
maria-rcks Sep 5, 2026
4ca7146
fix(opencode): revert from the first removed assistant message (#9924)
maria-rcks Sep 5, 2026
d92dca7
fix(web): resume imported custom-provider threads (#10184)
juliusmarminge Sep 5, 2026
f8b4c46
test(web): cancel pending highlight fixture frames during cleanup (#1…
juliusmarminge Sep 5, 2026
e2e6ce6
feat(server): report image dimensions with signed asset URLs (#10198)
juliusmarminge Sep 5, 2026
7451d17
fix(mobile): size a chat image's frame before its bytes arrive (#10199)
juliusmarminge Sep 5, 2026
d0f855b
fix(web): size the chat image slot from server-reported dimensions (#…
juliusmarminge Sep 5, 2026
0671e34
refactor(shared): remove unused runtime helpers and exports (#10166)
juliusmarminge Sep 5, 2026
dbfd517
refactor(client-runtime): remove unused runtime exports and helpers (…
juliusmarminge Sep 5, 2026
5716dec
refactor(contracts): keep RPC implementation exports private (#10168)
juliusmarminge Sep 5, 2026
50bc62a
refactor(contracts): trim unused client API runtime exports (#10169)
juliusmarminge Sep 5, 2026
2ae3b71
refactor(contracts): keep unused settings and relay exports private (…
juliusmarminge Sep 5, 2026
5fe5c6f
ci: enforce runtime exports while allowing types and schemas (#10171)
juliusmarminge Sep 5, 2026
54441e6
fix(web): copy provider update commands from compact rows (#9888)
MatthewFeroz Sep 5, 2026
3be90ce
fix(web): align provider header action sizes and spacing (#9890)
MatthewFeroz Sep 5, 2026
3fb8942
fix(mobile): restore live tool shimmer and add a Thinking row (#10173)
juliusmarminge Sep 5, 2026
1cb49c3
fix(mobile): even out the working pill's spacing (#10209)
juliusmarminge Sep 5, 2026
7eda989
fix(mobile): only make work rows expandable when the body adds someth…
juliusmarminge Sep 5, 2026
579a775
fix(mobile): fold subagent lifecycle rows into one batch per spawn (#…
juliusmarminge Sep 5, 2026
89cc743
fix(mobile): stop clipping expanded tool groups (#10212)
juliusmarminge Sep 5, 2026
c2cfe59
fix(web): defer browser discovery in integrations (#9797)
zortos293 Sep 5, 2026
88fc41c
refactor(web): test file cache identity through its public helpers (#…
juliusmarminge Sep 5, 2026
748fe0f
refactor(web): test favicon fallback through the component (#10220)
juliusmarminge Sep 5, 2026
183c343
feat: show provider usage limits with /usage-limits (#9875)
chrisdeeming Sep 5, 2026
585ce2c
refactor(web): test formatted timestamps instead of formatter options…
juliusmarminge Sep 5, 2026
be53bbd
feat(usage): show remaining quota instead of used (#9889)
chrisdeeming Sep 5, 2026
f12d393
fix(ui): unify loading and refresh feedback across clients (#9561)
StiensWout Sep 5, 2026
bd16b86
fix(client-runtime): report terminated thread loads (#10216)
juliusmarminge Sep 6, 2026
050690d
fix(server): settle threads using actual pull request terminal timest…
maria-rcks Sep 6, 2026
eee0557
fix(clients): persist project icons across reloads and reconnects (#1…
StiensWout Sep 6, 2026
b438447
fix(mobile): use selected theme across input forms and controls (#10239)
juliusmarminge Sep 6, 2026
bfba778
fix(mobile): keep the new-task draft when switching environment (#10247)
juliusmarminge Sep 6, 2026
2c33535
fix(web): keep timestamp tooltip dates in English (#10256)
Lucenx9 Sep 6, 2026
3da9399
fix(web): let authorized clients scrolling reach settings (#10080)
flamboh Sep 6, 2026
add8c3a
fix(web): remember usage page selection (#10189)
extoci Sep 6, 2026
c8872fd
fix(server): keep the Antigravity Google sign-in across server restar…
t3dotgg Sep 6, 2026
ab67795
fix(antigravity): load user skills from ~/.gemini for every project (…
t3dotgg Sep 6, 2026
84aebb7
fix(web): respect reduced motion in shared disclosures (#10258)
saphid Sep 6, 2026
b2e1518
feat(marketing): add a Windows 95 landing page (#10286)
t3dotgg Sep 6, 2026
fdcc491
refactor(web): remove unused runtime wrappers and exports (#10225)
juliusmarminge Sep 6, 2026
226abe5
refactor(web): keep feature component helpers private (#10226)
juliusmarminge Sep 6, 2026
1200f53
refactor(web): keep app utilities private and remove dead helpers (#1…
juliusmarminge Sep 6, 2026
da2ba5b
ci: enforce unused runtime exports in the web app (#10228)
juliusmarminge Sep 6, 2026
76f686d
test(desktop): cover Clerk setup through the service (#10284)
juliusmarminge Sep 6, 2026
cabac78
test(desktop): cover WSL hashes through runtime resolution (#10285)
juliusmarminge Sep 6, 2026
181e451
test(desktop): cover password store through startup (#10287)
juliusmarminge Sep 6, 2026
0c200c5
test(desktop): cover WSL paths through public behavior (#10289)
juliusmarminge Sep 6, 2026
b4040d9
test(desktop): exercise WSL cache safety through public scripts (#10301)
juliusmarminge Sep 6, 2026
f93aafc
test(web): cover file classification through diff ordering (#10304)
juliusmarminge Sep 6, 2026
a9fc4dc
test(web): focus command palette tests on search behavior (#10302)
juliusmarminge Sep 6, 2026
fc7ad2e
fix(web): add project settings to legacy sidebar project menu (#10021)
hwanseoc Sep 6, 2026
b972f1c
test(web): keep Markdown gutter styling private (#10306)
juliusmarminge Sep 6, 2026
9f40b2f
feat(settings): add shared project defaults and scoped overrides (#9754)
maria-rcks Sep 6, 2026
420fd76
feat(connections): balance new threads across connected machines (#9895)
maria-rcks Sep 6, 2026
f1e84c2
test(web): keep settings viewport comparison private (#10307)
juliusmarminge Sep 6, 2026
4f782be
fix(web): prevent file tree search focus ring clipping (#10175)
GuilhermeVieiraDev Sep 6, 2026
b7465a3
fix(mobile): stop the work log flickering during subagent runs and fa…
juliusmarminge Sep 6, 2026
a495385
fix(mobile): save linked media from chat (#10271)
juliusmarminge Sep 6, 2026
272d6d7
feat(markdown): show the GitHub mark for github.com links (#10324)
juliusmarminge Sep 6, 2026
d924fe2
fix(marketing): show a real preview card when t3.codes is shared (#10…
t3dotgg Sep 6, 2026
b273d1c
feat(usage): pool subscription limits per provider across accounts an…
juliusmarminge Sep 6, 2026
00d6109
chore(web): remove usage limits demo fixtures (#10330)
juliusmarminge Sep 6, 2026
127efae
fix(web): expose error disclosure state (#10125)
saphid Sep 6, 2026
bc02873
fix(web): name the editor picker accurately (#10124)
saphid Sep 6, 2026
aea9ecb
fix(web): make task row states readable (#10128)
saphid Sep 6, 2026
8268978
fix(web): explain hosted connection prerequisites (#10129)
saphid Sep 6, 2026
5533383
fix(web): name combobox chip removal targets (#10127)
saphid Sep 6, 2026
e5d086c
fix(marketing): present the Git workflow as an illustration (#10130)
saphid Sep 6, 2026
b155c21
feat(mobile): pool usage limits across selected environments (#10334)
juliusmarminge Sep 6, 2026
7544d3d
fix(release): space automatic nightlies at least six hours apart (#10…
t3dotgg Sep 6, 2026
dd64072
refactor(web): share bulk thread deletion between sidebars (#10106)
t3dotgg Sep 6, 2026
ac11bd2
refactor(client): share tool outcome rules (#10122)
t3dotgg Sep 6, 2026
4c7cd17
refactor(server): share Claude result status and error mapping (#10296)
t3dotgg Sep 6, 2026
f66cfe2
fix(server): settle inactive threads without a PR lookup (#10103)
t3dotgg Sep 6, 2026
60e6fa3
fix(ssh): report remote stop failures without losing ownership (#10105)
t3dotgg Sep 6, 2026
281b92b
perf(server): stop scanning old OpenCode parts (#10116)
t3dotgg Sep 6, 2026
17490c0
perf(server): avoid full thread reads on turn start (#10108)
t3dotgg Sep 6, 2026
076d753
perf(web): skip checkpoint map rebuilds while streaming (#10118)
t3dotgg Sep 6, 2026
eb8ed80
perf(server): skip plan bodies in thread summaries (#10341)
t3dotgg Sep 6, 2026
62f568b
fix(server): skip disabled provider instances for text generation fal…
t3dotgg Sep 6, 2026
e0adcc8
fix(server): capture checkpoints before refreshing PR status (#10347)
t3dotgg Sep 6, 2026
bccad27
fix(web): keep manual panel choices during a turn (#10113)
t3dotgg Sep 6, 2026
e63ddb4
fix(threads): keep completed requests closed across clients (#10123)
t3dotgg Sep 6, 2026
e4e9fa9
perf(server): finish runtime messages without full thread reads (#10120)
t3dotgg Sep 6, 2026
5fa35d2
refactor(server): let adapters declare context compaction (#10112)
t3dotgg Sep 6, 2026
223ff44
fix(server): link thread PRs without an open client (#10101)
t3dotgg Sep 6, 2026
72cb638
fix(web): show Tux icon for WSL environments (#8511)
UtkarshUsername Sep 6, 2026
64fafbd
perf(web): speed up folder menu sorting (#10190)
AksharP5 Sep 6, 2026
29d03ec
style(web): fix inconsistencies in new settings layouts (#10177)
extoci Sep 6, 2026
2d645df
feat(threads): persist manual active thread order (#9729)
juliusmarminge Sep 6, 2026
6766e68
feat(mobile): arrange active threads from both thread lists (#9730)
juliusmarminge Sep 6, 2026
4023d93
feat(web): drag threads across sections with consistent motion (#9731)
juliusmarminge Sep 6, 2026
9a47c7b
feat(web): simplify sidebar drag destination cues (#9750)
juliusmarminge Sep 6, 2026
36c48a6
fix(mobile): keep pending tasks queued when a send fails in flight (#…
juliusmarminge Sep 6, 2026
c0bf354
feat(mobile): show new-task drafts alongside pending tasks in the thr…
juliusmarminge Sep 6, 2026
8e129a0
feat(mobile): allow several new-task drafts per project (#10327)
juliusmarminge Sep 6, 2026
9846915
fix(mobile): slide settled threads out before collapsing (#10345)
StiensWout Sep 6, 2026
95d9937
fix(clients): show feedback results in composer banners (#10398)
juliusmarminge Sep 6, 2026
ea646c0
fix(server): stop Windows terminal polling from spiking CPU (#9476)
UtkarshUsername Sep 6, 2026
efabb23
docs(fork): add fork rules, feature registry, agent skills, and branc…
q1 Sep 2, 2026
6ea395c
feat(fork): add @q1code/core with flag registry, brand, and config; r…
q1 Sep 2, 2026
84db48d
feat(fork): publish fork flags through environment capabilities and a…
q1 Sep 2, 2026
df88261
feat(fork): brand as q1code with its own home dir, service unit, and …
q1 Sep 2, 2026
fec8044
ci(fork): add fork CI, sync watch, and release workflows with mainten…
q1 Sep 2, 2026
f7ea60d
chore(fork): exempt manifests, tests, and docs from the seam marker r…
q1 Sep 2, 2026
63331a8
docs(fork): log sync 20260902T084653Z
q1 Sep 2, 2026
4c92dd6
fix(fork): pin gh to the fork repo in maintenance scripts
q1 Sep 2, 2026
6913c3c
fix(fork): pack the release tarball from a resolved manifest like ups…
q1 Sep 2, 2026
2f20fa1
fix(fork): publish release assets from the artifact's extraction root
q1 Sep 2, 2026
88fb9af
fix(fork): ship release notes inside the release-assets artifact
q1 Sep 2, 2026
0cdb9b6
chore(fork): upload release assets from a single artifact root
q1 Sep 2, 2026
34737c4
chore(fork): list downloaded release assets before publishing
q1 Sep 2, 2026
fb0556e
fix(fork): installer downloads the q1code asset and runs the t3 packa…
q1 Sep 2, 2026
ea57f3a
feat(fork-core): pin CLIProxyAPI and add the cliproxy config section
q1 Sep 2, 2026
23eeb66
feat(server): run CLIProxyAPI as a flag-gated sidecar
q1 Sep 2, 2026
82b6598
ci(fork): bundle the pinned CLIProxyAPI sidecar into releases
q1 Sep 2, 2026
9140152
docs(fork): mark cliproxy phase 1 active and regenerate SEAMS.md
q1 Sep 2, 2026
3dc7600
docs(fork): log sync 20260902T231054Z and regenerate SEAMS.md
q1 Sep 2, 2026
c613402
fix(fork): restore the executable bit on the bundled CLIProxyAPI binary
q1 Sep 2, 2026
af432f3
fix(fork): installer restores executable bits on bundled binaries
q1 Sep 2, 2026
28c45c0
fix(fork): leak-check runs git in the current checkout, not the scrip…
q1 Sep 3, 2026
ae91bb7
feat(fork-core): cliproxy accounts API contract and sync config
q1 Sep 3, 2026
99d3322
feat(server): cliproxy auth-file sync between environments
q1 Sep 3, 2026
fb230a2
feat(server): cliproxy accounts HTTP API
q1 Sep 3, 2026
ddcf0b9
feat(client-runtime): cliproxy accounts client
q1 Sep 3, 2026
9e7ddd6
docs(fork): cliproxy phase 2 endpoints, sync setup, and config
q1 Sep 3, 2026
48f7cd4
docs(fork): log sync 20260903T020032Z
q1 Sep 3, 2026
c934a0e
feat(web): cliproxy accounts settings section
q1 Sep 3, 2026
5d064c8
feat(mobile): read-only cliproxy accounts card
q1 Sep 3, 2026
0d88bf2
docs(fork): cliproxy accounts UI phase and seams
q1 Sep 3, 2026
4b81700
fix(fork): sync creates the local main branch when missing; log sync …
q1 Sep 3, 2026
7de6491
ci(fork): run flags-off parity on sync review PRs too
q1 Sep 3, 2026
db754c7
feat(swift-ios): carry upstream SwiftUI client from PR #5178
q1 Sep 3, 2026
ede37fb
feat(swift-ios): local identity override via Config/Local.xcconfig
q1 Sep 3, 2026
493297b
fix(swift-ios): build against current contracts
q1 Sep 3, 2026
e959dc2
docs(fork): register the swift-ios carry and regenerate SEAMS.md
q1 Sep 3, 2026
fb24888
feat(server): persist cliproxy routing strategy into fork.json
q1 Sep 3, 2026
5452bbd
feat(server): propagate cliproxy account deletions through sync
q1 Sep 3, 2026
18b5b27
feat(server): q1code fork secret CLI and store-first sync secrets
q1 Sep 3, 2026
303d520
fix(web): hide cliproxy settings search entries while the flag is off
q1 Sep 3, 2026
67e8bb4
feat(cliproxy): per-account request counters in the accounts table
q1 Sep 3, 2026
9f4ffe6
docs(fork): regenerate SEAMS.md for the cliproxy gap closures
q1 Sep 3, 2026
fc798eb
chore(fork): exclude the generated SEAMS.md from the formatter
q1 Sep 3, 2026
ccf38b3
feat(fork-core): external proxy mode, richer status, and a restart en…
q1 Sep 3, 2026
5e65129
feat(server): external CLIProxyAPI mode, richer proxy status, and res…
q1 Sep 3, 2026
ccf82ef
feat(server): cliproxy sync and account mtimes read the external prox…
q1 Sep 3, 2026
9ee3c17
docs(fork): describe cliproxy external mode, restart, and the new sta…
q1 Sep 3, 2026
acb6aa9
feat(mobile): Prism settings screen with account, sign-in, restart, a…
q1 Sep 3, 2026
32c75a2
docs(fork): describe the mobile Prism screen in the cliproxy entry
q1 Sep 3, 2026
4955380
feat(web): move the cliproxy accounts UI to a Prism settings tab
q1 Sep 3, 2026
95da6bf
docs(fork): describe the Prism settings tab in the cliproxy entry
q1 Sep 3, 2026
786aa55
docs(fork): regenerate SEAMS.md for the Prism settings tab and screen
q1 Sep 3, 2026
a31e851
test(server): the boot-service fake uses the q1code unit name
q1 Sep 4, 2026
c12be5a
fix(web): keep upstream's provider entry first for "Google sign in"
q1 Sep 4, 2026
b7dea91
docs(fork): sync log for 20260904T090720Z and regenerated SEAMS.md
q1 Sep 4, 2026
b8542e3
chore(fork): point fork-core's vite-plus lockfile entry at the upstre…
q1 Sep 4, 2026
6f61ab3
chore(fork): follow the upstream formatter bump and libsecret CI depe…
q1 Sep 4, 2026
70e8f6a
ci(fork): install libsecret before the desktop build in the Check job
q1 Sep 4, 2026
863644d
refactor(fork): rename the cliproxy feature to Prism
q1 Sep 4, 2026
45295a7
docs(fork): regenerate SEAMS.md after the Prism rename
q1 Sep 4, 2026
04c24be
feat(fork-core): usage-source toggle in the Prism contract
q1 Sep 4, 2026
ff3e05b
feat(server): publish Prism as a usage-limit source
q1 Sep 4, 2026
34c7106
feat(web): show Prism in Usage providers and on the Limits view
q1 Sep 4, 2026
05c737f
docs(fork): record the Prism usage-source bridge and its seams
q1 Sep 4, 2026
f632921
feat(server): q1code prism status|accounts CLI for fleet monitors
q1 Sep 4, 2026
d5ad8d9
feat(mobile): usage-source switch on the Prism status section
q1 Sep 4, 2026
fa03ea8
docs(fork): prism CLI, bin.ts seam, and mobile usage-source switch
q1 Sep 4, 2026
334faad
docs(fork): regenerate SEAMS.md after the Prism CLI seam
q1 Sep 4, 2026
19ed62c
docs(fork): name the prism CLI in owned dirs and refresh the web test…
q1 Sep 4, 2026
ac5180b
chore(fork): keep @q1code/core only as a server devDependency after t…
q1 Sep 4, 2026
8e69cfc
docs(fork): record the continued upstream sync and CI recovery
Sep 4, 2026
cb6adbf
chore(prism): pin CLIProxyAPI 7.2.151
Sep 4, 2026
d87862e
fix(prism): check local gateway health without release access
Sep 4, 2026
57e8e8c
docs(prism): define account lifecycle and engine fork boundaries
Sep 4, 2026
362daf0
feat(prism): expose account health and token lifetime
Sep 4, 2026
0ce8118
docs(prism): define single-owner credential distribution
Sep 4, 2026
faffbd4
feat(prism): distribute serving credentials from one refresh owner
Sep 4, 2026
4362c2f
docs(prism): define provider routing and navigation seams
Sep 4, 2026
3eb5e65
feat(prism): expose persistent sign-in quarantine to clients
Sep 4, 2026
b0d828b
feat(prism): route Claude and Codex turns with bounded direct fallback
Sep 4, 2026
cab68f6
feat(prism): add a top-level account area on web and SwiftUI
Sep 4, 2026
c635e29
build(prism): pin the verified maintained engine release
Sep 4, 2026
1adedf0
chore(prism): refresh the reviewed seam inventory
Sep 4, 2026
c45d3cd
docs(fork): audit the September 5 upstream sync
Sep 5, 2026
db595e1
docs(fork): record September 6 upstream sync
q1 Sep 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
49 changes: 49 additions & 0 deletions .agents/skills/fork-audit/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: fork-audit
description: Compare upstream commits since the last audit against the q1code feature registry and report what upstream now provides, what upstream changed near a seam, and which new upstream extension points would shrink a seam. Use after a sync, on a weekly cadence, or before planning fork work, to keep the series small and catch semantic conflicts a clean rebase hides.
---

# Fork Audit

Read `fork/FORK.md` and `fork/FEATURES.md` first. A rebase that applies cleanly can still be wrong: upstream may have renamed the function a seam calls, reimplemented a fork feature, or added the hook a seam was faking. This skill finds those.

## 1. Find the range

The last audit is the newest file in `fork/docs/audits/` (its first line records the upstream SHA it ended at) or, if none, the upstream SHA in the newest `fork/docs/sync-log/*.md`. The range is `<that sha>..main`. If it is empty, say so and stop.

```
git log --oneline --no-merges <last>..main
git diff --stat <last>..main
```

## 2. Per feature, three questions

Walk every `active`, `paused`, and `planned` entry in `fork/FEATURES.md`.

**(a) Does upstream now provide it?** Search the range for commits whose title, touched paths, or contract changes overlap the feature's purpose (settings keys, capabilities fields, provider drivers, workflow files, docs under `docs/user/`). If upstream shipped the same behavior, propose `upstreamed` (drop the fork commits at the next sync) or a narrowing of the feature to what upstream still lacks. If upstream shipped something that makes the feature pointless, propose `dropped`.

**(b) Did upstream change near a seam?** For each seam file in the entry (and in `fork/SEAMS.md`), check whether the range touches it:

```
git log --oneline <last>..main -- <seam file>
git diff <last>..main -- <seam file>
```

Any hit is a semantic conflict risk even when the rebase was clean. Read the hunk against the seam's 3 lines: is the callee still there, same signature, same call order, same guard? Then run that feature's tests as listed in its entry, plus a flags-off parity check for the seam. Report pass or fail with the exact test command.

**(c) New extension points?** Scan the range for additions that a seam could use instead of a hand-placed hook: new optional keys on `ExecutionEnvironmentCapabilities`, new registries or arrays (drivers, settings search items, commands, routes), new slot components, new per-instance settings, new env passthroughs, new `docs/internals/` pages describing an extension mechanism. For each, name the seam it would shrink or delete and whether the change is a fork edit or an upstream candidate.

## 3. Also check

- Upstream workflows added in the range (`.github/workflows/`): confirm they are disabled on q1/q1code (`gh workflow list -R q1/q1code`).
- Upstream changes to `AGENTS.md`, `CONTRIBUTING.md`, `.agents/skills/`: anything that changes how the fork skills should behave.
- Version or packaging changes (`apps/server/package.json`, `pinnedRuntime.ts`, release workflow) that affect the `base` update seams.
- `Upstream: pr:<n>` commits in the series: check PR state with `gh pr view <n> -R pingdotgg/t3code`. Merged means note the SHA for the next sync; closed means decide `no` or retry.

## 4. Output

If an open sync PR exists for this range, append the audit as a comment there. Otherwise write `fork/docs/audits/<utc-stamp>.md` (first line: `Upstream: <end sha>`), commit it on `fork` or the open feature branch with `Fork-Feature: base`, `Upstream: no`.

Format: one section per feature with findings under (a), (b), (c); a final "Proposed changes" list with concrete edits to `fork/FEATURES.md` (status changes, seam list updates) and any follow-up work (a `fork-feature` change, a `fork-upstream-pr` candidate, a test to add). Do not apply status changes yourself unless asked; the sync that drops commits does that.

Keep findings specific: file, line, upstream commit SHA, what breaks or what improves. "Upstream touched ChatView" is not a finding.
4 changes: 4 additions & 0 deletions .agents/skills/fork-audit/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Fork Audit"
short_description: "Compare upstream changes against the fork feature registry"
default_prompt: "Use $fork-audit to review upstream commits since the last audit against fork/FEATURES.md and report absorbed features, seam risks, and new extension points."
77 changes: 77 additions & 0 deletions .agents/skills/fork-feature/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
name: fork-feature
description: Scaffold a new q1code fork feature: registry entry in fork/FEATURES.md, flag in packages/fork-core/src/flags.ts, fork-owned directories, a seam checklist, the every-surface walk from AGENTS.md, and a plan that splits the commit series into upstream candidates and fork-only wiring. Use when starting any fork feature, before writing feature code, or when an existing feature needs its seams or flags re-planned.
---

# Fork Feature

Read `fork/FORK.md` first, then the `base` and `prism` entries in `fork/FEATURES.md` as examples. This skill produces the skeleton and the plan; feature code comes after and follows the plan.

## 1. Name it

Pick a slug: lowercase, hyphenated, unique in `fork/FEATURES.md`. It becomes the `Fork-Feature:` trailer, the flag key, and the `// fork: <slug>` marker. Check `git log --format=%B main..fork | grep Fork-Feature` for collisions with dropped slugs.

## 2. Registry entry

Add an entry to `fork/FEATURES.md` with every field from its header. Status `planned` until the first commit lands, then `active`. Write the purpose as one line a stranger can test against. Fill "removal condition" honestly; a feature with no removal condition is a feature nobody will delete.

## 3. Flag

Add one entry to `FORK_FLAGS` in `packages/fork-core/src/flags.ts`:

```ts
"<slug>": { description: "...", default: false, scope: "server" | "client" | "both" },
```

Default is `false`. The only exception in the registry is `update-check`; do not add another without a written reason in the entry. Scope `server` for things that spawn, read files, or change env; `client` for pure UI preferences; `both` when the server decides and the client renders. Client-only state persists under a fork-namespaced localStorage key, never in `ClientSettingsSchema`.

## 4. Directories

Create only what the feature needs, under fork-owned locations:

- `apps/server/src/fork/<slug>/` for services, reactors, drivers, RPC handlers
- `apps/web/src/fork/<slug>/`, `apps/mobile/src/fork/<slug>/`, `apps/desktop/src/fork/<slug>/`
- `packages/fork-core/src/<slug>*` for shared types, config schema, fork RPC contracts (fork RPCs are typed here, not in `packages/contracts`)
- `packages/client-runtime` only for logic web and mobile both need

Config the feature reads lives in `~/.q1code/userdata/fork.json` under a `<slug>` key with a schema in `packages/fork-core`. Secrets go through the server secret store, never `fork.json`.

## 5. Seam checklist

For each upstream file the feature must touch, write down: file, the exact extension point, the 3 lines, the flag guard (or why it is inert), and the marker. Prefer the extension points listed in `fork/FORK.md`. Reject any seam that:

- exceeds 3 lines,
- sits in the body of `ChatView.tsx`, `Sidebar.tsx`, or `ChatComposer.tsx` (use a `<ForkSlot />`),
- restructures upstream code (that is an upstream PR first, or `Fork-Seam-Debt: yes` with a deadline in the entry),
- would push `fork/SEAMS.md` over its 40-file budget.

Run `node scripts/fork/seams.ts` after adding seams and paste the resulting rows into the registry entry.

## 6. Hit every surface

Walk the list from `AGENTS.md` and record a decision for each, including "not supported here":

- **Entry points**: chat view, Settings (the q1code section), command palette, keybindings.
- **Clients**: web, desktop, mobile. Shared logic in `packages/client-runtime`; fork UI in each app's `src/fork/`.
- **Providers**: Codex, Claude, Cursor, Grok, OpenCode. One decision per adapter.
- **Contracts**: fork RPCs in `packages/fork-core`; the only `packages/contracts` seam is `forkFlags` unless the entry justifies another optional key.
- **Reverse states**: the flag off must fully undo the feature at runtime, and every action needs its inverse.
- **Connection modes**: local, Tailscale, relay. Multi-environment: what happens when one environment has the flag on and another off.
- **Docs**: user-facing behavior in `fork/docs/<slug>.md` (not `docs/user/`, which is upstream's); design notes in the registry entry.

## 7. Candidate/no split

Before writing code, split the planned commits:

- **`Upstream: candidate`** first: generic changes upstream would plausibly take (a new optional setting, a passthrough, a bug fix, a model manifest entry). No `@q1code/` imports, no flag checks, no fork paths, no markers. Each must build and pass tests on plain `main`. Keep each under the size upstream's CONTRIBUTING.md calls small.
- **`Upstream: no`** after: the flag, the seams, the fork directories, the docs.

Write the split into the registry entry under "upstream" as a list of planned commit titles. If nothing is a candidate, say so; if everything is, the feature may be an upstream PR and not a fork feature at all.

## 8. Tests

List in the entry: behavior tests for the feature (server logic gets focused tests, receipts not sleeps), and one flags-off parity test proving the seam is inert when the flag is off (no process, no env var, no rendered element, no capabilities field).

## 9. Commit the scaffold

One commit: registry entry, flag, empty directories with an index file if the toolchain needs one, the seam checklist as part of the entry. Trailers `Fork-Feature: <slug>`, `Upstream: no`. Then implement in the order the split says.
4 changes: 4 additions & 0 deletions .agents/skills/fork-feature/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Fork Feature"
short_description: "Scaffold a flag-gated q1code fork feature"
default_prompt: "Use $fork-feature to register a new fork feature, add its flag, plan its seams and surfaces, and split the work into upstream candidates and fork-only commits."
77 changes: 77 additions & 0 deletions .agents/skills/fork-release/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
name: fork-release
description: Cut a q1code release: pick the version from the upstream tag the fork sits on, tag `fork-v<upstreamVersion>-q1.<n>`, trigger `fork-release.yml`, verify the published artifacts (server tarball, web bundle, checksums.txt, install.sh), and hand off to the private deploy step. Use when `fork` is green and a new build should reach Mic's machines, or when a rollback needs the previous release located.
---

# Fork Release

Read `fork/FORK.md` first. Releases are GitHub Releases on q1/q1code only; there is no npm publish and no desktop build. The desktop updater feed and the server's pinned-runtime installer both read from these releases (`T3CODE_DESKTOP_UPDATE_REPOSITORY=q1/q1code`, `pinnedRuntime.ts` seam under `base`).

Deploying is not part of this skill and never happens from a sync or release job. Mic triggers deploys from the private repo.

## 1. Pick the commit

Release from `fork` only, at a commit where `fork-ci.yml` is green:

```
git fetch origin --tags
git switch fork && git pull --ff-only
gh run list -R q1/q1code --workflow fork-ci.yml --branch fork --limit 1
```

Do not release from a `sync/` branch or with an open sync PR unresolved unless the release is explicitly meant to skip that sync.

## 2. Compute the version

`<upstreamVersion>` is the version in `apps/server/package.json` on `main` at the merge base (`git merge-base main fork`), which upstream's nightly tagging keeps current, e.g. `0.0.39-nightly.20260902.1253`. `<n>` starts at 1 per upstream version and increments for each fork release on the same upstream version:

```
git tag -l "fork-v<upstreamVersion>-q1.*" | sort -V | tail -1
```

Tag: `fork-v<upstreamVersion>-q1.<n>`. The release workflow derives the package version and the About label ("q1code <version> on T3 Code <upstream version>") from it.

## 3. Tag and push

```
git tag -a fork-v<upstreamVersion>-q1.<n> -m "q1code <upstreamVersion>-q1.<n>"
git push origin fork-v<upstreamVersion>-q1.<n>
```

The tag push triggers `.github/workflows/fork-release.yml`. If it does not (workflow disabled, or push filter mismatch), `gh workflow run fork-release.yml -R q1/q1code -f tag=<tag>` and fix the trigger afterwards.

## 4. Watch

```
gh run watch -R q1/q1code $(gh run list -R q1/q1code --workflow fork-release.yml --limit 1 --json databaseId -q '.[0].databaseId')
```

On failure, read the log, fix on `fork`, delete the tag locally and remotely, and start over at step 1. Never move a tag that a release already exists for.

## 5. Verify artifacts

```
gh release view <tag> -R q1/q1code --json assets -q '.assets[].name'
```

Required assets:

- `q1code-<version>.tgz`: server plus bundled web. Download it; `tar tzf` shows `package/dist/bin.mjs` and the web bundle under `package/dist/`. `npm pack`-style layout so `npm install <url>` works in the pinned-runtime installer.
- `checksums.txt`: SHA-256 for every other asset. Verify the tarball against it; this is the integrity check `pinnedRuntime.ts` performs, since GitHub releases carry no registry integrity field.
- `install.sh`: the manual install path (`curl -fsSL <asset url> | sh`). Run it with `sh -n` for syntax, and read it: it must install the tarball into the launcher layout under `~/.q1code/runtime/versions/<version>` and nothing else.
- Web bundle archive, if the workflow publishes it separately from the tarball.
- When the `prism` feature ships: the Prism engine (CLIProxyAPI) bundle per platform under `dist/prism/`, checksummed.

Confirm the release notes name the upstream tag and SHA the build sits on. Confirm the release is not marked pre-release unless the tag is a nightly-style build.

## 6. Smoke

On a disposable base directory, run the install path end to end: `sh install.sh` into a temp `HOME`, start the server with `--home-dir <temp>`, check the About label reports the expected q1code and upstream versions, stop it by the PID you captured. Do not point it at `~/.q1code` or `~/.t3`.

## 7. Hand off

Report: tag, release URL, asset list with sizes and checksums, upstream version and SHA, and what changed since the previous `fork-v` tag (`git log --oneline <prev>..<tag>` grouped by `Fork-Feature`). The deploy step lives in the private repo (`services/q1code`, pin in `UPSTREAM.json`, `manage.sh`) and is Mic's call; do not run it, do not restart anything.

## Rollback

A release is never deleted. To roll a machine back, the deploy step pins the previous tag. To fix a bad release, cut `q1.<n+1>`.
4 changes: 4 additions & 0 deletions .agents/skills/fork-release/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Fork Release"
short_description: "Tag and publish a q1code GitHub release"
default_prompt: "Use $fork-release to tag fork-v<upstreamVersion>-q1.<n>, run fork-release.yml, verify the tarball, checksums, and install.sh, and report for deploy."
Loading
Loading