Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
290 commits
Select commit Hold shift + click to select a range
7733702
break the 22-module seriesAutopilot/creativeDirector import cycle via…
atomantic Sep 3, 2026
4c93126
fix: report false when cancelling a yt-dlp import that already finish…
atomantic Sep 3, 2026
9887455
feat: split a CoS run into architect/implementer/reviewer roles with …
atomantic Sep 3, 2026
f5d9a57
start a resumed CoS task immediately instead of leaving it pending fo…
atomantic Sep 3, 2026
df466ad
refactor: drop the spec helpers nothing outside the tests calls (#5992)
atomantic Sep 3, 2026
5d149dd
address review (agy): report a task claimed mid-spawn as started, and…
atomantic Sep 3, 2026
34848ce
Merge pull request #6090 from atomantic/claim/issue-6001
atomantic Sep 3, 2026
df6d66d
Merge pull request #6092 from atomantic/claim/issue-6013
atomantic Sep 3, 2026
48d4757
Merge pull request #6093 from atomantic/claim/issue-6007
atomantic Sep 3, 2026
82839d4
Merge pull request #6091 from atomantic/claim/issue-5919
atomantic Sep 3, 2026
f711142
Merge pull request #6094 from atomantic/claim/issue-5920
atomantic Sep 3, 2026
87b02ef
Merge pull request #6096 from atomantic/cos/task-mtlripte/agent-c297d619
atomantic Sep 3, 2026
6190da4
docs: fix ARCHITECTURE.md directory tree placing GOALS.md and GOALS_O…
Bryandero98 Sep 3, 2026
86bfe93
docs: fix app-wizard.md template list and scaffold endpoints table (#…
Bryandero98 Sep 3, 2026
2f0895d
test: fix ~3% flake in resetGitWorktreeSandbox worktree-listing asser…
Bryandero98 Sep 3, 2026
7bd08d6
fix: sync fableLoom RESTORABLE_FIELDS with the actual restorable fiel…
Bryandero98 Sep 3, 2026
93884bb
fix: stop bulkStar from reporting false success on partial/total fail…
Bryandero98 Sep 3, 2026
49270d9
test: add route-level coverage for POST /api/update/sync-fork (#6039)
Bryandero98 Sep 3, 2026
d415e16
Merge pull request #6095 from atomantic/claim/issue-5992
atomantic Sep 3, 2026
e4d25ba
Merge pull request #6086 from atomantic/claim/issue-5918
atomantic Sep 3, 2026
4269166
Merge pull request #6084 from atomantic/claim/issue-6000
atomantic Sep 3, 2026
562037f
Merge pull request #6083 from atomantic/claim/issue-5999
atomantic Sep 3, 2026
f004d57
refactor: extract loraDatasetSubject leaf to break caption/generate i…
atomantic Sep 3, 2026
03886f2
Merge pull request #6085 from atomantic/claim/issue-5917
atomantic Sep 3, 2026
1e69239
feat: expose rigged animated records to CoS avatars (#5894)
atomantic Sep 3, 2026
0bfa29f
chore: regenerate API route catalog for the rigged-avatar endpoints
atomantic Sep 3, 2026
56cdd47
fix practice rating button accessible name after visible hint subtext…
atomantic Sep 3, 2026
126f021
Merge pull request #6097 from Bryandero98/fix/architecture-docs-goals…
atomantic Sep 3, 2026
e81e3a5
Merge pull request #6103 from atomantic/claim/issue-5894
atomantic Sep 3, 2026
79c610f
Merge pull request #6098 from Bryandero98/fix/app-wizard-docs-templates
atomantic Sep 3, 2026
545bfa3
Merge pull request #6100 from Bryandero98/fix/restorable-fields-fable…
atomantic Sep 3, 2026
71f27c2
Merge pull request #6101 from Bryandero98/fix/bulkstar-false-success-…
atomantic Sep 3, 2026
ff4440e
Merge pull request #6102 from Bryandero98/fix/sync-fork-route-tests
atomantic Sep 3, 2026
2ef3696
chore(deps): bump fflate from 0.6.10 to 0.6.11 in /client
dependabot[bot] Sep 3, 2026
5ca1807
Merge pull request #6099 from Bryandero98/fix/git-test-repo-worktree-…
atomantic Sep 3, 2026
270212c
Merge pull request #6104 from atomantic/dependabot/npm_and_yarn/clien…
atomantic Sep 3, 2026
6e064a0
mark an issue in-progress when the watcher assigns a volunteer to it
atomantic Sep 3, 2026
8fe3fe4
let the OpenCode harness run the pr-reviewer eligibility gate on a lo…
atomantic Sep 3, 2026
d1433e5
close the OpenCode gate's marker-only eligibility hole, and route eff…
atomantic Sep 3, 2026
0bf6a13
widen the perpetualWork label-import comment to cover in-progress
atomantic Sep 3, 2026
a6dd9b0
Merge pull request #6111 from atomantic/cos/task-mtlx4yoi/agent-1c99a8e3
atomantic Sep 3, 2026
637811b
Merge pull request #6113 from atomantic/cos/task-mtlvx3zg/agent-7457e872
atomantic Sep 3, 2026
577399e
feat(usage): unify subscription quota readings across federated insta…
atomantic Sep 3, 2026
1d051ff
Merge pull request #6114 from atomantic/cos/task-mtlxw03u/agent-61956436
atomantic Sep 3, 2026
7a022e7
fix(cos): drop the redundant eligible-provider list from PR-reviewer …
atomantic Sep 3, 2026
9c5fffe
feat(cos): rename per-app overrides to per-app options and clarify th…
atomantic Sep 3, 2026
adcd175
Merge pull request #6115 from atomantic/cos/task-mtlyu8ko/agent-49ea21db
atomantic Sep 3, 2026
df82030
fix(cos): label the per-app toggle Enabled, not Run
atomantic Sep 3, 2026
8b51a1c
Merge pull request #6116 from atomantic/cos/task-mtlyrg04/agent-059ce1e6
atomantic Sep 3, 2026
43a572f
strip ANSI from headless agent output so a slow run stops looking wedged
atomantic Sep 3, 2026
bf795b5
Merge pull request #6118 from atomantic/cos/task-mtlz1w6b/agent-c98ccfe6
atomantic Sep 3, 2026
5ec2712
feat: hold an agent run that shipped clean code for the wrong task (#…
atomantic Sep 3, 2026
e51fddd
Merge pull request #6119 from atomantic/claim/issue-5994
atomantic Sep 3, 2026
26effe8
fix: fableLoom asset manifest omits playbackAssets video clips (#6006)
Bryandero98 Sep 3, 2026
ce46386
test: fix flaky BrowseTab Save-button query racing the Edit transitio…
Bryandero98 Sep 3, 2026
1fd0ab3
fix: PromptManager stage save/create/delete give no visible confirmat…
Bryandero98 Sep 3, 2026
509a439
feat: add additive provider-model insert migration family, port 337 t…
Bryandero98 Sep 3, 2026
30c72c1
fix: stop older FableLoom peers erasing delivery plans and beat outli…
atomantic Sep 3, 2026
f8bf6bc
fix: thread ProviderModelSelector's loading gate to the remaining pro…
Bryandero98 Sep 3, 2026
61125d1
perf: stop Tribe list and care summary from scanning the whole contac…
atomantic Sep 3, 2026
823fe65
refactor: one canonical YouTube URL rule in server/lib/youtubeUrl.js …
atomantic Sep 3, 2026
84c89e3
fix: stop a half-completed media collection move reporting success (#…
atomantic Sep 3, 2026
f9be850
validate a public-review stage's model pin against the provider's own…
atomantic Sep 3, 2026
2480ffc
fix: release the update lock when the update launcher rejects (#6036)
atomantic Sep 3, 2026
0f10c1a
fix: guard unsaved prompt-stage edits when switching stages (#6021)
atomantic Sep 3, 2026
27106ad
Merge pull request #6127 from atomantic/cos/task-mtm2gt6z/agent-ccf79a24
atomantic Sep 3, 2026
558f701
give the PR reviewer the filed issue's text so it can judge intent, n…
atomantic Sep 3, 2026
7cef7cb
Merge pull request #6120 from atomantic/claim/issue-6005
atomantic Sep 3, 2026
a3ec8f3
Merge pull request #6121 from atomantic/claim/issue-6024
atomantic Sep 3, 2026
f61ec20
Merge pull request #6122 from atomantic/claim/issue-6014
atomantic Sep 3, 2026
9d6702e
Merge pull request #6123 from atomantic/claim/issue-6017
atomantic Sep 3, 2026
46586e3
Merge pull request #6126 from atomantic/claim/issue-6021
atomantic Sep 3, 2026
c2566b9
Merge pull request #6128 from atomantic/claim/issue-6036
atomantic Sep 3, 2026
e00609b
Merge pull request #6129 from atomantic/cos/task-mtm2k7n5/agent-784a0b2b
atomantic Sep 3, 2026
187e381
drop the reasoning effort when an Ollama agent model cannot think
atomantic Sep 3, 2026
269dd0d
fix: surface a failed collections fetch instead of a false empty stat…
atomantic Sep 3, 2026
ab39304
refactor: extract pure YouTube ingest formatting into server/lib (#6015)
atomantic Sep 3, 2026
fbc0c3f
test: pin the App Management socket contract in server/sockets/apps.j…
atomantic Sep 3, 2026
e215664
perf: memoize handle resolution and cache the unanswered-thread scan …
atomantic Sep 3, 2026
66a38b7
refactor: compose the video registry upgraders from one ordered list …
atomantic Sep 3, 2026
7c7a886
Merge pull request #6130 from atomantic/cos/sys-mtm2sq93/agent-77346cc5
atomantic Sep 3, 2026
300ab71
test: pin that a public-review stage never dispatches through the CoS…
atomantic Sep 3, 2026
7069f2d
fix: keep a saved prompt variable open and guard unsaved edits (#6023)
atomantic Sep 3, 2026
ce1cee1
Merge pull request #6133 from atomantic/claim/issue-6025
atomantic Sep 3, 2026
a0dd8c9
Merge pull request #6131 from atomantic/claim/issue-6019
atomantic Sep 3, 2026
21e261e
Merge pull request #6132 from atomantic/claim/issue-6015
atomantic Sep 3, 2026
ed1dff5
stop the CoS runner rebuilding OpenCode's config from an identity-onl…
atomantic Sep 3, 2026
88f486d
Merge pull request #6134 from atomantic/claim/issue-6056
atomantic Sep 3, 2026
95dec1a
Merge pull request #6135 from atomantic/claim/issue-6105
atomantic Sep 3, 2026
5b26a33
Merge pull request #6136 from atomantic/claim/issue-6023
atomantic Sep 3, 2026
1a1f090
Merge pull request #6137 from atomantic/claim/issue-6037
atomantic Sep 3, 2026
0d39708
Merge pull request #6140 from atomantic/cos/task-mtm40kd2/agent-d0a65718
atomantic Sep 3, 2026
f04e798
fix: classify a fork by owner alone, so renaming it doesn't disable f…
Bryandero98 Sep 3, 2026
890440b
feat: report Tribe emails/phones shared by more than one person
Bryandero98 Sep 3, 2026
f691cf9
fix: give UI-queued investigations the same identity as auto-filed on…
atomantic Sep 3, 2026
7f7e4c3
perf: skip jsdom for 36 DOM-free client test files (#6008)
atomantic Sep 3, 2026
ce66438
docs: record the jsdom-vs-happy-dom test environment measurements (#6…
atomantic Sep 3, 2026
783b863
fix: report a local provider as not ready when its offered models are…
atomantic Sep 3, 2026
d69db14
docs: point the happy-dom finding at its follow-up issue (#6008)
atomantic Sep 3, 2026
33decb7
fix: attach agent worktrees to fork PR head branches so external cont…
atomantic Sep 3, 2026
ecb2830
fix: block a pr-reviewer stage that produces no output instead of re-…
atomantic Sep 3, 2026
4b4553a
fix: make a volunteer claim mean the same thing on both paths (#6112)
atomantic Sep 3, 2026
9261fed
Merge pull request #6143 from atomantic/claim/issue-6043
atomantic Sep 3, 2026
b1254a6
Merge branch 'main' into claim/issue-6008
atomantic Sep 3, 2026
4d3e70f
Merge branch 'main' into claim/issue-6125
atomantic Sep 3, 2026
dbc1332
Merge branch 'main' into claim/issue-6064
atomantic Sep 3, 2026
dd395e3
Merge branch 'main' into claim/issue-6124
atomantic Sep 3, 2026
e0b7023
Merge branch 'main' into claim/issue-6112
atomantic Sep 3, 2026
9276365
Merge pull request #6145 from atomantic/claim/issue-6008
atomantic Sep 3, 2026
e9b7cb9
Merge branch 'main' into claim/issue-6125
atomantic Sep 3, 2026
af80e57
Merge pull request #6146 from atomantic/claim/issue-6125
atomantic Sep 3, 2026
2562700
Merge branch 'main' into claim/issue-6064
atomantic Sep 3, 2026
2566e12
Merge pull request #6147 from atomantic/claim/issue-6064
atomantic Sep 3, 2026
30e4347
Merge branch 'main' into claim/issue-6124
atomantic Sep 3, 2026
132117d
wrap the task card action rail below the body on phones
atomantic Sep 3, 2026
f1a76d0
Merge pull request #6148 from atomantic/claim/issue-6124
atomantic Sep 3, 2026
b1df5c6
address review (agy): drop the rail with basis-full so the status gly…
atomantic Sep 3, 2026
cc5c987
Merge branch 'main' into claim/issue-6112
atomantic Sep 3, 2026
3e7c1bf
Merge pull request #6150 from atomantic/cos/task-mtm65cux/agent-9572228f
atomantic Sep 3, 2026
c0d3d66
Merge pull request #6149 from atomantic/claim/issue-6112
atomantic Sep 4, 2026
7f391fe
stop rejecting a pr-reviewer stage's local model pin against the prov…
atomantic Sep 4, 2026
bba4499
say the actions stage is loading its local models instead of showing …
atomantic Sep 4, 2026
6337558
fix: budget a large local prompt's prefill instead of letting the run…
atomantic Sep 4, 2026
91c24e9
address review (agy): strip a model pin the posture swap orphaned, an…
atomantic Sep 4, 2026
a2c5725
Merge pull request #6153 from atomantic/cos/task-mtm645r0/agent-f96cc1cf
atomantic Sep 4, 2026
3f14aa1
perf: run the client test suite on happy-dom instead of jsdom (#6144)
atomantic Sep 4, 2026
f8701bb
perf(tests): narrow server import graphs so CI stops importing what i…
atomantic Sep 4, 2026
f36e568
Merge pull request #6152 from atomantic/claim/issue-6117
atomantic Sep 4, 2026
db17922
Merge branch 'main' into claim/issue-6009
atomantic Sep 4, 2026
2399eb3
Merge pull request #6155 from atomantic/claim/issue-6009
atomantic Sep 4, 2026
4e929ff
Merge branch 'main' into claim/issue-6144
atomantic Sep 4, 2026
614ccea
show a comment count on each row in an app's Issues tab
atomantic Sep 4, 2026
a1ac669
fix: stop rejecting a local model pin that the daemon is already serv…
atomantic Sep 4, 2026
de20be1
address review (local): spell out the comment count instead of a bare…
atomantic Sep 4, 2026
00e02e9
address review (agy): state the listing sentinel accurately and make …
atomantic Sep 4, 2026
953e1ec
Merge pull request #6154 from atomantic/claim/issue-6144
atomantic Sep 4, 2026
b5ca43e
feat: let pr-reviewer Stage 3 run as an attachable TUI session (#6062)
atomantic Sep 4, 2026
9056d03
Merge pull request #6157 from atomantic/cos/task-mtm8xj3e/agent-aa96b4ac
atomantic Sep 4, 2026
ee4da86
Merge pull request #6158 from atomantic/claim/issue-6151
atomantic Sep 4, 2026
c73e08d
fix: stop claiming an attachable Stage 3 is headless while its PTY at…
atomantic Sep 4, 2026
2f8695f
fix: assert the attachable Stage 3 command line by content, not by pr…
atomantic Sep 4, 2026
1405685
stop an unattended OpenCode run from being handed a question tool it …
atomantic Sep 4, 2026
f0e9fbc
perf(tests): defer the run-time-only imports at the head of the serve…
atomantic Sep 4, 2026
3ee33e0
Merge pull request #6160 from atomantic/claim/issue-6062
atomantic Sep 4, 2026
bed3259
Merge pull request #6161 from atomantic/claim/issue-6156
atomantic Sep 4, 2026
ac23aef
Merge pull request #6141 from Bryandero98/fix/fork-detection-owner-only
atomantic Sep 4, 2026
3544e86
Merge pull request #6164 from atomantic/cos/task-mtm919b6/agent-c1a5fc07
atomantic Sep 4, 2026
e54f0de
perf(sprites): memoize the degenerate-frame probe on frame content (#…
atomantic Sep 4, 2026
5ed5e84
feat: download Slotstream checkpoints from Models → LLMs (#6162)
atomantic Sep 4, 2026
db9b285
fix: refuse a weightless Slotstream repo and keep the download bar un…
atomantic Sep 4, 2026
c374368
stop awaiting update.sh from the app-update path, which froze the Git…
atomantic Sep 4, 2026
17afc00
address review (agy): never memoize an unmeasurable verdict
atomantic Sep 4, 2026
06812d0
scope the PortOS restart watch to surfaces that can see the update
atomantic Sep 4, 2026
ec32dd7
fix: correct Slotstream download byte accounting and hide unfinished …
atomantic Sep 4, 2026
8c73d29
fix: match the platform path separator in the Slotstream in-flight check
atomantic Sep 4, 2026
64249b9
Merge pull request #6165 from atomantic/claim/issue-6004
atomantic Sep 4, 2026
b5bd67b
Merge pull request #6167 from atomantic/claim/issue-6162
atomantic Sep 4, 2026
a61b8c0
fix: satisfy CI on the duplicate-identifiers banner (a11y + stale rou…
Bryandero98 Sep 4, 2026
3114ad1
hold the self-update launcher's return until the script is actually s…
atomantic Sep 4, 2026
364536a
Merge pull request #6166 from atomantic/cos/task-mtm8uz69/agent-1a464eaa
atomantic Sep 4, 2026
fbe172a
fix(windows): make the in-app update actually run instead of reportin…
atomantic Sep 4, 2026
7aa71f5
fix: stop npm's inline audit from stalling every install path
atomantic Sep 4, 2026
4852d9c
fix: keep the provider-quota suite from reading and writing real inst…
atomantic Sep 4, 2026
22a0df0
Merge pull request #6171 from atomantic/fix/npm-install-audit-stall
atomantic Sep 4, 2026
e4581f7
drop print-only flags from the attachable Claude review argv
atomantic Sep 4, 2026
a1ae066
address review: fix supervisor hang, console allocation, exit-code si…
atomantic Sep 4, 2026
aec5a5f
Merge pull request #6172 from atomantic/cos/sys-mtmd2igo/agent-36eb4c84
atomantic Sep 4, 2026
795d88d
Merge pull request #6175 from atomantic/cos/task-mtma8kmi/agent-96430d5a
atomantic Sep 4, 2026
8bd73a9
test: pin usePortosRestartWatch restart proofs and two-phase budgets …
atomantic Sep 4, 2026
60b0745
Stop an orchestrated lane from silently falling back onto the archite…
atomantic Sep 4, 2026
9ea02c7
test: cover the socket arming paths usePortosRestartWatch actually sh…
atomantic Sep 4, 2026
968dfd8
Keep the generic provider chain for an effort-only orchestration role
atomantic Sep 4, 2026
2c44489
test: cover the successful-completion arm and the unmount-during-conf…
atomantic Sep 4, 2026
38f2a9c
address review (claude): close the gaps a fail-closed lane's alternat…
atomantic Sep 4, 2026
5362008
converge spawnDetached's two Windows branches, retiring windowsDetach…
atomantic Sep 4, 2026
8da4a3c
fix CoS settings reset: stop treating valid state.json as corrupt
atomantic Sep 4, 2026
215ff52
guard config merge against a non-object stored value
atomantic Sep 4, 2026
c9c9864
fix: inline isValidJSON into safeJSONParse to stop it being forked (#…
atomantic Sep 4, 2026
2cb4f72
address review (claude): stop the lane's own alternate from being qui…
atomantic Sep 4, 2026
4eb6fc9
fix: improve mobile responsive layout for POST tests
atomantic Sep 4, 2026
7fb9de0
raise the Claude request timeout on a local daemon so a long prefill …
atomantic Sep 4, 2026
eebc0b7
Merge pull request #6184 from atomantic/cos/task-mtmf1exw/agent-d348de2c
atomantic Sep 4, 2026
6bfe4ba
reap verified-superseded branches instead of recommending a human del…
atomantic Sep 4, 2026
bf48268
Merge pull request #6185 from atomantic/cos/task-mtmekbag/agent-10f94257
atomantic Sep 4, 2026
913c1d2
fix: guard object-shape assumptions broken by safeJSONParse now parsi…
atomantic Sep 4, 2026
775ee43
fix: spawn before pinning win32 in the converged detachedSpawn tests
atomantic Sep 4, 2026
d2580ef
address review (claude): keep a refused lane's resume pointer, and re…
atomantic Sep 4, 2026
0192764
Merge pull request #6186 from atomantic/claim/issue-6181
atomantic Sep 4, 2026
2042cac
Merge pull request #6183 from atomantic/claim/issue-6170
atomantic Sep 4, 2026
055d6f5
compare a superseded verdict's dirty paths through one helper on both…
atomantic Sep 4, 2026
fc9ad06
Merge pull request #6188 from atomantic/cos/task-mtmezw9k/agent-6d7d573b
atomantic Sep 4, 2026
a6e02aa
spawn a restricted public-review TUI as a direct PTY, not inside a lo…
atomantic Sep 4, 2026
e6ddfd2
Merge pull request #6178 from atomantic/claim/issue-6173
atomantic Sep 4, 2026
358a7db
Merge pull request #6192 from atomantic/claim/issue-5993
atomantic Sep 4, 2026
ae69d0e
wait on the settled value in two client tests that asserted behind th…
atomantic Sep 4, 2026
ed19786
refactor(cos): split durable config out of data/cos/state.json (#6182)
atomantic Sep 4, 2026
4086f7d
fix(voice): gate ui_check and ui_fill on the confirmation gate, not j…
Bryandero98 Sep 4, 2026
2347d0e
resolve data-voice-guard from the nearest ancestor and name every gat…
atomantic Sep 4, 2026
c007475
Merge pull request #6187 from atomantic/claim/issue-6182
atomantic Sep 4, 2026
bc20901
address review (agy): make the pre-reap backup fail loudly instead of…
atomantic Sep 4, 2026
b3381ea
fix: count iMessage handle frequency in SQL instead of loading 2,000 …
Bryandero98 Sep 3, 2026
e99be37
address self-review: resolve the executable in the launcher, name the…
atomantic Sep 4, 2026
5ea36f6
Merge branch 'main' into fix/tribe-duplicate-identifier-report
atomantic Sep 4, 2026
7a584ec
feat: add RigPanel UI to drive a retarget (clip picker, diagnostic pr…
Bryandero98 Sep 3, 2026
7bb30b6
refactor: extract one shared weight-download slot, and give Slotstrea…
atomantic Sep 4, 2026
436b490
simplify: trim the download slot to what its callers use, and stop bu…
atomantic Sep 4, 2026
ce44a32
assert the backup's untracked paths POSIX-separated so the suite pass…
atomantic Sep 4, 2026
1be8237
launch the resolved executable, not the bare name, in spawnCommandSes…
atomantic Sep 4, 2026
647999e
docs: add the Slotstream runtime feature page, point its in-app docs …
Bryandero98 Sep 4, 2026
00765fa
fix route name in slotstream doc: download-preflight, not download
atomantic Sep 4, 2026
befbabb
normalize CRLF when the backup replay test reads git-checked-out files
atomantic Sep 4, 2026
dd29422
test(sprites): hoist lockAllAnchors fixture onto a real-locked protot…
Bryandero98 Sep 4, 2026
8a96862
fix: close the PromptManager variable race the #6189 fix only relocat…
atomantic Sep 4, 2026
a4a62e9
fix: keep a provider-config block paused instead of auto-completing i…
atomantic Sep 4, 2026
0f23d93
fix: pin a 128K numCtx on the Ollama-backed Claude harnesses (#6191)
atomantic Sep 4, 2026
99a009a
fix: stand the numCtx migration down when OLLAMA_CONTEXT_LENGTH is al…
atomantic Sep 4, 2026
77061a9
test(sprites): parallelize buildFinalizedWalkSet's independent per-di…
Bryandero98 Sep 4, 2026
e2109e8
test: cut sprite atlas/walk CI cost by narrowing compiled spans and c…
atomantic Sep 4, 2026
2244b21
test: restore libvips concurrency after the sprite suites and read th…
atomantic Sep 4, 2026
ece3c84
Merge pull request #6196 from atomantic/cos/task-mtmdui5u/agent-5f5aa0df
atomantic Sep 4, 2026
8e208ab
regen stale api route catalog for the new duplicate-identifiers route
atomantic Sep 4, 2026
d5521b2
refuse test writes into the install's real data/ tree at runtime (#6176)
atomantic Sep 4, 2026
e3567ab
close the symlink bypass in the data-root guard, and fix root contain…
atomantic Sep 4, 2026
8ae7904
merge latest main
atomantic Sep 4, 2026
3d2914d
defer userActions.js's real-data-root guard import behind isTestRunner()
atomantic Sep 4, 2026
8acf6f8
Merge pull request #6206 from atomantic/claim/issue-6159
atomantic Sep 4, 2026
cac5fc7
Merge branch 'main' into claim/issue-6176
atomantic Sep 4, 2026
28dd7eb
Merge branch 'main' into feat/hoist-sprite-lock-fixtures
Bryandero98 Sep 4, 2026
60e3cdc
regen api route catalog after merging latest main
atomantic Sep 4, 2026
91740f8
Merge branch 'feat/hoist-sprite-lock-fixtures' into feat/hoist-sprite…
Bryandero98 Sep 4, 2026
149dc1a
Merge pull request #6142 from Bryandero98/fix/tribe-duplicate-identif…
atomantic Sep 4, 2026
d4f6044
fix: preserve active model tuning across context-window reloads (#6200)
atomantic Sep 4, 2026
af86354
redirect imageGen.test.js's PATHS to a temp root, closing a real data…
atomantic Sep 4, 2026
9df10d8
fix: preserve active tuning when daemon is unreachable during context…
atomantic Sep 4, 2026
c5c6042
show which reviewers a manual claim will actually run, not the instal…
atomantic Sep 4, 2026
8147c1d
share one claim reviewer resolver, and make the override the UI names…
atomantic Sep 4, 2026
24b0044
fix three false claims the review-gate caught in the claim-reviewer copy
atomantic Sep 4, 2026
401b6f1
Merge pull request #6209 from atomantic/claim/issue-6200
atomantic Sep 4, 2026
77bb588
gate the data-root write guard on VITEST, not NODE_ENV=test alone
atomantic Sep 4, 2026
0e78ab7
Merge pull request #6202 from atomantic/claim/issue-6176
atomantic Sep 4, 2026
d2e7fcc
Merge pull request #6211 from atomantic/cos/task-mtmheym4/agent-306fd63a
atomantic Sep 4, 2026
c2ad4a7
Merge pull request #6207 from Bryandero98/feat/hoist-sprite-paralleli…
atomantic Sep 4, 2026
5c06357
fix: skip Grok's flat prompt_history.jsonl sibling when scanning sess…
atomantic Sep 4, 2026
89a641c
fix: remove real-timer/real-disk flakes in two test suites
atomantic Sep 4, 2026
fd4e18c
fix([issue-6210]): layer the claim-work reviewer override into the JI…
atomantic Sep 4, 2026
a7861d1
docs([issue-6210]): qualify the JIRA reviewer helper docstring to the…
atomantic Sep 4, 2026
eaffc9f
Merge pull request #6212 from atomantic/next/issue-6210
atomantic Sep 4, 2026
059e1bf
chore: release v2.58.0
atomantic Sep 4, 2026
3e2def5
fix: remove a stray merge-artifact separator splitting the hooks cata…
atomantic Sep 4, 2026
6d631c9
docs: note the JIRA claim-reviewer fix in the v2.58.0 changelog
atomantic Sep 4, 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
  •  
  •  
  •  
53 changes: 53 additions & 0 deletions .changelog/v2.58.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Release v2.58.0

Released: 2026-09-04

## Highlights

**CoS / agent orchestration**
- CoS runs can now split into architect/implementer/reviewer roles, each with its own reasoning-effort setting, instead of one monolithic pass.
- A run that ships clean code for the wrong task is now held for review instead of merging silently.
- pr-reviewer's Stage 3 can run as an attachable TUI session you can watch and interact with, rather than only headless.
- pr-reviewer stages that produce no output are now blocked instead of being silently re-spawned, and a stage that produces multiple conflicting outputs is resolved consistently.
- Per-app provider overrides were renamed to per-app options, and the run toggle now reads "Enabled" instead of the ambiguous "Run".
- Agent worktrees now attach to fork PR head branches, so external contributor PRs are actually workable by the CoS pipeline.
- Fork detection now classifies by owner alone, so renaming a fork no longer disables it.
- Fixed a reviewer-chain gap where a claim-work reviewer override pinned for GitHub/GitLab/PLAN.md runs silently didn't apply to a JIRA ticket run's play button.

**Local LLM / model management**
- Slotstream checkpoints can now be downloaded directly from Models → LLMs, with correct byte accounting and unfinished checkpoints hidden until complete; a weightless repo is refused up front.
- Local model tuning (context window, pinned settings) now survives daemon-unreachable conditions and context-window reloads instead of resetting.
- A local provider whose offered models have disappeared from its daemon is now reported as not-ready rather than silently stale.
- Ollama-backed Claude harnesses get a pinned 128K context window, and the numCtx migration correctly stands down when `OLLAMA_CONTEXT_LENGTH` is already set.
- A large local prompt's prefill is now budgeted so a big context window doesn't look like a wedged/hung run.

**Animation / sprites / rigging**
- A new RigPanel UI drives retargeting end-to-end: clip picker, diagnostic preview, and write handoff.
- Rigged animated records can now be exposed to CoS avatars.
- The degenerate-frame probe is memoized on frame content, cutting redundant sprite-processing work.

**Reliability and data integrity**
- Fixed a real race where the PromptManager variable race reappeared after a prior fix only relocated it; unsaved prompt-stage edits are now guarded consistently.
- Bulk-star, media-collection moves, and yt-dlp import cancellation now report failure/cancellation accurately instead of a false success.
- FableLoom's asset manifest and restorable-field set were both missing coverage that caused older peers to erase delivery plans/beat outlines on sync — fixed.
- Tribe now reports emails/phones shared by more than one contact, helping catch duplicate-identity records.
- `safeJSONParse`'s scalar-parsing change had broken object-shape assumptions downstream — guarded, and the related `isValidJSON` fork was inlined back into `safeJSONParse` to stop the two from drifting.

**Performance**
- Client tests now run on happy-dom instead of jsdom, and 36 DOM-free client test files skip jsdom entirely.
- Server test suites no longer statically import modules they never exercise, cutting CI import overhead twice this release (#6009, #6156).
- Tribe's contact list and care summary no longer scan the entire contact table; iMessage handle-frequency counting moved into SQL instead of loading thousands of rows into memory.

**Windows & platform fixes**
- The in-app update now actually runs on Windows instead of reporting a phantom success.
- `npm install`'s inline audit no longer stalls install paths.
- Fixed a path-separator mismatch in the Slotstream in-flight check on Windows.

**Accessibility & UI polish**
- Swept sub-44px icon buttons tree-wide and widened the tap-target guard.
- Practice rating hints are now visible as button subtext (with the redundant tooltip removed), and their accessible name is fixed after the change.
- Fixed mobile responsive layout regressions in POST tests and the songbook transpose readout.

## Full Changelog

**Full Diff**: https://github.com/atomantic/PortOS/compare/v2.57.0...v2.58.0
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,12 @@ PGPASSWORD=portos
# ~/.slotstream/models). The binary always lives in ~/.slotstream/bin.
# SLOTSTREAM_MODEL_DIR=/path/to/slotstream/models

# Abandon a Slotstream checkpoint download after this many milliseconds with no
# bytes received (slotstreamModelManager.js; default: 1200000 / 20 minutes). A
# transfer that is still receiving bytes is never cut off by this, and an
# abandoned one keeps its progress so a retry resumes rather than restarts.
# SLOTSTREAM_IDLE_STALL_MS=1200000

# Abort a speculative-decoding model download after this many milliseconds with
# no bytes received (specDecodeModels.js; default: 1200000 / 20 minutes). Raise
# it for a slow Hugging Face/CDN handshake; a download still receiving bytes is
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ Thumbs.db
/.agent-done
/.agent-done-*

# Public-review input bundle PortOS materializes into a reviewer's worktree
# (see server/lib/agentScratchPaths.js) — pipeline state, never work product
/PORTOS_PUBLIC_REVIEW_INPUT.json
/.portos-public-review/

# BTW messages (ephemeral agent context, cleaned up after ingestion)
BTW.md

Expand Down
12 changes: 12 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,15 @@ ignore-scripts=true
# root `setup` / `start` / `dev` scripts instead — a check that gates on this
# project's floor and nothing else. `engines` stays for the npm warning and as
# the machine-readable declaration.

# Skip the advisory lookup `npm install` runs AFTER it has already resolved and
# written node_modules. It only prints a summary, but npm BLOCKS on it — a
# stalled request costs `fetch-timeout` (300s) times `fetch-retries` (2) before
# npm moves on. On 2026-09-03 that endpoint began completing the TLS handshake
# and never answering, and a 0.15s warm install took 153s; every managed install
# path runs four of them in sequence. Set here rather than as `--no-audit` on a
# dozen call sites for the same reason `ignore-scripts` is: npm reads config from
# the local prefix only, so a flag one path forgets is a silent regression.
# Rationale and what enforces dependency safety instead: docs/DEPS.md
# "Inline Audit Policy".
audit=false
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ npm run install:all # includes git submodule update --init --recursive
# Root `npm test` runs both workspaces in sequence (server, then client). Run them
# per workspace to scope to one — both are Vitest, with different environments:
cd server && npm test # Vitest (node) — ALSO globs ../scripts, ../lib, ../autofixer
cd client && npm test # Vitest (jsdom) — component/unit tests
cd client && npm test # Vitest (happy-dom) — component/unit tests
# No NODE_ENV prefix needed: server/vitest.config.js FORCES NODE_ENV=test (#4554).
# Vitest only defaults it when unset, and PortOS runs under PM2 with
# NODE_ENV=development — a suite run that inherits that aims at the real Postgres.
Expand Down
2 changes: 1 addition & 1 deletion GOALS.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ AI agents should be capable of operating fully autonomously across all connected

### 9. Knowledge Legacy

Preserve personal knowledge, identity, decision-making patterns, creative output, and life story beyond a single lifetime. The autobiography system, genome data, behavioral profiles, captured memories, written work, and built worlds form a durable record — not just of what you built, but of who you are and how you think.
Preserve personal knowledge, identity, decision-making patterns, creative output, and life story beyond a single lifetime. The autobiography system, genome data, behavioral profiles, captured memories, written work, and built worlds form a durable record — not just of what you built, but of who you are and how you think. PortOS itself is the backup of record (local data + automatic snapshots); download/export buttons exist only for sharing or handoff to other tools (e.g. Sharing buckets, Legacy Bundle), never as a parallel backup mechanism.

### 10. Anywhere Access on Private Network

Expand Down
4 changes: 3 additions & 1 deletion PRD.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Reused verbatim (condensed to objective statements) from [GOALS.md](./GOALS.md)'
6. **Developer Productivity Toolkit** — shell, git, browser control, and process tooling available from any device.
7. **Self-Improving Intelligence** — the system tunes its own routing/metrics from observed outcomes rather than staying static.
8. **Full Digital Autonomy** — agents can act across connected platforms (voice, Telegram, messaging, social) around the clock.
9. **Knowledge Legacy** — personal knowledge, identity, and creative output are preserved as a durable, exportable record.
9. **Knowledge Legacy** — personal knowledge, identity, and creative output are preserved as a durable, local record. PortOS itself is the backup of record (data lives on the user's hardware and is covered by automatic snapshots — see `docs/BACKUP.md`), so per-domain backup-style exports are out of scope; download/export buttons exist only for sharing or handoff to other tools (Sharing buckets, Legacy Bundle, format-specific creative deliverables).
10. **Anywhere Access on Private Network** — every feature is reachable from any device on the user's Tailnet, with no public exposure.
11. **Health & Longevity** — health data (MeatSpace) is tracked and made actionable via mortality/longevity-aware goal scoring.
12. **Personal Productivity & Life Management** — calendar, goals, and communications are unified with the same tooling that manages digital projects.
Expand Down Expand Up @@ -208,6 +208,7 @@ Reused verbatim (condensed to objective statements) from [GOALS.md](./GOALS.md)'
| NR-7 | The system MUST NOT treat leakage of a free, non-monetary third-party API key (e.g. CivitAI) to an unintended host as a security finding requiring host-allowlisting or key-stripping. | Won't-fix precedent (#2200): worst case is quota abuse against a free service, borne by that service — no monetary loss or meaningful security consequence. Does not extend to paid/quota-billed providers or money-bearing/destructive-action keys, which retain full hardening requirements. |
| NR-8 | The system MUST NOT send an AI-drafted outbound message (email, social post) without explicit user review-and-approve, regardless of how confident the draft is. | Full digital autonomy (Goal 8) extends to task execution, not to irreversible outward-facing communication acting under the user's identity without a human gate. |
| NR-9 | The system MUST NOT instruct the user to run a shell/terminal command in order to complete a workflow PortOS can perform itself — including installing or removing a runtime, and searching for, downloading, or deleting a model. Blocked-state copy points at the in-app control, not at a command line. | PortOS is the control surface for the machine; sending the user to a terminal for one step of an otherwise-managed lifecycle is a dead end that breaks remote/mobile use (Anywhere Access) and leaves the app's own state stale. **Carve-out:** genuinely privileged one-time host setup PortOS deliberately refuses to perform (`pm2 startup`, `sudo` fan-control helpers, `gcloud auth login`) may be named as an operator step — the refusal must be deliberate and documented, not a gap in the UI. |
| NR-10 | The system MUST NOT add per-domain backup-style export endpoints (e.g. a generic "export my Brain/memories/thoughts to file" download) as a durability or backup story. | PortOS is a locally hosted app that is itself the user's backup of record — data lives on the user's hardware and is covered by automatic snapshots (`docs/BACKUP.md`). Download/export buttons exist only for sharing or handoff to other tools (Sharing buckets, Legacy Bundle, format-specific creative deliverables), never as a parallel backup mechanism. |

---

Expand All @@ -222,6 +223,7 @@ Reused verbatim (condensed to objective statements) from [GOALS.md](./GOALS.md)'
- **Federated peer-to-peer sharing beyond bucket-based Sharing** — direct P2P distribution between instances is a secondary goal, not yet built.
- **Federated media-provider routing for image/video generation** — the queued-job delegation contract (FR-52/FR-53) is implemented and live for audio/music generation today; extending the same provider/consumer contract to image and video generation is tracked separately (issue #4348), not yet built.
- **User-directed assignment of a CoS task to a specific federated peer instance** — task coordination across peers is currently opportunistic only (first peer to see a synced task claims it via the existing lease mechanism); an explicit "run this task on instance X" control is a decided, ready-to-work follow-up (issue #4520), not yet implemented.
- **Per-domain backup-style exports** — PortOS is locally hosted and is itself the backup of record (automatic snapshots); exports exist only for sharing or handoff to other tools, per NR-10.

---

Expand Down
7 changes: 7 additions & 0 deletions autofixer/.npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,10 @@ ignore-scripts=true
# root `setup` / `start` / `dev` scripts instead — a check that gates on this
# project's floor and nothing else. `engines` stays for the npm warning and as
# the machine-readable declaration.

# Skip the post-install advisory lookup. npm BLOCKS on it (`fetch-timeout` 300s
# times `fetch-retries` 2), so an endpoint that stalls hangs this workspace's
# install for minutes to print a summary. Same local-prefix rule as above — the
# repo-root file does not cover this workspace's install path.
# Rationale: docs/DEPS.md "Inline Audit Policy".
audit=false
8 changes: 8 additions & 0 deletions browser/.npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,11 @@
# it means the guard is already in place if any are ever added, rather than the
# addition silently arriving with an install-time execution slot.
ignore-scripts=true

# Skip the post-install advisory lookup. npm BLOCKS on it (`fetch-timeout` 300s
# times `fetch-retries` 2), so an endpoint that stalls hangs an install for
# minutes to print a summary. Pre-emptive here for the same reason as the setting
# above — this workspace has no dependencies today, so the guard is in place
# before any arrive rather than added afterwards.
# Rationale: docs/DEPS.md "Inline Audit Policy".
audit=false
7 changes: 7 additions & 0 deletions client/.npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,10 @@ ignore-scripts=true
# root `setup` / `start` / `dev` scripts instead — a check that gates on this
# project's floor and nothing else. `engines` stays for the npm warning and as
# the machine-readable declaration.

# Skip the post-install advisory lookup. npm BLOCKS on it (`fetch-timeout` 300s
# times `fetch-retries` 2), so an endpoint that stalls hangs this workspace's
# install for minutes to print a summary. Same local-prefix rule as above — the
# repo-root file does not cover this workspace's install path.
# Rationale: docs/DEPS.md "Inline Audit Policy".
audit=false
Loading