Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1907 commits
Select commit Hold shift + click to select a range
8bb29f5
fix(server): bound Git process bursts to keep connections responsive …
Bil0000 Sep 15, 2026
f5ee81c
fix(server): keep VCS waits from blocking turn completion (#11970)
Vrtak-CZ Sep 17, 2026
65586a2
test(orchestration): preserve admission and runtime fences for delaye…
rynfar Sep 17, 2026
ad808bf
Merge pull request #588 from pylon-code/upstream/2026-09-17-checkpoin…
rynfar Sep 17, 2026
eb61689
Merge pull request #589 from pylon-code/upstream/2026-09-17-client-re…
rynfar Sep 17, 2026
1eedd67
Merge pull request #590 from pylon-code/upstream/2026-09-17-git-respo…
rynfar Sep 17, 2026
7d2c08c
fix(server): reuse Git index metadata during checkpoint capture (#10792)
im-kvijay Sep 15, 2026
5d7dcf5
fix(server): keep large sparse checkouts on the fast checkpoint path …
vedprakash2302 Sep 17, 2026
a9bca11
docs: record checkpoint performance adoption
rynfar Sep 17, 2026
e940e1c
feat(web): nest delegated threads under their parent in the sidebar (…
rynfar Sep 17, 2026
ac4c1ad
docs: record the delegation defaults durable fact (#584)
rynfar Sep 17, 2026
f3788ae
Merge pull request #592 from pylon-code/upstream/2026-09-17-checkpoin…
rynfar Sep 17, 2026
f4dfff7
feat(web): switch saved environments off instead of removing them (#1…
t3dotgg Sep 13, 2026
b5464f4
fix(mobile): block incompatible server connections (#11974)
juliusmarminge Sep 15, 2026
1097c0f
fix(clients): disable incompatible environments during discovery (#11…
juliusmarminge Sep 16, 2026
0113ff1
fix(clients): show unsupported environments as neutral rows with thei…
juliusmarminge Sep 16, 2026
1c1bb34
fix(clients): hold the discovered machine icon across relay refreshes…
juliusmarminge Sep 16, 2026
ec10a39
fix(connections): allow explicit compatibility recovery in Pylon
rynfar Sep 17, 2026
f0b455f
test(mobile): isolate themed switch in connection row coverage
rynfar Sep 17, 2026
29c9dcf
feat(delegation): add routing preference and child monitoring (#593)
rynfar Sep 17, 2026
81975aa
Merge pull request #595 from pylon-code/upstream/2026-09-17-environme…
rynfar Sep 17, 2026
66dc934
fix(delegation): reuse native agent monitoring presentation (#596)
rynfar Sep 17, 2026
58b25c3
fix(agents): preserve background completion across parent turns
rynfar Sep 17, 2026
90ead10
fix(chat): keep user input outside collapsed work (#11363)
maria-rcks Sep 12, 2026
0fac8a0
fix(web): complete thread status icons and keep input threads promine…
maria-rcks Sep 12, 2026
1ace215
fix(web): preserve thread reading positions (#12144)
maria-rcks Sep 17, 2026
2c05062
test(agents): narrow persisted progress assertion safely
rynfar Sep 17, 2026
3ab72dc
fix(chat): bound position recovery and preserve Pylon thread states
rynfar Sep 17, 2026
31a5464
Merge pull request #599 from pylon-code/upstream/2026-09-17-thread-re…
rynfar Sep 17, 2026
7911031
fix(desktop): keep the native preview User-Agent so Turnstile passes …
akriaueno Sep 12, 2026
9509e05
fix(web): preserve preview focus on window return (#11444)
Lucenx9 Sep 12, 2026
6952e43
test(preview): verify Pylon native identity and record upstream sources
rynfar Sep 17, 2026
f9aac53
feat(delegation): resume parents on child lifecycle updates
rynfar Sep 17, 2026
ee8d9ff
Merge pull request #600 from pylon-code/upstream/2026-09-17-preview-r…
rynfar Sep 17, 2026
e90f73f
fix(antigravity): render system task notices as command results (#602)
rynfar Sep 17, 2026
629f3ac
Merge pull request #597 from pylon-code/fix/native-agent-completion-s…
rynfar Sep 17, 2026
b2ca713
Merge pull request #603 from pylon-code/feat/delegation-parent-follow…
rynfar Sep 17, 2026
2ed2480
feat(server): cross-provider collaborative browser and device guidanc…
rynfar Sep 17, 2026
49f2f26
fix(prime): cancel interrupted turn and rearm quiescence after subage…
rynfar Sep 17, 2026
f03a616
fix(prime): address parent review on quiescence barrier and correlate…
rynfar Sep 17, 2026
651cbac
test(prime): verify background barrier generations after stop
rynfar Sep 17, 2026
ad33250
Merge pull request #606 from pylon-code/fix/prime-stop-subagents
rynfar Sep 17, 2026
93c98e1
fix(server): fall back when new worktrees are unavailable (#6208)
tris203 Sep 13, 2026
9d2cb69
feat(web): show each worktree setup step and let users cancel it (#11…
t3dotgg Sep 14, 2026
51e0b86
feat(web): inline worktree setup rows and async setup scripts (#11832)
juliusmarminge Sep 15, 2026
478c48d
fix(server): disable color probes in worktree setup (#11843)
juliusmarminge Sep 15, 2026
37cd8c5
fix: keep worktree setup visible after leaving and reopening the thre…
t3dotgg Sep 15, 2026
2961cf6
feat(server): persist the worktree setup send and progress on the thr…
juliusmarminge Sep 15, 2026
86f2979
fix(web): keep the composer ready during background worktree setup (#…
Bil0000 Sep 15, 2026
5248565
fix(web): stop the worktree setup card from flashing and shifting (#1…
juliusmarminge Sep 16, 2026
d39ab2d
fix(server): settle cancelled worktree setup before rollback (#12176)
juliusmarminge Sep 17, 2026
30decc9
feat(mobile): port worktree setup progress and agent handoff (#12177)
juliusmarminge Sep 17, 2026
db1e0bd
fix(worktrees): preserve Pylon setup ownership and draft recovery
rynfar Sep 17, 2026
b60c5a4
chore(web): keep draft lifecycle helper private
rynfar Sep 17, 2026
01c1f50
fix(mobile): keep setup sheet actions responsive
rynfar Sep 17, 2026
738b5ed
Merge pull request #608 from pylon-code/upstream/2026-09-17-worktree-…
rynfar Sep 17, 2026
ec9f2e1
fix(server): keep Claude rewind when fork history length changes (#11…
maria-rcks Sep 16, 2026
d354295
test(server): adversarial coverage for Claude rewind fork remapping a…
rynfar Sep 18, 2026
07ee2cd
test(server): align mock fork message content with retained turns in …
rynfar Sep 18, 2026
67171d0
docs: record Claude rewind upstream disposition
rynfar Sep 18, 2026
62c4f81
Merge pull request #612 from pylon-code/upstream/2026-09-17-claude-re…
rynfar Sep 18, 2026
ad88a0a
fix(usage): respect provider account homes (#11485)
maria-rcks Sep 18, 2026
9ce7bc4
fix(server): stop refreshing providers on every config subscription (…
juliusmarminge Sep 14, 2026
ab46c56
test(server): verify config snapshot, explicit refresh, startup, remo…
rynfar Sep 18, 2026
68342e2
fix(server): explain how to configure a missing Codex executable (#11…
shivamhwp Sep 15, 2026
ef07646
test(server): add regression and adversarial tests for codex missing …
rynfar Sep 18, 2026
4582368
test(desktop): cover WSL version-managed Node discovery and PATH forw…
akj Sep 18, 2026
693fd63
fix(usage): anchor relative configured Claude homePath to homedir
rynfar Sep 18, 2026
ff33565
test(usage): compare canonical transcript paths across platforms
rynfar Sep 18, 2026
4048837
test(usage): gate concurrent scans on canonical transcript directory
rynfar Sep 18, 2026
8bff593
docs: record provider discovery and WSL upstream dispositions
rynfar Sep 18, 2026
16f064f
docs(usage): recommend portable absolute account paths
rynfar Sep 18, 2026
2e24ecd
Merge pull request #613 from pylon-code/upstream/2026-09-17-provider-…
rynfar Sep 18, 2026
c7fde6f
feat: add ACP prompt liveness and truthful forced stops (#609)
rynfar Sep 18, 2026
3378d65
fix(prime): retain safe session closure diagnostics (#607)
rynfar Sep 18, 2026
64dfa37
feat(antigravity): show account quotas, native usage, and context (#610)
rynfar Sep 18, 2026
75ef898
fix(review): show complete counts and load large diffs progressively …
tris203 Sep 16, 2026
b9ea909
feat(web): choose the default diff file state (#11484)
maria-rcks Sep 13, 2026
327a544
Preserve diff tree order and collapsed folders (#11931)
juliusmarminge Sep 15, 2026
41c96b4
fix(diff): collapse files by default (#12190)
maria-rcks Sep 17, 2026
5687aed
fix(web): prioritize linked pull requests over automatic diffs (#12142)
maria-rcks Sep 16, 2026
5cbcd6f
fix(web): default diff panel to working tree (#12139)
maria-rcks Sep 16, 2026
e806bf5
docs(review): explain progressive diffs and panel defaults
rynfar Sep 18, 2026
7ec2097
docs(upstream): record six review and diff adoptions
rynfar Sep 18, 2026
1095fc3
Merge pull request #616 from pylon-code/upstream/2026-09-18-review-diffs
rynfar Sep 18, 2026
3a0d8e4
fix(antigravity): do not treat quoted errors as session failures (#618)
rynfar Sep 18, 2026
47e5267
fix(web): keep PR controls readable in narrow panels (#11962)
Bil0000 Sep 15, 2026
82cb796
fix(web): submit PR comments with Cmd/Ctrl+Enter (#11994)
flamboh Sep 16, 2026
6d013ab
feat(web): make pull request comments easier to scan (#12150)
maria-rcks Sep 17, 2026
9a9906f
fix(web): show author avatars in pull request previews (#12125)
extoci Sep 17, 2026
a5b456a
fix(web): fall back when pull request avatars fail (#11728)
tastelessjolt Sep 17, 2026
eb8a330
test(review): cover comment shortcuts and avatar recovery
rynfar Sep 18, 2026
94578d9
fix(review): correct bot links and defer resolved comment rendering
rynfar Sep 18, 2026
6bf51fa
docs(upstream): record five PR review adoptions
rynfar Sep 18, 2026
a85762e
Merge pull request #621 from pylon-code/upstream/2026-09-18-pr-review
rynfar Sep 18, 2026
6b71f09
fix(delegation): observe completed children as completed after a sess…
rynfar Sep 18, 2026
24b53b7
fix(delegation): baseline changed child observations at startup
rynfar Sep 18, 2026
4d2ee57
fix(web): hide delegation bookkeeping rows from the work log
rynfar Sep 18, 2026
ba2234b
fix(mobile): hide delegation bookkeeping rows from the feed
rynfar Sep 18, 2026
76aeefb
docs(delegation): document observation precedence and durable fact
rynfar Sep 18, 2026
6400031
docs(delegation): align the internals doc and durable fact with the plan
rynfar Sep 18, 2026
042b4d4
fix(server): keep checkpoint probes from reviving stopped sessions
rynfar Sep 18, 2026
2a63f7b
Merge pull request #623 from pylon-code/fix/delegation-observation-truth
rynfar Sep 18, 2026
1da5ba3
fix: collapse delegated threads and suppress child notifications
rynfar Sep 18, 2026
3bae09e
fix: keep alerts for delegated children blocked on approval or input
rynfar Sep 18, 2026
a070b5e
Merge pull request #620 from pylon-code/fix/delegation-sidebar-notifi…
rynfar Sep 18, 2026
97705aa
test(pair): contract and failing tests for the pair toolkit
rynfar Sep 18, 2026
703591d
test(pair): type the reserved-key test per call
rynfar Sep 18, 2026
315445b
Merge pull request #624 from pylon-code/fix/provider-session-incarnat…
rynfar Sep 18, 2026
bb3545e
fix: reduce GitHub quota use with sharing enabled (#11888)
Bil0000 Sep 15, 2026
70b1531
fix(web): reuse cached GitHub PR details across entry points (#12168)
maria-rcks Sep 17, 2026
b1961b7
test(server): use Pylon summary reference contract
rynfar Sep 18, 2026
742f353
fix(server): do not auto-settle a thread while its delegated work is …
rynfar Sep 18, 2026
87fb720
docs: record PR cache and quota adoption
rynfar Sep 18, 2026
3721cac
feat(pair): pure rules for the pair executor
rynfar Sep 18, 2026
4670bfa
feat(pair): start, brief, await, and stop a pair executor
rynfar Sep 18, 2026
7688198
feat(delegation): reserve the pair key for the pair toolkit
rynfar Sep 18, 2026
ec70a96
feat(pair): register the pair toolkit and label its tools
rynfar Sep 18, 2026
9ba2349
docs(pair): describe the pair executor
rynfar Sep 18, 2026
23b3c0f
fix(pair): check the capability first and describe the executor accur…
rynfar Sep 18, 2026
6d8ebeb
Merge pull request #626 from pylon-code/upstream/2026-09-18-pr-effici…
rynfar Sep 18, 2026
c17377e
fix(web): show private repository media in pull request tabs (#11706)
maria-rcks Sep 16, 2026
eee255e
fix(media): reject malformed redirects and document private access
rynfar Sep 18, 2026
c8ba0a1
refactor(web): centralize pull request icon state presentation (#11144)
flamboh Sep 16, 2026
e8f21e2
fix(web): make copy PR link discoverable in keybindings (#11826)
Bil0000 Sep 15, 2026
3f8cb36
test(web): remove obsolete icon helper import
rynfar Sep 18, 2026
9bcbf71
docs: record authenticated PR media adoption
rynfar Sep 18, 2026
5c2b318
docs: record PR presentation adoption
rynfar Sep 18, 2026
3810d2f
Merge pull request #627 from pylon-code/fix/auto-settle-live-children
rynfar Sep 18, 2026
000351c
docs: keep parallel PR adoption records mergeable
rynfar Sep 18, 2026
255c9e5
style(web): format the shared PR context glyph
rynfar Sep 18, 2026
e22fa15
Merge pull request #628 from pylon-code/feat/pair-toolkit
rynfar Sep 18, 2026
b8a1c4e
Merge pull request #629 from pylon-code/upstream/2026-09-18-pr-media
rynfar Sep 18, 2026
ff2bcb3
test(pair): contract, pair protocol, and failing tests for session-sc…
rynfar Sep 18, 2026
cad378d
refactor(pair): keep the pure pair rules free of service imports
rynfar Sep 18, 2026
94cd689
feat(pair): refuse a lead whose subagents cannot be held
rynfar Sep 18, 2026
71a2407
feat(pair): return the lead protocol and refuse unsupported leads
rynfar Sep 18, 2026
3275a03
feat(pair): mark a session as paired when its executor exists
rynfar Sep 18, 2026
6f4c8ea
feat(pair): hold the lead's own subagents and carry the pair protocol…
rynfar Sep 18, 2026
5ede7bb
docs(pair): explain session-scoped pairing and remove duplicated sect…
rynfar Sep 18, 2026
3d28d42
Merge remote-tracking branch 'origin/pylon' into test/prime-native-no…
rynfar Sep 18, 2026
6588d50
Merge pull request #630 from pylon-code/upstream/2026-09-18-pr-presen…
rynfar Sep 18, 2026
43c076a
Merge pull request #631 from pylon-code/feat/pair-session-scope
rynfar Sep 18, 2026
d791b71
test(pair): contract and failing tests for the pair lifecycle
rynfar Sep 18, 2026
349243e
feat(pair): pure rules for what a lead's lifecycle means for its exec…
rynfar Sep 18, 2026
2df37c0
feat(pair): keep the executor in step with its lead
rynfar Sep 18, 2026
519b8b0
feat(pair): start the pair lifecycle reactor with the server
rynfar Sep 18, 2026
4e22745
feat(pair): do not reap an executor while its lead is mid-turn
rynfar Sep 18, 2026
9fa8cfc
docs(pair): make the lead protocol test-first and describe the pair l…
rynfar Sep 18, 2026
dd7189c
Merge pull request #632 from pylon-code/feat/pair-lifecycle
rynfar Sep 18, 2026
7e94eeb
test(pair): contract and failing tests for protected paths
rynfar Sep 18, 2026
d2f00f4
feat(pair): pure rules for protected paths
rynfar Sep 18, 2026
fc7235f
feat(pair): record the lead's protected paths and report changes
rynfar Sep 18, 2026
9ba86b6
docs(pair): teach the lead protocol about protected paths
rynfar Sep 18, 2026
85dd7e6
test(pair): failing tests for the executor following its lead's worktree
rynfar Sep 18, 2026
742f2f0
feat(pair): move the executor into its lead's worktree before briefin…
rynfar Sep 18, 2026
5a0add2
docs(pair): describe how the executor follows its lead's worktree
rynfar Sep 18, 2026
7c450b5
fix(prime): accept attributed Python working messages
rynfar Sep 18, 2026
5551f31
test(pair): shared executor id and the client pair state contract
rynfar Sep 18, 2026
591fd5b
feat(pair): client pair state shared by web and mobile
rynfar Sep 18, 2026
d7bc5f3
test(delegation): contract and failing tests for the delegation notice
rynfar Sep 18, 2026
e49504b
feat(delegation): parse the automatic wake message into a notice
rynfar Sep 18, 2026
dd6c7f3
feat(web): a compact row for delegation notices
rynfar Sep 18, 2026
0af2922
feat(web): show delegation wake messages as a notice
rynfar Sep 18, 2026
6a25f64
feat(mobile): show delegation wake messages as a notice
rynfar Sep 18, 2026
f7da650
fix(web): keep the message row's hooks unconditional around the deleg…
rynfar Sep 18, 2026
2c6a910
Merge pull request #633 from pylon-code/feat/pair-guard
rynfar Sep 18, 2026
1ff50ce
fix(prime): recover fast completed prompts from verified snapshots
rynfar Sep 18, 2026
2f01714
Merge pull request #634 from pylon-code/feat/delegation-notice
rynfar Sep 18, 2026
2b6007f
Merge pull request #577 from pylon-code/test/prime-native-notice-acce…
rynfar Sep 18, 2026
da60fb9
fix(ci): provision uv for Prime artifact graduation
rynfar Sep 18, 2026
93931e7
Merge pull request #637 from pylon-code/fix/prime-linux-graduation
rynfar Sep 18, 2026
8f2df02
feat(web): pair a thread with an executor from the composer (#636)
rynfar Sep 18, 2026
6468f56
fix(pair): refuse a Codex lead, name the pair tools, and end paired m…
rynfar Sep 18, 2026
6755d9a
feat(delegation): skip the wake for a completion the parent already r…
rynfar Sep 18, 2026
2d75ab3
fix(pair): pair_await waits the whole cap so a lead cannot poll (#640)
rynfar Sep 18, 2026
e276106
fix(prime): verify signed publications in Electron (#641)
rynfar Sep 18, 2026
d001fa4
fix(codex): send Pylon's instructions when a thread starts (#642)
rynfar Sep 18, 2026
463be37
test(pair): advance the clock by the whole await cap (#643)
rynfar Sep 18, 2026
f2a9637
feat(pair): let Codex lead a pair (#644)
rynfar Sep 18, 2026
36bfbf4
fix(prime): recover settled legacy ownership during managed install (…
rynfar Sep 18, 2026
933d6f7
feat(pair): pair without the Pylon delegation setting (#648)
rynfar Sep 18, 2026
bff59e8
fix(pair): pair_await lists the latest turn's files only (#651)
rynfar Sep 18, 2026
6ca905c
fix(pair): a paired thread briefs its executor instead of fanning out…
rynfar Sep 18, 2026
4be539f
fix(server): bound provider event log records and pass Codex images b…
rynfar Sep 18, 2026
16c373e
fix(pair): no argument turns pair_await or delegated_thread_status in…
rynfar Sep 18, 2026
1045c63
feat(pair): delete executors left behind by abandoned drafts (#656)
rynfar Sep 18, 2026
e397226
feat(pair): pair_reset gives the executor a fresh context (#657)
rynfar Sep 18, 2026
fe0c286
feat(pair): refuse a rewind while the executor is working (#658)
rynfar Sep 18, 2026
404c4a3
feat(web): implement a plan through the executor, and stop it from th…
rynfar Sep 18, 2026
857d959
feat(pair): hold a paired lead's own subagent depth at zero where the…
rynfar Sep 18, 2026
c85f7de
chore(marketing): skip Vercel builds that do not touch the site (#662)
rynfar Sep 18, 2026
a3bb71b
feat(mobile): show a thread's pair on a phone and keep executors out …
rynfar Sep 18, 2026
8a3bf96
feat(mobile): turn a pair on and off from the phone (#663)
rynfar Sep 18, 2026
6bd5414
fix(prime): retry provider admission after ownership recovery (#664)
rynfar Sep 19, 2026
620c386
fix(server): harden checkpoint capture and reject file rewind in shar…
rynfar Sep 19, 2026
2725b65
fix(antigravity): restore steering and responsive session controls (#…
rynfar Sep 19, 2026
a794e5b
fix(server): adopt idle provider runtimes with unbound session incarn…
rynfar Sep 19, 2026
d08de0e
fix(prime): keep sessions open while long replies stream after a resy…
rynfar Sep 19, 2026
4e421f1
fix(web): keep composer banners readable and stop scroll jumps when t…
rynfar Sep 19, 2026
eea1ff3
fix(web): fix folder links, sidebar search and diff symlink crashes (…
rynfar Sep 19, 2026
eb73be4
refactor: remove Pylon pair mode and thread delegation (#673)
rynfar Sep 19, 2026
b47e110
fix(server): defer recovered OpenCode tools until startup activates (…
rynfar Sep 19, 2026
4919dc9
fix(antigravity): render system task notices mixed with narration (#675)
rynfar Sep 19, 2026
1e4908e
fix(provider): discard retired admission on session recovery (#677)
rynfar Sep 19, 2026
628e1b7
fix(antigravity): publish quiet responses before prompt completion (#…
rynfar Sep 19, 2026
efff40d
feat(web): expose each chat message as a heading for screen readers (…
rynfar Sep 20, 2026
6f3f0aa
feat(web): add compact sidebar rail and compact thread row density (#…
rynfar Sep 20, 2026
ee01ed6
docs(upstream): record Cycle #667 and Cycle #669 adoptions in review …
rynfar Sep 20, 2026
67d5439
fix(web): preserve question draft text, desktop CSP screenshot captur…
rynfar Sep 20, 2026
6171b24
fix(runtime): empty Claude home continuation, ACP session start stder…
rynfar Sep 20, 2026
1e07b66
fix: web chat polish, diff whitespace, and external editor discovery …
rynfar Sep 20, 2026
f73a324
fix(server,acp): diff cache eviction, ACP elicitation, permission app…
rynfar Sep 20, 2026
14be296
docs(upstream): record Cycle #685 adoptions in review ledger (#688)
rynfar Sep 20, 2026
fbc0ef1
feat(observability): export log records and desktop main process tele…
rynfar Sep 20, 2026
6a35006
docs(upstream): record Cycle #689 adoptions in review ledger (#691)
rynfar Sep 20, 2026
c4e610e
fix(upstream): integrate batch 1 server, runtime, and build reliabili…
rynfar Sep 20, 2026
c37dc99
feat(web,mobile): adopt upstream PR list blocked sorting and mobile p…
rynfar Sep 21, 2026
d4eb288
feat(web,mobile,runtime): integrate batch 3 web interaction, composer…
rynfar Sep 21, 2026
a43fcfa
feat(device,preview): integrate batch 4 simulator stream reliability …
rynfar Sep 21, 2026
37cf559
feat(pull-request): adopt upstream PR presentation, row layout, and p…
rynfar Sep 21, 2026
ee4a99a
feat(review,attachments): word-wrap mobile diffs, raise attachment li…
rynfar Sep 21, 2026
3a4076a
feat(composer,device): adopt Batch 7 upstream composer controls and h…
rynfar Sep 21, 2026
43bf0f4
fix(antigravity): bound silent tool sessions (#676)
rynfar Sep 21, 2026
35d19f4
fix(web): decide the composer strip from the controls it will draw (#…
rynfar Sep 21, 2026
ced0cfb
docs(mobile): clarify approval tint contrast (#204)
rynfar Sep 21, 2026
9be6a71
docs(skills): remove standalone simulator browser (#524)
rynfar Sep 21, 2026
80c6a9e
fix(clients): restore upstream system font defaults (#203)
rynfar Sep 21, 2026
3e1492d
fix(vcs): preserve index timestamp on review index to avoid racy stat…
rynfar Sep 21, 2026
9d68164
fix(test): use pinned DEVICE_HUB_VERSION in LocalDeviceHost test fixt…
rynfar Sep 21, 2026
5c25398
fix(antigravity): preserve assistant turn response during background …
rynfar Sep 21, 2026
de96f49
fix(prime): handle prompt defects and avoid terminal quiescence hangs…
rynfar Sep 21, 2026
a1663cc
fix(preview): isolate keyboard focus during automation and indicate a…
rynfar Sep 21, 2026
9e35174
fix(release): increase hosted web deploy timeout and degrade graceful…
rynfar Sep 21, 2026
ab641cd
fix(web): prevent maximum update depth loop in ProviderModelPicker (#…
rynfar Sep 21, 2026
d45eff5
fix(mobile): prevent corrupt share draft from breaking attachment cle…
rynfar Sep 21, 2026
44259f3
fix(mobile): enforce image size gate via file measurement before base…
rynfar Sep 21, 2026
5edf6bc
fix(mobile): prevent duplicate Stop control during dictation error ph…
rynfar Sep 21, 2026
d93a127
fix(mobile): enforce share inbox retention cap, TTL expiry, and dismi…
rynfar Sep 21, 2026
9ec31fd
fix(mobile): expose thread rows and project picker rows to accessibil…
rynfar Sep 21, 2026
bdbeece
fix(server): reset latched lookup, clear stale effort, and bound sub-…
rynfar Sep 21, 2026
a3d6f94
fix(codex): decode unrecognized hook and error variants tolerantly (#…
rynfar Sep 21, 2026
cd4e425
refactor(web): self-contain composer context strip visibility in Bran…
rynfar Sep 21, 2026
84f540c
fix(pullRequest): refine self-hosted GitHub remotes and support fallb…
rynfar Sep 21, 2026
e5c4159
feat(models): add opus 5.5 without changing existing aliases (#729)
rynfar Sep 22, 2026
3d5d667
feat(models): make gpt-6-sol and gpt-6-luna current (#732)
rynfar Sep 22, 2026
24896e8
feat(agents): show and control Relay workers in Pylon (#734)
rynfar Sep 23, 2026
3868597
fix(mobile): add embedded preview build profile (#735)
rynfar Sep 23, 2026
fad2d62
fix(providers): reconcile Oh My Pi with current Pylon
rynfar Sep 24, 2026
2ae32b0
fix(omp): scope MCP credentials and device environment to instance
rynfar Sep 24, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
23 changes: 23 additions & 0 deletions .agents/durable-facts.jsonl

Large diffs are not rendered by default.

64 changes: 64 additions & 0 deletions .agents/references/contributing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Contribution and records

Read when preparing a commit/PR or updating the durable fact index. Paths below are repository-relative.

## Landing changes

Every change lands the same way, and you do not need to be asked each time. Do
not commit directly to `pylon`, and do not fast-forward a task branch onto it.

1. **Branch from the latest `pylon`.** `git fetch origin pylon`, then branch
from `origin/pylon` — never from a stale local ref, which may sit well
behind. Name the branch for the work: `fix/<topic>`, `feat/<topic>`,
`docs/<topic>`, or `upstream/<yyyy-mm-dd>-<topic>` for adopted upstream work.
2. **Build and verify on the branch**, per `AGENTS.md` validation guidance.
3. **Open a PR against `pylon`.** Push the branch and open it. This workflow is
the standing ask, so opening one needs no separate request.
4. **Merge once checks are green and the developer approves.** Delete the branch
afterwards.

`pylon` only ever moves by merging a PR. If you are about to run
`git push origin pylon`, stop — closing that path is the point of this section.

A branch checked out in a worktree is pinned there and cannot advance elsewhere,
so keep `pylon` checked out in the main repository and give worktrees their own
task branches. A worktree left sitting on `pylon` silently holds the branch back
while work lands from elsewhere.

## Pull requests

- Conventional commit titles, plain language: `fix(web): new threads no longer spike CPU`.
- Body: the problem in a sentence or two, then how you fixed it. End with the model and harness that did the work.
- **Rebase onto the latest `pylon` branch before opening.** Stale branches conflict and burn a review round. Never rebase a Pylon branch directly onto a T3 remote.
- UI changes need before/after images. Motion or timing needs a short video.
- Upload PR evidence to GitHub. Never commit PR-only screenshots or assets such as `.github/pr-assets/`.
- One concern per PR. An upstream dependency chain or closely related changes to one subsystem can be one concern, with a combined diff and verification. Split independent product decisions or unrelated high-risk changes; do not impose a source-commit quota.
- When babysitting: poll checks and comments newer than the last push, verify each bot finding against the source, fix real ones, dismiss false positives with a written reason. Stay quiet when nothing is new. Stop when the bots are green on the latest commit.

## Documentation

Most code changes do not need an internal documentation change. Agents can read the code.

- `docs/internals/` is for architectural decisions and their reasons, constraints that span components, and implementation traps that are hard to discover from the source. Before adding a paragraph, ask what a maintainer would get wrong without it. If reading the relevant code answers the question, leave it out.
- Do not document every feature, enumerate fields or methods, narrate control flow, maintain file catalogs, or append PR summaries. Types, tests, and code already record the implementation. The glossary in `docs/internals/glossary.md` defines shared vocabulary; it is not a feature index.
- Keep a local implementation explanation in a nearby code comment. Use an internal doc when the reasoning crosses boundaries or needs context the code cannot carry well. Link to the relevant source instead of copying it.
- When a documented decision or constraint changes, rewrite or remove the affected text. Do not append another account of the new behavior. A new internal page needs a distinct, durable reason to exist.
- `docs/user/` helps users accomplish tasks. Give each major feature a concise section explaining what it does, how to start, and anything unintuitive. A settings path is useful; descriptions of visible buttons, icons, layouts, animations, or every UI state are not. Before adding text, ask what task or decision it helps the user with.
- Keep user docs in the shipped product's voice, without implementation details, source paths, or contributor tooling. Update the relevant feature section when how to use it changes. A UI tweak does not need a documentation entry, and a new control does not need its own page.
- `docs/operations/` holds maintainer setup, release, and debugging procedures. Keep instructions for operating an installed Pylon server in the user guides.

## Plans and work artifacts

- Do not commit implementation plans, research notes, or agent scratch files. Keep temporary working material outside the worktree. `.plans/` is gitignored only as a safety net for legacy tooling.
- Track active maintainer work in the GitHub issue or project item that owns it. External proposals follow `CONTRIBUTING.md` and belong in Ideas discussions.
- Put durable architecture, constraints, and decisions in `docs/internals/`. Update those docs when the product changes so agents find current facts instead of abandoned intentions.
- A merged PR is the implementation record. Close or update its tracking item when the work lands; do not preserve a second checklist in the repository.

## Durable project facts

`.agents/durable-facts.jsonl` is the append-only fact log for coding agents. It is an index of stable project knowledge, not a replacement for canonical code and documentation.

- Never edit, delete, or reorder an existing line. Append new records at the end of the file.
- Each line is one JSON object with a unique `id`, UTC `recorded_at`, focused `scope`, concise current `fact`, full `source_commits`, repository-relative `source_paths` verified at the current head, and a `supersedes` array.
- Record non-obvious, durable product behavior, architecture, compatibility boundaries, and maintainer constraints. Do not record plans, task status, debugging chronology, guesses, or short-lived implementation details.
- When a fact changes, update its canonical code or documentation and append a complete replacement whose `supersedes` array names the old record IDs. Readers must prefer the replacement; history stays intact.
32 changes: 32 additions & 0 deletions .agents/references/local-development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Local development

Read when starting a dev environment, pairing a client, or preparing fixtures.

## Dev servers

- `vp i` installs. Worktrees get this from the compatibility-named `t3.json` setup script; if module resolution looks broken, it probably did not run.
- `vp run dev` starts server and web. In a worktree, state defaults to that worktree's gitignored `.t3`, which deliberately outranks an ambient `T3CODE_HOME` so you cannot land on shared state by accident. An explicit `--home-dir` still wins.
- Ports derive from the worktree path and are stable across restarts, but read the real ones from the `[dev-runner]` line since occupied ports shift.
- `vp run dev` needs a TTY. Launched from a plain non-interactive background shell it prints its first two lines and exits 0 without ever binding a port, which reads exactly like a fast successful start. Run it under `script -q /dev/null …` or `nohup … &` (there is no `setsid` on macOS), then confirm the port is actually listening before you trust it.
- Sharing over the tailnet is three steps: run `vp run dev --share` in the background, wait for the `pairingUrl:` line in its output, then hand that full URL to the user with its pairing token intact. Do not wire up `tailscale serve` by hand for this, and do not open the complete pairing URL yourself.
- The web app requires pairing. For an explicit human handoff, provide the pairing URL rather than the bare origin — a URL without its token is useless to whoever you gave it to. Treat the token as a secret everywhere else: never commit it, capture it in screenshots, or reuse it. If a token got consumed, mint a fresh one with `node apps/server/src/bin.ts pair`; it carries standard scopes, while the startup URL carries admin scopes (needed for Settings → Connections management).
- Stop what you started, by the PID you tracked. See the process-ownership boundary in `AGENTS.md`.

## Test data

Use populated fixtures when the affected flow needs them. For an authorized snapshot of existing Pylon data, copy into isolated worktree state:

- Copy from **`~/.pylon-code/userdata`** — Pylon's own runtime home, and the only realistic fixture that matches this repo's schema. Worktree state still lives at `<worktree>/.t3/userdata`, which is a compatibility-named path, not a second source of data.
- **Do not seed from `~/.t3/userdata`.** Despite the compatibility-named path, that is T3 Code's database, and it carries upstream's migration numbering. Pylon renumbered 037–040 (`ProjectionThreadsPinned`, `ProjectionThreadsContinuedFrom`, `ProjectionTurnsKeysetIndex`, `ProjectionThreadsPinOrderKey`) and retired id 36, so a Pylon server started against a copy of T3's database records those ids as already applied and then dies on the first query with `no such column: continued_from_thread_id`. Reading it is still fine; seeding from it is not.
- Snapshot the database with `VACUUM INTO`, which is safe even while a server has the source open and yields one consistent file:

```bash
mkdir -p .t3/userdata
# Use a fresh destination; VACUUM INTO refuses to overwrite an existing file.
bun -e "new (require('bun:sqlite').Database)(process.env.HOME + '/.pylon-code/userdata/state.sqlite', { readonly: true }).run(\"VACUUM INTO '.t3/userdata/state.sqlite'\")"
```

A plain `cp` is only safe when no server has the source open, and must bring the `-wal` and `-shm` siblings along. A live file copy is a corrupt copy.

- Bring `secrets` and `settings.json` only if the flow under test needs them.
- Copy in, never symlink. Data flows one way: into your sandbox, never back out.
18 changes: 18 additions & 0 deletions .agents/references/product-identity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Product identity

Read for branding, packaging, launch identity, or upstream desktop adoption.

## Compatibility names

Pylon still retains upstream compatibility identifiers such as `.t3`, `T3CODE_HOME`, `t3.json`, `npx t3`, `@t3tools/*`, `com.t3tools.*`, and some T3-named source files. Treat those as implementation details, not product copy. Do not rename compatibility identifiers during branding or UI work unless the developer explicitly expands the scope and the migration is handled across every client and connection mode.

The desktop product identity is deliberately independent from T3 Code so both apps can be installed and run at the same time. Preserve these Pylon-owned boundaries when adopting upstream desktop work:

- macOS/Windows application ID: `com.pylon.code` (`com.pylon.code.dev.*` for local development);
- renderer protocols: `pylon-code://` and `pylon-code-dev://`;
- runtime home: `~/.pylon-code` unless explicitly overridden;
- Electron profiles: `pylon-code` and `pylon-code-dev`;
- Linux executable/registration: `pylon`, the per-channel desktop entries `com.pylon.code.desktop`, `com.pylon.code.nightly.desktop` and `com.pylon.code.dev.desktop`, and the matching `com.pylon.code[.nightly|.dev]` WM class and Wayland app ID (Electron derives both from the desktop entry, and XDG portals require a dotted ID);
- packaged app and artifacts: `Pylon (Alpha)` / `Pylon (Nightly)` and `Pylon-*`.

T3-named environment variables may still be passed to the bundled compatibility server. They are not permission to point Pylon at T3's default runtime or Electron data directories.
4 changes: 2 additions & 2 deletions .agents/skills/effect-server/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: effect-server
description: Implement and review Pylon server changes with the repository's Effect and event-sourced architecture. Use when changing `apps/server`, Effect services or layers, orchestration commands and events, deciders, projectors, reactors, receipts, provider adapters, server-side contracts, persistence, or focused backend tests.
description: Implement or review Pylon Effect services and event-sourced server behavior.
---

# Effect Server Work
Expand All @@ -9,7 +9,7 @@ Keep orchestration pure, put provider-specific complexity at adapter boundaries,

## Load the local conventions first

Before writing Effect code, read `.repos/effect-smol/LLMS.md` completely. It documents the repository's vendored Effect APIs and takes precedence over recalled upstream patterns.
For the Effect APIs being changed, consult the relevant sections of `.repos/effect-smol/LLMS.md`. It documents the repository's vendored Effect APIs and takes precedence over recalled upstream patterns.

For orchestration work, also read the relevant sections of `docs/internals/glossary.md` and inspect the neighboring implementation and tests. Never edit or import from `.repos/`; it is a read-only reference.

Expand Down
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 Pylon Mobile verification.
description: Build, inspect, and debug an iOS Simulator app using the pinned XcodeBuildMCP tools.
---

# iOS Debugger Agent
Expand Down
21 changes: 0 additions & 21 deletions .agents/skills/ios-simulator-browser/LICENSE

This file was deleted.

51 changes: 0 additions & 51 deletions .agents/skills/ios-simulator-browser/SKILL.md

This file was deleted.

4 changes: 0 additions & 4 deletions .agents/skills/ios-simulator-browser/agents/openai.yaml

This file was deleted.

4 changes: 2 additions & 2 deletions .agents/skills/pylon-branding/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: pylon-branding
description: Maintain Pylon's visual identity across source vectors, generated app icons and favicons, in-product marks, wordmarks, and product-name copy. Use when changing Pylon logos, icons, branding, colors, typography, or visible naming; when validating branding across web, desktop, mobile, and marketing; or when an upstream merge may have restored T3 assets or copy.
description: Change or audit Pylon brand assets, product naming, and generated app icons.
---

# Pylon Branding
Expand All @@ -9,7 +9,7 @@ Keep brand changes source-driven and consistent across every affected surface. S

## Establish the scope

- Read `AGENTS.md`, especially **Compatibility names** and **Hit every surface**.
- Read `.agents/references/product-identity.md` for exact compatibility and product identifiers.
- Treat `.t3`, `T3CODE_HOME`, `t3.json`, `npx t3`, `@t3tools/*`, `com.t3tools.*`, URL schemes, and legacy source filenames as compatibility identifiers. Do not rename them during visual-brand work unless the developer explicitly requests a coordinated migration.
- Keep typography, color, naming, and logo changes as separate decisions when the request limits scope. Do not change fonts merely because a logo or wordmark changes.
- Inspect the current diff before editing. Preserve unrelated upstream or user changes.
Expand Down
Loading
Loading