Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3846 commits
Select commit Hold shift + click to select a range
76653a8
fix(sessions): prune/archive spare pinned sessions by default (data l…
teknium1 Aug 20, 2026
138e482
fix(config): set coerces negatives/whitespace/null and rejects malfor…
teknium1 Aug 20, 2026
0a8a4cd
fix(backup): friendly error on unwritable output path instead of raw …
teknium1 Aug 20, 2026
bd5b221
feat(desktop): updating now updates every target — remote backends, o…
teknium1 Aug 20, 2026
a78211b
fix(desktop): sort updates.ts imports for perfectionist lint
teknium1 Aug 20, 2026
d1eefe6
feat: keyed web backends get a one-shot keyless rescue on failure — n…
teknium1 Aug 20, 2026
aca40d1
fix(sessions): error paths return non-zero exit codes (delete/rename/…
teknium1 Aug 20, 2026
6170021
fix(desktop): remote-gateway desktop stops lying after disconnects — …
teknium1 Aug 20, 2026
fa2601c
docs(desktop): troubleshooting entry for SSH host-key-changed latch
teknium1 Aug 20, 2026
d6129bf
chore: retrigger CI (zero-job dispatch failure, auto-heal)
teknium1 Aug 20, 2026
ef5ead5
ci: retrigger — only Label-rerun dispatched on d6129bff
teknium1 Aug 20, 2026
6f31cfa
fmt(js): `npm run fix` on merge (#90690)
hermes-seaeye[bot] Aug 20, 2026
88295f1
ci: retrigger after incident window
teknium1 Aug 20, 2026
1647d03
fix(update): call out GitHub rate limiting/outage on fetch 429 instea…
teknium1 Aug 20, 2026
ebe6fd7
ci: dispatch hammer 1
teknium1 Aug 20, 2026
ed3befa
ci: dispatch hammer 2
teknium1 Aug 20, 2026
8b6cf43
fix(cron): carry Slack workspace scope_id into continuable seed keys
benbarclay Aug 20, 2026
d425658
Merge pull request #90688 from NousResearch/feat/keyed-failure-one-sh…
teknium1 Aug 20, 2026
e69b8e5
feat: consolidate 'hermes version' into 'hermes --version', remove th…
teknium1 Aug 20, 2026
20c56f8
fix(cron): in_channel thread-flatten uses the seed's gate (origin_tar…
benbarclay Aug 20, 2026
79c3902
fix(relay): format hints resolve the DESTINATION platform, and stamp …
benbarclay Aug 20, 2026
d29f76c
fix(bot-mode): group chat no longer doubles into the Bots pane beside…
teknium1 Aug 20, 2026
162b23c
fix(relay): D6 in_channel capability gate resolves the destination pl…
benbarclay Aug 20, 2026
a78af23
docs(cron): document the in_channel carve-out on the mirror opt-in
benbarclay Aug 20, 2026
6cd1ed2
test(relay): rename misnamed precedence test; document the flat-key f…
benbarclay Aug 20, 2026
a1ddb54
fix(gateway): tag the loop-liveness and heartbeat-poll tasks as perma…
pierrenode Aug 20, 2026
c57581c
feat(tools): drive_preview and annotate_preview — the agent can use t…
OutThisLife Aug 19, 2026
c358a6a
feat(desktop): drive the preview with real input, not synthetic events
OutThisLife Aug 20, 2026
f262e68
feat(desktop): an overlay that shows what the agent is doing to the page
OutThisLife Aug 20, 2026
0fd3b61
feat(desktop): durable element handles, and a delta instead of the wh…
OutThisLife Aug 20, 2026
df06be0
refactor(desktop): give the act engine's pure logic real modules
OutThisLife Aug 20, 2026
b3f6218
fix(desktop): a checkbox reports whether it is ticked, not the string…
OutThisLife Aug 20, 2026
0d19e37
Merge pull request #90197 from NousResearch/bb/preview-act
OutThisLife Aug 20, 2026
5ab7473
fix(bot-mode): kill the canonical-chat infinite-fork loop; drop the p…
teknium1 Aug 20, 2026
4308c45
fix(cron): stamp persisted origin scope_id onto origin-matching deliv…
benbarclay Aug 20, 2026
6d85d79
fix(update): hand off only the dependency sync, not the whole update …
OutThisLife Aug 20, 2026
540237c
test(cron): pin the auto-mocked D6 accessor; prove the native scalar …
benbarclay Aug 20, 2026
21e9d45
fix(bot-mode): canonical-chat adoption survives busy profiles via exa…
teknium1 Aug 20, 2026
ab0e1b8
fix(docker): grant the gateway group access to the Fly Machines API s…
benbarclay Aug 20, 2026
cc85fee
test(cron): native scalar-fallback test asserts the live delivery act…
benbarclay Aug 20, 2026
743dc93
fix(gateway): count cron and API-server work in the scale-to-zero idl…
benbarclay Aug 20, 2026
a1a1bee
Merge branch 'main' into feat/relay-slack-parity
benbarclay Aug 20, 2026
8265b87
fix(bot-mode): disband dialog no longer points at the removed session…
kshitijk4poor Aug 20, 2026
e931081
feat(cli): type-to-fuzzy-filter the /model picker model list
teknium1 Aug 20, 2026
d431f68
fix(desktop): corrupt backend-ownership.json no longer erases records…
teknium1 Aug 20, 2026
a41f683
docs(bot-mode): drop the removed per-bot Sessions browser from the Bo…
teknium1 Aug 20, 2026
645f85c
feat(cli): rotating task-oriented composer placeholder (C-09)
teknium1 Aug 20, 2026
3509d4b
chore: nudge PR head sync (empty)
benbarclay Aug 20, 2026
9bdff6a
feat(cli): /status shows reasoning, approval mode, and context usage …
teknium1 Aug 20, 2026
d5edb66
fix(update): reap leaked serve backends during a GUI hand-off instead…
teknium1 Aug 20, 2026
2d92793
fix(update): fail closed when the hand-off shim check cannot run
teknium1 Aug 20, 2026
c757f99
fix(bot-mode): group-chat members' clarify questions surface in the r…
teknium1 Aug 20, 2026
1179f14
fix(bot-mode): group-chat command approvals surface in the room too —…
teknium1 Aug 20, 2026
05b4ab0
feat(cli): declutter /help + Ctrl+P command palette (C-04/C-05)
teknium1 Aug 20, 2026
196a06d
test: pre-command hook stubs accept show_help(arg) after /help filter…
teknium1 Aug 20, 2026
e0e3ca3
Merge pull request #90038 from victor-kyriazakos/feat/relay-slack-parity
benbarclay Aug 20, 2026
a143849
fix: keyless rescue no longer re-fetches policy-blocked URLs
teknium1 Aug 20, 2026
95fa814
feat(process): positive process identity — spawn tags, machine spawn …
teknium1 Aug 20, 2026
d3e1246
test(desktop): parent watchdog env now carries HERMES_SPAWN — update …
teknium1 Aug 20, 2026
5046282
feat(config): resolve_turn_limit — first-class 'none'/'unlimited' for…
fattchris Jul 19, 2026
64505a2
fix(resolve_turn_limit): gateway bridge null handling, TUI resolver, …
fattchris Aug 3, 2026
c32119b
feat(config): default agent.max_turns to unlimited; accept inf/infini…
teknium1 Aug 20, 2026
5dd221d
feat: desktop updates no longer re-apply local source edits (--keep-s…
teknium1 Aug 20, 2026
27d356c
test: shim-progress fake hermes answers the --keep-stash --help probe
teknium1 Aug 20, 2026
fda54a6
chore(tests): remove two flaky test files that tax CI
teknium1 Aug 20, 2026
044acf2
fix(update): gateway auto-restart no longer dies on stale cached modu…
teknium1 Aug 20, 2026
2123a01
fix: disbanded group chats no longer resurface as empty roster rows (…
teknium1 Aug 20, 2026
e2c4793
fmt(js): `npm run fix` on merge (#90818)
hermes-seaeye[bot] Aug 20, 2026
f43eabe
fmt(js): `npm run fix` on merge (#90822)
hermes-seaeye[bot] Aug 20, 2026
b6d21b3
fix(desktop): sidebar row trailing inset, so the working arc stops cl…
OutThisLife Aug 20, 2026
60ff62c
refactor(desktop): build the cron sidebar row from the shared row chrome
OutThisLife Aug 20, 2026
9167010
fix(desktop): pagination ellipses land on the same sidebar edge as th…
OutThisLife Aug 20, 2026
aa08d0f
fix(desktop): session skeletons stand on the same edge as the rows th…
OutThisLife Aug 20, 2026
b94a161
fix(installer): bound the bootstrap installer's pipe drain
OutThisLife Aug 20, 2026
5caea5e
ci: run cargo test for the bootstrap installer
OutThisLife Aug 20, 2026
c47f0b4
Merge pull request #90920 from NousResearch/bb/session-row-trailing
OutThisLife Aug 20, 2026
dd1e5b7
fix(ci): declare the rust lane on the detect job, and test that wiring
OutThisLife Aug 20, 2026
4d2c546
fix(ci): drop --locked, the installer crate has no tracked lockfile
OutThisLife Aug 20, 2026
c670464
fix(anthropic): send an explicit thinking disable on the native Messa…
OutThisLife Aug 20, 2026
ae9367f
test(s6): put the supervise-skeleton setgid assertion on the Linux lane
OutThisLife Aug 20, 2026
2b1bff6
fix(update): Windows Desktop updates finish instead of parking on "Up…
OutThisLife Aug 20, 2026
0723cb6
fix(update): don't reinstall the editable package when the pull can't…
OutThisLife Aug 20, 2026
24e8988
fix(installer): keep the post-EOF wait cancellable
OutThisLife Aug 20, 2026
5e32e3a
Merge pull request #90941 from NousResearch/bb/installer-drain-bound
OutThisLife Aug 20, 2026
dbc2a9c
fix(updater): preserve holder age across handoffs
fangliquanflq Aug 14, 2026
ee6a9f8
fix(updater): carry acquisition age through scripts
fangliquanflq Aug 14, 2026
60f0a4f
fix(desktop): coerce spawn output to string in handoff marker tests
fangliquanflq Aug 14, 2026
fe4515d
fix(desktop): add curly braces in handoff marker test helpers
fangliquanflq Aug 14, 2026
065c8bd
test(updater): cover handoff marker edge cases
fangliquanflq Aug 18, 2026
59795c4
Merge pull request #90994 from NousResearch/bb/updater-preserve-holde…
OutThisLife Aug 20, 2026
63c6d9a
fmt(js): `npm run fix` on merge (#91000)
hermes-seaeye[bot] Aug 20, 2026
2e1e3cc
feat(desktop): let plugins switch the theme from outside React
OutThisLife Aug 20, 2026
89ecaf0
docs: document the desktop plugin SDK theme surface
OutThisLife Aug 20, 2026
9ef9b2d
feat(desktop): let plugins switch the theme, and document the theme s…
OutThisLife Aug 20, 2026
847a9df
fix(goals): honor auxiliary.goal_judge.timeout instead of a hardcoded…
liuhao1024 Aug 20, 2026
9ed308f
refactor(desktop): one identity chip behind every avatar
OutThisLife Aug 20, 2026
73d1041
feat(desktop): resolve a site's own favicon in the main process
OutThisLife Aug 20, 2026
4a5b6dd
feat(desktop): a connector consent card that knows nothing about conn…
OutThisLife Aug 20, 2026
3752948
fix(bot-mode): recreating a same-name group mints fresh member sessions
YuYigeng Aug 19, 2026
92b6da2
fix: disband confirm copy no longer hardcodes the legacy session title
teknium1 Aug 20, 2026
d1ea11d
fix: disband tombstones no longer hold the group name or leak into st…
teknium1 Aug 20, 2026
603d565
chore: map contributor email for attribution gate
teknium1 Aug 20, 2026
693d634
fix(desktop): expose group deletion from roster rows
BkashJEE Aug 19, 2026
7ab2e41
chore: map contributor email for attribution gate
teknium1 Aug 20, 2026
3c5fb28
fix(bot-mode): group-room UX cluster — Shift+Enter newlines, open-at-…
teknium1 Aug 20, 2026
e30388e
fix: retained group panes re-anchor to the latest message on reopen
teknium1 Aug 20, 2026
c3533b3
review: harden flaps socket grant (symlink guard, verified outcome, p…
benbarclay Aug 20, 2026
0215930
review: fail-awake work accounting + rename is_idle param to active_w…
benbarclay Aug 20, 2026
28f7c4e
Merge pull request #90760 from NousResearch/fix/flaps-socket-group-ac…
benbarclay Aug 20, 2026
ee00076
Merge pull request #90761 from NousResearch/fix/scale-to-zero-cron-aw…
benbarclay Aug 20, 2026
48f15c1
chore(gateway): drop the default scale-to-zero idle timeout to 2 minutes
benbarclay Aug 20, 2026
c1e25ca
Merge pull request #91155 from NousResearch/chore/scale-to-zero-defau…
benbarclay Aug 20, 2026
8794e5a
Merge pull request #91025 from liuhao1024/liuhao/cron-bugfix-91022
SHL0MS Aug 20, 2026
770f9a5
fix(desktop): read the live union roster in mention-completions + men…
ArthurFranckPat Aug 20, 2026
76952ba
fix(desktop): follow focused bot for mentions
helix4u Aug 20, 2026
67292ec
fix(gateway): GATEWAY_RELAY_URL env stamp disables direct messaging p…
benbarclay Aug 21, 2026
2d3f5c1
feat(gateway): GATEWAY_RELAY_ALLOW_DIRECT_PLATFORMS opt-out for relay…
benbarclay Aug 21, 2026
5969ea1
fix(opencode): route Muse Spark through the Responses API
kadiratesdev Aug 19, 2026
b9855f5
test(opencode): cover prefixed Zen Muse Spark model id
kadiratesdev Aug 19, 2026
19c6a11
feat(opencode): sync Zen/Go catalogs — Ox Alpha stealth model, Grok r…
teknium1 Aug 21, 2026
309e883
chore: map contributor email for kadiratesdev
teknium1 Aug 21, 2026
ba501f0
fix(desktop): Bot Mode mention readers miss the connection-suffixed r…
zhaomengfan Aug 19, 2026
9629653
chore: map contributor email for @zhaomengfan
teknium1 Aug 21, 2026
477a022
fix(gateway): read relay-exclusive env vars through profile secret scope
benbarclay Aug 21, 2026
ed2d01a
fix(desktop): dedupe profile mention completions
zhongwater123 Aug 18, 2026
892ec7a
chore: map contributor email for @zhongwater123
teknium1 Aug 21, 2026
2ef095c
fix(gateway): source-neutral log wording for relay-exclusive sweep
benbarclay Aug 21, 2026
55a272d
test(gateway): cover profile-scoped relay stamps, log levels, marker …
benbarclay Aug 21, 2026
95057c2
feat(desktop,web): enable the React Compiler in both renderer builds
Jaaneek Aug 20, 2026
949aff6
fmt(js): `npm run fix` on merge (#91256)
hermes-seaeye[bot] Aug 21, 2026
5210dd4
fix(gateway+relay): approval prompts survive ambiguity without duplic…
victor-kyriazakos Aug 20, 2026
57fe01e
fix(relay): prompt-lifecycle acks are interim sends — the approval ac…
victor-kyriazakos Aug 20, 2026
424d07e
fix(relay): prompt-lifecycle acks are fire-and-forget — awaiting them…
victor-kyriazakos Aug 20, 2026
d4f7c2d
test(relay): expiry-notice assertion yields for the fire-and-forget a…
victor-kyriazakos Aug 20, 2026
a7cfe39
fix(gateway): clarify prompt sends get the same ambiguous-timeout han…
benbarclay Aug 20, 2026
952d1ce
fix(gateway): prompt-send failures keep their diagnostic detail; clar…
benbarclay Aug 20, 2026
4e1dd1a
feat(cron): per-job reasoning_effort override in job definitions
victor-kyriazakos Aug 20, 2026
58258af
test(cron): scrub tracker references from reasoning-effort test docst…
victor-kyriazakos Aug 20, 2026
991af03
refactor(cron): keep reasoning_effort off the model-facing cronjob to…
teknium1 Aug 21, 2026
43c6dac
fix(cron): restore reasoning_effort on cronjob() for the CLI lane — m…
teknium1 Aug 21, 2026
18a15a4
test(update): Windows progress self-test survives transient /progress…
teknium1 Aug 21, 2026
5a5d6b9
fix(memory): unify store flags and bypass stale availability cache
kshitijk4poor Aug 20, 2026
c809d96
fix(memory): parse boolean config values consistently
kshitijk4poor Aug 20, 2026
2cf7b36
fix(memory): enforce independent built-in store permissions
kshitijk4poor Aug 20, 2026
7c9285a
fix(memory): bound invalid-target error and restore recovery hint
teknium1 Aug 21, 2026
f9cd51e
fix(providers): support custom opencode-go-* provider routing and gro…
Lesnak1 Aug 13, 2026
12a3a35
fix(providers): normalize OpenCode provider matching to case-insensit…
Lesnak1 Aug 16, 2026
a83c391
fix(opencode): family-wide provider predicate + reserved tool-name al…
teknium1 Aug 21, 2026
4978039
fix(runtime): per-model api_mode + /v1 healing for custom OpenCode-fa…
teknium1 Aug 21, 2026
533886c
chore: map contributor email for Lesnak1
teknium1 Aug 21, 2026
f8c3635
fix(gateway): classify relay routing stamps as process-global deploym…
benbarclay Aug 21, 2026
3d25fd5
fix(cli): warn when gateway enroll writes relay URLs to a secondary m…
benbarclay Aug 21, 2026
d97cb8f
test(gateway): pin config/registration relay-URL agreement under mult…
benbarclay Aug 21, 2026
6360113
fix(cli): read multiplex topology from the default root in enroll war…
benbarclay Aug 21, 2026
efb6b40
Merge pull request #91237 from NousResearch/fix/relay-env-exclusive-m…
benbarclay Aug 21, 2026
46e1a59
Merge pull request #69829 from NousResearch/docs/hermes-cloud-mcp
benbarclay Aug 21, 2026
64d393c
fix(desktop): sync bot room previews through profiles
TheTom Aug 18, 2026
7656a2a
fix(desktop): hydrate shared bot room previews
TheTom Aug 18, 2026
3b83b5e
fix(gateway): serialize shared bot room updates
TheTom Aug 18, 2026
5d75a46
fix(bot-mode): stabilize sync entry identity across gateway round-trips
teknium1 Aug 21, 2026
c6745da
feat(bot-mode): durable room identity + full gateway fan-out for grou…
teknium1 Aug 21, 2026
a976560
docs(bot-mode): group rooms sync across Desktops and gateways
teknium1 Aug 21, 2026
7af4b8e
test(bot-mode): drop unused stub param flagged by eslint
teknium1 Aug 21, 2026
1d74833
feat(update): structured update receipts + post-update fleet version …
teknium1 Aug 21, 2026
1acbeed
fix(update): resolve code identity by reading .git directly — no subp…
teknium1 Aug 21, 2026
7a17a1b
fix(docker): stage2 API_SERVER_KEY bootstrap no longer depends on .en…
shannonsands Aug 21, 2026
790c850
fix(telegram): preserve rich finals after DM drafts
helix4u Aug 20, 2026
216c98a
fix(gateway): scope draft-final finalize skip to fresh persistent sends
teknium1 Aug 21, 2026
40643cb
docs(telegram): rich_drafts controls draft rendering, not the draft t…
teknium1 Aug 21, 2026
6e64e6b
fix(desktop): Windows glass windows stop rendering when they lose foc…
OutThisLife Aug 21, 2026
02e270a
fix: editing a message in an old session fails (profile DB + window-r…
OutThisLife Aug 21, 2026
1017a56
fix: OpenCode Zen free-tier models (Ox Alpha) work keyless — any bear…
teknium1 Aug 21, 2026
c01cd26
feat: stealth/ox-alpha free model in the OpenRouter catalog
teknium1 Aug 21, 2026
524b062
fix(desktop): don't re-list a just-unpinned session under Pinned
OutThisLife Aug 21, 2026
d8047c3
fix(gateway): BSD-compatible ps flags and all-profile launchd pid dis…
Tranquil-Flow Aug 5, 2026
42bd567
fix(gateway): widen orphan-reaper service exclusion to the whole laun…
teknium1 Aug 21, 2026
15328b4
test(gateway): accept all_profiles kwarg in macOS reaper _get_service…
teknium1 Aug 21, 2026
b577353
fix(teams-pipeline): parse Graph users('id') meeting paths
xxxigm Aug 20, 2026
a86569b
test(teams-pipeline): cover quoted-user Graph @odata.id paths
xxxigm Aug 20, 2026
0fc52b0
fix(prompt_caching): make apply_anthropic_cache_control idempotent on…
JoaoMarcos44 Aug 21, 2026
c26357a
refactor(prompt_caching): shallow strip copy, exact-count guards, ded…
kshitijk4poor Aug 21, 2026
8e77d03
test(prompt_caching): home empty-tools fallback test in TestPromptCac…
kshitijk4poor Aug 21, 2026
28a9b6c
feat(providers): add OpenCode Free provider with keyed auth and openc…
rudrakshchahal Aug 13, 2026
ca06b87
feat: opencode-free is fully keyless — no env var, no account, anonym…
teknium1 Aug 21, 2026
a63da06
docs: opencode-free in provider choice lists (cli-commands, aux provi…
teknium1 Aug 21, 2026
930be34
feat: keyless flag on the provider catalog — GUI contract tests exemp…
teknium1 Aug 21, 2026
b634032
fix(desktop): gate WSL bridge for remote backends
Tranquil-Flow Aug 5, 2026
deec043
fix(desktop): scope WSL bridge state by profile
Tranquil-Flow Aug 6, 2026
0a8cdec
fix(desktop): silence wsl.exe stderr banner + detached explorer relau…
teknium1 Aug 21, 2026
fc9cbc8
fix(cron): do not load MEMORY.md into scheduled jobs
Adolanium Aug 21, 2026
5422741
fix(opencode): send Ox Alpha reasoning effort through Zen
vinsew Aug 21, 2026
d4d0409
fix: Ox Alpha reasoning effort reaches the wire clamped — shared acro…
teknium1 Aug 21, 2026
7d0f06f
chore: map contributor email for vinsew
teknium1 Aug 21, 2026
443d438
perf(desktop): idle renderers stop burning CPU on infinite CSS animat…
teknium1 Aug 21, 2026
37da0d4
fix(agent): synchronize background review cancellation
Aug 12, 2026
1b92a94
refactor(agent): simplify background review run state
Aug 12, 2026
b883756
fix: foreground priority for background review cancel timeout
kshitijk4poor Aug 21, 2026
8bdf0e8
chore: add qixuancao to AUTHOR_MAP
kshitijk4poor Aug 21, 2026
80aef06
refactor: use request_hard_interrupt for review cancellation
kshitijk4poor Aug 21, 2026
40b4a3b
fix(update): every begun update receipt is now persisted — command-bo…
teknium1 Aug 21, 2026
ef04d84
feat(cron): cron agents now run with memory enabled like every other …
teknium1 Aug 21, 2026
f29ee96
fix(update): restart all macOS launchd gateways on hermes update
paultaki Jul 28, 2026
ff6186d
test(gateway): re-pin _get_service_pids tests to the label-derived lo…
teknium1 Aug 21, 2026
a9ac2c6
chore: map contributor email for paultaki
teknium1 Aug 21, 2026
c1693d7
refactor: remove 27 duplicate _ensure_telegram_mock() copies from gat…
kshitijk4poor Aug 21, 2026
30ccd01
fix: delist UA-gated free models from opencode-free — big-pickle and …
teknium1 Aug 21, 2026
17d1095
Merge pull request #91401 from kshitijk4poor/refactor/dedupe-telegram…
kshitijk4poor Aug 21, 2026
4f64807
fix(desktop): stale running arcs clear on gateway reconnect (#53902, …
teknium1 Aug 21, 2026
3a2a12b
fix: break session-states import cycle via lazy import in reconnectSe…
teknium1 Aug 21, 2026
d472525
fix: lazy session-states import is best-effort under partial module m…
teknium1 Aug 21, 2026
0aecadc
feat(update): hermes update --plan — read-only fleet inventory + plan…
teknium1 Aug 21, 2026
3f590e6
perf(desktop): scope streaming-status invalidation below message root
royalaid Aug 19, 2026
db6c282
perf(desktop): finish scoping streaming-status invalidation (data-str…
royalaid Aug 19, 2026
ced7d5e
perf(desktop): move settled-preview derivation off the message root
royalaid Aug 19, 2026
b484933
perf(desktop): compositor-only glyph spinner (no per-tick DOM mutation)
royalaid Aug 19, 2026
765e3a2
perf(desktop): composite-clean spinner strip, selection guard, swap-o…
royalaid Aug 19, 2026
73dcd75
perf(desktop): harden the spinner strip and tighten status invalidation
royalaid Aug 19, 2026
0269504
test(desktop): exercise the spinner CSS and the invalidation scope fo…
royalaid Aug 19, 2026
76e0ca8
fix(desktop): order-independent selection guard, layer-hint scoping, …
royalaid Aug 19, 2026
fb7f060
fix(bot-mode): durableGroupChatRooms drops tombstones and roomId on t…
pierrenode Aug 21, 2026
2a2307e
feat: keyless providers count as authenticated everywhere — opencode-…
teknium1 Aug 21, 2026
6247231
fix: catalog drift sync — dead free slugs out, live OpenRouter free m…
teknium1 Aug 21, 2026
fb27614
fix(native_compaction): preserve compression summary messages during …
JoaoMarcos44 Aug 21, 2026
fcbd107
chore: release v0.20.5 (2026.8.19)
teknium1 Aug 21, 2026
da3f385
fix(codex): strip tool controls from summary calls
Julientalbot May 26, 2026
d33642a
fix(telegram): publish sanitized runtime receipt
BenSheridanEdwards Jul 22, 2026
1c60990
fix(auth): enforce xAI external OAuth refresh ownership
BenSheridanEdwards Aug 3, 2026
c09f509
fix(config): group OAuth ownership under security
BenSheridanEdwards Aug 3, 2026
20d3922
fix(auth): reject unattended xAI device login
Aug 4, 2026
d826e0e
fix(cron): guard lifecycle state parse against ValueError
BenSheridanEdwards Aug 5, 2026
934cde1
test(auth): make external-owner persist test pass tty guard
BenSheridanEdwards Aug 6, 2026
036bf31
feat(secrets): share Bitwarden disk cache across profiles with file l…
BenSheridanEdwards Aug 6, 2026
9f6429b
fix(auth): enforce Codex external OAuth refresh ownership
BenSheridanEdwards Aug 6, 2026
931221e
test: stop the suite running real git against its own checkout
BenSheridanEdwards Aug 7, 2026
0ae415a
fix(gateway): /new stamps config primary and never fallbacks on EMFILE
BenSheridanEdwards Aug 14, 2026
54fb566
fix(ci): do not treat MagicMock or git init -b main as live writes
BenSheridanEdwards Aug 14, 2026
7e22272
fix(gateway): route webhook auto-TTS voice to deliver target (#6)
BenSheridanEdwards Aug 14, 2026
559a908
test(codex): stop two migration tests spawning the real codex CLI (#5)
BenSheridanEdwards Aug 14, 2026
5df01cf
chore: disable Dependabot version updates (#12)
BenSheridanEdwards Aug 15, 2026
f8e792f
fix(computer-use): enforce background-only policy (#14)
BenSheridanEdwards Aug 21, 2026
d93e19a
fix(redact): keep opaque payload scanning linear (#16)
BenSheridanEdwards Aug 21, 2026
1544ebf
test(redact): cover the value-run ReDoS shape and assert on scaling (…
BenSheridanEdwards Aug 22, 2026
90f88c8
fix(redact): keep the lowercase env-assign scan linear
BenSheridanEdwards Aug 22, 2026
5acab07
fix(pool): rotate the Go pool when a delegation kid reports provider=…
BenSheridanEdwards Aug 22, 2026
58201ea
fix(fallback): stop announcing free-zen fallback hops operators canno…
BenSheridanEdwards Aug 22, 2026
d003edc
test(stt): pin inbound STT arity and provider door
BenSheridanEdwards Aug 22, 2026
319c1f7
merge main into the v0.20.5 cut
BenSheridanEdwards Aug 22, 2026
a22b979
refactor(fleet-patches): name the predicates, cover them with tests
BenSheridanEdwards Aug 22, 2026
149036b
chore(contributors): map the authors the v0.20.5 bump brings in
BenSheridanEdwards Aug 22, 2026
55822ef
Merge remote-tracking branch 'fork/main' into runtime/fleet-20260822-…
BenSheridanEdwards Aug 25, 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.
18 changes: 18 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# CodeRabbit configuration.
#
# Auto-review is DISABLED repo-wide: the app was enabled at the org level on
# 2026-08-14 and immediately began reviewing every opened PR. This repo's
# merge gate is CI ("All required checks pass") plus maintainer review —
# CodeRabbit reviews carry no merge weight (protect-main ruleset requires
# 0 approving reviews), so auto-firing on the full PR firehose adds comment
# noise without gating value.
#
# The bot stays installed and summonable on demand: comment
# `@coderabbitai review` on any PR to request a one-off review, or
# `@coderabbitai ignore` to mute it on a PR it has already joined.
#
# To re-enable auto-review, flip `enabled: true` below (or delete this file —
# the app default is on).
reviews:
auto_review:
enabled: false
5 changes: 4 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ ui-tui/packages/hermes-ink/dist/
# Environment files
.env
.env.*
# ...but keep the template: docker/stage2-hook.sh seeds $HERMES_HOME/.env from
# /opt/hermes/.env.example on first boot (OOF-285 — excluding it silently broke
# first-boot .env seeding and the API_SERVER_KEY generation that depends on it).
!.env.example

# IDE
.vscode/
Expand Down Expand Up @@ -98,7 +102,6 @@ plans/
.plans/

# Repo-level dotfiles that are git-only or dev-tooling config
.env.example
.envrc
.gitattributes
.hadolint.yaml
Expand Down
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,14 @@
# $10/month subscription. Get your key at: https://opencode.ai/auth
# OPENCODE_GO_API_KEY=

# =============================================================================
# LLM PROVIDER (OpenCode Free)
# =============================================================================
# OpenCode Free provides keyless free models (Ox Alpha / x-preview-f-free,
# big-pickle, etc.). NO env var and NO account needed — requests are sent
# anonymously (the free tier rejects any unrecognized Authorization header).
# Select it with `hermes model` or `/model free`.

# =============================================================================
# LLM PROVIDER (Hugging Face Inference Providers)
# =============================================================================
Expand Down
24 changes: 24 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,27 @@ web/package-lock.json linguist-generated=true
Dockerfile text eol=lf
*.dockerfile text eol=lf
docker/entrypoint.sh text eol=lf

# Enforce LF for all source/text files. Windows editors and tools default to
# CRLF; without normalization a Windows contributor's edit turns into a
# whole-file phantom diff (every line "changed" by its ending), breaks
# string-match patch tooling, and pollutes review. `text` normalizes to LF
# at check-in; `eol=lf` also checks out as LF so the working tree matches
# the index on every platform. PowerShell files are the deliberate
# exception (PS 5.1 tooling expects CRLF).
*.py text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.js text eol=lf
*.mjs text eol=lf
*.cjs text eol=lf
*.jsx text eol=lf
*.json text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.toml text eol=lf
*.md text eol=lf
*.css text eol=lf
*.html text eol=lf
*.svg text eol=lf
*.ps1 text eol=crlf
15 changes: 15 additions & 0 deletions .github/actions/detect-changes/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ outputs:
docker_meta:
description: Docker setup and meta files have changed.
value: ${{ steps.classify.outputs.docker_meta }}
docker:
description: Files included in the docker image have changed.
value: ${{ steps.classify.outputs.docker }}
nix:
description: Run `nix flake check` (flake inputs, or any product Python change).
value: ${{ steps.classify.outputs.nix }}
site:
description: Build the Docusaurus docs site.
value: ${{ steps.classify.outputs.site }}
Expand All @@ -33,9 +39,18 @@ outputs:
deps:
description: Check pyproject.toml dependency upper bounds.
value: ${{ steps.classify.outputs.deps }}
uv_lock:
description: Run `uv lock --check` (pyproject.toml / uv.lock changes only).
value: ${{ steps.classify.outputs.uv_lock }}
npm_lock:
description: Post/update the semantic package-lock.json diff PR comment.
value: ${{ steps.classify.outputs.npm_lock }}
installer:
description: Run the PowerShell installer tests on a Windows runner.
value: ${{ steps.classify.outputs.installer }}
rust:
description: Run `cargo test` for the Tauri bootstrap installer.
value: ${{ steps.classify.outputs.rust }}
mcp_catalog:
description: Require MCP catalog security review label.
value: ${{ steps.classify.outputs.mcp_catalog }}
Expand Down
Binary file removed .github/pr-screenshots/39327/providers-collapsed.png
Binary file not shown.
Binary file removed .github/pr-screenshots/39327/providers-expanded.png
Binary file not shown.
Binary file removed .github/pr-screenshots/39327/tools-collapsed.png
Binary file not shown.
Binary file removed .github/pr-screenshots/39327/tools-expanded.png
Binary file not shown.
Binary file removed .github/pr-screenshots/45449/billing-confirm.png
Binary file not shown.
Binary file removed .github/pr-screenshots/45449/billing-overview.png
Binary file not shown.
Binary file not shown.
80 changes: 80 additions & 0 deletions .github/workflows/ci-review-comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: CI review comment

# Live-updating PR review comment.
#
# The poller runs for up to 40 minutes.
# This run lives in its own workflow.
# A run stays in progress until its last job ends, and GitHub refuses
# ``gh run rerun`` on a run that is in progress.
#
# ``workflow_run`` starts this when CI starts. It always reads the workflow
# and the scripts from the default branch, never from the PR head.
# It makes a write token safe here.
#
# The poller reads job results through the API. Thus it watches the CI run
# and the separate docker run, and it depends on neither.

on:
workflow_run:
workflows: [CI]
# ``in_progress``, not ``requested``: a first-time contributor's run
# sits in ``action_required`` until a maintainer approves it, and
# ``requested`` fires at creation — the poller would wait out its
# whole timeout on a run that never starts. ``in_progress`` fires
# when the run actually starts, and it also fires on re-runs, which
# ``requested`` does not.
types: [in_progress]

permissions:
contents: read
actions: read
pull-requests: write

# One poller per CI run. A new push starts a new CI run, and its poller
# cancels the poller of the run that GitHub superseded. The group keys
# on the head repository too: fork PRs often share a branch name
# (``main``, ``patch-1``), and two PRs must not cancel each other.
concurrency:
group: ci-review-comment-${{ github.event.workflow_run.head_repository.full_name }}-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: true

jobs:
comment:
name: CI review comment (live)
# Fork PRs get no comment: the poller needs a write token, and the
# ``pull_requests`` payload is empty for a fork run.
if: >-
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.head_repository.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout trusted default branch
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.repository.default_branch }}
persist-credentials: false

- name: Run live comment poller
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# The CI run to report on — not this run. The name must not be
# GITHUB_RUN_ID: the runner sets the GITHUB_* defaults itself and
# ignores an env: override, so that name silently resolves to THIS
# run. The poller then watches itself, which stays in_progress for
# as long as the poller runs, and it waits out its whole timeout.
CI_RUN_ID: ${{ github.event.workflow_run.id }}
# Sibling runs for the same commit that the comment also covers,
# one workflow name per line (a name can contain a comma).
# The poller resolves each name to its runs through the API.
WATCH_WORKFLOWS: |
Docker Build, Test, and Publish
PR_NUMBER: ${{ github.event.workflow_run.pull_requests[0].number }}
RUN_URL: ${{ github.event.workflow_run.html_url }}
# Commit info for the review comment header.
COMMIT_SHA: ${{ github.event.workflow_run.head_sha }}
COMMIT_MESSAGE: ${{ github.event.workflow_run.head_commit.message }}
run: |
python3 -u scripts/ci/live_comment.py \
--interval 15 \
--timeout 3000
Loading
Loading