Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3016 commits
Select commit Hold shift + click to select a range
777cfa8
fix(gateway): drop interrupt sentinel before chat delivery (#7921)
waseemshahwan Jul 2, 2026
1fcf6e5
chore: map waseemshahwan in AUTHOR_MAP for #56841 salvage
teknium1 Jul 6, 2026
d84a2af
docs: correct Python support to 3.11-3.13 (#59572)
teknium1 Jul 6, 2026
27f74b2
fix(web): correct 'disabled plugin' diagnosis for web backends (#59573)
teknium1 Jul 6, 2026
d345b9f
refactor(cron): derive one-shot run-claim TTL from HERMES_CRON_TIMEOU…
teknium1 Jul 6, 2026
2d16ec7
feat(secrets): pluggable SecretSource interface + multi-source orches…
teknium1 Jul 6, 2026
db495b0
refactor(secrets): extract shared cache/result substrate for secret s…
hwrdprkns Jun 1, 2026
5c4c0e9
feat(secrets): add 1Password (op://) secret source
hwrdprkns Jun 1, 2026
2dc4286
fix(secrets): remove unused masked_secret_prompt import from onepassw…
hwrdprkns Jun 1, 2026
8a76de9
fix(secrets): make 1Password bootstrap token reliable outside systemd
hwrdprkns Jun 3, 2026
8235f48
feat(secrets): adapt 1Password onto the SecretSource interface
teknium1 Jul 6, 2026
d7348bf
fix(interrupt): run user-approved commands from a clean interrupt slate
hellno Jun 19, 2026
7426c09
chore: map hellno in AUTHOR_MAP for #49033 salvage
teknium1 Jul 6, 2026
409560a
Merge remote-tracking branch 'origin/main' into bb/serve-headless-no-…
OutThisLife Jul 6, 2026
7dfd507
feat(oneshot): add --usage-file JSON usage report to hermes -z (#59615)
teknium1 Jul 6, 2026
077419b
test(desktop): regression-guard fetchJsonViaOauthSession headers (#40…
teknium1 Jun 6, 2026
5431bf2
fix(desktop): default HERMES_DESKTOP_CWD to cwd when --cwd omitted
teknium1 Jun 6, 2026
51e6ef5
feat(banner): size skills display to terminal width instead of fixed …
teknium1 Jun 6, 2026
91c68bf
Merge pull request #55923 from NousResearch/bb/serve-headless-no-web-…
OutThisLife Jul 6, 2026
94cdd56
feat(plugins): surface entry-point plugins in hermes plugins list
teknium1 Jun 6, 2026
1ea0bbb
feat(config): add display.timestamp_format and honor it in CLI timest…
teknium1 Jun 6, 2026
b24ff55
docs: Plugins subcategory under Extending + secret-source plugin guid…
teknium1 Jul 6, 2026
2ebf9a9
refactor(skills): finish shop-app→shop rename in zh-Hans docs
teknium1 Jul 6, 2026
5e5191b
feat(skills): add dynamic-workflow orchestration skill
teknium1 Jun 2, 2026
4f008b6
docs(skills): tighten dynamic-workflow per donovan-yohan review
teknium1 Jun 8, 2026
586acf5
feat(curator): add `hermes curator usage` — all-skills usage view
teknium1 Jun 1, 2026
d4bcd93
docs: browser provider plugin guide + complete the plugin routing map…
teknium1 Jul 6, 2026
78ee0aa
[verified] fix: account for codex replay in compression tail budget
bigstar0920 Jun 13, 2026
8cc1ca4
chore: add bigstar0920 to AUTHOR_MAP
teknium1 Jul 6, 2026
5e68599
fix(ci): make the CI timing report unflakeable (#59818)
teknium1 Jul 6, 2026
370a489
fix(auxiliary): floor compression timeout so reasoning models don't f…
Tranquil-Flow Jun 29, 2026
948993c
feat(compression): extend Codex 272K compaction autoraise to gpt-5.4
tanmayxchoudhary Jun 26, 2026
0b6df66
fix(compression): autoraise gpt-5.3-codex-spark threshold to 70% (#48…
Tranquil-Flow Jun 18, 2026
bdca94e
fix(compression): keep Codex gpt-5.5 autoraise from lowering a higher…
sasquatch9818 Jun 7, 2026
fff2408
fix(agent): dedupe Codex gpt-5.5 autoraise notice across agent inits
sanidhyasin Jul 2, 2026
60391d0
fix(agent): don't apply Codex gpt-5.5 autoraise notice when an extern…
AIalliAI Jun 11, 2026
5de4232
test: expect model slug in autoraise notice dict (follow-up to gpt-5.…
teknium1 Jul 6, 2026
dd7198e
chore: add tanmayxchoudhary to AUTHOR_MAP
teknium1 Jul 6, 2026
70c6ae6
fix(tui): stop hermes --tui -m from persisting the model globally (#5…
teknium1 Jul 6, 2026
4131ec3
fix(tui): support model picker refresh
helix4u Jul 6, 2026
4b4f058
fix(tui): probe active custom model provider
helix4u Jul 6, 2026
b3bee33
fix(tui): keep bare custom model listing stable
helix4u Jul 6, 2026
8301654
fix(web): refresh dashboard model picker
helix4u Jul 6, 2026
f69e3aa
fix(auxiliary): refresh auto-routed provider credentials on 401
fanyangCS Jul 6, 2026
d42e9b1
fix(auxiliary): recover from stale fallback-candidate credentials ins…
teknium1 Jul 6, 2026
8f80a98
chore: add fanyangCS to AUTHOR_MAP
teknium1 Jul 6, 2026
91bcfff
Revert "docs(skills): tighten dynamic-workflow per donovan-yohan review"
teknium1 Jul 7, 2026
05cbddc
Revert "feat(skills): add dynamic-workflow orchestration skill"
teknium1 Jul 7, 2026
1c702aa
fix(agent): run Z.AI overload adaptive backoff on the overloaded path
xxxigm Jul 6, 2026
ba03c5a
test(retry): cover Z.AI overload retry ceiling reachability
xxxigm Jul 6, 2026
45f5a6e
refactor(retry): single-source Z.AI overload short-attempts + drop ch…
kshitijk4poor Jul 7, 2026
b2213ba
fix: fetch Codex quota from credential pool
spiky02plateau May 26, 2026
c59b300
test: lock Codex usage percent polarity
spiky02plateau May 26, 2026
130e233
fix(usage): scope Codex usage pool fallback to AuthError, keep single…
kshitijk4poor Jul 7, 2026
ef599aa
chore: map spiky02plateau in AUTHOR_MAP for #32824 salvage
kshitijk4poor Jul 7, 2026
586aae4
Merge pull request #60034 from kshitijk4poor/salvage/59523-zai-overlo…
kshitijk4poor Jul 7, 2026
536ffed
feat(docker): re-seed a terminally-dead Nous bootstrap session on boo…
benbarclay Jul 7, 2026
444dc0d
feat(auth): log forensic detail at Nous quarantine so terminal auth d…
benbarclay Jul 7, 2026
1822562
test: drop worktree-path sanity guard that fails in CI
benbarclay Jul 7, 2026
5eac665
feat(status): expose nous_session_valid on /api/status for hosted-age…
benbarclay Jul 7, 2026
2726c21
feat(display): show file_path in skill_view tool progress lines (#60079)
teknium1 Jul 7, 2026
d297568
fix(gateway): detect config token credential collisions (#59321)
teknium1 Jul 7, 2026
f1fde49
fix(gateway): avoid cross-profile session recovery (#59325)
teknium1 Jul 7, 2026
088b989
fix(gateway): scope reset banners' session info to the serving profil…
teknium1 Jul 7, 2026
249c69b
fix(gateway): per-profile pairing whitelist isolation in multiplex mo…
teknium1 Jul 7, 2026
76979a0
fix(auth): per-profile Anthropic OAuth file + complete port-binding p…
teknium1 Jul 7, 2026
4b9d9b2
fix(dashboard): use loopback host for in-container WebSocket client (…
benbarclay Jul 7, 2026
043e71f
fix(gateway): use process-level HERMES_HOME for identity files (#5699…
teknium1 Jul 7, 2026
ae878e1
fix(state): set active=1 explicitly in message INSERTs (#51646)
HexLab98 Jul 6, 2026
7445df1
test(state): cover explicit active=1 on message INSERT (#51646)
HexLab98 Jul 6, 2026
b75783e
fix(state): heal NULL active rows on every startup, not just pre-v12 DBs
kshitijk4poor Jul 7, 2026
11516f3
perf: partial index so the startup NULL-active repair skips the table…
kshitijk4poor Jul 7, 2026
33a5295
fix(gateway): strip stale dangerous-confirmation text in user message…
knoal Jul 6, 2026
e7a6d67
fix: redact expired confirmations in place to preserve role alternation
kshitijk4poor Jul 7, 2026
6d3d9d0
fix: drop timestamp in handle_max_iterations' hand-built api_messages
kshitijk4poor Jul 7, 2026
07d9341
fix: default memory null target to memory store (#46356)
teknium1 Jul 7, 2026
6297206
fix(cron): normalize absolute skill paths before skill_view (#59824)
HexLab98 Jul 6, 2026
e7082ea
test(cron): cover absolute skill path normalization (#59824)
HexLab98 Jul 6, 2026
713e50e
fix: normalize against tools.skills_tool.SKILLS_DIR, the root skill_v…
kshitijk4poor Jul 7, 2026
2c5762f
chore: debug log for untrusted absolute skill paths; drop misleading …
kshitijk4poor Jul 7, 2026
3c8130a
fix: re-apply confirmation expiry on the cached-agent live-history path
kshitijk4poor Jul 7, 2026
8a7d079
fix: merge split gateway pairing stores
williamumu May 23, 2026
179ca25
chore: add williamumu to AUTHOR_MAP for PR #31041 salvage
teknium1 Jul 5, 2026
2e30a5e
fix: prevent /stop signal loss and empty provider credential corruption
isheng-eqi Jul 7, 2026
c2c7360
test: set pool.provider= on mocks to avoid MagicMock truthy guard tri…
isheng-eqi Jul 7, 2026
144457d
fix(interrupt): extend post-worker /stop guard to Bedrock streaming path
kshitijk4poor Jul 7, 2026
fc02b1c
refactor(cli): simplify safe-mode startup wiring
teknium1 Jun 13, 2026
299d5c6
fix(cli): safe mode also skips shell-hook registration
teknium1 Jul 7, 2026
c0adfd4
feat(desktop): render Mermaid code blocks in markdown file preview
teknium1 Jul 6, 2026
7ff86f4
refactor(desktop): route preview-pane mermaid fences through shared e…
teknium1 Jul 7, 2026
a796e0b
fix: cool down transient Telegram typing failures (#46355)
teknium1 Jul 7, 2026
8fc1cb7
fix: repair URL authority whitespace before web fetches (#46363)
teknium1 Jul 7, 2026
d1c8c03
feat(agent): add Codex-native compaction paths
hmirin Jun 27, 2026
87b65e2
refactor(compression): scope Codex-native compaction to the app-serve…
teknium1 Jul 7, 2026
b8ce583
fix(discord): bound REST response reads
ooiuuii Jun 29, 2026
87be36c
fix(discord): bound component labels by UTF-16 units
ooiuuii Jun 29, 2026
e0bca1c
fix(discord): bound standalone response reads
ooiuuii Jun 29, 2026
f341cad
refactor(discord): detect streaming bodies structurally, not by mock-…
teknium1 Jul 7, 2026
7647eff
Merge pull request #60117 from kshitijk4poor/fix/59607-cached-agent-e…
kshitijk4poor Jul 7, 2026
ce038a0
fix(schema): preserve multi-type arrays as anyOf instead of dropping …
teknium1 Jun 19, 2026
4aaaa20
fix(telegram): add timeout to start_polling() in network error handler
liuhao1024 Jul 6, 2026
aaeba21
fix(telegram): bound start_polling() at bootstrap and conflict-retry …
kshitijk4poor Jul 7, 2026
2718179
fix(docs): discord permissions (add Create Public Threads, remove Use…
Jun 6, 2026
b2c6668
chore: add flo1t to AUTHOR_MAP
teknium1 Jul 7, 2026
569b78c
fix(setup): bootstrap pip with ensurepip when not available in venv b…
ygd58 Mar 25, 2026
ba865e4
refactor(setup): route dependency installs through the canonical uv→p…
teknium1 Jul 7, 2026
9420f1a
test(google_meet): assert ladder-based dependency install instead of …
teknium1 Jul 7, 2026
b899ffd
test(e2e): stub reset-notice session info to deflake test_new_resets_…
teknium1 Jul 7, 2026
9c272a3
feat(gateway): default session auto-reset to off (mode: none) (#60194)
teknium1 Jul 7, 2026
0d9ed92
Add semantic titles for Discord auto-threads
rungmc357 Jul 2, 2026
1deeaf7
fix(discord): truncate thread titles by UTF-16 units + AUTHOR_MAP
teknium1 Jul 7, 2026
4916897
feat: add uninstall dry-run mode
teknium1 Jun 15, 2026
f8723c4
fix(skills): resolve skills dir from active profile
jplew Jul 1, 2026
4a99571
fix(tui): pass profile_home to slash_worker subprocess for profile-lo…
iamlukethedev Jun 7, 2026
c6a3d41
fix(skills): widen call-time skills-dir resolution to skill_manager_tool
teknium1 Jul 7, 2026
4f6313e
test(tui): accept profile_home kwarg in _FakeWorker doubles
teknium1 Jul 7, 2026
a1e6ea7
fix(tools): keep shell snapshots owner-only
egilewski Jul 1, 2026
685f527
chore: add andrewhomeyer to AUTHOR_MAP (co-author on snapshot perms s…
teknium1 Jul 7, 2026
afb5808
feat(discord): make interactive view timeout configurable (#60230)
teknium1 Jul 7, 2026
cc0aa18
feat(kanban): add grab-to-pan board scrolling
vampyren Jul 7, 2026
3c63ed3
chore: add vampyren to AUTHOR_MAP (PR #59830 salvage)
teknium1 Jul 7, 2026
2acbdd1
fix(discord): include approval command in message content
jakepresent Jun 25, 2026
009b42d
fix(discord): mirror all interactive prompt payloads into message con…
teknium1 Jul 7, 2026
2bc6e1a
fix(installer): put node.exe on PATH for Windows npm lifecycle scripts
HexLab98 Jul 7, 2026
8ff162f
test(installer): guard Ensure-NodeExeOnPath wiring in install.ps1
HexLab98 Jul 7, 2026
d33becd
fix(gateway): demote PRIORITY-path interrupt to queue during compress…
pierrenode Jul 7, 2026
1c473bc
Merge pull request #60291 from HexLab98/fix/windows-installer-node-pa…
OutThisLife Jul 7, 2026
4ca6186
docs: sharpen bypass comment per review
kshitijk4poor Jul 7, 2026
2e42bb2
Merge pull request #60448 from kshitijk4poor/chore/59607-comment-prec…
kshitijk4poor Jul 7, 2026
91885a3
feat(sessions): export sessions to markdown
web3blind Jul 6, 2026
f3c27e3
refactor(sessions): fold Markdown/QMD export into 'sessions export --…
teknium1 Jul 7, 2026
51dd569
docs(i18n): add zh-Hans docs for Markdown/QMD session export
teknium1 Jul 7, 2026
acfefa4
feat(sessions): full prune-filter set + --redact on sessions export
teknium1 Jul 7, 2026
b9d9b8a
fix(discord): handle expired slash defer interactions
Alix-007 May 28, 2026
4c3a388
fix(discord): widen expired-defer handling to /thread slash command
teknium1 Jul 7, 2026
8ce3c2f
feat(desktop): add UI scale setting to appearance settings
Adolanium Jul 7, 2026
ee66ff2
chore(desktop): drop PR screenshot assets from tree
teknium1 Jul 7, 2026
985e19c
fix(agent): add cross-turn stream-stale circuit breaker (#58962)
necoweb3 Jul 7, 2026
2985d16
fix: reset stream-stale breaker on model switch and fallback activation
kshitijk4poor Jul 7, 2026
437052f
docs: document HERMES_STREAM_STALE_GIVEUP alongside sibling stream knobs
kshitijk4poor Jul 7, 2026
d43863f
fix: widen stale circuit breaker to non-streaming path + all provider…
kshitijk4poor Jul 7, 2026
fa65137
fix(bedrock): route non-Claude auxiliary models through Converse API
xxxigm Jul 7, 2026
e9da629
test(bedrock): cover auxiliary Converse routing for non-Claude models
xxxigm Jul 7, 2026
b2d6a51
fix: normalize string stop + surface dropped stream/tool_choice in Co…
kshitijk4poor Jul 7, 2026
2a14205
feat(mem0): self-hosted dashboard backend + recall tuning (salvage #5…
kartik-mem0 Jul 2, 2026
53edf6f
fix(mem0): make prompt label + platform setup honor host routing prec…
kshitijk4poor Jul 2, 2026
9a32272
fix(mem0): prune dead get_all, wire rerank config default, warn on ME…
kshitijk4poor Jul 7, 2026
b598f8e
feat: add prompt-only session export
catbearlove1-lang Jul 3, 2026
a80e5e7
feat(cli): add standalone HTML session export with sidebar navigation
simplast May 22, 2026
49dd0b1
feat(cli): include system prompts in HTML export
simplast May 23, 2026
a730156
feat(cli): redesign system prompt display as dedicated header section
simplast May 23, 2026
271130a
feat(cli): expand system prompt by default in HTML export
simplast May 23, 2026
4bd6fce
fix(cli): fix layout width bug and ensure system prompt header is used
simplast May 23, 2026
ab07e06
style(export): restore width: 0 for multi-session flex layout
simplast May 23, 2026
b172e03
feat(cli): filter internal session_meta messages from HTML export
simplast May 23, 2026
f76899f
feat(sessions): wire html + prompt-only formats into 'sessions export'
teknium1 Jul 7, 2026
e0176cb
feat(discord): optionally mention approval owners on exec prompts
alex107ivanov Jul 7, 2026
94b4ac1
chore: add alex107ivanov to AUTHOR_MAP
teknium1 Jul 7, 2026
b1500af
fix: restore cli-config.yaml.example from main (stale-branch version …
teknium1 Jul 7, 2026
b428920
fix(web-server): close OAuth token TOCTOU by writing 0o600 atomically
Que0x Jul 4, 2026
5e51b12
feat(mem0): add self-hosted mode to the setup wizard
teknium1 Jul 7, 2026
0e04d14
feat(sessions): trace export + HF upload via 'sessions export --forma…
teknium1 Jul 7, 2026
37a4cf9
fix: limit desktop model pickers to explicit providers
rarf Jul 2, 2026
a0b14a3
chore: map Ronald contributor email
rarf Jul 2, 2026
f304f41
fix: harden explicit-provider gate for stale env-seeded pool entries …
teknium1 Jul 7, 2026
36308f0
feat(plugins): pass approve rule keys to approval gate
doncazper Jul 5, 2026
117f49b
fix(approval): wire gateway notify round-trip into the plugin escalat…
teknium1 Jul 7, 2026
d5a5ea8
chore: add doncazper to AUTHOR_MAP
teknium1 Jul 7, 2026
0ecfbc9
feat(pty): RingBuffer for keep-alive output capture
TinkerOfThings Jun 21, 2026
e5ac169
feat(pty): PtySession drain/attach/detach with EOF close 4410
TinkerOfThings Jun 21, 2026
41166bb
feat(pty): PtySessionRegistry with reap + capacity
TinkerOfThings Jun 21, 2026
e10e4bc
feat(chat): reattach /api/pty sessions via ?attach= token
TinkerOfThings Jun 21, 2026
c3d2be0
feat(pty): periodic reaper wired into dashboard lifespan
TinkerOfThings Jun 21, 2026
79f4f78
feat(chat): persist attach token, reconnect on transient close
TinkerOfThings Jun 21, 2026
086596c
fix(mcp): reap orphaned subprocesses before spawning new ones on retry
liuhao1024 Jul 2, 2026
f99e9f0
fix(mcp): reap stdio orphans before reconnect
tianma-if Jul 4, 2026
743c116
fix(mcp): unify reconnect orphan reaping + move off the event loop
teknium1 Jul 7, 2026
1f6836c
fix(mcp): bound stdio initialize handshake to stop subprocess/FD leak
rainbowgore Jul 6, 2026
4638f3b
fix(mcp): widen #59349 handshake bound to HTTP transports + cancel ab…
teknium1 Jul 7, 2026
5089c84
fix(mcp): reap orphaned stdio MCP children on ungraceful parent death
Jul 7, 2026
86c5feb
fix(mcp): watchdog wrap after OSV preflight + forward SIGTERM to chil…
teknium1 Jul 7, 2026
6c731fe
Recycle idle MCP stdio servers
harjothkhara Jun 8, 2026
ea0b42c
Handle minimal MCP server fakes
harjothkhara Jun 8, 2026
bae3954
chore(release): map rainbowgore + thestudionorth in AUTHOR_MAP for MC…
teknium1 Jul 7, 2026
a620383
docs(mcp): document idle_timeout_seconds / max_lifetime_seconds recyc…
teknium1 Jul 7, 2026
2d4fd1d
test(mcp): unblock recycle-reconnect test from the parked self-probe …
teknium1 Jul 7, 2026
838d504
fix(mcp): guard POSIX-only kill primitives in stdio watchdog for the …
teknium1 Jul 7, 2026
b062083
feat(dashboard): report profile + gateway topology in /api/status (#6…
teknium1 Jul 7, 2026
8a726e9
fix(tools): enable platform-native toolsets when their composite is e…
Tranquil-Flow Jul 1, 2026
551f001
docs(sessions): unify export docs under one overview section (#60554)
teknium1 Jul 7, 2026
c3808cf
fix(discord): honor pairing grants for message auth
BROCCOLO1D Jul 3, 2026
3e7ade4
fix(discord): explain fail-closed allowlist default
yungchentang Jul 7, 2026
db9e3e4
docs(discord): troubleshoot silent fail-closed denials
teknium1 Jul 7, 2026
6ca3d70
fix(gateway): only session-discover channel targets for connected pla…
teknium1 Jul 8, 2026
0263f1d
Fix delegation config precedence
shannonsands Jul 7, 2026
bf76391
Use read-only config loader and honor HERMES_IGNORE_USER_CONFIG in de…
shannonsands Jul 7, 2026
5633fa1
fix(dashboard): advertise truecolor to the embedded chat TUI (#60576)
teknium1 Jul 8, 2026
8d66e78
feat(dashboard): expose profile names + gateway_mode on gated /api/st…
benbarclay Jul 8, 2026
4e4a69c
feat(relay): carry routed profile from the connector wire source (#60…
benbarclay Jul 8, 2026
4b184cb
Add dashboard memory provider switching
shannonsands Jul 3, 2026
d9a4b5a
fix: validate memory provider names before filesystem lookup and setu…
teknium1 Jul 8, 2026
75de005
feat(gateway): GATEWAY_MULTIPLEX_PROFILES env override for multiplex …
benbarclay Jul 8, 2026
543f069
Fix dashboard chat model profile scoping
shannonsands Jun 22, 2026
6015ee5
fix: pass profile-scoped SessionDB to _session_latest_descendant in d…
teknium1 Jul 7, 2026
4f620a0
Add WhatsApp dashboard pairing flow
shannonsands Jul 2, 2026
f9eca7e
chore: release v0.18.1 (2026.7.7) (#60595)
teknium1 Jul 8, 2026
c30c975
fix(whatsapp): unpin Baileys from git commit, use published 7.0.0-rc1…
teknium1 Jul 8, 2026
9de9c25
chore: release v0.18.2 (2026.7.7.2) (#60651)
teknium1 Jul 8, 2026
4d7f8ad
feat(install): warn pip/Homebrew installs are unsupported (CLI, TUI, …
ethernet8023 Jul 8, 2026
2e1982f
Fail closed on invalid JSON/YAML/TOML writes instead of writing then …
neoguyverx Jul 7, 2026
6695640
fix(tools): make the YAML write gate syntax-only so multi-doc/tagged …
teknium1 Jul 8, 2026
a208b7e
chore: add AUTHOR_MAP entry for neoguyverx (PR #60526 salvage)
teknium1 Jul 8, 2026
862aee4
fix(gateway): drain in-flight cron jobs before shutdown tool kill
HexLab98 Jul 8, 2026
e6077af
test(gateway): cover cron drain during gateway shutdown (#60432)
HexLab98 Jul 8, 2026
24e9ed7
fix(gateway,cron): make shutdown drain visible to in-flight cron work
JoaoMarcos44 Jul 8, 2026
8a573bb
fix(cron): stop interrupted jobs from delivering their pre-kill output
JoaoMarcos44 Jul 8, 2026
ecc6725
fix(gateway,cron): reconcile #60612 + #60631 onto one drain surface
teknium1 Jul 8, 2026
f5ef7ee
fix(tui): prevent ws_orphan_reap from ending gateway-originated sessions
AIalliAI Jul 8, 2026
4878803
fix(tui): derive gateway-owned sources from the Platform enum, not a …
teknium1 Jul 8, 2026
f64e4f4
feat(gateway): generic OIDC client-credentials relay provisioning (NA…
benbarclay Jul 8, 2026
832c5f9
Fix slow Z.AI startup by caching auto-detected endpoint to disk
veradim Jun 7, 2026
c75e1d1
chore: add veradim to AUTHOR_MAP for PR #41201 salvage
kshitijk4poor Jul 8, 2026
6eeed3f
fix: don't flip active_provider when caching Z.AI probe result
kshitijk4poor Jul 8, 2026
1192f29
fix: Z.AI endpoint persist failure must not break URL resolution
kshitijk4poor Jul 8, 2026
7ecc822
fix(cron): stop the ticker from stalling forever on a wedged jobs loc…
teknium1 Jul 8, 2026
98804db
fix(tui_gateway): back off notification poller when session is busy
SiteupAgencia Jul 3, 2026
5413c42
chore: add SiteupAgencia to AUTHOR_MAP for #57435 salvage
teknium1 Jul 8, 2026
465cbe8
test(tools): add unit tests for skill_gist
waroffchange Jul 8, 2026
ac6dd59
fix(agent): tag desktop chat sessions as desktop
fyzanshaik Jul 4, 2026
aab351b
fix(delegation): route async results to origin session
dschnurbusch Jul 6, 2026
4b27be1
fix(delegation): fail-closed orphan handling + session-scoped delegat…
teknium1 Jul 8, 2026
b64b802
feat(models): swap curated Tencent Hy3 Preview for GA tencent/hy3, dr…
teknium1 Jul 8, 2026
ee0b54e
docs(i18n): align translated CONTRIBUTING files with pyproject Python…
waroffchange Jul 8, 2026
5057f03
docs(i18n): align translated CONTRIBUTING files with pyproject Python…
waroffchange Jul 8, 2026
f75f3cd
fix(delegation): route async delegate_task results back to originatin…
asimons81 Jul 5, 2026
6537239
fix(delegation): positive-proof ownership for the post-turn drain
teknium1 Jul 8, 2026
c0fbee9
fix(desktop): register /compress command in TUI gateway dispatch so D…
kyssta-exe Jul 8, 2026
7e3986a
fix(tui): route /compress and /compact past the slash worker to comma…
teknium1 Jul 8, 2026
e10c8eb
fix(whatsapp): use windows_detach_popen_kwargs to prevent console win…
kyssta-exe Jul 8, 2026
efb226b
fix(cli): preserve chat -q answer by gating exit-summary screen clear…
Tranquil-Flow Jun 26, 2026
58e1647
test(cli): update FakeCLI._print_exit_summary for new clear_screen kwarg
teknium1 Jul 8, 2026
63c4100
perf(yuanbao): bounded-concurrency inbound media resolve
Jun 16, 2026
b848fcb
feat(Yuanbao) optimizes media resource processing speed: parallel dow…
Jul 8, 2026
d39c624
fix(delegate): pin async completion to spawning parent session (#57498)
nankingjing Jul 3, 2026
75efd73
fix(gateway): never resurrect ended sessions for delegation completio…
teknium1 Jul 8, 2026
0cf2e39
feat(gateway): add webhook payload filters
ashleyburgers Jul 3, 2026
ae5e390
fix(gateway): run webhook route scripts off the event loop + AUTHOR_M…
teknium1 Jul 8, 2026
8e73481
fix(desktop): continue the selected stored session instead of minting…
teknium1 Jul 8, 2026
5b2b118
fix(model_metadata): avoid str(tools) token estimate stalls
infinitycrew39 Jul 8, 2026
4380ac9
test(model_metadata): cache tools schema token estimate
infinitycrew39 Jul 8, 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
  •  
  •  
  •  
9 changes: 5 additions & 4 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,12 @@ runtime/

# ---------- Not needed inside the Docker image ----------

# Desktop app source (Tauri/Electron); never installed in the container
# Desktop app source (Tauri/Electron); never installed in the container.
# apps/shared is the dashboard↔desktop websocket helper and is linked from
# web/package.json as a file: workspace dep — keep it in the build context.
apps/
!apps/shared/
!apps/shared/**

# Test suite — not shipped in production images
tests/
Expand Down Expand Up @@ -102,6 +106,3 @@ acp_registry/
.gitattributes
.hadolint.yaml
.mailmap

# Top-level LICENSE (not matched by *.md); not needed inside the container
LICENSE
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@
# Get your token at: https://huggingface.co/settings/tokens
# Required permission: "Make calls to Inference Providers"
# HF_TOKEN=
# 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

# =============================================================================
Expand Down Expand Up @@ -411,6 +412,9 @@ IMAGE_TOOLS_DEBUG=false
# Groq API key (free tier — used for Whisper STT in voice mode)
# GROQ_API_KEY=

# ElevenLabs API key (cloud STT/TTS — Scribe transcription)
# ELEVENLABS_API_KEY=

# =============================================================================
# STT PROVIDER SELECTION
# =============================================================================
Expand Down
4 changes: 2 additions & 2 deletions .envrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
watch_file pyproject.toml uv.lock
watch_file pyproject.toml uv.lock hermes
watch_file package-lock.json package.json web/package.json ui-tui/package.json website/package.json apps/shared/package.json apps/desktop/package.json ui-tui/packages/hermes-ink/package.json
watch_file flake.nix flake.lock nix/devShell.nix nix/tui.nix nix/package.nix nix/python.nix
watch_file flake.nix flake.lock nix/devShell.nix nix/tui.nix nix/package.nix nix/python.nix nix/hermes-agent.nix nix/desktop.nix

use flake
62 changes: 62 additions & 0 deletions .github/actions/detect-changes/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Detect affected areas
description: >-
Classify a PR's changed files into CI work lanes (python, frontend, site,
scan, deps, mcp_catalog) so the orchestrator can conditionally call only
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.

outputs:
python:
description: Run Python tests / ruff / ty / windows-footguns.
value: ${{ steps.classify.outputs.python }}
frontend:
description: Run the TypeScript typecheck matrix + desktop build.
value: ${{ steps.classify.outputs.frontend }}
docker_meta:
description: Docker setup and meta files have changed.
value: ${{ steps.classify.outputs.docker_meta }}
site:
description: Build the Docusaurus docs site.
value: ${{ steps.classify.outputs.site }}
scan:
description: Run the supply-chain critical-pattern scanner.
value: ${{ steps.classify.outputs.scan }}
deps:
description: Check pyproject.toml dependency upper bounds.
value: ${{ steps.classify.outputs.deps }}
mcp_catalog:
description: Require MCP catalog security review label.
value: ${{ steps.classify.outputs.mcp_catalog }}

runs:
using: composite
steps:
- name: Classify changed files
id: classify
shell: bash
env:
GH_TOKEN: ${{ github.token }}
REPO: ${{ github.repository }}
EVENT_NAME: ${{ github.event_name }}
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
set -euo pipefail

# Only pull_request events are gated. Other events (push, release,
# dispatch) leave CHANGED empty, so the classifier fails open and every
# lane runs. Post-merge / on-demand validation is never weakened.
if [ "$EVENT_NAME" = "pull_request" ]; then
# Use the compare endpoint with the pinned base/head SHAs from the
# 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)"
fi

echo "Changed files:"
printf '%s\n' "${CHANGED:-(none)}"
printf '%s\n' "${CHANGED:-}" | python3 scripts/ci/classify_changes.py
50 changes: 0 additions & 50 deletions .github/actions/hermes-smoke-test/action.yml

This file was deleted.

50 changes: 50 additions & 0 deletions .github/actions/retry/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Retry a flaky command
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.

inputs:
command:
description: Shell command to run (and retry).
required: true
attempts:
description: Max attempts before giving up.
default: "3"
delay:
description: Seconds to wait between attempts.
default: "10"
working-directory:
description: Directory to run in.
default: "."

runs:
using: composite
steps:
- 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.
env:
_CMD: ${{ inputs.command }}
_ATTEMPTS: ${{ inputs.attempts }}
_DELAY: ${{ inputs.delay }}
run: |
set -uo pipefail
n=0
while :; do
n=$((n + 1))
echo "::group::attempt $n/$_ATTEMPTS: $_CMD"
if bash -c "$_CMD"; then
echo "::endgroup::"
exit 0
fi
echo "::endgroup::"
if [ "$n" -ge "$_ATTEMPTS" ]; then
echo "::error::failed after $n attempts: $_CMD"
exit 1
fi
echo "::warning::attempt $n failed; retrying in ${_DELAY}s: $_CMD"
sleep "$_DELAY"
done
Binary file added .github/pr-screenshots/45449/billing-confirm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
100 changes: 0 additions & 100 deletions .github/workflows/build-windows-installer.yml

This file was deleted.

Loading
Loading