Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
258 commits
Select commit Hold shift + click to select a range
3e01c4b
Migrate desktop auth to Clerk bridge (#3092)
juliusmarminge Jun 19, 2026
5d4e2fa
feat: allow disabling provider update checks (#3130)
repparw Jun 19, 2026
13917df
Use idiomatic Effect options for server secret reads (#3110)
cursor[bot] Jun 19, 2026
7dc1823
[codex] fix: show nightly badge from primary web server version (#3103)
StiensWout Jun 19, 2026
494350c
feat(composer): clickable PR pill next to branch selector (#3065)
TheIcarusWings Jun 19, 2026
a4446e2
Improve idiomatic Effect usage in config and Tailscale paths (#3073)
cursor[bot] Jun 19, 2026
d9f59be
feat(sidebar): worktree indicator on session rows (#3057)
TheIcarusWings Jun 19, 2026
c08b968
Use Effect schema decoders for JSON parsing (#3060)
cursor[bot] Jun 19, 2026
fbf6263
Only show enabled providers in picker sidebar (#3168)
juliusmarminge Jun 19, 2026
cdaba7f
Share thread state idle TTL across client atoms (#3163)
juliusmarminge Jun 19, 2026
e29ad76
Unify mobile typography tokens across the app (#3162)
juliusmarminge Jun 19, 2026
753bc46
Harden preview ownership and option-based secret handling (#3172)
juliusmarminge Jun 20, 2026
ab0baaa
[codex] Inline contracts request-context service shapes (#3204)
juliusmarminge Jun 20, 2026
60b16d1
[codex] Refactor desktop app Effect services (#3185)
juliusmarminge Jun 20, 2026
53d0107
[codex] align relay foundation Effect services (#3182)
juliusmarminge Jun 20, 2026
1cf3647
[codex] Normalize server core Effect service modules (#3187)
juliusmarminge Jun 20, 2026
d2c0a6a
Add diff scope switching and provider update settings (#3169)
juliusmarminge Jun 20, 2026
3b56dc1
[codex] Refactor primary HTTP Effect service (#3205)
juliusmarminge Jun 20, 2026
938b19a
[codex] Normalize Desktop IPC Effect service (#3203)
juliusmarminge Jun 20, 2026
9544e72
chore: run eas only when labelled (#3208)
Yash-Singh1 Jun 20, 2026
b630278
[codex] Refactor review and text generation services (#3196)
juliusmarminge Jun 20, 2026
8bfdacf
[codex] Use namespace imports for desktop core services (#3207)
juliusmarminge Jun 20, 2026
5c1ac92
[codex] normalize server process and preview Effect services (#3191)
juliusmarminge Jun 20, 2026
742dd7a
[codex] Standardize Effect protocol adapter services (#3201)
juliusmarminge Jun 20, 2026
d5a72d5
[codex] align relay agent activity Effect services (#3179)
juliusmarminge Jun 20, 2026
df1540f
[codex] align persistence Effect service modules (#3184)
juliusmarminge Jun 20, 2026
93fd972
[codex] Refactor desktop window and update Effect services (#3202)
juliusmarminge Jun 20, 2026
01492eb
[codex] Refactor agent awareness relay service (#3197)
juliusmarminge Jun 20, 2026
4ee719a
[codex] refactor server cloud Effect services (#3183)
juliusmarminge Jun 20, 2026
01cd564
[codex] Align desktop preview Effect services (#3199)
juliusmarminge Jun 20, 2026
ffae12f
[codex] refactor desktop backend Effect services (#3192)
juliusmarminge Jun 20, 2026
ccf8331
[codex] Align diagnostics and telemetry Effect services (#3189)
juliusmarminge Jun 20, 2026
b17b6d5
[codex] Complete relay agent activity Effect cleanup (#3210)
juliusmarminge Jun 20, 2026
4e8ee13
[codex] Align terminal Effect service modules (#3193)
juliusmarminge Jun 20, 2026
7118e43
[codex] Refactor checkpointing Effect services (#3181)
juliusmarminge Jun 20, 2026
d9e9539
[codex] Migrate server source control Effect services (#3186)
juliusmarminge Jun 20, 2026
6b74476
Add Effect service conventions check (#3212)
juliusmarminge Jun 20, 2026
2f8d3ba
[codex] finish server process and preview Effect cleanup (#3209)
juliusmarminge Jun 20, 2026
0ad1e9d
[codex] Refactor client-runtime Effect services (#3198)
juliusmarminge Jun 20, 2026
10a8d3f
Tighten structural Effect error checks (#3213)
juliusmarminge Jun 20, 2026
6d2dae0
Preserve full cause chains in Effect error checks (#3215)
juliusmarminge Jun 20, 2026
65385c0
[codex] Refactor desktop settings Effect services (#3188)
juliusmarminge Jun 20, 2026
2fbbe68
Clarify Effect error discriminator modeling (#3217)
juliusmarminge Jun 20, 2026
335e0b5
Fix PR creation from origin-based worktrees (#3218)
juliusmarminge Jun 20, 2026
dc82f79
[codex] Close right panel when its last tab closes (#3221)
juliusmarminge Jun 20, 2026
8d61172
Cosmetic fix: Sync web title with nightly server branding (#3219)
StiensWout Jun 20, 2026
3900c45
Preserve observable Effect error semantics (#3220)
juliusmarminge Jun 20, 2026
79c5717
[codex] Make settings environment-scoped by default (#3216)
juliusmarminge Jun 20, 2026
b0a3a50
[codex] Refactor project and workspace Effect services (#3190)
juliusmarminge Jun 20, 2026
c00e721
[codex] Refactor client runtime Effect services (#3200)
juliusmarminge Jun 20, 2026
7eda6ba
[codex] Migrate desktop shell and SSH Effect services (#3194)
juliusmarminge Jun 20, 2026
9a1c487
[codex] Remove redundant Effect type annotations (#3229)
juliusmarminge Jun 20, 2026
f58b6da
[codex] Preserve workspace RPC error messages (#3222)
juliusmarminge Jun 20, 2026
30acfa9
[fix/feat:ui] Fix clipped chatbar provider badge (#3224)
sandersonstabo Jun 20, 2026
6c5fb79
[fix/feat:ui] Use shared button for model favorites (#3223)
sandersonstabo Jun 20, 2026
db27502
[fix/feat:ui] Capitalize Work Log heading (#3228)
sandersonstabo Jun 20, 2026
2fa37ec
[codex] Enforce canonical Node namespace imports (#3238)
juliusmarminge Jun 20, 2026
b19fc1b
[codex] refactor desktop Electron Effect services (#3178)
juliusmarminge Jun 20, 2026
97e5cd3
[codex] align server auth Effect services (#3180)
juliusmarminge Jun 20, 2026
86db35c
[codex] Structure mobile native static-check failures (#3302)
juliusmarminge Jun 20, 2026
20734d4
[codex] Structure macOS passkey signing failures (#3303)
juliusmarminge Jun 20, 2026
515303e
[codex] Preserve desktop user-data probe failures (#3304)
juliusmarminge Jun 20, 2026
b4fe8fa
[codex] Structure relay activity-row persistence errors (#3305)
juliusmarminge Jun 20, 2026
8c3755a
[codex] Structure bootstrap errors (#3256)
juliusmarminge Jun 20, 2026
e55dd00
[codex] Structure preview session key errors (#3388)
juliusmarminge Jun 20, 2026
d87ec96
[codex] Structure empty mobile pairing payload errors (#3372)
juliusmarminge Jun 20, 2026
0675252
[codex] Structure unavailable Bun PTY operations (#3394)
juliusmarminge Jun 20, 2026
7a8bab5
[codex] Keep PTY spawn errors structural (#3325)
juliusmarminge Jun 20, 2026
f7867ad
[codex] Structure mobile notification setting failures (#3391)
juliusmarminge Jun 20, 2026
bf1a650
[codex] Preserve review path resolution failures (#3357)
juliusmarminge Jun 20, 2026
7160814
[codex] Split preferred editor precondition errors (#3324)
juliusmarminge Jun 20, 2026
cc69aef
[codex] Structure relay domain label errors (#3347)
juliusmarminge Jun 20, 2026
40d1464
[codex] Structure catalog dependency resolution failures (#3298)
juliusmarminge Jun 20, 2026
08650a7
[codex] Structure web diff worker failures (#3356)
juliusmarminge Jun 20, 2026
8331511
[codex] structure Electron theme source errors (#3294)
juliusmarminge Jun 20, 2026
f3b43a1
[codex] Structure missing client cloud config errors (#3346)
juliusmarminge Jun 20, 2026
b9e22de
[codex] Preserve desktop update state read failures (#3370)
juliusmarminge Jun 20, 2026
8112aff
[codex] Structure relay install confirmation conflicts (#3365)
juliusmarminge Jun 20, 2026
350e229
[codex] Structure OAuth scope encoding failures (#3368)
juliusmarminge Jun 20, 2026
779c237
[codex] Structure native view resolution failures (#3353)
juliusmarminge Jun 20, 2026
4fbc4f9
[codex] Structure mobile project thread validation errors (#3387)
juliusmarminge Jun 20, 2026
ac77fe4
[codex] Preserve relay trace error causes (#3377)
juliusmarminge Jun 20, 2026
9d5ca2c
[codex] Structure Electron protocol teardown failures (#3310)
juliusmarminge Jun 20, 2026
30a084c
[codex] Preserve mobile composer draft failures (#3348)
juliusmarminge Jun 20, 2026
fccecd8
[codex] Preserve detached desktop action causes (#3371)
juliusmarminge Jun 20, 2026
ce0c20b
[codex] Structure desktop network interface failures (#3313)
juliusmarminge Jun 20, 2026
04f82ae
[codex] Structure relay environment link errors (#3334)
juliusmarminge Jun 20, 2026
61aade9
[codex] Preserve desktop asset probe failures (#3373)
juliusmarminge Jun 20, 2026
5a2c92e
[codex] Structure Electron app boundary failures (#3301)
juliusmarminge Jun 20, 2026
d84ebe8
[codex] Structure process resource sampling failures (#3415)
juliusmarminge Jun 20, 2026
53a477c
[codex] Structure desktop backend settings read errors (#3379)
juliusmarminge Jun 20, 2026
300d4d5
[codex] Structure missing provider command failures (#3384)
juliusmarminge Jun 20, 2026
716ae73
[codex] Structure relay publish signature errors (#3335)
juliusmarminge Jun 20, 2026
3ecf368
[codex] structure Bitbucket API failures (#3332)
juliusmarminge Jun 20, 2026
4d790f0
[codex] Bound relay registration replay diagnostics (#3420)
juliusmarminge Jun 20, 2026
4d3fcac
[codex] Type malformed Clerk public config failures (#3422)
juliusmarminge Jun 20, 2026
bfe6174
[codex] Simplify desktop client settings errors (#3265)
juliusmarminge Jun 20, 2026
f98448e
[codex] Structure relay JWT failures (#3270)
juliusmarminge Jun 20, 2026
ed6ba74
[codex] sanitize provider runtime failure diagnostics (#3414)
juliusmarminge Jun 20, 2026
1e5f628
[codex] Structure MCP snapshot failures (#3423)
juliusmarminge Jun 20, 2026
1486a4a
[codex] Structure Electron updater errors (#3280)
juliusmarminge Jun 20, 2026
c3e3e26
[codex] Structure primary environment request failures (#3409)
juliusmarminge Jun 20, 2026
5ca7676
[codex] Structure Claude adapter failures (#3406)
juliusmarminge Jun 20, 2026
49c2322
[codex] Structure mobile secure storage failures (#3345)
juliusmarminge Jun 20, 2026
2b8e012
[codex] Structure desktop server exposure errors (#3269)
juliusmarminge Jun 20, 2026
2910d9f
[codex] Structure preview config failures (#3271)
juliusmarminge Jun 20, 2026
48f88d5
[codex] Structure desktop Clerk bridge failures (#3308)
juliusmarminge Jun 20, 2026
9c98cd6
Remove persistence error constructor wrappers (#3398)
juliusmarminge Jun 20, 2026
ee3e2da
[codex] Structure remote pairing input errors (#3393)
juliusmarminge Jun 20, 2026
5b1b35c
[codex] Preserve desktop shell environment probe failures (#3383)
juliusmarminge Jun 20, 2026
833c8ab
[codex] Remove project setup error constructor wrappers (#3329)
juliusmarminge Jun 20, 2026
1dc36ce
Structure relay auth parsing errors (#3290)
juliusmarminge Jun 20, 2026
e01b190
[codex] Structure process diagnostics failures (#3389)
juliusmarminge Jun 20, 2026
7eb7b4f
[codex] Structure release metadata failures (#3296)
juliusmarminge Jun 20, 2026
708bc70
Structure server environment ID failures (#3286)
juliusmarminge Jun 20, 2026
2c16edd
[codex] Structure desktop bridge state errors (#3381)
juliusmarminge Jun 20, 2026
32c7f90
[codex] Structure APNs delivery queue errors (#3326)
juliusmarminge Jun 20, 2026
d512dea
[codex] Structure preview URL failures (#3275)
juliusmarminge Jun 20, 2026
d8bf307
[codex] Enrich process runner errors (#3268)
juliusmarminge Jun 20, 2026
b6e384f
[codex] Preserve trace IDs across error causes (#3426)
juliusmarminge Jun 20, 2026
13a4789
[codex] Structure terminal adapter startup defects (#3425)
juliusmarminge Jun 20, 2026
eacceb9
[codex] Bound shared schema diagnostics (#3424)
juliusmarminge Jun 20, 2026
d60f5c6
[codex] Structure mobile external link failures (#3363)
juliusmarminge Jun 20, 2026
f4ef356
[codex] structure desktop IPC registration errors (#3291)
juliusmarminge Jun 20, 2026
cdfecb3
[codex] Structure workspace file system errors (#3274)
juliusmarminge Jun 20, 2026
731b1a6
[codex] structure VCS process errors (#3408)
juliusmarminge Jun 20, 2026
0e71885
[codex] Structure primary environment target failures (#3413)
juliusmarminge Jun 20, 2026
d53237c
[codex] sanitize ACP native event diagnostics (#3417)
juliusmarminge Jun 20, 2026
0cd0ed1
[codex] Sanitize client error log diagnostics (#3405)
juliusmarminge Jun 20, 2026
46fdc76
[codex] Structure telemetry identity errors (#3306)
juliusmarminge Jun 20, 2026
1cbe8a7
[codex] Structure VCS project config failures (#3315)
juliusmarminge Jun 20, 2026
ff0f702
[codex] Structure client VCS action errors (#3263)
juliusmarminge Jun 20, 2026
4238a0e
[codex] Enrich Git VCS driver errors (#3253)
juliusmarminge Jun 20, 2026
430ece4
[codex] Structure Codex app-server request errors (#3258)
juliusmarminge Jun 20, 2026
90bd5ee
[codex] structure desktop preview failures (#3244)
juliusmarminge Jun 20, 2026
d2e38c5
[codex] Structure Tailscale command failures (#3257)
juliusmarminge Jun 20, 2026
97487d9
[codex] Structure reference repo sync failures (#3281)
juliusmarminge Jun 20, 2026
f50a7cd
[codex] Structure dev-runner failures (#3283)
juliusmarminge Jun 20, 2026
be4a38e
[codex] add structured Electron dialog errors (#3284)
juliusmarminge Jun 20, 2026
204984b
[codex] Structure relay deploy output errors (#3340)
juliusmarminge Jun 20, 2026
336d176
[codex] Structure preview automation errors (#3272)
juliusmarminge Jun 20, 2026
c8454ad
[codex] structure workspace search failures (#3352)
juliusmarminge Jun 20, 2026
fdc1e8b
[codex] Structure pairing grant failures (#3386)
juliusmarminge Jun 20, 2026
a1b727f
[codex] Structure relay device persistence errors (#3344)
juliusmarminge Jun 20, 2026
c9159b6
[codex] Structure APNs client errors (#3318)
juliusmarminge Jun 20, 2026
5f86043
[codex] Structure APNs delivery job errors (#3322)
juliusmarminge Jun 20, 2026
e06c33c
[codex] Structure relay Live Activity errors (#3314)
juliusmarminge Jun 20, 2026
6888276
[codex] Sanitize YAML schema diagnostics (#3427)
juliusmarminge Jun 20, 2026
3e5f9f2
[codex] Structure browser recording failures (#3330)
juliusmarminge Jun 20, 2026
8c03188
[codex] Structure preview automation failures (#3333)
juliusmarminge Jun 20, 2026
defd9df
[codex] Structure Electron menu failures (#3317)
juliusmarminge Jun 20, 2026
e85144a
[codex] Structure relay delivery attempt errors (#3312)
juliusmarminge Jun 20, 2026
f1052dd
[codex] Structure Discord release webhook failures (#3285)
juliusmarminge Jun 20, 2026
ce11e6f
[codex] Structure desktop browser session errors (#3273)
juliusmarminge Jun 20, 2026
abc253d
[codex] Preserve native SQLite failure context (#3428)
juliusmarminge Jun 20, 2026
c7b375e
[codex] Structure Electron window failures (#3276)
juliusmarminge Jun 20, 2026
4407a5a
[codex] Structure Codex shadow home errors (#3262)
juliusmarminge Jun 20, 2026
4c16c66
[codex] Structure ACP transport errors (#3251)
juliusmarminge Jun 20, 2026
7b79189
[codex] Structure relay auth persistence errors (#3250)
juliusmarminge Jun 20, 2026
c1d8a22
[codex] Structure desktop persisted credential errors (#3239)
juliusmarminge Jun 20, 2026
bd8e3ee
Align text generation error catches (#3292)
juliusmarminge Jun 20, 2026
d7ff7e7
[codex] Audit managed endpoint error context (#3245)
juliusmarminge Jun 20, 2026
569b3e5
[codex] Structure desktop SSH prompt presentation failures (#3429)
juliusmarminge Jun 20, 2026
630df6b
[codex] Enrich source-control errors (#3248)
juliusmarminge Jun 20, 2026
6216162
[codex] Sanitize text generation CLI errors (#3431)
juliusmarminge Jun 20, 2026
eb5eb0d
[codex] Structure managed endpoint allocation failures (#3421)
juliusmarminge Jun 20, 2026
be56fa4
[codex] Preserve workspace root stat failures (#3278)
juliusmarminge Jun 20, 2026
6e9b43c
Preserve trace file read causes (#3300)
juliusmarminge Jun 20, 2026
c637dfc
[codex] enrich Git workflow errors (#3241)
juliusmarminge Jun 20, 2026
fc2cdec
[codex] Structure preview automation boundary failures (#3436)
juliusmarminge Jun 20, 2026
b51aef1
[codex] Preserve cloud disconnect diagnostics (#3437)
juliusmarminge Jun 20, 2026
b6c590a
[codex] Fix desktop preview event delivery errors (#3435)
juliusmarminge Jun 20, 2026
6d8d995
[codex] Correlate protocol request failures (#3433)
juliusmarminge Jun 20, 2026
dd48bfd
[codex] Structure server settings failures (#3376)
juliusmarminge Jun 20, 2026
faccdd4
[codex] Preserve desktop backend log failures (#3375)
juliusmarminge Jun 20, 2026
d1339f3
[codex] Structure client state key errors (#3374)
juliusmarminge Jun 20, 2026
5076768
[codex] Preserve terminal preview link failure context (#3367)
juliusmarminge Jun 20, 2026
58053d1
[codex] Structure terminal PTY operation failures (#3364)
juliusmarminge Jun 20, 2026
b888735
[codex] Structure cross-client clipboard failures (#3361)
juliusmarminge Jun 20, 2026
d7718e8
[codex] Structure mobile notification navigation failures (#3359)
juliusmarminge Jun 20, 2026
97de7d7
[codex] Structure agent awareness registration errors (#3328)
juliusmarminge Jun 20, 2026
a51691a
[codex] Structure server environment-label probe failures (#3321)
juliusmarminge Jun 20, 2026
a76b7bb
Preserve PortScanner probe defects (#3282)
juliusmarminge Jun 20, 2026
aab72f1
[codex] Report markdown interaction failures (#3355)
juliusmarminge Jun 20, 2026
9a78c6f
[codex] Structure web local storage failures (#3350)
juliusmarminge Jun 20, 2026
8ce627b
[codex] Structure mobile thread outbox failures (#3341)
juliusmarminge Jun 20, 2026
834e5db
[codex] structure project CLI failures (#3339)
juliusmarminge Jun 20, 2026
42ff439
[codex] Preserve mobile review highlighter failures (#3337)
juliusmarminge Jun 20, 2026
90f1936
[codex] Structure server runtime-state failures (#3319)
juliusmarminge Jun 20, 2026
e042c25
[codex] Structure rotating log sink errors (#3279)
juliusmarminge Jun 20, 2026
f2cb14e
[codex] Structure mobile relay token-store failures (#3309)
juliusmarminge Jun 20, 2026
674590e
[codex] Fix terminal cwd error test construction (#3440)
juliusmarminge Jun 20, 2026
ad2cb1d
[codex] Diagnose desktop client settings read failures (#3432)
juliusmarminge Jun 20, 2026
60c9ca0
[codex] Preserve checkpoint repository detection failures (#3360)
juliusmarminge Jun 20, 2026
6ff6c13
[codex] structure desktop backend process errors (#3254)
juliusmarminge Jun 20, 2026
a26f0dc
[codex] structure source-control repository failures (#3336)
juliusmarminge Jun 20, 2026
57d25c9
[codex] Structure persistence error correlation (#3439)
juliusmarminge Jun 20, 2026
90dc76b
Preserve asset access failure causes (#3342)
juliusmarminge Jun 20, 2026
5edf7c5
[codex] Preserve PR materialization failure chains (#3443)
juliusmarminge Jun 20, 2026
a9460bb
[codex] Structure pull request link failures (#3445)
juliusmarminge Jun 20, 2026
28e7c9a
[codex] Structure mobile waitlist enrollment failures (#3446)
juliusmarminge Jun 20, 2026
803c2b7
[codex] Preserve desktop backend output read failures (#3444)
juliusmarminge Jun 20, 2026
9243ead
[codex] Preserve Linux icon resize fallback failures (#3447)
juliusmarminge Jun 21, 2026
9f7861a
[codex] Structure desktop update persistence errors (#3261)
juliusmarminge Jun 21, 2026
4cd9584
[codex] Migrate desktop app errors to Schema (#3449)
juliusmarminge Jun 21, 2026
68c0dd3
[codex] Structure server CLI failures (#3450)
juliusmarminge Jun 21, 2026
0eba548
[codex] Model asset access failures with distinct errors (#3448)
juliusmarminge Jun 21, 2026
0488e47
[codex] Structure checkpoint diff failures (#3453)
juliusmarminge Jun 21, 2026
23ab75e
[codex] Split project command failures (#3459)
juliusmarminge Jun 21, 2026
8d4a8b4
[codex] Structure preview capability errors (#3454)
juliusmarminge Jun 21, 2026
6424197
[codex] Structure unroutable app-server messages (#3463)
juliusmarminge Jun 21, 2026
1a59277
[codex] Structure GitLab CLI failures (#3458)
juliusmarminge Jun 21, 2026
a3dadc0
[codex] Structure Bitbucket API errors (#3457)
juliusmarminge Jun 21, 2026
2fbb056
[codex] Structure workspace search cleanup failures (#3465)
juliusmarminge Jun 21, 2026
cdd0359
[codex] Structure release metadata failures (#3467)
juliusmarminge Jun 21, 2026
6fc7973
[codex] Structure mobile native static-check failures (#3464)
juliusmarminge Jun 21, 2026
d389cfd
[codex] Structure Azure DevOps CLI failures (#3460)
juliusmarminge Jun 21, 2026
60dc4af
[codex] Structure desktop build script failures (#3452)
juliusmarminge Jun 21, 2026
8c2d33a
[codex] Structure release package updater failures (#3468)
juliusmarminge Jun 21, 2026
1b2f39d
[codex] Structure theme synchronization failures (#3466)
juliusmarminge Jun 21, 2026
61e6d89
[codex] Structure GitHub CLI failures (#3456)
juliusmarminge Jun 21, 2026
e4a84a3
[codex] Structure release output failures (#3470)
juliusmarminge Jun 21, 2026
cebbe6f
[codex] Preserve child process termination context (#3469)
juliusmarminge Jun 21, 2026
3c246f5
[codex] Structure VCS process boundary errors (#3476)
juliusmarminge Jun 21, 2026
e3970e7
[codex] Preserve APNs delivery failure context (#3475)
juliusmarminge Jun 21, 2026
6155f5c
[codex] Preserve VCS project config error causes (#3474)
juliusmarminge Jun 21, 2026
90074e3
[codex] Preserve desktop update state causes (#3473)
juliusmarminge Jun 21, 2026
8c1605b
[codex] Structure OpenCode text generation failures (#3472)
juliusmarminge Jun 21, 2026
2a29de7
[codex] Structure primary auth validation failures (#3471)
juliusmarminge Jun 21, 2026
0debeba
[codex] Structure thread archive blocked error (#3451)
juliusmarminge Jun 21, 2026
61f8d46
[codex] Enforce Effect error handling conventions (#3380)
juliusmarminge Jun 21, 2026
82a9bcc
[codex] add session context to credential errors (#3349)
juliusmarminge Jun 21, 2026
28107e8
chore: remove `AnnotatableFileDiff` leftovers, rename file (#3488)
ipanasenko Jun 22, 2026
ea52bb1
[codex] fix: guard trace ID clipboard copy (#3505)
StiensWout Jun 22, 2026
8b993bc
[codex] fix: restore pending input keyboard activation (#3501)
StiensWout Jun 22, 2026
c1e2408
[codex] fix: preserve localhost preview hosts (#3499)
StiensWout Jun 22, 2026
8919ae7
[codex] Reject unsupported remote pairing protocols (#3498)
StiensWout Jun 22, 2026
37ac970
Persist mobile composer selectors across drafts (#3496)
juliusmarminge Jun 22, 2026
f5f98cf
Stabilize composer provider state while typing (#3507)
cursor[bot] Jun 22, 2026
fb10345
feat: add persistent word-wrap setting for chat code blocks and table…
imabdulazeez Jun 22, 2026
b2d17b7
Add main sidebar toggle (#3497)
juliusmarminge Jun 22, 2026
8cc9a6f
[codex] Restore T3 Connect account controls (#3492)
juliusmarminge Jun 22, 2026
92e54fb
[codex] fix: guard DPoP fallback URL construction (#3503)
StiensWout Jun 22, 2026
6672a1d
Bump Clerk packages and refresh lockfile (#3511)
juliusmarminge Jun 22, 2026
3083d71
[codex] fix: clarify Cursor CLI setup error (#3519)
StiensWout Jun 23, 2026
4abf8b4
[codex] fix: ignore stale shell reducer events (#3517)
StiensWout Jun 23, 2026
c6c6491
Reduce ChatMarkdown settings rerenders (#3536)
cursor[bot] Jun 23, 2026
a4964b3
[codex] fix: show standalone element-pick context (#3527)
StiensWout Jun 23, 2026
22f021e
[codex] Upgrade Legend List chat scrolling (#3545)
juliusmarminge Jun 24, 2026
6947d7d
Merge remote-tracking branch 'upstream/main' into sync-upstream-main-…
tarik02 Jun 25, 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
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
# T3CODE_CLERK_JWT_TEMPLATE=t3-relay
# T3CODE_CLERK_CLI_OAUTH_CLIENT_ID=oauthapp_...

# Optional: signed macOS passkey builds. The RP domain defaults to the Frontend API
# hostname encoded in T3CODE_CLERK_PUBLISHABLE_KEY. Set the override only when Clerk
# returns a different RP ID or when multiple domains must be entitled.
# T3CODE_APPLE_TEAM_ID=ABC1234567
# T3CODE_MACOS_PROVISIONING_PROFILE=/absolute/path/to/t3code.provisionprofile
# T3CODE_CLERK_PASSKEY_RP_DOMAINS=example.clerk.accounts.dev,clerk.example.com

# Get this from your relay deployment. `infra/relay` deploys update it automatically.
# T3CODE_RELAY_URL=https://relay.example.com

Expand Down
48 changes: 1 addition & 47 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ jobs:
run: |
test -f apps/desktop/dist-electron/preload.cjs
grep -nE "desktopBridge|getLocalEnvironmentBootstrap|PICK_FOLDER_CHANNEL|wsUrl" apps/desktop/dist-electron/preload.cjs
grep -n "__clerk_internal_electron_passkeys" apps/desktop/dist-electron/preload.cjs

test:
name: Test
Expand All @@ -60,53 +61,6 @@ jobs:
- name: Test
run: vp run test

test_browser:
name: Test Browser
if: false
runs-on: t3code-arc
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true

- name: Cache Playwright browsers
uses: actions/cache@v5
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-playwright-

- name: Install browser test runtime
run: vp run --filter @t3tools/web test:browser:install

- name: Browser test / Chat view
working-directory: apps/web
run: vp test run --mode browser --browser=chromium src/components/ChatView.browser.tsx

- name: Browser test / Chat markdown
working-directory: apps/web
run: vp test run --mode browser --browser=chromium src/components/ChatMarkdown.browser.tsx

- name: Browser test / Components
working-directory: apps/web
run: |
vp test run --mode browser --browser=chromium \
src/components/GitActionsControl.browser.tsx \
src/components/KeybindingsToast.browser.tsx \
src/components/ThreadTerminalDrawer.browser.tsx \
src/components/chat/MessagesTimeline.browser.tsx \
src/components/chat/ProviderModelPicker.browser.tsx \
src/components/chat/CompactComposerControlsMenu.browser.tsx \
src/components/settings/SettingsPanels.browser.tsx

mobile_native_static_analysis:
name: Mobile Native Static Analysis
runs-on: macos-15
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/mobile-eas-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ name: Mobile EAS Preview

on:
pull_request:
types: [opened, reopened, synchronize, labeled, unlabeled]

jobs:
preview:
name: EAS Preview
if: github.repository_owner == 'pingdotgg'
runs-on: t3code-arc
if: github.repository_owner == 'pingdotgg' && contains(github.event.pull_request.labels.*.name, '🚀 Mobile Continuous Deployment')
runs-on: blacksmith-8vcpu-ubuntu-2404
permissions:
contents: read
pull-requests: write
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -517,6 +517,9 @@ jobs:
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
APPLE_TEAM_ID: ${{ vars.APPLE_TEAM_ID }}
MACOS_PROVISIONING_PROFILE: ${{ secrets.MACOS_PROVISIONING_PROFILE }}
T3CODE_CLERK_PASSKEY_RP_DOMAINS: ${{ vars.CLERK_PASSKEY_RP_DOMAINS }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
Expand Down Expand Up @@ -545,9 +548,21 @@ jobs:
if [[ "${{ matrix.platform }}" == "mac" ]]; then
if has_all "$CSC_LINK" "$CSC_KEY_PASSWORD"; then
if has_all "$APPLE_API_KEY" "$APPLE_API_KEY_ID" "$APPLE_API_ISSUER"; then
if ! has_all "$APPLE_TEAM_ID" "$MACOS_PROVISIONING_PROFILE"; then
echo "macOS notarization is configured, but APPLE_TEAM_ID or MACOS_PROVISIONING_PROFILE is missing." >&2
exit 1
fi

key_path="$RUNNER_TEMP/AuthKey_${APPLE_API_KEY_ID}.p8"
printf '%s' "$APPLE_API_KEY" > "$key_path"
export APPLE_API_KEY="$key_path"

profile_path="$RUNNER_TEMP/t3code.provisionprofile"
printf '%s' "$MACOS_PROVISIONING_PROFILE" | base64 -D > "$profile_path"
security cms -D -i "$profile_path" >/dev/null
export T3CODE_APPLE_TEAM_ID="$APPLE_TEAM_ID"
export T3CODE_MACOS_PROVISIONING_PROFILE="$profile_path"

echo "macOS notarization enabled."
else
unset APPLE_API_KEY APPLE_API_KEY_ID APPLE_API_ISSUER
Expand Down
83 changes: 83 additions & 0 deletions .macroscope/check-run-agents/effect-service-conventions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
title: Effect Service Conventions
model: claude-opus-4-8
effort: high
input: full_diff
tools:
- browse_code
- git_tools
- github_api_read_only
- modify_pr
include:
- "apps/**/*.ts"
- "apps/**/*.tsx"
- "packages/**/*.ts"
- "packages/**/*.tsx"
- "infra/**/*.ts"
- "infra/**/*.tsx"
conclusion: failure
showToolCalls: true
---

# Effect service review

Review changed TypeScript and directly affected call sites for the conventions below. Apply them when a pull request creates, moves, refactors, or consumes an Effect service. Do not demand unrelated repository-wide cleanup. Treat these instructions as authoritative when older code differs.

## Imports and module namespaces

- Import Effect library modules from their subpaths as namespaces, for example `import * as Effect from "effect/Effect"` and `import * as Layer from "effect/Layer"`. Flag consolidated named imports from `"effect"` in touched Effect service code.
- At a service boundary, import the local service module as a namespace and use its public module shape: `WorkspacePaths.WorkspacePaths`, `WorkspacePaths.make`, and `WorkspacePaths.layer`. Flag aliases such as `import { layer as workspacePathsLayer }` that erase the module namespace.
- Namespace imports are not a blanket rule. Keep named imports for whole packages such as `@t3tools/contracts`, and for modules used only for a pure helper, error, schema, config value, or standalone type. Do not request `import type * as Contracts`.
- A package subpath that is itself a service module may use a namespace import when callers access its service/tag, `make`, or `layer` members.
- When a barrel exposes an entire service module, prefer `export * as TokenStore from "./tokenStore.ts"` so consumers can use `TokenStore.TokenStore` and `TokenStore.layer`. Do not individually rename `make` and `layer` exports to simulate a namespace.

## Service definition

- Use the canonical single-file order: imports, error/schema declarations, the `Context.Service` tag with its inline interface, `make`, then `layer`.
- Keep a service's schemas/errors, `Context.Service` tag, construction, and layer in one canonical module when they form one implementation.
- Define the service interface inline in the `Context.Service` declaration. Do not retain a standalone `FooShape` or `FooServiceShape` interface/type.
- Refer to the inferred service interface as `Foo["Service"]`, including in mechanically updated orchestration, MCP, tests, and integration harnesses.
- Export a real `make` when the module owns construction. Do not create `make = Effect.succeed(...)` solely to force `Layer.effect`.
- Export the canonical layer as `export const layer = Layer...`. `Layer.effect` is not required: use `Layer.succeed`, `Layer.scoped`, or another appropriate constructor when that matches the implementation.
- In a concrete implementation module already named for the implementation, use plain `make` and `layer` (for example `BunPtyAdapter.ts` and `NodePtyAdapter.ts`).
- Keep implementation-specific names when an abstract port module contains one of several possible implementations, for example `makeCloudflaredRelayClient` and `layerCloudflared` in `RelayClient.ts`.
- `infra/relay/src/db.ts` is an intentional exception: an inline `Layer.succeed(RelayDb, db)` is acceptable without generic `make`/`layer` exports.

## Errors and predicates

- Define service failures with `Schema.TaggedErrorClass` and structured attributes. Derive `message` from those attributes rather than storing an unstructured message as the only data.
- `Schema.Defect()` is not a substitute for modeling a generic error: its tag, fields, or both must identify the failure structurally, and its `message` must not merely stringify an opaque cause. A semantically precise error tag may preserve a real `cause` without inventing a redundant singleton field when no additional variable context exists; still retain any real path, resource, request, or entity context available at the wrapping site.
- Capture stable, serializable domain context such as the operation or stage, resource/path or entity identifier, and normalized category/status. Map failures where that context is known instead of wrapping an entire multi-step pipeline in one generic error. Do not add a `detail` field that merely copies `cause.message` and then use it to construct the wrapper message.
- Keep direct error attributes and log annotations safe and bounded. Do not copy raw wire payloads, command arguments or output, signed URLs, credentials, query strings, fragments, selectors, or arbitrary defect text into `detail`, `reason`, `message`, or a parallel log payload. Preserve the exact underlying value only as `cause`; expose normalized categories plus lengths/counts and safe URL protocol/hostname diagnostics where useful. Logging a sanitized error must not reintroduce a removed legacy `detail` or serialized `cause` field beside it.
- When translating or wrapping a real failure, preserve the immediate underlying error itself as `cause` alongside the structural fields so the complete error chain and stack remain available. If every construction wraps a failure, `cause` should be required; make it optional only when the same error can legitimately originate without an underlying failure.
- At a translation boundary, pass through an already structured domain error when it is part of the declared target error channel. Wrap only unknown or genuinely lower-level failures. A static factory or mapper may perform this classification when it is reused and keeps the policy next to the target error type.
- Derive the wrapper's `message` exclusively from its stable structural attributes, never from `cause`, `cause.message`, or a stringified defect. Do not replace the immediate error with only `error.cause`, erase a structured upstream error into a string, or manufacture an `Error` merely to populate `cause`. Pure validation/domain errors created without an underlying failure do not need a cause.
- Do not encode the same distinction twice with both a specific error tag and a single-value `operation`, `reason`, `kind`, or `phase` literal. Choose one coherent model: use distinct error classes and omit the redundant discriminator when callers or messages treat the failures as genuinely different, or use one service-level error with a multi-value operation discriminator and a generic message derived from that operation when the failures share the same semantics.
- Treat an error message exposed through an HTTP/RPC response, persisted state, UI, or another caller-visible boundary as behavior. Preserve those messages during a structural refactor. Existing distinct caller-visible messages are evidence that the failures should normally remain distinct error tags without redundant singleton discriminators, rather than being collapsed into a generic operation error.
- Split semantically distinct failures into separate error classes when a `reason`, `kind`, `phase`, or similar discriminator is used to choose the user-facing message or drive caller control flow. A discriminator used only for internal diagnostics may remain a field.
- Use `Schema.Union` of error classes when a shared schema, predicate, or helper type is useful.
- Export direct schema predicates such as `export const isFoo = Schema.is(Foo)`. Flag a private `Schema.is` constant wrapped by a redundant function with the same signature.
- Do not introduce a large `switch` or lookup table in an error's `message` getter to model failures that deserve separate error classes.
- Catch statically known tagged failures with `Effect.catchTags({ ... })`, including when handling only one tag. Do not use `catchIf` with a schema predicate merely to recover one or more known `_tag` variants, and do not use `catchTag`. `Effect.catch` is appropriate when the entire error channel is intentionally handled; `catchIf` remains appropriate for genuinely structural predicates such as inspecting an underlying platform error code.
- Do not add a helper whose only behavior is `(...args) => new SomeError({ ...args })`, including curried aliases used once with `mapError`. Construct the error at the failure boundary so its attributes and cause remain visible. Keep a mapper only when it performs real normalization, passes through existing domain errors, or adds reusable context/control flow.
- When a reusable error-to-error translation clearly belongs to the target error type, prefer a descriptive static factory on that error class over a detached production-side switch. Do not force a static method for one-off inline mappings.

## File layout and migrations

- When combining `domain/Services/Foo.ts` and `domain/Layers/Foo.ts`, hoist the result to `domain/Foo.ts`.
- Delete the old service/layer files. Do not leave compatibility re-export shims. Mechanically update every consumer, including orchestration, MCP, tests, and integration harnesses, to the canonical path.
- Do not flag genuinely separate implementation/adapter modules merely because they remain in an implementation-oriented directory.
- Avoid substantive orchestration or MCP redesign in service-cleanup PRs. Mechanical import, layer, and `Service["Service"]` updates are expected when required to remove obsolete paths or shapes.

## Change discipline

- Preserve useful comments, invariants, and specification documentation while moving code.
- Do not add large tests solely to prove a mechanical refactor. Update existing tests and imports as needed.
- If backend behavior changes, require focused tests. Use test implementations/layers for external services only; do not mock out core business logic.
- Do not require `Layer.effect`, universal namespace imports, generic `make`/`layer` names for abstract-port implementations, separate error classes for diagnostic-only fields, or new tests for import-only changes.

## Reporting

Report only concrete violations introduced or retained in the pull request's changed scope. Prefer precise inline comments on the smallest relevant line range and state the expected fix. A clear convention violation may fail the check. Do not fail for optional style preferences or unrelated legacy code.

This check defaults to failure. When there are no findings, stop immediately and make the entire final response exactly `All clear` on one line. Do not add a title, explanation, punctuation, Markdown, JSON, or trailing analysis, and do not continue reasoning after deciding the review is clean.
3 changes: 3 additions & 0 deletions apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"smoke-test": "node scripts/smoke-test.mjs"
},
"dependencies": {
"@clerk/electron": "catalog:",
"@clerk/electron-passkeys": "catalog:",
"@effect/platform-node": "catalog:",
"@t3tools/client-runtime": "workspace:*",
"@t3tools/contracts": "workspace:*",
Expand All @@ -20,6 +22,7 @@
"@t3tools/tailscale": "workspace:*",
"effect": "catalog:",
"electron": "41.5.0",
"electron-store": "^8.2.0",
"electron-updater": "^6.6.2",
"playwright-core": "1.60.0",
"react-grab": "^0.1.32"
Expand Down
32 changes: 16 additions & 16 deletions apps/desktop/scripts/build-preview-annotation-css.mjs
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import { readFile, writeFile } from "node:fs/promises";
import { createRequire } from "node:module";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import * as NodeFSP from "node:fs/promises";
import * as NodeModule from "node:module";
import * as NodePath from "node:path";
import * as NodeURL from "node:url";

import { compile } from "tailwindcss";

const directory = dirname(fileURLToPath(import.meta.url));
const appRoot = join(directory, "..");
const sourcePath = join(appRoot, "src", "preview", "Annotation.css");
const preloadPath = join(appRoot, "src", "preview", "PickPreload.ts");
const outputPath = join(appRoot, "src", "preview", "AnnotationStyles.generated.ts");
const require = createRequire(import.meta.url);
const tailwindRoot = dirname(require.resolve("tailwindcss/package.json"));
const directory = NodePath.dirname(NodeURL.fileURLToPath(import.meta.url));
const appRoot = NodePath.join(directory, "..");
const sourcePath = NodePath.join(appRoot, "src", "preview", "Annotation.css");
const preloadPath = NodePath.join(appRoot, "src", "preview", "PickPreload.ts");
const outputPath = NodePath.join(appRoot, "src", "preview", "AnnotationStyles.generated.ts");
const require = NodeModule.createRequire(import.meta.url);
const tailwindRoot = NodePath.dirname(require.resolve("tailwindcss/package.json"));

const [annotationSource, preloadSource, themeSource, preflightSource] = await Promise.all([
readFile(sourcePath, "utf8"),
readFile(preloadPath, "utf8"),
readFile(join(tailwindRoot, "theme.css"), "utf8"),
readFile(join(tailwindRoot, "preflight.css"), "utf8"),
NodeFSP.readFile(sourcePath, "utf8"),
NodeFSP.readFile(preloadPath, "utf8"),
NodeFSP.readFile(NodePath.join(tailwindRoot, "theme.css"), "utf8"),
NodeFSP.readFile(NodePath.join(tailwindRoot, "preflight.css"), "utf8"),
]);

const candidates = new Set(
Expand All @@ -37,4 +37,4 @@ const encodedCss = `'${css
.replaceAll("\n", "\\n")}'`;
const moduleSource = `// Generated by scripts/build-preview-annotation-css.mjs. Do not edit.\nexport const previewAnnotationStyles =\n ${encodedCss};\n`;

await writeFile(outputPath, moduleSource);
await NodeFSP.writeFile(outputPath, moduleSource);
Loading
Loading