Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3042 commits
Select commit Hold shift + click to select a range
aac74be
fix(approval): classify CLI/TUI approval timeouts separately from exp…
teknium1 Aug 3, 2026
9e373b3
fix(desktop): paste rich text with images as text, not blank attachments
OutThisLife Aug 3, 2026
ef9f6ef
fix(cli): persist YOLO mode across --resume
teknium1 Aug 3, 2026
aa8f0d4
Merge pull request #77292 from NousResearch/bb/composer-mixed-paste
OutThisLife Aug 3, 2026
d79a6f0
fmt(js): `npm run fix` on merge (#77300)
hermes-seaeye[bot] Aug 3, 2026
af6efdc
chore: contributor email mappings for egilewski and myk0la-b
kshitijk4poor Aug 3, 2026
7598bc6
Merge pull request #77319 from kshitijk4poor/chore/attrib-egilewski-m…
kshitijk4poor Aug 3, 2026
6839193
perf(tui): bound scroll rendering and preserve anchors
glesperance Jul 22, 2026
b6cdddd
chore: AUTHOR_MAP for ckaznocha (matrix crypto PRs)
kshitijk4poor Aug 3, 2026
1228bfb
Merge pull request #77329 from kshitijk4poor/chore/attrib-ckaznocha
kshitijk4poor Aug 3, 2026
8f61e61
chore: add contributor email mapping for LFDMcore (core@lfdm.co) (#77…
kshitijk4poor Aug 3, 2026
a93969d
fix(tui): snapshot history after pending model switch applies (#76870)
JoaoMarcos44 Aug 2, 2026
3b53a3c
chore: drop stale diagnostic report from PR #77021
JoaoMarcos44 Aug 2, 2026
9421c5a
perf(agent): precompile response and skill-scan regexes (#33208)
egilewski Jul 22, 2026
622c220
refactor(agent): rebuild hoisted patterns from shared tag-name tuples
kshitijk4poor Aug 3, 2026
307ef00
chore: add ATran28 to AUTHOR_MAP
Aug 3, 2026
f105db2
Merge pull request #77335 from kshitijk4poor/chore/author-map-atran28
kshitijk4poor Aug 3, 2026
db3f7e4
fix(gateway): defer in-band restart until active turns finish (#77184)
HexLab98 Aug 3, 2026
28d994f
test(gateway): cover restart after-turn deferral (#77184)
HexLab98 Aug 3, 2026
1fba2db
fix(tui_gateway): drain in-flight turns before finalizing sessions on…
briandevans Aug 2, 2026
e239184
fix(tui_gateway): bound the shutdown drain sleep by the time left to it
briandevans Aug 2, 2026
eb4f514
fix(tui_gateway): retain live-turn sessions unfinalized when the drai…
briandevans Aug 2, 2026
0cbedc5
docs: note atexit re-finalization interaction in shutdown() docstring
kshitijk4poor Aug 3, 2026
09ed1ac
fix(desktop): memoize sidebar flatRows and row renderers to prevent s…
StanleyStetson Jul 31, 2026
416f91d
fix(test): export VirtualSessionListProps and assert sessions array i…
StanleyStetson Jul 31, 2026
372494f
style(desktop): eslint --fix import order in sessions-section test
kshitijk4poor Aug 2, 2026
873af72
fix(ui-tui): pause status-chrome timers while a blocking overlay is open
briandevans Jul 26, 2026
ee8765c
fix(ui-tui): gate status-rule timers on real occlusion, not $isBlocked
briandevans Jul 30, 2026
e8c1882
refactor(ui-tui): single source for the floating-panel kind set
kshitijk4poor Aug 3, 2026
4ffc844
fix(compression): overflow handlers pass overhead-aware token size to…
LFDMcore Aug 2, 2026
ff3c984
fix(compression): route overhead-aware tokens in post-tool compress +…
LFDMcore Aug 3, 2026
799102a
fix(matrix): fallback to homeserver query for room encryption detecti…
webtecnica Jul 24, 2026
a4b686c
fix(matrix): reset Olm crypto store when the access token's device ID…
ckaznocha Jul 25, 2026
907bdc7
fix(matrix): let the token's own device win over a stale MATRIX_DEVIC…
ckaznocha Aug 2, 2026
3a43422
fix(matrix): migrate crypto store when the Olm pickle key changes
ckaznocha Jul 25, 2026
80d5a57
fix(matrix): commit the migrated account only after the session sweep
ckaznocha Aug 2, 2026
648c01c
fix(matrix): pickle key from resolved device ID, skip migration after…
kshitijk4poor Aug 3, 2026
947fdea
fix(whatsapp): guard bridge reconnect against hangs and unhandled rej…
Aug 3, 2026
45d3416
chore: add contributor email mapping for danielblankhh
kshitijk4poor Aug 3, 2026
21040c4
Merge pull request #77339 from kshitijk4poor/chore-dblank-email
kshitijk4poor Aug 3, 2026
c98ed22
fix(cron): stop lifecycle guard false-positives and crashes on .py/bi…
criptogus Aug 3, 2026
037825c
fix: check NUL bytes before size limit in _read_referenced_script
Kshitij Aug 3, 2026
df9e039
fix(discord): preserve links in truncated tool previews
coffee-the-dev Aug 3, 2026
911d8df
refactor(discord): simplify tool preview links
coffee-the-dev Aug 3, 2026
56941eb
refactor(gateway): share markdown link formatting
coffee-the-dev Aug 3, 2026
7af104b
refactor(discord): keep link formatting adapter-local
coffee-the-dev Aug 3, 2026
e599f10
fix(discord): avoid truncated URL link targets
coffee-the-dev Aug 3, 2026
dd600d1
fix(discord): suppress link embeds in tool preview markdown links
teknium1 Aug 3, 2026
75901a2
perf(tts): pipeline sync per-sentence synthesis with playback
MahdiHedhli Jul 29, 2026
f9ed58e
fix(tui-gateway): merge agent output on model-switch history_version …
JonthanaHanh Aug 3, 2026
cc04825
fix: content-based diff for model-switch marker merge (#76870)
Aug 3, 2026
07dd2f8
chore: AUTHOR_MAP kshitij@k4poor.dev -> kshitijk4poor
Aug 3, 2026
498800a
fix(gateway): offload delivery ledger I/O
ibaldr89 Jul 19, 2026
b7e3cc3
test: move the redelivery event-loop test to the class that has its h…
kshitijk4poor Aug 2, 2026
5b36d64
test: raise blocking-probe timeouts for loaded CI runners
kshitijk4poor Aug 2, 2026
5633764
test: wait for ledger-wrapped sends in drain assertions
kshitijk4poor Aug 3, 2026
1d3242a
chore: map universeszym@mail.ustc.edu.cn to Johnny-xuan
kshitijk4poor Aug 3, 2026
6858e0d
Merge pull request #77371 from kshitijk4poor/chore/attrib-johnny-xuan
kshitijk4poor Aug 3, 2026
4be0d56
perf(tools): compact delegate_task description by deduping against pa…
teknium1 Aug 3, 2026
a01f979
perf(tools): restore benchmark-sensitive phrasing in compacted descri…
teknium1 Aug 3, 2026
d127fb2
fix(approval): stop treating newlines inside quoted arguments as comm…
teknium1 Aug 3, 2026
d1afa16
fix(cron): retain completed one-shot jobs instead of deleting them on…
teknium1 Aug 3, 2026
d0dc1ad
chore: map f1aggo_macair local email to flag0x369
kshitijk4poor Aug 3, 2026
1746f6d
Merge pull request #77451 from kshitijk4poor/chore/attrib-flag0x369
kshitijk4poor Aug 3, 2026
1051434
perf(desktop): isolate right pane layout work
Johnny-xuan Jul 29, 2026
51defb9
fix(desktop): adapt right pane probe to per-cwd status
Johnny-xuan Jul 30, 2026
1573829
fix(desktop): avoid repeated pet spritesheet fetches
embwl0x Jul 8, 2026
cb0226d
docs: update stale samePetRevision comment reference
kshitijk4poor Aug 3, 2026
b0089e8
perf(desktop): skip store update when pet metadata is unchanged
kshitijk4poor Aug 3, 2026
e1843c7
style: fix the type-import sort position in pet-gallery.test.ts
kshitijk4poor Aug 3, 2026
cd41454
fix(gateway): let Desktop omit duplicate transcripts on session resume
blonderhh Aug 3, 2026
67fb0d7
test: expect omit_messages in the queue-drain resume call shape
kshitijk4poor Aug 3, 2026
dd08277
test: expect omit_messages in the tile-delegate resume call shape
kshitijk4poor Aug 3, 2026
bd56440
perf(models): cache GitHub Copilot model catalog for 5 minutes
Xue-1997 Aug 3, 2026
72e8e29
fix(session-search): strip ANSI from recalled messages
Xue-1997 Aug 3, 2026
0125281
fix(tools): allow Unicode letters in workdir validation
Aug 3, 2026
911d380
fix(tools): allocate snapshot temp paths with mktemp instead of $BASHPID
Aug 3, 2026
2f91667
chore: map vanshgilhotra8885@gmail.com to Vansh5632
kshitijk4poor Aug 3, 2026
2ba064b
Merge pull request #77492 from kshitijk4poor/chore/attrib-vansh
kshitijk4poor Aug 3, 2026
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
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
53811b7
merge: adopt Nous Hermes v2026.8.3 stable
pai-scaffolde Aug 4, 2026
6784d64
fix(release): preserve sync automation and isolate test workers
pai-scaffolde Aug 4, 2026
09eb02f
chore: map contributors carried by v2026.8.3
pai-scaffolde 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: 3 additions & 0 deletions .github/actions/detect-changes/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ 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 testing matrix + desktop build.
value: ${{ steps.classify.outputs.frontend }}
Expand Down
3 changes: 1 addition & 2 deletions .github/actions/get-app-token/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,8 @@ runs:
shell: bash
env:
CLIENT_ID: ${{ inputs.client-id }}
PRIVATE_KEY: ${{ inputs.private-key }}
run: |
if [ -n "$CLIENT_ID" ] && [ -n "$PRIVATE_KEY" ]; then
if [ -n "$CLIENT_ID" ]; then
echo "has_app=true" >> "$GITHUB_OUTPUT"
else
echo "has_app=false" >> "$GITHUB_OUTPUT"
Expand Down
27 changes: 23 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ name: CI

on:
pull_request:
workflow_dispatch:
push:
branches: [main]

Expand All @@ -43,6 +42,7 @@ jobs:
timeout-minutes: 10
outputs:
python: ${{ steps.classify.outputs.python }}
python_prod: ${{ steps.classify.outputs.python_prod }}
frontend: ${{ steps.classify.outputs.frontend }}
site: ${{ steps.classify.outputs.site }}
scan: ${{ steps.classify.outputs.scan }}
Expand Down Expand Up @@ -90,7 +90,19 @@ jobs:
e2e-desktop:
name: Desktop E2E
needs: detect
if: needs.detect.outputs.python == 'true' || needs.detect.outputs.frontend == 'true'
# python_prod (not python): the Playwright suite exercises the built app
# + `hermes serve` backend, which never import anything under tests/.
# Tests-only PRs (~17% of commits) skip this 5-minute job — the longest
# single job in the workflow — while still running the full pytest lanes.
#
# ⛔ TEMPORARILY DISABLED (Aug 2, 2026, Teknium) — the suite is red on
# every PR and on main itself since the Aug 1 night engines/npm churn
# (#76499 → #76562 → #76575): the mock-backend Electron window never
# gets a title, so boot/chat/setup/interim specs all fail identically
# regardless of the PR's diff (verified on #76573 and the docs-only
# #76582). Tracking issue: #76627 (assigned: Ari). To re-enable,
# delete the `false &&` below — nothing else changed.
if: ${{ false && (needs.detect.outputs.python_prod == 'true' || needs.detect.outputs.frontend == 'true') }}
uses: ./.github/workflows/e2e-desktop.yml

docs-site:
Expand All @@ -116,6 +128,11 @@ jobs:
needs: detect
uses: ./.github/workflows/uv-lockfile-check.yml

infographic-check:
name: Check no committed infographics
needs: detect
uses: ./.github/workflows/infographic-check.yml

lockfile-diff:
name: package-lock.json diff
needs: detect
Expand All @@ -133,8 +150,10 @@ jobs:
needs: detect
# Trusted main pushes run docker.yml directly so its container-publish
# environment secrets never cross this reusable-workflow call. PR runs
# remain build/test-only and secret-free.
if: needs.detect.outputs.event_name == 'pull_request' && (needs.detect.outputs.python == 'true' || needs.detect.outputs.frontend == 'true' || needs.detect.outputs.docker_meta == 'true')
# remain build/test-only and secret-free. Gated on python_prod (not
# python): the image copies installed code, never tests/ — tests-only
# PRs skip the build.
if: needs.detect.outputs.event_name == 'pull_request' && (needs.detect.outputs.python_prod == 'true' || needs.detect.outputs.frontend == 'true' || needs.detect.outputs.docker_meta == 'true')
uses: ./.github/workflows/docker.yml

supply-chain:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/contributor-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ jobs:
echo -e "$MISSING"
echo ""
echo "Add a mapping file (do NOT edit AUTHOR_MAP in release.py):"
echo " python3 scripts/audit_pr_attribution.py --fix # auto-resolve + create files"
echo "or manually:"
echo -e "$MISSING" | while read -r line; do
email=$(echo "$line" | sed 's/^ *//' | cut -d' ' -f1)
[ -z "$email" ] && continue
Expand All @@ -78,7 +80,7 @@ jobs:

# Emit review_status for unmapped emails
DETAIL=$(echo -e "$MISSING" | sed '/^$/d; s/^ //')
HOW_TO_FIX=$'Add mappings to scripts/release.py AUTHOR_MAP:\n```\n"<email>": "<github-username>",\n```\nTo find the GitHub username for an email:\n```\ngh api \'search/users?q=EMAIL+in:email\' --jq \'.items[0].login\'\n```\n'
HOW_TO_FIX=$'Run from the PR branch:\n```\npython3 scripts/audit_pr_attribution.py --fix\ngit add contributors && git commit -m "chore: map contributor emails" && git push\n```\nOr map one email manually (do NOT edit AUTHOR_MAP in release.py):\n```\npython3 scripts/add_contributor.py <email> <github-username>\n```\nTo find the GitHub username for an email:\n```\ngh api \'search/users?q=EMAIL+in:email\' --jq \'.items[0].login\'\n```\n'
REVIEW_STATUS=$(jq -nc \
--arg detail "$DETAIL" \
--arg how_to_fix "$HOW_TO_FIX" \
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,14 @@ jobs:

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
node-version: 26
cache: npm
cache-dependency-path: website/package-lock.json

- name: grab npm 12
run: |
npm i -g npm@12

- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'
Expand Down
37 changes: 36 additions & 1 deletion .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,19 @@ jobs:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

# Retry once on transient Docker Hub / buildkit pull failures
# (connection reset, auth token timeout, rate limiting). The action
# generates a unique builder name per invocation so the retry doesn't
# collide with the failed first attempt. A genuine persistent failure
# still fails the job — only the first attempt has continue-on-error.
# Refs: docker/setup-buildx-action#510
- name: Set up Docker Buildx
id: buildx
continue-on-error: true
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Set up Docker Buildx (retry)
if: steps.buildx.outcome == 'failure'
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

# Build once, load into the local daemon for testing. Cached
Expand Down Expand Up @@ -88,9 +100,16 @@ jobs:
# ---------------------------------------------------------------------
- name: Install uv (for docker tests)
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # 8.2.0
with:
# Pinned: unpinned setup-uv fetches a 'latest' manifest from
# raw.githubusercontent.com every job; transient fetch failures
# fail the job (2026-07-28 incident). Keep in sync with tests.yml.
version: "0.9.28"

- name: Set up Python 3.11 (for docker tests)
run: uv python install 3.11
uses: ./.github/actions/retry
with:
command: uv python install 3.11

- name: Install Python dependencies (for docker tests)
# ``dev`` extra pulls in pytest, pytest-asyncio —
Expand Down Expand Up @@ -141,7 +160,15 @@ jobs:
- name: Checkout trusted source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

# Retry once on transient Docker Hub / buildkit pull failures.
# See build job for rationale; same pattern.
- name: Set up Docker Buildx
id: buildx
continue-on-error: true
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Set up Docker Buildx (retry)
if: steps.buildx.outcome == 'failure'
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
Expand Down Expand Up @@ -203,7 +230,15 @@ jobs:
pattern: digest-*
merge-multiple: true

# Retry once on transient Docker Hub / buildkit pull failures.
# See build job for rationale; same pattern.
- name: Set up Docker Buildx
id: buildx
continue-on-error: true
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Set up Docker Buildx (retry)
if: steps.buildx.outcome == 'failure'
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/docs-site-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@ jobs:

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
node-version: 26
cache: npm
cache-dependency-path: website/package-lock.json

- name: grab npm 12
run: |
npm i -g npm@12

- name: Install website dependencies
uses: ./.github/actions/retry
with:
Expand Down
26 changes: 20 additions & 6 deletions .github/workflows/e2e-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,13 @@ jobs:
# ── Node ───────────────────────────────────────────────────────────
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
node-version: 26
cache: npm

- name: grab npm 12
run: |
npm i -g npm@12

# Full npm ci (not --ignore-scripts): electron's postinstall
# downloads the binary we launch, and node-pty's native build is
# needed for the terminal pane.
Expand All @@ -52,12 +57,21 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # 8.2.0
with:
# Pin the uv version: unpinned, setup-uv resolves "latest" by
# fetching a manifest from raw.githubusercontent.com on EVERY job —
# a transient fetch failure fails the whole job (2026-07-28 slice-5
# incident). Pinned, the binary downloads directly; no manifest hop.
version: '0.9.28'
enable-cache: true
cache-dependency-glob: |
pyproject.toml
uv.lock

- name: Set up Python 3.11
run: uv python install 3.11
uses: ./.github/actions/retry
with:
command: uv python install 3.11

- name: Install Python dependencies
uses: ./.github/actions/retry
with:
Expand Down Expand Up @@ -101,11 +115,11 @@ jobs:
npx playwright test --reporter=list
fi
env:
CI: "true"
CI: 'true'
# Ensure no real API keys leak into the test env.
OPENROUTER_API_KEY: ""
OPENAI_API_KEY: ""
NOUS_API_KEY: ""
OPENROUTER_API_KEY: ''
OPENAI_API_KEY: ''
NOUS_API_KEY: ''

# ── Save updated baselines to cache (main only) ───────────────────
- name: Save updated baselines to cache
Expand Down
78 changes: 78 additions & 0 deletions .github/workflows/infographic-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Infographic Check

# Rejects PRs that commit PR-infographic images into the repo.
#
# PR infographics are rendered to an image-provider URL (fal.media) and
# embedded in the PR *description*. The PR body is the archive; the binary
# never belongs in git history.
#
# This has now leaked twice. PR #48261 removed the first batch, PR #54564
# removed a second batch and added `infographic/` to `.gitignore` — but
# `.gitignore` only stops *accidental* `git add`. It does nothing against
# `git add -f`, and it does nothing for a path that does not literally match
# the ignore pattern. Nine more PNGs (~14MB) were committed in the four
# weeks AFTER that rule landed, plus PR #70552 caught an `infograficos/`
# spelling that sidestepped the pattern entirely.
#
# A passive ignore rule cannot enforce a policy. This check can.

on:
workflow_call:
outputs:
review_status:
description: "JSON array of review_status objects for the synthesizer."
value: ${{ jobs.check-no-committed-infographics.outputs.review_status }}

permissions:
contents: read

jobs:
check-no-committed-infographics:
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
review_status: ${{ steps.infographic-check.outputs.review_status }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- id: infographic-check
name: Reject committed PR-infographic images
run: |
# Match on the IMAGE, not on a directory name. Keying this to
# `infographic/` is what let `infograficos/` through in #70552 —
# any localized or typo'd directory would sidestep it again.
# Instead: find tracked raster images whose path contains an
# infographic-ish segment, in any spelling, at any depth.
#
# `docs/assets` and `website/` legitimately hold product imagery
# and are excluded; those are referenced from shipped docs pages.
OFFENDERS=$(git ls-files -z \
| tr '\0' '\n' \
| grep -iE '(^|/)(infograph|infograf)[^/]*/' \
| grep -iE '\.(png|jpe?g|webp|gif)$' \
|| true)

if [ -n "$OFFENDERS" ]; then
COUNT=$(printf '%s\n' "$OFFENDERS" | wc -l | tr -d ' ')
STATUS='[{"source":"committed infographics","results":[{"kind":"action_required","title":"PR infographic committed to the repo","summary":"Infographic images belong in the PR description, never in git.","detail":"","how_to_fix":"Untrack the image and reference the provider URL from the PR body instead:\n```\ngit rm --cached <path-to-image>\n```\nThen put it in the PR description:\n```\n## Infographic\n\n![slug](https://<provider-url>)\n```\n"}]}]'
echo "review_status=${STATUS}" >> "$GITHUB_OUTPUT"
echo ""
echo "::error::${COUNT} PR-infographic image(s) are tracked in git."
echo ""
printf '%s\n' "$OFFENDERS" | sed 's/^/ /'
echo ""
echo "PR infographics are rendered to an image-provider URL and"
echo "embedded in the PR DESCRIPTION. The PR body is the archive —"
echo "the binary never enters git history."
echo ""
echo "This rule has been re-established twice already (#48261,"
echo "#54564) and leaked both times, because .gitignore cannot stop"
echo "'git add -f' or a differently-spelled directory (#70552)."
echo ""
echo "To fix:"
echo " git rm --cached <path> # keeps your local copy"
echo " # then embed the provider URL in the PR description"
exit 1
fi
echo "::notice::No committed PR-infographic images."
echo "review_status=[]" >> "$GITHUB_OUTPUT"
13 changes: 5 additions & 8 deletions .github/workflows/js-autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,13 @@ jobs:

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
node-version: 26
cache: npm

- name: grab npm 12
run: |
npm i -g npm@12

# --ignore-scripts: eslint only needs TS sources + eslint packages.
- uses: ./.github/actions/retry
with:
Expand Down Expand Up @@ -128,9 +132,6 @@ jobs:
pull-requests: write # needed for PR creation + auto-merge
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
# The App token below must own the push so its commit triggers CI.
persist-credentials: false

- name: Get GitHub App token
id: app-token
Expand All @@ -152,7 +153,6 @@ jobs:
- name: Apply patch and push to bot branch
env:
BOT_BRANCH: bot/js-autofix
GH_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
set -euo pipefail

Expand All @@ -178,9 +178,6 @@ jobs:
# bot/js-autofix is a bot-only branch that gets rewritten each run.
# If the branch was deleted after a previous PR merge, this
# recreates it.
# Configure Git's credential helper from GH_TOKEN. The App token
# stays in the step environment and never enters the remote URL.
gh auth setup-git
git push --force origin HEAD:"$BOT_BRANCH"

- name: Create/update PR and enable auto-merge
Expand Down
Loading
Loading