Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
241 commits
Select commit Hold shift + click to select a range
577c251
feat: agent sessions can spawn and orchestrate other sessions (#1)
roughcoder Aug 11, 2026
079bbc5
feat: rebrand fork to Phoenix with side-by-side install support (#2)
roughcoder Aug 11, 2026
7b3297c
fix: ad-hoc sign unsigned macOS builds so they can launch
roughcoder Aug 11, 2026
a192332
feat: replace the production app icon with the Phoenix feather mark
roughcoder Aug 11, 2026
4de966f
fix: stop sharing a macOS keychain item with upstream T3 Code
roughcoder Aug 12, 2026
1c5a0e7
fix: replace the T3 wordmark in the app chrome with the Phoenix name
roughcoder Aug 12, 2026
6d62b68
fix: stop the desktop backend competing with T3 Code for port 3773
roughcoder Aug 12, 2026
3169647
fix(desktop): keep the Phoenix icon inside the macOS safe area
roughcoder Aug 12, 2026
8efed5a
Merge upstream/main into Phoenix (28 commits, e5c82d7..63e6fae)
roughcoder Aug 12, 2026
3db4847
Merge pull request #3 from goodbirdhq/chore/sync-upstream-2026-08-12
roughcoder Aug 12, 2026
6ab357d
feat(sessions): structured report fields, honest stop_session result,…
roughcoder Aug 12, 2026
832d6f5
feat(sessions): explicit git-ref/PR checkouts for spawned sessions (#4)
roughcoder Aug 12, 2026
aba9650
feat(sessions): graceful stop with termination reasons and stop audit…
roughcoder Aug 12, 2026
46579a2
feat(sessions): queue and interrupt delivery modes for send_to_sessio…
roughcoder Aug 12, 2026
4c0c901
feat(orchestration): synthetic terminal reports + parent-driven settl…
roughcoder Aug 12, 2026
07cb9f2
feat(sessions): compact report envelopes + paginated read_report with…
roughcoder Aug 12, 2026
3a47e9a
feat(server): ping_session for pull-based child progress (#7)
roughcoder Aug 12, 2026
c9fb5ca
fix(ci): align queued-command metadata expectations and test lint wit…
roughcoder Aug 12, 2026
a0aaf31
feat(web): sidebar hierarchy mode for spawned sessions (#16)
roughcoder Aug 12, 2026
d28934c
feat(persistence): queued delivery receipt columns + index (migration…
roughcoder Aug 12, 2026
86825f5
feat(sessions): usage snapshots in ping_session and report envelopes …
roughcoder Aug 12, 2026
6406721
feat(sessions): report amendment via supersedesReportId with linear c…
roughcoder Aug 12, 2026
bfef2f5
feat(git): serialized worktree cleanup, structured lock errors, merge…
roughcoder Aug 13, 2026
a50dc39
feat(sessions): list_sessions + archive_session with active-cap polic…
roughcoder Aug 13, 2026
4a8b5e7
feat(sessions): durable queued delivery receipts with turn attributio…
roughcoder Aug 13, 2026
dfaac85
test(orchestration): align hydration fixtures with receipt session fi…
roughcoder Aug 13, 2026
912691b
fix(orchestration): prevent queued delivery replay loops (#20)
roughcoder Aug 13, 2026
b972af0
fix(server): watchdog missing active provider turns
roughcoder Aug 14, 2026
1b850ba
feat(brand): replace app icon with phoenix illustration
gabrielsayers Aug 14, 2026
d3f57c8
feat(web): hand off remote files to local vscode
roughcoder Aug 14, 2026
1d0f6be
Merge pull request #25 from goodbirdhq/feat/phoenix-app-icon
gabrielsayers1 Aug 14, 2026
77ef826
fix(orchestration): digest child reports without turns
roughcoder Aug 15, 2026
71832d0
feat: expose provider subscription availability (#26)
roughcoder Aug 16, 2026
15debc7
chore: merge upstream T3 Code through 2026-08-17
roughcoder Aug 17, 2026
fcd7aaa
fix: harden upstream integration
roughcoder Aug 17, 2026
04bf72d
feat(chat): show spawned sessions as agents (#28)
roughcoder Aug 17, 2026
8c66770
Merge remote-tracking branch 'origin/main' into chore/sync-upstream-2…
roughcoder Aug 17, 2026
7d2c4ff
fix(git): use phoenix worktree branch prefix (#29)
roughcoder Aug 17, 2026
08155df
test(desktop): use Phoenix state root
roughcoder Aug 17, 2026
3e316bc
test(server): match supported service commands
roughcoder Aug 17, 2026
9669c37
chore: sync upstream T3 Code through 2026-08-17 (#30)
roughcoder Aug 17, 2026
5049647
fix(web): make spawned sessions reachable, and add a Sessions panel (…
roughcoder Aug 17, 2026
b421b13
feat: surface Claude subscription limits and compact child reports (#27)
roughcoder Aug 18, 2026
d397ae4
feat(sessions): deliver child reports to parents as queued messages (…
roughcoder Aug 18, 2026
97311d5
fix(usage): count every configured provider instance (#33)
roughcoder Aug 18, 2026
ba2e644
fix(server): a wedged turn no longer looks busy forever (#34)
roughcoder Aug 18, 2026
8d5975a
fix(server): persisted model selection changes can no longer bypass t…
roughcoder Aug 19, 2026
dabefb3
fix(server): settled children no longer hold their spawn slot forever…
roughcoder Aug 19, 2026
cf136f3
feat(contracts): thread migration command, event, and failover groups…
roughcoder Aug 19, 2026
2e5ea54
feat(server): classify Claude usage-limit signals (#39)
roughcoder Aug 19, 2026
69338ff
feat(web): warn in chat when the bound account nears its usage window…
roughcoder Aug 19, 2026
d3919c2
feat(server): handoff brief pipeline for thread migration (#43)
roughcoder Aug 19, 2026
6c269f9
feat(web): failover group management in provider settings (#44)
roughcoder Aug 19, 2026
778da25
feat(web): migrate threads across accounts from the picker and limit …
roughcoder Aug 19, 2026
c4d34a8
feat(mobile): warn in chat when the bound account nears its usage win…
roughcoder Aug 19, 2026
4bdb663
feat(server): conversation seeding at the adapter boundary (#40)
roughcoder Aug 19, 2026
61f83ad
feat(server): threads migrate across provider instances, with auto-fa…
roughcoder Aug 19, 2026
e91934b
feat(mobile): migrate threads across accounts from the picker and lim…
roughcoder Aug 19, 2026
4f72709
chore(web): adopt the shared thread-migration derivations from client…
roughcoder Aug 19, 2026
ecdb79f
ops: scaffold @phoenix/ops with durable job core
Aug 20, 2026
dc32fa6
ops: scheduler, workflow loader, Phoenix runner, HTTP callback
Aug 20, 2026
23ec2b9
ops: prospect-research workflow, docs, e2e hardening
Aug 20, 2026
7e40aff
chore: merge upstream T3 Code through 2026-08-19 (#61)
roughcoder Aug 20, 2026
3584603
chore: record upstream ancestry through f2d5fc91
roughcoder Aug 20, 2026
d6a3cd0
ci: give the test job headroom over its runtime (#63)
roughcoder Aug 20, 2026
57478c9
docs(operations): record upstream ancestry after a squash merge (#62)
roughcoder Aug 20, 2026
5e5ee51
feat(schedules): add environment-owned agent schedules (#64)
roughcoder Aug 20, 2026
763b7ff
fix(desktop): pin Clerk back to stable so the macOS DMG builds
roughcoder Aug 20, 2026
be66190
fix(server): refuse to start when the migration ledger disagrees with…
roughcoder Aug 20, 2026
0a81acf
fix(chat): only offer a usage-limit switch to threads the limit blocks
roughcoder Aug 20, 2026
e045c0a
ops: point prospect-research at the Goodbird CRM databases
Aug 20, 2026
8cb5b99
ops: prospect-research learns entity resolution and deeper person sweeps
Aug 20, 2026
4bf8f09
ops: give prospect-research Gabriel's actual outreach voice
Aug 20, 2026
e78395f
ops -> birdhouse: rename the service and its mental model
Aug 20, 2026
50ffc16
fix(birdhouse): keep the job worker alive and the attempt budget honest
gabrielsayers1 Aug 20, 2026
8a67e05
fix(birdhouse): guarantee every run reaches a terminal state
gabrielsayers1 Aug 20, 2026
097ab8f
fix(birdhouse): stop a bad tick from disabling every workflow
gabrielsayers1 Aug 20, 2026
d283b3b
fix(birdhouse): make startup and the Phoenix boundary fail loudly
gabrielsayers1 Aug 20, 2026
1438e59
fix(birdhouse): tell workflow agents that fetched content is data
gabrielsayers1 Aug 20, 2026
c8dc8b4
feat(birdhouse): give runs a way out, and jobs an end of life
gabrielsayers1 Aug 20, 2026
ee7f7ff
docs(birdhouse): record the service where maintainers will look for it
gabrielsayers1 Aug 20, 2026
60e1530
fix(birdhouse): put every run timestamp on the database clock
gabrielsayers1 Aug 20, 2026
a16341c
style(birdhouse): use namespace node imports so the package passes lint
gabrielsayers1 Aug 20, 2026
c6497a3
fix(birdhouse): point the lockfile at the renamed workspace directory
gabrielsayers1 Aug 20, 2026
328a775
Merge main into ops/company-os-hub
gabrielsayers1 Aug 20, 2026
eae6d72
fix(birdhouse): let the suite collect on a machine with no database
gabrielsayers1 Aug 20, 2026
cb899c1
fix(server): keep the dev-db slot collision error specific
gabrielsayers1 Aug 20, 2026
6021d47
Merge pull request #68 from goodbirdhq/fix/migrate-dev-db-slot-collision
gabrielsayers1 Aug 21, 2026
4d28c93
Merge main into ops/company-os-hub
gabrielsayers Aug 21, 2026
a5bce48
Merge pull request #66 from goodbirdhq/ops/company-os-hub
gabrielsayers1 Aug 21, 2026
1fe7993
fix(server): auto-continue truncated OpenCode streams instead of endi…
roughcoder Aug 21, 2026
4484e9a
feat(schedules): let agents manage schedules through the phoenix MCP
roughcoder Aug 20, 2026
0d5b34a
fix(schedules): close review findings on the agent schedules surface
roughcoder Aug 20, 2026
22a0151
fix(schedules): correct cadence and frequency reporting on the agent …
roughcoder Aug 21, 2026
fb06e4e
test(schedules): property-test the cadence humanizer against effect/Cron
roughcoder Aug 21, 2026
7c11f32
feat(usage): make subscription capacity group-aware (#67)
roughcoder Aug 21, 2026
20e0448
fix(server): harden OpenCode auto-continue against races and stale ev…
roughcoder Aug 21, 2026
6159aa2
style: format OpenCode adapter changes
roughcoder Aug 21, 2026
9d082be
feat(birdhouse): delegate timing to Phoenix Schedules
Aug 21, 2026
4bb7da0
Merge pull request #71 from goodbirdhq/ops/schedules-delegate
gabrielsayers1 Aug 21, 2026
62d5a90
fix(server): log OpenCode auto-continue recovery to the server trace
roughcoder Aug 21, 2026
c29196c
Merge pull request #70 from goodbirdhq/feat/schedules-mcp-surface
roughcoder Aug 21, 2026
b9e313c
Merge remote-tracking branch 'origin/main' into fix/opencode-truncate…
roughcoder Aug 21, 2026
6729645
Merge pull request #69 from goodbirdhq/fix/opencode-truncated-turn-au…
roughcoder Aug 21, 2026
70f7255
fix(birdhouse): run ping on Haiku, and sharpen the claim ticket
Aug 21, 2026
3e9127a
docs: retire the two-schedulers story
Aug 21, 2026
7e9633b
fix(birdhouse): ping needs full-access, because auto breaks Haiku
Aug 21, 2026
49f57e6
fix(birdhouse): a shadow run still has to report
Aug 21, 2026
ead472d
Merge pull request #72 from goodbirdhq/ops/ping-cheap-model
gabrielsayers1 Aug 21, 2026
803bd3c
fix(server): make stops always land and restarts clear phantom runnin…
roughcoder Aug 21, 2026
ceee0d5
fix(server): address review findings on stop settlement
roughcoder Aug 21, 2026
50c785c
Merge pull request #74 from goodbirdhq/fix/interrupt-clears-stuck-turns
roughcoder Aug 21, 2026
26bbb5f
fix(server): stamp OpenCode session errors with the turn they killed
roughcoder Aug 22, 2026
629c263
fix(web,mobile): collapse provider retry notices into one timeline row
roughcoder Aug 22, 2026
24982b7
Merge branch 'fix/collapse-provider-retry-rows'
roughcoder Aug 22, 2026
9dcacd3
feat(web): child sidebar rows show their provider, not their project
roughcoder Aug 22, 2026
b2752e6
feat(usage): include OpenCode activity (#77)
roughcoder Aug 22, 2026
61ffc6f
feat(environments): add host performance metrics (#78)
roughcoder Aug 22, 2026
d9438d1
refactor(birdhouse): retire the runtime — schedules read workflow fil…
Aug 22, 2026
e657464
perf(server): stop reloading whole thread histories on every event (#81)
roughcoder Aug 23, 2026
a4fd6a9
Merge pull request #80 from goodbirdhq/chore/retire-birdhouse-runtime
gabrielsayers1 Aug 24, 2026
aff52a4
chore: merge upstream T3 Code through v0.0.35
roughcoder Aug 27, 2026
0c56237
chore(mobile): move EAS/TestFlight identity to goodbird
roughcoder Sep 2, 2026
7bdb4f4
ci(mobile): enable the EAS production release train for this fork
roughcoder Sep 2, 2026
4dd81f1
ci(release): run the release workflow on GitHub-hosted runners
roughcoder Sep 2, 2026
9754d1a
ci(release): give jobs GitHub-runner-sized timeouts
roughcoder Sep 2, 2026
ef43245
ci(release): build only the macOS desktop targets for now
roughcoder Sep 2, 2026
6b44ecc
ci(release): let forks release without T3 Connect relay infrastructure
roughcoder Sep 2, 2026
edd52b2
ci(release): route release-app secret check through job env
roughcoder Sep 2, 2026
fddcacc
ci(release): park the Intel macOS build; ship Apple Silicon only
roughcoder Sep 2, 2026
ed780f2
Merge origin/main into chore/sync-upstream-2026-08-27
roughcoder Sep 2, 2026
86541f8
ci(preview): run desktop macOS preview on GitHub-hosted runners
roughcoder Sep 2, 2026
462b180
ci: move fork-owned workflows to Blacksmith runners
roughcoder Sep 2, 2026
27819b9
ci(release): publish only the artifact types the matrix builds
roughcoder Sep 2, 2026
b26a151
ci(mobile): park Android store builds until Play credentials exist
roughcoder Sep 2, 2026
1ac0d6f
chore: merge upstream T3 Code through v0.0.35 (#82)
roughcoder Sep 2, 2026
52fc580
ci: restore upstream Blacksmith runners and timeouts post-sync
roughcoder Sep 2, 2026
ac2adc7
ci(release): publish with gh instead of action-gh-release
roughcoder Sep 2, 2026
b8f7d32
feat: publish the CLI to npm as @goodbird/phoenix
roughcoder Sep 2, 2026
275a3ca
fix: npm scope is @goodbirdhq, matching the org
roughcoder Sep 2, 2026
ae830ae
fix: keep upstream's workspace package name; npm identity at publish …
roughcoder Sep 2, 2026
3723ce0
feat(server): restore managed background-service installs and updates
roughcoder Sep 2, 2026
399339c
chore(release): prepare v0.1.0
github-actions[bot] Sep 2, 2026
8873b45
ci(release): publish to npm via trusted publishing
roughcoder Sep 2, 2026
95b1ecd
chore: merge upstream T3 Code updates
roughcoder Sep 2, 2026
b0589b3
test(server): align service tests with restored install/update surface
roughcoder Sep 2, 2026
ec12791
chore: reconcile latest Phoenix main
roughcoder Sep 2, 2026
aaf2742
chore: merge latest Phoenix main
roughcoder Sep 2, 2026
3c752f6
fix(updates): retain Phoenix package lifecycle
roughcoder Sep 2, 2026
cc0c593
chore(release): prepare v0.1.1
github-actions[bot] Sep 2, 2026
453f424
ci(release): publish npm from a GitHub-hosted runner
roughcoder Sep 2, 2026
2528b7d
chore: merge latest upstream T3 Code updates
roughcoder Sep 2, 2026
c134379
chore: merge latest Phoenix release updates
roughcoder Sep 2, 2026
e9cdcea
fix: resolve upstream sync CI regressions
roughcoder Sep 2, 2026
1920cc1
fix(server): restore upstream reactor lifecycle
roughcoder Sep 2, 2026
4eea099
fix: restore Phoenix integration wiring
roughcoder Sep 3, 2026
b739b49
fix(opencode): keep provider approvals actionable
roughcoder Sep 4, 2026
b25bb4a
fix(sessions): inherit parent runtime mode when spawning
roughcoder Sep 4, 2026
7b19871
fix(migration): keep composers aligned after failover
roughcoder Sep 4, 2026
d1e2206
fix(web,mobile): stop flagging running tools as failed from partial o…
roughcoder Sep 4, 2026
1cdf502
fix(web): drop Working and Settle labels from sidebar rows
roughcoder Sep 4, 2026
292a25d
feat(web): render list_session_providers as a snapshot receipt (#85)
roughcoder Sep 4, 2026
bcc3ddb
feat(orchestration): child sessions get a working nervous system (#84)
roughcoder Sep 4, 2026
daa677a
chore(release): prepare v0.1.2
github-actions[bot] Sep 4, 2026
219bdc8
Merge remote-tracking branch 'origin/main' into chore/sync-upstream-2…
roughcoder Sep 4, 2026
ee6c693
fix: close final upstream sync review gaps
roughcoder Sep 4, 2026
e6ba07c
fix(mobile): use adaptive session status tokens
roughcoder Sep 4, 2026
a7866c3
feat(web): group sidebar conversations into expandable teams (#86)
roughcoder Sep 5, 2026
91c8222
feat(web): refine sidebar controls and navigation
roughcoder Sep 5, 2026
981125b
fix(web): preserve sidebar state and fit narrow layouts
roughcoder Sep 5, 2026
2e1d208
fix(web): reorder pinned threads against hidden neighbors
roughcoder Sep 5, 2026
0ad7eed
test(web): cover sidebar update menu states
roughcoder Sep 5, 2026
099211f
fix(web): polish sidebar review follow-ups
roughcoder Sep 5, 2026
9a559c7
Merge pull request #87 from goodbirdhq/feat/sidebar-controls
roughcoder Sep 5, 2026
8dd8bd1
chore(release): prepare v0.1.3
github-actions[bot] Sep 5, 2026
410f16d
fix(server): prevent background service downgrades
roughcoder Sep 5, 2026
f24898d
chore: merge reviewed upstream sync
roughcoder Sep 5, 2026
e5430db
chore(release): prepare v0.1.4
github-actions[bot] Sep 5, 2026
9e5a30c
feat(web): compact sidebar threads and clarify session status (#88)
roughcoder Sep 5, 2026
cf21d41
chore(release): prepare v0.1.5
github-actions[bot] Sep 5, 2026
6bf21bc
fix(web): expand session avatars on row hover and selection
roughcoder Sep 5, 2026
a518464
chore(release): prepare v0.1.6
github-actions[bot] Sep 5, 2026
ca9669d
feat(usage): replace reports with account and environment views (#89)
roughcoder Sep 5, 2026
5979609
chore(release): prepare v0.1.7
github-actions[bot] Sep 5, 2026
578d1fa
fix(usage): correct account sidebar and provider quota refreshes (#90)
roughcoder Sep 6, 2026
d337b80
chore(release): prepare v0.1.8
github-actions[bot] Sep 6, 2026
614aa23
fix(sessions): preserve delivery through interrupt recovery (#91)
roughcoder Sep 6, 2026
8c10d98
chore(release): prepare v0.1.9
github-actions[bot] Sep 6, 2026
43e2bb4
feat(mobile): bring desktop navigation and modal actions to native
roughcoder Sep 7, 2026
aee4f6a
feat(web): apply Phoenix appearance and compact session sidebar (#92)
roughcoder Sep 7, 2026
ab47503
fix(mobile): capture modal handle drags on Android
roughcoder Sep 7, 2026
1c99c4a
chore(release): prepare v0.1.10
github-actions[bot] Sep 7, 2026
ac56aff
fix(mobile): keep tablet navigation in one synchronized footer
roughcoder Sep 7, 2026
f427bf6
Merge remote-tracking branch 'origin/main' into feat/mobile-navigatio…
roughcoder Sep 7, 2026
6fc6d35
fix(mobile): retain failed sheet actions for retry
roughcoder Sep 7, 2026
c8a5bf4
fix(mobile): render nested agent groups
roughcoder Sep 7, 2026
55d22bd
fix(mobile): expose conversation and group actions to screen readers
roughcoder Sep 7, 2026
c3c0024
fix(mobile): restore focus after legacy delete confirmation
roughcoder Sep 7, 2026
5194ed1
fix(mobile): align agent chips and accessible identity with Paper
roughcoder Sep 7, 2026
95ee9a0
fix(mobile): match Paper row typography and announce busy actions
roughcoder Sep 7, 2026
a0a234a
fix(mobile): switch footer routes without duplicate roots
roughcoder Sep 7, 2026
2373bd3
fix(mobile): route sidebar footer through root navigation
roughcoder Sep 7, 2026
4649de3
fix(mobile): paginate pull requests by cursor
roughcoder Sep 7, 2026
fe89751
fix(mobile): subscribe footer to root navigation state
roughcoder Sep 7, 2026
6019dc5
fix(mobile): keep pull request pages current
roughcoder Sep 7, 2026
6b2a34b
fix(mobile): align queued rows with thread list
roughcoder Sep 7, 2026
537877d
fix(mobile): keep avatars in canonical row slots
roughcoder Sep 7, 2026
f52c745
fix(mobile): match avatar slot height
roughcoder Sep 7, 2026
80cab6e
fix(mobile): match queued identity circle
roughcoder Sep 7, 2026
9763f2f
fix(mobile): match paper avatar wrappers
roughcoder Sep 7, 2026
5376572
fix(mobile): complete fast pull request refreshes
roughcoder Sep 7, 2026
f258cc0
docs(mobile): clarify avatar badge overflow
roughcoder Sep 7, 2026
d527828
refactor(mobile): remove dead thread row actions
roughcoder Sep 7, 2026
82b3e76
refactor(mobile): remove unused delete alias
roughcoder Sep 7, 2026
b6786da
chore(mobile): bump TestFlight version to 1.0.4
roughcoder Sep 7, 2026
8f04085
fix(mobile): align session hierarchy and restore working motion
roughcoder Sep 7, 2026
dceb015
fix(mobile): support working avatars in global confirmations
roughcoder Sep 7, 2026
699e752
feat(usage): align desktop usage with Paper designs (#93)
roughcoder Sep 7, 2026
7910038
Merge pull request #94 from goodbirdhq/feat/mobile-navigation-modals
roughcoder Sep 7, 2026
82a9895
fix(web): correct sidebar spacing and activity indicators (#95)
roughcoder Sep 7, 2026
b87ccc1
chore(release): prepare v0.1.11
github-actions[bot] Sep 7, 2026
ea514d3
fix(mobile): restore pull to refresh on session lists (#96)
roughcoder Sep 7, 2026
707f171
feat(web): build environment management tabs and journeys (#97)
roughcoder Sep 8, 2026
9a3a02b
chore(release): prepare v0.1.12
github-actions[bot] Sep 8, 2026
9c97e8f
fix(web): refine environment tables and add search (#98)
roughcoder Sep 8, 2026
e4536d0
feat(web): build the schedules destination and sidebar (#99)
roughcoder Sep 8, 2026
64a785a
chore(release): prepare v0.1.13
github-actions[bot] Sep 8, 2026
4dc0569
feat(server): expose a reserved thread identity to agent sessions (#100)
blaffoy Sep 10, 2026
4e8a149
fix(mobile): replace T3 Android icons with Phoenix branding (#102)
roughcoder Sep 10, 2026
a31d2aa
feat(server): prompt agents to suggest session orchestration (#101)
roughcoder Sep 10, 2026
8f5b265
feat(sidebar): add attention-first session ordering (#103)
roughcoder Sep 10, 2026
79d489a
chore(mobile): bump app version to 1.0.5
roughcoder Sep 10, 2026
2ff1e4f
chore(release): prepare v0.1.14
github-actions[bot] Sep 10, 2026
d72c85b
fix(web): improve desktop update controls and release notes (#104)
roughcoder Sep 10, 2026
d173f24
fix(web): restore session orchestration toggle in general settings
roughcoder Sep 10, 2026
387b199
fix(sidebar): keep viewed results above running work (#105)
roughcoder Sep 10, 2026
9ca6e73
fix(web): share sidebar width across every page (#106)
roughcoder Sep 10, 2026
a0b36ce
feat(web): build the pull request workspace and sidebar (#107)
roughcoder Sep 10, 2026
71eddc8
chore(release): prepare v0.1.15
github-actions[bot] Sep 10, 2026
f7de01c
fix(mobile): hide parent and child session messages (#108)
roughcoder Sep 11, 2026
92cfebf
fix(auth): explain expired environment credentials instead of offerin…
gabrielsayers Sep 12, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .agents/skills/ios-debugger-agent/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: ios-debugger-agent
description: Build, launch, inspect, and drive iOS apps with the repository-configured XcodeBuildMCP server. Use on macOS for iOS Simulator builds, focused native test runs, semantic UI automation, screenshots, logs, or debugging, including T3 Code Mobile verification.
description: Build, launch, inspect, and drive iOS apps with the repository-configured XcodeBuildMCP server. Use on macOS for iOS Simulator builds, focused native test runs, semantic UI automation, screenshots, logs, or debugging, including Phoenix Mobile verification.
---

# iOS Debugger Agent
Expand Down
4 changes: 2 additions & 2 deletions .agents/skills/ios-simulator-browser/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: ios-simulator-browser
description: Stream an explicit iOS Simulator through pinned serve-sim into the T3 Code in-app browser or another agent browser. Use on Apple Silicon macOS when the user should watch simulator verification live or when browser-visible simulator evidence is needed.
description: Stream an explicit iOS Simulator through pinned serve-sim into the Phoenix in-app browser or another agent browser. Use on Apple Silicon macOS when the user should watch simulator verification live or when browser-visible simulator evidence is needed.
---

# iOS Simulator Browser
Expand All @@ -11,7 +11,7 @@ Use serve-sim as the shared visual feed for an iOS Simulator. Use `ios-debugger-

serve-sim `0.1.45` requires Apple Silicon macOS, Xcode command-line tools, and Node.js 20 or newer. If the host is unsupported, continue with XcodeBuildMCP screenshots and report that live streaming was unavailable.

When running inside T3 Code, use its product-native browser MCP to open the stream. Other agent hosts may use their own browser or preview surface.
When running inside Phoenix, use its product-native browser MCP to open the stream. Other agent hosts may use their own browser or preview surface.

Keep serve-sim on its default `127.0.0.1` binding. Do not expose its preview to a LAN or tunnel unless the user explicitly requests that access and the network is trusted; the preview includes a token-gated shell-execution route.

Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/ios-simulator-browser/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
interface:
display_name: "iOS Simulator Browser"
short_description: "Stream iOS Simulator in the browser"
default_prompt: "Use $ios-simulator-browser to stream the selected iOS Simulator into the T3 Code in-app browser."
default_prompt: "Use $ios-simulator-browser to stream the selected iOS Simulator into the Phoenix in-app browser."
4 changes: 2 additions & 2 deletions .agents/skills/test-t3-app/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: test-t3-app
description: Launch, retain, and test the T3 Code web app in isolated development environments, including first-try browser authentication with one-time pairing URLs, pairing-token recovery, worktree-safe state directories, cross-turn dev server lifecycle, and direct SQLite inspection or fixture seeding. Use when an agent needs to run T3 locally, iteratively test UI behavior with a human, recover from an expired or consumed pairing token, isolate dev state, or prepare test data in state.sqlite.
description: Launch, retain, and test the Phoenix web app in isolated development environments, including first-try browser authentication with one-time pairing URLs, pairing-token recovery, worktree-safe state directories, cross-turn dev server lifecycle, and direct SQLite inspection or fixture seeding. Use when an agent needs to run T3 locally, iteratively test UI behavior with a human, recover from an expired or consumed pairing token, isolate dev state, or prepare test data in state.sqlite.
---

# Test T3 App
Expand Down Expand Up @@ -28,7 +28,7 @@ The dev runner disables browser auto-open by default. Do not pass `--browser` du

### Verify a shared environment before human handoff

When another person will use the printed pairing URL, first open the shared origin without the pairing path or fragment in the controlled browser and confirm the T3 Code app loads. This browser navigation is required even when curl succeeds because browsers block some otherwise reachable ports before making a network request.
When another person will use the printed pairing URL, first open the shared origin without the pairing path or fragment in the controlled browser and confirm the Phoenix app loads. This browser navigation is required even when curl succeeds because browsers block some otherwise reachable ports before making a network request.

Do not open the other person's complete pairing URL during this reachability check; doing so consumes its one-time token. If the agent also needs an authenticated browser, create and consume a separate pairing token, then leave a fresh token for the other person.

Expand Down
30 changes: 15 additions & 15 deletions .agents/skills/test-t3-mobile/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: test-t3-mobile
description: Launch and test T3 Code Mobile on an iOS Simulator or Android Emulator against disposable local T3 environments, including Metro and dev-client reuse, native rebuild decisions, per-client pairing, seeded projects, semantic UI control, screenshots, and iOS serve-sim streaming. Use after mobile UI or native changes, when reproducing phone or tablet behavior, pairing an emulator to isolated state, or verifying mobile behavior on macOS, Linux, or Windows.
description: Launch and test Phoenix Mobile on an iOS Simulator or Android Emulator against disposable local T3 environments, including Metro and dev-client reuse, native rebuild decisions, per-client pairing, seeded projects, semantic UI control, screenshots, and iOS serve-sim streaming. Use after mobile UI or native changes, when reproducing phone or tablet behavior, pairing an emulator to isolated state, or verifying mobile behavior on macOS, Linux, or Windows.
---

# Test T3 Mobile
Expand Down Expand Up @@ -28,15 +28,15 @@ Do not treat unavailable iOS tooling as a blocker when Android is a valid repres

The development identity on both platforms is:

- App: `T3 Code Dev`
- Bundle/package identifier: `com.t3tools.t3code.dev`
- URL scheme: `t3code-dev`
- App: `Phoenix Dev`
- Bundle/package identifier: `com.goodbird.phoenix.dev`
- URL scheme: `phoenix-dev`

Bundle or package presence proves the correct variant, not native compatibility. Reuse it only when the current changes did not alter its Expo SDK, native dependencies, config plugins, entitlements, generated project, or native source.

## Start one disposable T3 environment

Run backend commands from the repository root. Use the ignored, worktree-local `.t3` directory or create a fresh directory with the host OS's temporary-directory mechanism. An explicit base directory stores state in `<base-dir>/userdata`; never point testing at shared `~/.t3` state.
Run backend commands from the repository root. Use the ignored, worktree-local `.phoenix` directory or create a fresh directory with the host OS's temporary-directory mechanism. An explicit base directory stores state in `<base-dir>/userdata`; never point testing at shared `~/.phoenix` state.

Seed a small number of meaningful Git projects before starting the backend:

Expand Down Expand Up @@ -72,7 +72,7 @@ Enter the complete `http://` origin to make the test transport explicit. Bare IP

Run Metro from `apps/mobile`.

1. Inspect any process on the intended Metro port and its `/status` response. Reuse it only when it is healthy, belongs to this worktree, and matches `APP_VARIANT=development`, `--dev-client`, and scheme `t3code-dev`.
1. Inspect any process on the intended Metro port and its `/status` response. Reuse it only when it is healthy, belongs to this worktree, and matches `APP_VARIANT=development`, `--dev-client`, and scheme `phoenix-dev`.
2. Never kill another worktree's Metro. Use a free explicit port when necessary.
3. Run `vp run dev:client` on the standard port. For another port, retain the complete development identity:

Expand All @@ -96,12 +96,12 @@ Use `ios-debugger-agent` to select one UDID and set these XcodeBuildMCP session
- Scheme: `T3CodeDev`
- Configuration: `Debug`
- Simulator ID: the selected UDID
- Bundle ID: `com.t3tools.t3code.dev`
- Bundle ID: `com.goodbird.phoenix.dev`

Check the installed client with:

```bash
xcrun simctl get_app_container <simulator-udid> com.t3tools.t3code.dev app
xcrun simctl get_app_container <simulator-udid> com.goodbird.phoenix.dev app
xcrun simctl openurl <simulator-udid> <printed-dev-client-url>
```

Expand All @@ -112,12 +112,12 @@ Accept the iOS confirmation prompt and dismiss the developer menu when it obscur
Select one running emulator serial from `adb devices` and check the installed client:

```bash
adb -s <emulator-serial> shell pm path com.t3tools.t3code.dev
adb -s <emulator-serial> shell pm path com.goodbird.phoenix.dev
adb -s <emulator-serial> reverse tcp:<metro-port> tcp:<metro-port>
adb -s <emulator-serial> shell am start -W \
-a android.intent.action.VIEW \
-d '<printed-dev-client-url>' \
com.t3tools.t3code.dev
com.goodbird.phoenix.dev
```

Do not start, stop, erase, or reconfigure an emulator owned by another task. Track and later stop only processes owned by this test.
Expand All @@ -134,12 +134,12 @@ Use the bundled helper from the repository root. It issues a fresh credential ag
android <emulator-serial> <server-port> <base-dir>
```

Run only the command for the selected platform. The helper uses `http://127.0.0.1:<server-port>` for iOS and `http://10.0.2.2:<server-port>` for Android. Pass a fifth argument only when testing a non-development URL scheme.
Run only the command for the selected platform. The helper uses `http://127.0.0.1:<server-port>` for iOS and `http://10.0.2.2:<server-port>` for Android. Pass a fifth argument only when testing a non-development URL scheme. Android resolves that scheme to its registered app instead of assuming the development package.

The helper opens this registered route:

```text
t3code-dev://connections/new?pairingUrl=<encoded-pairing-url>&autoConnect=1
phoenix-dev://connections/new?pairingUrl=<encoded-pairing-url>&autoConnect=1
```

The Add Environment route owns the behavior: `pairingUrl` prefills its normal host and token inputs, while `autoConnect=1` submits once in development builds and returns to Home after success. Without `autoConnect`, the same route only prefills the form for manual inspection.
Expand All @@ -154,7 +154,7 @@ Pairing credentials are secret, short-lived, and single-use. Create a different

### iOS

Use `snapshot_ui` and current element references from XcodeBuildMCP for taps and typing. Stream the same UDID through `ios-simulator-browser` so the user can watch in T3 Code when the host supports it. Use the stream as a visual feed rather than a reason to switch to fragile browser coordinates.
Use `snapshot_ui` and current element references from XcodeBuildMCP for taps and typing. Stream the same UDID through `ios-simulator-browser` so the user can watch in Phoenix when the host supports it. Use the stream as a visual feed rather than a reason to switch to fragile browser coordinates.

### Android

Expand All @@ -168,7 +168,7 @@ Exercise only the affected flow on one representative device unless the change s

1. Confirm the app connected to the intended disposable environment instead of merely rendering an empty disconnected state.
2. Capture the relevant final state.
3. Remove the disposable environment from T3 Code Dev.
3. Remove the disposable environment from Phoenix Dev.
4. Remove any `adb reverse` rule created for this test with `adb -s <emulator-serial> reverse --remove tcp:<metro-port>`.
5. Stop only the serve-sim, Metro, backend, emulator, and log processes started by this test.
6. Remove only base directories and temporary Git repositories deliberately created for this test. Preserve them when they contain useful reproduction evidence.
Expand All @@ -182,7 +182,7 @@ Keep local verification focused. Do not turn this workflow into a full repositor
- **The environment remains empty:** verify the platform-specific HTTP origin, use a fresh token, and confirm project seeding used the identical base directory.
- **A second client cannot pair:** pairing tokens are single-use; issue another token.
- **The pairing form opens but does not connect:** confirm the deep link uses the existing `connections/new` route, includes `autoConnect=1`, and carries a freshly minted encoded `pairingUrl`.
- **Pairing text changes case or punctuation:** do not retry semantic typing. Use `scripts/pair-client.sh`; the simulator keyboard layout and HID input path are not reliable for credentials.
- **Pairing text changes case or punctuation:** do not retry semantic typing. Use `.agents/skills/test-t3-mobile/scripts/pair-client.sh`; the simulator keyboard layout and HID input path are not reliable for credentials.
- **iOS semantic actions fail:** set explicit XcodeBuildMCP defaults and refresh with `snapshot_ui`.
- **Android cannot reach Metro:** verify `adb reverse` for the exact Metro port and relaunch the development-client URL.
- **Android cannot reach the backend:** use `10.0.2.2`, not `127.0.0.1`, for the Android Emulator.
4 changes: 2 additions & 2 deletions .agents/skills/test-t3-mobile/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
interface:
display_name: "Test T3 Mobile"
short_description: "Test T3 Code on iOS or Android"
default_prompt: "Use $test-t3-mobile to launch T3 Code against an isolated backend and verify the affected flow on an available simulator or emulator."
short_description: "Test Phoenix on iOS or Android"
default_prompt: "Use $test-t3-mobile to launch Phoenix against an isolated backend and verify the affected flow on an available simulator or emulator."
11 changes: 8 additions & 3 deletions .agents/skills/test-t3-mobile/scripts/pair-client.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,12 @@ platform="$1"
device_id="$2"
server_port="$3"
base_dir="$4"
url_scheme="${5:-t3code-dev}"
url_scheme="${5:-phoenix-dev}"

if [[ ! "$url_scheme" =~ ^[A-Za-z][A-Za-z0-9+.-]*$ ]]; then
echo "URL scheme must follow RFC 3986 scheme syntax." >&2
exit 2
fi

case "$platform" in
ios)
Expand All @@ -31,7 +36,7 @@ repo_root="$(git rev-parse --show-toplevel)"
cd "$repo_root"

if ! pairing_output="$({
T3CODE_PORT="$server_port" node apps/server/src/bin.ts auth pairing create \
PHOENIX_PORT="$server_port" node apps/server/src/bin.ts auth pairing create \
--base-dir "$base_dir" \
--base-url "$mobile_origin" \
--ttl 15m \
Expand Down Expand Up @@ -64,7 +69,7 @@ case "$platform" in
# adb shell re-joins its arguments and evaluates them through the device
# shell, so the deep link's `?`/`&` must be quoted once more for that shell.
adb -s "$device_id" shell \
"am start -W -a android.intent.action.VIEW -d '$deep_link' com.t3tools.t3code.dev" \
"am start -W -a android.intent.action.VIEW -d '$deep_link'" \
>/dev/null
;;
esac
Expand Down
14 changes: 7 additions & 7 deletions .cursor/rules/cursor-cloud.mdc
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
description: Cursor Cloud environment setup and run notes for T3 Code (Cursor-specific; not for other editors/CI)
description: Cursor Cloud environment setup and run notes for Phoenix (Cursor-specific; not for other editors/CI)
alwaysApply: true
---

# Cursor Cloud specific instructions

These notes apply only to Cursor Cloud agents (kept out of the shared `AGENTS.md` since T3 Code is
These notes apply only to Cursor Cloud agents (kept out of the shared `AGENTS.md` since Phoenix is
developed in many places). They cover the pre-provisioned VM environment and non-obvious run caveats.

## Toolchain
Expand All @@ -22,14 +22,14 @@ Pre-installed and wired into login shells (`~/.bashrc`/`~/.profile`): Node 24 (v

## Running the web app

- `npm run dev` (from repo root) starts contracts (watch), web (Vite, port 5733), and the server
(`node --watch`, port 13773) together, auto-wiring `VITE_HTTP_URL`/`VITE_WS_URL`. Use
- `npm run dev` (from repo root) starts contracts (watch), web (Vite, port 5833), and the server
(`node --watch`, port 13873) together, auto-wiring `VITE_HTTP_URL`/`VITE_WS_URL`. Use
`npm run dev:server` / `npm run dev:web` for one side. If base ports are taken it auto-offsets to
the next free pair, so read the actual ports from stdout. Avoid production `build`/`start` in dev.
- Auth/pairing: the server is unauthenticated by default and prints a pairing URL to stdout on startup
(e.g. `http://localhost:5733/pair#token=XXXX`). Open that URL in the browser to pair before the web
UI can talk to the server. Server state (SQLite, auth, projects) lives under `~/.t3`
(`T3CODE_HOME`); multiple `npm run dev` instances bind different ports but share that same DB.
(e.g. `http://localhost:5833/pair#token=XXXX`). Open that URL in the browser to pair before the web
UI can talk to the server. Server state (SQLite, auth, projects) lives under `~/.phoenix`
(`PHOENIX_HOME`); multiple `npm run dev` instances bind different ports but share that same DB.
- Agent providers are external CLIs (`codex`, `claude`, `cursor-agent`, `opencode`) probed on `PATH`.
Without one installed the UI loads but no agent can run. Claude Code
(`npm i -g @anthropic-ai/claude-code`) works headlessly using `ANTHROPIC_API_KEY` from the
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "T3 Code Dev",
"name": "Phoenix Dev",
"image": "debian:bookworm",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ body:
attributes:
value: |
Use this form for broken behavior, regressions, crashes, or reliability problems.
Feature requests belong in [Discussions](https://github.com/pingdotgg/t3code/discussions/categories/ideas).
Feature requests should use a blank issue in the Phoenix repository.
Search existing issues first and keep the report focused on one problem.

- type: checkboxes
Expand Down
6 changes: 1 addition & 5 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
blank_issues_enabled: false
contact_links:
- name: Feature request
url: https://github.com/pingdotgg/t3code/discussions/categories/ideas
about: Suggest an improvement or new capability in Discussions.
blank_issues_enabled: true
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/via-triage.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
name: Triage report
description: Filed with `npx t3 triage`, where a coding agent investigated the machine. For hand-written reports use the bug report template instead.
description: Filed with `phoenix triage`, where a coding agent investigated the machine. For hand-written reports use the bug report template instead.
labels:
- via-triage
body:
- type: markdown
attributes:
value: |
This structure is what `t3 triage` agents follow. Keep one problem per issue
This structure is what `phoenix triage` agents follow. Keep one problem per issue
and redact secrets and home directory paths from anything you paste.

- type: textarea
Expand Down Expand Up @@ -37,7 +37,7 @@ body:
id: version
attributes:
label: Version
description: Installed t3 version or commit.
description: Installed Phoenix version or commit.
placeholder: 0.0.33
validations:
required: true
Expand Down Expand Up @@ -75,4 +75,4 @@ body:
attributes:
label: Filed by
description: Which agent and model produced this report.
placeholder: claude (opus-5) via t3 triage
placeholder: claude (opus-5) via phoenix triage
Loading
Loading