Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
5425 commits
Select commit Hold shift + click to select a range
f07f47f
fix(lazy-deps): skip the install ladder on package-manager installs
liuhao1024 Aug 3, 2026
a3257cb
fix(anthropic): drop whitespace-only text blocks reaching the Message…
pooyan6 Aug 2, 2026
633bd35
refactor: dedup _convert_user_message to call _fix_blank_text_blocks_…
kshitijk4poor Aug 3, 2026
5b5a29f
fix: exclude DeepSeek from OpenCode caching path to prevent HTTP 400
JonthanaHanh Aug 3, 2026
815d2e2
chore: add contributor email mapping for baau
kshitijk4poor Aug 3, 2026
636d4e6
Merge pull request #77515 from kshitijk4poor/chore-baau-email
kshitijk4poor Aug 3, 2026
ad49679
Merge commit 'f07f47fe7dfdc87c73dcbfdee24a35dae3f29c2f' into repair/4…
Aug 3, 2026
135a294
feat(mcp): add fingerprint-keyed on-disk MCP tool-schema cache
Vansh5632 Aug 3, 2026
1d5ecad
feat(mcp): lazy server startup from schema cache (design from #56832)
kshitijk4poor Aug 3, 2026
ebf967f
polish(mcp): simplify-pass folds on the lazy-startup salvage
kshitijk4poor Aug 3, 2026
fe6330d
fix(stt): thread confidence thresholds into faster-whisper's own gate…
PRATHAMESH75 Jul 29, 2026
32686bb
chore: add contributor email mapping for wangyunyou
kshitijk4poor Aug 3, 2026
c062fde
Merge pull request #77560 from kshitijk4poor/chore-wyy-email
kshitijk4poor Aug 3, 2026
0a2a69d
fix(credential_pool): check copilot suppression before token exchange
Aug 1, 2026
77404ce
perf(credential_pool): skip gh subprocess when all copilot sources su…
Aug 1, 2026
536ed6a
fix(credential_pool): classify copilot sources by exact match
kshitijk4poor Aug 3, 2026
9c20f7f
chore: add contributor email mapping for szzhoujiarui
kshitijk4poor Aug 3, 2026
7997c9c
Merge pull request #77565 from kshitijk4poor/chore-szz-email
kshitijk4poor Aug 3, 2026
5bbfe63
chore: map rodboev and MaartenDMT contributor emails
kshitijk4poor Aug 3, 2026
a1b3ce6
Merge pull request #77574 from kshitijk4poor/chore/attrib-rodboev-maa…
kshitijk4poor Aug 3, 2026
16bd5d2
fix(tools): reuse subscription features for toolset listing
szzhoujiarui Aug 1, 2026
b45d886
fix(api-server): reuse toolset feature snapshot
szzhoujiarui Aug 1, 2026
9aab062
chore: add EndeavorYen to AUTHOR_MAP
kshitijk4poor Aug 3, 2026
4e698cd
Merge pull request #77586 from kshitijk4poor/chore/attrib-endeavoryen
kshitijk4poor Aug 3, 2026
425c54b
fix(platforms/line): fix broken import of non-existent config functions
ErnestHysa May 26, 2026
abe7f78
chore(contributors): map tbsonline@protonmail.com -> jasoisjaso (#77600)
kshitijk4poor Aug 3, 2026
ec10cfd
chore: add light-merlin-dark to AUTHOR_MAP
kshitijk4poor Aug 3, 2026
844411d
Merge pull request #77601 from kshitijk4poor/chore/attrib-light-merli…
kshitijk4poor Aug 3, 2026
a278db1
fix(agent): jittered, interrupt-aware backoff for empty-response retries
arimu1 Jul 24, 2026
b953a5a
test: fake clock for the backoff-status test (was busy-spinning 7.5s)
kshitijk4poor Aug 3, 2026
d0be609
perf(providers): cache provider list snapshots
yyzquwu Jun 4, 2026
51743f4
test: pin the hit-path copy guard on the provider snapshot cache
kshitijk4poor Aug 3, 2026
ad345a9
feat(gateway): add opt-in 'latency' runtime footer field
Kyzcreig Jul 26, 2026
f4fb23f
perf(transport): gate prompt cache keys by provider capability
rungmc357 Jul 2, 2026
78e2987
feat(transport): imply prompt_cache_key capability for api.openai.com
kshitijk4poor Aug 3, 2026
c8df422
perf(gateway): reuse loaded turn config for timestamp check
MaartenDMT Aug 3, 2026
bdcdde9
perf(cli): add --prefer-offline to npm install during update (#39267)
rodboev Aug 3, 2026
0422479
perf(cron): skip config load on idle scheduler ticks (idea from #33612)
kshitijk4poor Aug 3, 2026
b51c4e6
fix(feishu): defer the lark_oapi import off the startup path
baauzi Jul 17, 2026
f84e368
test: bind lark SDK globals session-wide, not per-file
kshitijk4poor Aug 3, 2026
e80b7ae
fix(feishu): test SDK globals by None-ness, not globals() membership
kshitijk4poor Aug 3, 2026
6cedec1
chore: add contributor email mapping for WojtekMR3
kshitijk4poor Aug 3, 2026
23021f4
Merge pull request #77632 from kshitijk4poor/chore-woj-email
kshitijk4poor Aug 3, 2026
be3be06
perf: replace COUNT(*) with LIMIT-based existence checks
Skywind5487 Jul 2, 2026
14b6e0d
fix(state): take the connection lock in session_count_ge + document a…
kshitijk4poor Aug 3, 2026
034eadb
perf(state): index assistant tool-call rows for Insights queries
PRATHAMESH75 Jul 19, 2026
7f1d84f
perf(insights): pin partial index on assistant tool-call queries
PRATHAMESH75 Jul 19, 2026
401e054
fix(insights): fall back to unpinned queries when the partial index i…
kshitijk4poor Aug 3, 2026
5017deb
refactor(insights): strip INDEXED BY pins via an attribute loop
kshitijk4poor Aug 3, 2026
adcdf9d
perf(state): batch compression-tip row fetch in list_sessions_rich
Jul 6, 2026
b2e1d57
test(state): guard compact_rows threading through batched tip-row fetch
kshitijk4poor Aug 3, 2026
7db2827
refactor(state): chunk the batched tip-row IN clause at 900 ids
kshitijk4poor Aug 3, 2026
b651121
fix(yuanbao): clear _processing_msg_ids/_processing_msg_texts after e…
AhmetArif0 May 10, 2026
81c8645
fix(yuanbao): evict stale entries from _member_cache on TTL expiry
AhmetArif0 May 10, 2026
f3add02
fix(yuanbao): pop tracking entries only for truthy matching msg_id + …
kshitijk4poor Aug 3, 2026
4cf2fb5
chore: add frizikk to AUTHOR_MAP
kshitijk4poor Aug 3, 2026
2b0d58e
Merge pull request #77636 from kshitijk4poor/chore/attrib-frizikk
kshitijk4poor Aug 3, 2026
9891f4b
perf(zai): parallelize endpoint detection probes
light-merlin-dark Apr 11, 2026
9e99a33
test(zai): cover parallel-probe contracts + restore candidate-model loop
kshitijk4poor Aug 3, 2026
0e4daad
perf(zai): early-exit when the highest-priority endpoint wins (simpli…
kshitijk4poor Aug 3, 2026
94ef36a
Bound MiniMax OAuth error responses
ooiuuii Jul 1, 2026
219bb35
fix(minimax-oauth): read streamed error bodies inside the client cont…
kshitijk4poor Aug 3, 2026
a762625
chore: map xaydinoktay@gmail.com to aydnOktay
kshitijk4poor Aug 3, 2026
ebda995
Merge pull request #77640 from kshitijk4poor/chore/attrib-aydnoktay
kshitijk4poor Aug 3, 2026
f327c89
chore(contributors): map four B2 salvage author emails (#77641)
kshitijk4poor Aug 3, 2026
ffb5430
perf(session-search): project fields before enrichment
frizikk Jul 14, 2026
f795d54
test(session-search): guard projected enrichment
frizikk Jul 14, 2026
2f14c3e
fix: skip memory prefetch on trivial user prompts (greetings)
ayushere Aug 3, 2026
46073d7
chore: add ayushere to AUTHOR_MAP
ayushere May 15, 2026
c093492
refactor(memory): single shared trivial-prompt classifier + gate tests
kshitijk4poor Aug 3, 2026
34d6095
refactor(honcho): delegate _is_trivial_prompt wholly to the shared cl…
kshitijk4poor Aug 3, 2026
b9b0505
fix(desktop): measure adaptive stream flush through the deferred comm…
Adolanium Jul 27, 2026
3060bee
fix(desktop): dedupe optimistic user turns for all wire references, n…
pnascimento9596 Jul 31, 2026
fed10fa
test(desktop): cover wire reference normalization edges
pnascimento9596 Jul 31, 2026
2ebe175
fix(desktop): sort reference-kinds import per lint gate
pnascimento9596 Aug 1, 2026
ed66ff1
fix(desktop): full-jitter backoff on gateway WS reconnect loops
Aug 1, 2026
5ffbea8
fix(desktop): escalate gateway reconnect on elapsed time, not attempt…
kshitijk4poor Aug 3, 2026
94fac06
chore(contributors): map vittoria3103.123@gmail.com -> VittoriaLanzo …
kshitijk4poor Aug 3, 2026
1306ac0
fix(desktop): un-break the .btn-arc rule — '*/' inside a CSS comment …
rerdi92 Aug 3, 2026
82fd574
perf(desktop): stop idle chat re-renders — memo ChatView, stable tile…
hdd69 Aug 3, 2026
bc3fa54
perf(curator): trim dead tool-schema from the LLM review fork
VittoriaLanzo Jul 10, 2026
b6f15f5
fix(desktop): keep a mid-turn reply on screen when its session is reo…
OutThisLife Aug 3, 2026
34f0427
fix(desktop): stop a finished reply rendering twice after history cat…
OutThisLife Aug 3, 2026
cb11a7e
chore(contributors): map two B3 salvage author emails (#77685)
kshitijk4poor Aug 3, 2026
1f692a8
refactor(desktop): hoist the reference-line matcher; drop dead textWi…
kshitijk4poor Aug 3, 2026
53398ff
fix(desktop): do not sandwich structured mid-turn rows with inflight …
686f6c61 Aug 2, 2026
2ecc1db
fix(desktop): scope inflight dump suppression to the live turn tail
686f6c61 Aug 2, 2026
dbefd27
fix(desktop): require structure-bearing row for live-tail same-turn c…
686f6c61 Aug 3, 2026
7a4d047
refactor(desktop): one live-tail vocabulary for transcript reconcilia…
OutThisLife Aug 3, 2026
0de8c32
fix(dashboard): cache plugins hub payload and avoid auth probes
ahmadashfq Jul 15, 2026
9fa17c1
test(dashboard): cover install-hook invalidation of plugins hub cache
kshitijk4poor Aug 3, 2026
1f1acc0
fix(dashboard): warm cold check_fn verdicts with a background probe
kshitijk4poor Aug 3, 2026
c4ac62a
fix(desktop): cancel the pending commit-cost measurement rAF
kshitijk4poor Aug 3, 2026
c163932
perf(dashboard): skip full InsightsEngine on /api/analytics/usage (#1…
rodboev Jun 4, 2026
e3ce092
perf(dashboard): keep tools in focused analytics usage (#18511)
rodboev Jul 14, 2026
773d690
refactor(insights): drop consumer-less get_skill_breakdown alias (sim…
kshitijk4poor Aug 3, 2026
b536f06
Merge pull request #77644 from NousResearch/bb/review-75967
OutThisLife Aug 3, 2026
105aba6
fix(web): clamp dashboard pagination and analytics-days params (#3920…
aydnOktay Aug 3, 2026
2000278
fix(clamps): raise profile fan-out limit to le=500 (simplify-pass fin…
kshitijk4poor Aug 3, 2026
9645ea8
fix(web): avoid blocking provider validation
youzi-1122 Jul 20, 2026
050b953
perf(plugins): seed plugin routes from sessionStorage cache for insta…
AllardQuek May 4, 2026
057939c
fix(plugins): validate cached manifests are an array
AllardQuek Jul 19, 2026
41bba3c
test(plugins): export cache helpers and add focused fallback/refresh …
AllardQuek Jul 19, 2026
c0c45ab
fix(plugins): keep loading gate when cached manifests include a /chat…
kshitijk4poor Aug 3, 2026
decf12e
perf(dashboard): serve hashed /assets bundles with immutable cache he…
kshitijk4poor Aug 3, 2026
6611d87
feat: reset-aware primary restore — stay on fallback until the rate-l…
WojtekMR3 Jul 19, 2026
4c2d473
fix(credential_pool): run next_available_at under the pool lock
kshitijk4poor Aug 3, 2026
9cd605f
fix(credential_pool): defer single-use-token refresh outside threadin…
necoweb3 Jul 26, 2026
687dd63
fix(credential_pool): serialize deferred-refresh pool mutations
kshitijk4poor Aug 3, 2026
2f32092
`hermes sessions optimize-storage` aborts with
Kyzcreig Jul 26, 2026
c2c95f5
Merge pull request #77713 from NousResearch/bb/review-76744-fold
OutThisLife Aug 3, 2026
48e12a0
perf(tools): shrink lazy tool catalog overhead
carbongotfound Jul 29, 2026
13172fc
refactor(tool-search): drop dead fallback ladder in _available_source…
kshitijk4poor Aug 3, 2026
82019e7
fix(credential_pool): unpack the tuple in next_available_at's gate
kshitijk4poor Aug 3, 2026
8167b9f
chore: map copii.list@gmail.com to stremtec
kshitijk4poor Aug 3, 2026
4a99ba1
Merge pull request #77760 from kshitijk4poor/chore/attrib-stremtec
kshitijk4poor Aug 3, 2026
dae5df2
chore(contributors): map marzukia@users.noreply.github.com -> marzuki…
kshitijk4poor Aug 3, 2026
f1133c9
chore: map bot@bkstock.dev to BKStock
kshitijk4poor Aug 3, 2026
7e47a0f
Merge pull request #77779 from kshitijk4poor/chore/attrib-bkstock
kshitijk4poor Aug 3, 2026
eaf4d51
perf(session): route SQLite PRAGMAs through central apply_database_pr…
crayfish-ai Jul 30, 2026
3ac7168
fix(pr): remove remnant local PRAGMAs from PR branch
crayfish-ai Jul 30, 2026
7026177
test(session): guard config-gated performance PRAGMAs across all conn…
kshitijk4poor Aug 3, 2026
416b56b
fix(desktop): flush queued deltas on window focus
unixwzrd Jul 30, 2026
7700597
perf(desktop): stop scroll and status loops in busy sessions
myk0la-b Jul 30, 2026
52fb96d
perf(desktop): pause hidden-pane timers in agents view, cron sidebar,…
hariNEzuMI928 Aug 3, 2026
e2a2149
style(desktop): restore alphabetical import order in agents/index.tsx
kshitijk4poor Aug 3, 2026
aece98c
refactor(desktop): shared pulse beat + fully-gated cron peek (simplif…
kshitijk4poor Aug 3, 2026
9d76d48
fix(lint): import sort + eslint-disable for timer-handle ref clear in…
kshitijk4poor Aug 3, 2026
dab7c88
fix(state): narrow FTS UPDATE triggers with AFTER UPDATE OF + migration
Jul 31, 2026
a5ce909
fix(state): fail closed on CJK trigger migration
yuzilongleif-collab Aug 1, 2026
b66111f
fix(state): quarantine CJK when ensure soft-fails after OF migration
Aug 1, 2026
ae17163
refactor(state): drop unreachable regex guard in trigger migration
kshitijk4poor Aug 3, 2026
c7fd21a
fix(security): reject always-blocked OpenViking endpoints
zapabob Jul 23, 2026
65bcca6
fix(openviking): fail closed on blocked endpoints
zapabob Aug 2, 2026
a3f6953
fix(openviking): don't spawn a second server onto a live port
jeff-mettel Jul 30, 2026
9014aa0
fix(openviking): drop stale "disabled for this Hermes run" warnings
Jul 26, 2026
f0cb219
fix(openviking): re-arm the commit guard after in-place compression
jeff-mettel Jul 30, 2026
f94914f
test(openviking): cover the compression lifecycle, not a hand-set latch
jeff-mettel Jul 30, 2026
5396dd8
fix(memory): read non-secret provider config from config.yaml for Ope…
PRATHAMESH75 Jul 20, 2026
4ebe990
fix(openviking): read recall settings from config.yaml first, env var…
justemu Jul 11, 2026
4b57943
test(openviking): cover config.yaml recall settings with temp-HERMES_…
justemu Jul 11, 2026
e43bc0b
fix(openviking): integrate reliability and configuration hardening
ehz0ah Aug 2, 2026
8fb9c3b
chore(contributors): map OpenViking source authors
ehz0ah Aug 2, 2026
e443d32
test(retaindb): guard scoped secret config resolution
ehz0ah Aug 3, 2026
a49a9e5
fix(openviking): verify servers before sending credentials
ehz0ah Aug 3, 2026
41cc4a1
fix(openviking): catch endpoint errors in setup validation functions
kshitijk4poor Aug 3, 2026
7d066c3
fix(state): deduplicate session system prompts
embwl0x Aug 2, 2026
26133b5
chore: map cicav legacy noreply email
kshitijk4poor Aug 3, 2026
5828687
fix(tui): avoid writable Kanban opens on empty polls
joncaldwell90 Jul 31, 2026
fe4cf36
Merge pull request #77796 from kshitijk4poor/chore/attrib-cicav
kshitijk4poor Aug 3, 2026
5bbd0db
fix(context): dedupe subdirectory hints by content digest and skip ba…
Jul 27, 2026
06ae5b6
perf(state): batch the turn flush into one SQLite transaction
Aug 3, 2026
b58b3ad
perf(tui-gateway): batch branch-seed history copies (whole-bug-class)
kshitijk4poor Aug 3, 2026
84146fb
test(run-agent): update flush-path fakes and assertions for batched w…
kshitijk4poor Aug 3, 2026
da6d960
refactor(state): fold simplify findings — reuse _insert_message_rows,…
kshitijk4poor Aug 3, 2026
5bff398
fix(tests): update two more append_message.call_args assertions to ap…
kshitijk4poor Aug 3, 2026
128ca2e
perf(tui): memoize useSessionLifecycle return (idea from #38491)
stremtec Aug 3, 2026
1770028
ci: retry uv python install
ethernet8023 Aug 3, 2026
67d4bbb
fix(state): route session-resume reads through the WAL read-only conn…
pierrenode Jul 28, 2026
d48a78a
chore: add contributor email mapping for ArcherQAQ
kshitijk4poor Aug 3, 2026
d5584a3
Merge pull request #77821 from kshitijk4poor/chore-archer-email
kshitijk4poor Aug 3, 2026
fc32a38
fix(model_metadata): rewrite localhost->IPv4 for the remaining local …
pierrenode Aug 3, 2026
733e7d2
fix(model_metadata): guard _localhost_to_ipv4 against non-string urls
kshitijk4poor Aug 3, 2026
25a9c2c
perf(cold-start): mitigate ~14s GIL stall during backend init (#60800)
jinglun010-cpu Jul 8, 2026
0bb1462
test: harden cold-start regression tests + debug-log the env-var skip
kshitijk4poor Aug 3, 2026
003b4c8
perf(gateway): per-platform skip_context_files to cut agent build lat…
ArcherQAQ Aug 3, 2026
2f09df5
fix(relay): route Discord tool-progress into the auto-thread, not the…
benbarclay Aug 3, 2026
1f8acb3
fix(agent): stop re-probing endpoints that blackhole TCP connects
rlaope Aug 3, 2026
3c27eb6
chore: release v0.20.0 (2026.8.3)
teknium1 Aug 3, 2026
3763706
chore: add contributor email mapping for Ahmett101
kshitijk4poor Aug 3, 2026
f03eb25
Merge pull request #77867 from kshitijk4poor/chore-ahmett-email
kshitijk4poor Aug 3, 2026
d1c6c6b
perf(moa): cache resolved preset + per-slot runtime to cut cold-start…
Jul 18, 2026
e6f1d61
fix(discord): leave voice channels before cancelling the bot task
BrinShadewater Aug 1, 2026
c0b0cc3
feat(image): parallelize image_generate batches
EndeavorYen May 28, 2026
952d86b
fix(file-sync): serialize concurrent sync cycles
EndeavorYen Jul 13, 2026
a7ad713
fix(tool-executor): unpack 5-tuple runnable_calls in _max_workers_for…
kshitijk4poor Aug 3, 2026
9267c78
fix: exponential backoff for rate-limit fallback cooldown
May 22, 2026
df9dbba
fix(backoff): keep 60s first-hit cooldown, escalate only on consecuti…
kshitijk4poor Aug 3, 2026
861ca18
fix(catalog): wire api_key auth headers for http MCP servers
JonthanaHanh Aug 3, 2026
f8f4755
perf(compressor): release allocator pages after successful compaction
kshitijk4poor Aug 3, 2026
00475e1
fix(catalog): validate http+api_key manifests declare the header's en…
kshitijk4poor Aug 3, 2026
23f8ae3
fix(agent): cap auxiliary LLM concurrency per task
konsisumer Jul 18, 2026
ddae511
fix: thread extra_headers through the call_llm split
kshitijk4poor Aug 3, 2026
7eefb09
fix(nix): tie devShell's HERMES_PYTHON to the venv actually on PATH
ethernet8023 Aug 3, 2026
9b9cbdd
fix(system_prompt): move skills index to the volatile band
marzukia Jun 2, 2026
9555525
docs(system_prompt): fix stale reconstruct_static_prefix docstring ex…
kshitijk4poor Aug 3, 2026
efbfe08
fix(prompt_size): search volatile tier for skills block after the sta…
kshitijk4poor Aug 3, 2026
164c3d6
chore: add contributor email mapping for zabih-sudo
kshitijk4poor Aug 3, 2026
d92a28d
Merge pull request #77902 from kshitijk4poor/chore-zabih-email
kshitijk4poor Aug 3, 2026
f40d63d
chore: add contributor email mapping for HAOWANG116
kshitijk4poor Aug 3, 2026
53cc628
Merge pull request #77912 from kshitijk4poor/chore-haowang-email
kshitijk4poor Aug 3, 2026
aad8f74
fix(backup): serialize and atomically publish snapshots
Jul 22, 2026
827bb0d
chore: add contributor email mapping for ElSnacko
kshitijk4poor Aug 3, 2026
0845232
fix: prefer explicit anthropic api key
kshitijk4poor Aug 3, 2026
a991dfc
docs: document /personality none|default|neutral reset across persona…
teknium1 Aug 3, 2026
4d29ad8
fix(runtime): stabilize broad CI under contention
Aug 3, 2026
923a43c
test(stt): stabilize idle-timeout output preservation
Aug 3, 2026
dac4bbe
fix comment about relay workaround
jquesnelle Aug 3, 2026
3c3ae74
feat(models): add qwen3.8-max to Nous portal + OpenRouter catalogs, r…
teknium1 Aug 3, 2026
91937a6
test: swap context-switch-guard fixture off qwen3.8-max-preview
teknium1 Aug 3, 2026
85f0686
fix(runtime): reap interrupted local subprocess wrappers
Aug 4, 2026
66f145a
fix(runtime): reap fallback-killed local subprocess wrappers
Aug 4, 2026
70db671
Merge pull request #76643 from NousResearch/fix/termux-nemo-relay
jquesnelle Aug 4, 2026
f205354
test(runtime): stabilize loaded concurrency checks
Aug 4, 2026
d218496
Merge pull request #77924 from kshitijk4poor/chore/author-map-elsnacko
kshitijk4poor Aug 4, 2026
3a0a295
fix(agent): keep context_length pin for named custom providers
xxxigm Aug 3, 2026
942ff91
test(gateway): cover named-custom context pin on session-info banner
xxxigm Aug 3, 2026
60c721a
fix(model_metadata): read llama.cpp context from meta.n_ctx + accept …
ElSnacko Jul 15, 2026
f66d625
chore: add contributor email mapping for johnrazmus
kshitijk4poor Aug 4, 2026
e4888a9
Merge pull request #78226 from kshitijk4poor/chore-razmus-email
kshitijk4poor Aug 4, 2026
3b0bb3b
fix(gateway): keep event loop alive during /compress and Relay drain
Dannyzen Aug 4, 2026
9c88625
fix(gateway): bound go_dormant ws.close with teardown timeout
kshitijk4poor Aug 4, 2026
e623432
fix: close the Codex app-server session on agent teardown
johnrazmus Aug 4, 2026
ba9068c
fix(agent): discard bare tool-call marker before fallback/persistence…
JoaoMarcos44 Aug 4, 2026
70d7e4c
fix(agent): repair sessions already contaminated with stale tool-call…
JoaoMarcos44 Aug 4, 2026
e1a2739
feat(cli): add sessions clean-markers to permanently purge stale tool…
JoaoMarcos44 Aug 4, 2026
e18c040
fix(cli): back up state.db before clean-markers writes by default
JoaoMarcos44 Aug 4, 2026
15d51bb
refactor: dedup stale-marker regex — use compiled _STALE_MARKER_RE in…
kshitijk4poor Aug 4, 2026
9938d20
fix(conversation_loop): compress messages on output-cap retry path (#…
Rafa-Ross Aug 3, 2026
04098e2
fix(conversation_loop): prune dead vision-strip fallback; harden outp…
BobClawblaw Aug 3, 2026
78c8bcd
chore: drop CHANGELOG.md and docs/reports/ — not shipped with salvage…
kshitijk4poor Aug 4, 2026
9fc8926
perf: reuse request_input_estimate instead of recomputing estimate_re…
kshitijk4poor Aug 4, 2026
743dc94
chore: AUTHOR_MAP — add BobClawblaw for PR #77870 salvage
kshitijk4poor Aug 4, 2026
2efd376
fix(desktop): accept detached pinned install stamps
Aug 4, 2026
bdc82e3
perf(gateway): prewarm /model picker cache on TUI startup
ZachariahChu Jul 26, 2026
5c078b9
test(tui): pin picker-cache prewarm wiring in entry.main()
kshitijk4poor Aug 4, 2026
dbafb59
perf(cli): check local auth.json/config before slow provider registry…
frohsinnllc Jul 12, 2026
8f52040
test(cli): regression tests pinning auth-first ordering skips registr…
kshitijk4poor Aug 4, 2026
9a20d7f
perf(desktop): keep spinner frames out of React commits
myk0la-b Jul 29, 2026
be54f28
test(desktop): cover minimized/hidden window-state + visibilitychange…
kshitijk4poor Aug 4, 2026
9076ada
fmt(js): `npm run fix` on merge (#78271)
hermes-seaeye[bot] Aug 4, 2026
7098862
perf(gateway): replace SSE poll loop with call_soon_threadsafe-fed as…
zabih-sudo Jul 15, 2026
7a1f2e3
refactor(gateway): extract _sse_frame() helper, dedup 5 inline SSE en…
zabih-sudo Jul 15, 2026
1a09b07
refactor(gateway): route all three SSE writers through _sse_frame()
zabih-sudo Jul 16, 2026
221afc0
refactor(gateway): route session event stream through _sse_frame (ens…
zabih-sudo Jul 16, 2026
fc8e393
test: add cross-thread put_threadsafe + long-reasoning tail tests
zabih-sudo Jul 31, 2026
98165da
fix: reconstruct fused test after conflict resolution
kshitijk4poor Aug 3, 2026
64882bc
perf(tui): bound reasoning-clean input to the displayed tail
zabih-sudo Aug 4, 2026
7e344dc
test: exercise the production _loop_ref path in put_threadsafe tests
kshitijk4poor Aug 4, 2026
fb4e17b
fix(test): feed the SSE writers an asyncio queue, not queue.Queue
kshitijk4poor Aug 4, 2026
db0bd42
fix(credential-pool): re-select in acquire_lease after a deferred ref…
kshitijk4poor Aug 4, 2026
4075c8f
fix(credential-pool): lock the quarantine read-modify-write of _entries
kshitijk4poor Aug 4, 2026
fb6d396
merge: integrate pinned upstream runtime fixes
Aug 4, 2026
fed8864
fix(backup): secure partial archive creation
Aug 4, 2026
4d20b65
fix(backup): pin validated archive publication
Aug 4, 2026
efdb056
fix(backup): clean up failed staging setup
Aug 4, 2026
90b43a9
fix(backup): secure staging setup cleanup
Aug 4, 2026
cab8a67
test(installer): stub warning logger in launcher harness
Aug 4, 2026
2e77717
fix(desktop): shorten POSIX SSH control path
Aug 4, 2026
2a401d3
fix(desktop): validate SSH mux control directory
Aug 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 0 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,6 @@ packaging/
plans/
.plans/

# ACP registry manifest (icon + agent.json) — not consumed at runtime
acp_registry/

# Repo-level dotfiles that are git-only or dev-tooling config
.env.example
.envrc
Expand Down
13 changes: 13 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@
# HF_BASE_URL=https://router.huggingface.co/v1 # Override default base URL
# OPENCODE_GO_BASE_URL=https://opencode.ai/zen/go/v1 # Override default base URL

# DeepInfra — 100+ top open models, pay-per-use.
# Get your key at: https://deepinfra.com/dash/api_keys
# DEEPINFRA_API_KEY=

# =============================================================================
# LLM PROVIDER (Qwen OAuth)
# =============================================================================
Expand All @@ -132,6 +136,15 @@
# Optional base URL override:
# XIAOMI_BASE_URL=https://api.xiaomimimo.com/v1

# =============================================================================
# LLM PROVIDER (Upstage Solar)
# =============================================================================
# Upstage provides access to Upstage Solar models.
# Get your key at: https://console.upstage.ai/api-keys
# UPSTAGE_API_KEY=your_key_here
# Optional base URL override:
# UPSTAGE_BASE_URL=https://api.upstage.ai/v1

# =============================================================================
# TOOL API KEYS
# =============================================================================
Expand Down
58 changes: 52 additions & 6 deletions .github/actions/detect-changes/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,21 @@ description: >-
the sub-workflows a PR can affect. Outputs are always "true" on push/dispatch
events and fail open (everything "true") when the diff cannot be computed.

inputs:
github-token:
description: Token for the GitHub API (gh CLI). Pass steps.app-token.outputs.token from the calling workflow.
required: false
default: ${{ github.token }}

outputs:
python:
description: Run Python tests / ruff / ty / windows-footguns.
value: ${{ steps.classify.outputs.python }}
python_prod:
description: Python changes outside tests/ — gates product jobs (Desktop E2E, Docker).
value: ${{ steps.classify.outputs.python_prod }}
frontend:
description: Run the TypeScript typecheck matrix + desktop build.
description: Run the TypeScript testing matrix + desktop build.
value: ${{ steps.classify.outputs.frontend }}
docker_meta:
description: Docker setup and meta files have changed.
Expand All @@ -24,9 +33,18 @@ outputs:
deps:
description: Check pyproject.toml dependency upper bounds.
value: ${{ steps.classify.outputs.deps }}
npm_lock:
description: Post/update the semantic package-lock.json diff PR comment.
value: ${{ steps.classify.outputs.npm_lock }}
mcp_catalog:
description: Require MCP catalog security review label.
value: ${{ steps.classify.outputs.mcp_catalog }}
ci_review:
description: Require CI-sensitive file review label.
value: ${{ steps.classify.outputs.ci_review }}
ci_review_files:
description: JSON list of CI-sensitive files changed by the pull request.
value: ${{ steps.classify.outputs.ci_review_files }}

runs:
using: composite
Expand All @@ -35,7 +53,12 @@ runs:
id: classify
shell: bash
env:
GH_TOKEN: ${{ github.token }}
# Fall back to the built-in read-only token when the caller passes an
# empty value. Fork PRs get no repo secrets, so AUTOFIX_BOT_PAT is ""
# there, and an input `default:` only applies when the input is omitted,
# not when it's passed empty. Without this fallback the compare API
# fails on forks and the classifier fails open (every lane forced on).
GH_TOKEN: ${{ inputs.github-token || github.token }}
REPO: ${{ github.repository }}
EVENT_NAME: ${{ github.event_name }}
BASE_SHA: ${{ github.event.pull_request.base.sha }}
Expand All @@ -51,10 +74,33 @@ runs:
# event payload instead of the "current PR files" endpoint. The SHAs
# are frozen at trigger time, so the file list is deterministic even
# if the PR receives a new push between trigger and detect.
CHANGED="$(gh api \
--paginate \
"repos/${REPO}/compare/${BASE_SHA}...${HEAD_SHA}" \
--jq '.files[].filename' || true)"
#
# Retried: a rate-limit blip or eventual-consistency 404 on a
# freshly-pushed HEAD would otherwise silently fall open (all lanes
# run — safe, but wasteful and it masks the API failure).
#
# `.files[]?` (null-safe): with --paginate, a PR more than 100
# commits ahead of its merge-base paginates the compare, and pages
# after the first carry `files: null` — bare `.files[]` makes jq
# die with "cannot iterate over: null", which fails every retry
# and forces the fail-open path (seen on stacked PRs). The full
# file list (up to the API's 300-file cap) is on page one.
CHANGED=""
for i in 1 2 3; do
if CHANGED="$(gh api \
--paginate \
"repos/${REPO}/compare/${BASE_SHA}...${HEAD_SHA}" \
--jq '.files[]?.filename')"; then
break
fi
if [ "$i" = 3 ]; then
echo "::warning::compare API failed after 3 attempts — failing open (all lanes run)"
CHANGED=""
break
fi
echo "::warning::compare API failed (attempt $i); retrying in 10s"
sleep 10
done
fi

echo "Changed files:"
Expand Down
69 changes: 69 additions & 0 deletions .github/actions/get-app-token/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Get GitHub App Token
description: >-
Mint a short-lived (1-hour) installation access token from the repo's
GitHub App, replacing the long-lived AUTOFIX_BOT_PAT. App tokens get
5,000 req/hr per installation (vs 1,000 for the default GITHUB_TOKEN)
and are scoped to the App's installation permissions, not a user account.

Callers must source App credentials from a protected, main-only environment.
Never pass an App private key to a pull_request job, a local action, or a
reusable workflow resolved from an untrusted PR ref. The fallback keeps a
trusted caller functional when its protected environment is misconfigured.

Composite actions cannot access contexts directly, so callers pass the
public vars.APP_CLIENT_ID and protected secrets.APP_PRIVATE_KEY as inputs.
When the private key is empty, the fallback fires.

inputs:
client-id:
description: GitHub App Client ID. Pass vars.APP_CLIENT_ID from the calling workflow.
required: false
default: ''
private-key:
description: GitHub App private key PEM. Pass secrets.APP_PRIVATE_KEY from the calling workflow.
required: false
default: ''
owner:
description: GitHub App installation owner. Empty scopes the token to the current repository.
required: false
default: ''
repositories:
description: Comma- or newline-separated repositories to scope within the installation owner.
required: false
default: ''

outputs:
token:
description: A GitHub App installation access token (1-hour TTL), or GITHUB_TOKEN on forks.
value: ${{ steps.app-token.outputs.token || steps.fallback.outputs.token }}

runs:
using: composite
steps:
- name: Check if App credentials exist
id: check
shell: bash
env:
CLIENT_ID: ${{ inputs.client-id }}
run: |
if [ -n "$CLIENT_ID" ]; then
echo "has_app=true" >> "$GITHUB_OUTPUT"
Comment on lines +49 to +50

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require both App credentials before minting a token

When APP_CLIENT_ID is configured but APP_PRIVATE_KEY is empty or unavailable in the protected environment, this check still emits has_app=true, so the fallback is skipped and actions/create-github-app-token runs with a blank private key. That turns the action's intended misconfiguration fallback into a hard failure for callers such as js-autofix and skills-index; include the private-key input in the credential check before choosing the App-token branch.

Useful? React with 👍 / 👎.

else
echo "has_app=false" >> "$GITHUB_OUTPUT"
fi

- name: Create GitHub App token
id: app-token
if: steps.check.outputs.has_app == 'true'
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
with:
client-id: ${{ inputs.client-id }}
private-key: ${{ inputs.private-key }}
owner: ${{ inputs.owner }}
repositories: ${{ inputs.repositories }}

- name: Fall back to GITHUB_TOKEN
id: fallback
if: steps.check.outputs.has_app != 'true'
shell: bash
run: echo "token=${{ github.token }}" >> "$GITHUB_OUTPUT"
26 changes: 23 additions & 3 deletions .github/actions/retry/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ description: >-
Run a shell command, retrying on non-zero exit. For dependency installs
(npm ci, uv sync) whose only failures are transient network/toolchain
flakes — a node-gyp header fetch, a registry blip — so CI self-heals
instead of needing a manual re-run.
instead of needing a manual re-run. Can also capture stdout as a step
output for commands whose result must be consumed by later steps.

inputs:
command:
Expand All @@ -19,10 +20,16 @@ inputs:
description: Directory to run in.
default: "."

outputs:
stdout:
description: Captured stdout from the successful attempt (empty if not needed).
value: ${{ steps.retry.outputs.stdout }}

runs:
using: composite
steps:
- shell: bash
- id: retry
shell: bash
working-directory: ${{ inputs.working-directory }}
# command goes through env, never interpolated into the script body, so
# a command with quotes/specials can't break or inject into the runner.
Expand All @@ -32,12 +39,25 @@ runs:
_DELAY: ${{ inputs.delay }}
run: |
set -uo pipefail
_OUTFILE="$(mktemp)"
trap 'rm -f "$_OUTFILE"' EXIT
n=0
while :; do
n=$((n + 1))
echo "::group::attempt $n/$_ATTEMPTS: $_CMD"
if bash -c "$_CMD"; then
# Run the command, capturing stdout to a temp file while still
# streaming to the log. We redirect first, then tee the file to
# stdout — this avoids pipefail + tee exit-code interactions that
# can cause the if-branch to be skipped under set -e.
if bash -c "$_CMD" > "$_OUTFILE"; then
cat "$_OUTFILE"
echo "::endgroup::"
# Preserve newlines in the output via heredoc delimiter.
{
echo 'stdout<<__RETRY_STDOUT_EOF__'
cat "$_OUTFILE"
echo '__RETRY_STDOUT_EOF__'
} >> "$GITHUB_OUTPUT"
exit 0
fi
echo "::endgroup::"
Expand Down
Loading
Loading