Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
735 commits
Select commit Hold shift + click to select a range
29f0968
test(windows): harden pid-scan no-window assertion against captured-c…
teknium1 Jun 29, 2026
4125cc3
fix(slack): subscribe to message.mpim + mpim scopes so group DMs work
benbarclay Jun 29, 2026
34e616e
feat(slack): nudge stale installs to add mpim scopes; mark message.mp…
teknium1 Jun 29, 2026
2704563
fix(tools): send listItemId instead of sessionKey in Camofox tab crea…
liuhao1024 Jun 3, 2026
babd916
fix(browser): send Authorization header in Camofox HTTP calls when CA…
liuhao1024 May 6, 2026
fe38d50
fix(tools): read browser.command_timeout in Camofox HTTP client
liuhao1024 Jun 6, 2026
08d6195
fix(camofox): auto-recover from stale tab 404 on navigate
kaishi00 Jun 29, 2026
41095fd
fix(camofox): register CAMOFOX_API_KEY in OPTIONAL_ENV_VARS
teknium1 Jun 29, 2026
115e78c
test(camofox): accept headers= kwarg in persistence test mocks
teknium1 Jun 29, 2026
eddfecd
fix(vision): cap vision_analyze fan-out concurrency process-wide
benbarclay Jun 29, 2026
75317d8
fix(vision): narrow the fan-out cap to the CPU encode burst only
teknium1 Jun 29, 2026
bf0d8fe
fix(config): v32 migration flips baked-in verify_on_stop=true to fals…
teknium1 Jun 29, 2026
c79e6bc
fix(browser_tool): resolve race in _get_command_timeout cache returni…
Sanjays2402 Jun 29, 2026
9f97915
fix(browser): route open-timeout base through _safe_command_timeout
teknium1 Jun 29, 2026
fa11b11
fix: propagate key_env from custom_providers into ProviderDef
telos-oc Apr 23, 2026
2f5950a
chore(release): add telos-oc to AUTHOR_MAP for PR #14353 salvage
teknium1 Jun 29, 2026
d5eee13
perf(profiles): fix list_profiles O(N*M) wrapper rescan (6.4s -> 0.4s)
max-chen Jun 23, 2026
1bb7b59
fix: offload blocking profiles endpoints from asyncio event loop (#54…
Sahil-SS9 Jun 29, 2026
10c9eaf
chore(attribution): map mango001@126.com -> max-chen for salvaged #51194
teknium1 Jun 29, 2026
fa3dba4
docs(infographic): add list_profiles perf-fix infographic
teknium1 Jun 29, 2026
194bff0
fix(gateway): confirm final delivery before suppressing send
sgaofen Jun 29, 2026
dc5ef20
test(reasoning-floor): isolate stale-timeout floor tests from config-…
teknium1 Jun 29, 2026
f5ecbe1
feat(dashboard): auto-initiate portal SSO redirect on unauthenticated…
benbarclay Jun 29, 2026
61f56d2
refactor(dashboard-auth): drop redundant _interactive_providers helper
teknium1 Jun 29, 2026
23c03ce
fix(session-db): enrich NULL session metadata via upsert instead of I…
teknium1 Jun 29, 2026
576424c
fix(security): redact browser CDP endpoint logs
Ruzzgar Apr 5, 2026
9e49013
fix(security): fail-closed feishu webhook rate limiter + whatsapp bri…
Mibayy Jun 29, 2026
0fe9755
fix(gateway): use last_prompt_tokens for session-reset activity check
Mibayy Jun 29, 2026
cdd8e0a
test(gateway): exercise last_prompt_tokens in reset-activity tests
teknium1 Jun 29, 2026
1debd5e
fix(security): add session-id filename sanitizer to prevent path trav…
Xowiek Jun 29, 2026
ea1372d
fix(security): wire session-id sanitizer into artifact paths + API bo…
teknium1 Jun 29, 2026
09666ce
fix(gateway): neutralize untrusted session metadata in prompts
Xowiek Apr 7, 2026
dbad6d4
fix(gateway): also neutralize untrusted Matrix room name in prompt
teknium1 Jun 29, 2026
f53ba9b
fix(s6): dot-prefix gateway staging dir so svscan ignores it mid-buil…
benbarclay Jun 29, 2026
88e6f9b
fix(auxiliary): preserve max_tokens for NVIDIA NIM aux calls
HexLab98 Jun 29, 2026
f134529
test(auxiliary): cover NVIDIA NIM max_tokens in _build_call_kwargs
HexLab98 Jun 29, 2026
fd32456
feat(desktop): add context usage breakdown popover
austinpickett Jun 29, 2026
3bbeb9e
Merge pull request #54907 from NousResearch/austin/feat/context-usage…
OutThisLife Jun 29, 2026
c6c1fd8
docs: create dev venv outside the source tree (root-cause fix for #77…
teknium1 Jun 29, 2026
ee8cbfd
feat(web_extract): truncate-and-store instead of LLM summarization (#…
teknium1 Jun 29, 2026
7cf6758
feat(desktop): read-only spectator transcript for subagent watch windows
OutThisLife Jun 29, 2026
929dd9c
Merge pull request #55033 from NousResearch/bb/subagent-watch-readonly
OutThisLife Jun 29, 2026
7a6b3cb
fix(desktop): show Gateway statusbar tooltip via composed trigger Slots
OutThisLife Jun 29, 2026
ccc92c5
Merge pull request #55086 from NousResearch/fix/gateway-statusbar-too…
OutThisLife Jun 29, 2026
b963d32
feat(gateway): suppress home-channel shutdown broadcast on flagged dr…
benbarclay Jun 29, 2026
c6d6a1c
feat(desktop): add pet roam + motion/direction store signals
OutThisLife Jun 29, 2026
964ec68
feat(desktop): pick directional run row from travel direction
OutThisLife Jun 29, 2026
a8f1d9c
feat(desktop): add surface-aware pet wander loop
OutThisLife Jun 29, 2026
7d3c1d5
feat(desktop): wire roaming into the floating pet
OutThisLife Jun 29, 2026
4da744e
feat(desktop): let the pet perch on the status bar and profile rail
OutThisLife Jun 29, 2026
b72c9e1
feat(desktop): add pet roam opt-in toggle + i18n
OutThisLife Jun 29, 2026
57d98eb
fix(web): remove marketing backdrop stack for lighter dashboard shell
austinpickett Jun 26, 2026
10374bb
fix(web): theme terminal foreground and restore backdrop plugin slot
austinpickett Jun 29, 2026
1abf0c6
fix(web): polish dashboard sidebar chrome and model card menus
austinpickett Jun 29, 2026
dbe92b9
fix(web): confirm sidebar gateway restart and use DS checkboxes
austinpickett Jun 29, 2026
75d4aa9
fix(web): confirm sidebar Update Hermes before running
austinpickett Jun 29, 2026
0e2a5a3
feat(desktop): ground the roaming pet — sprite-paced walk + feet on s…
OutThisLife Jun 29, 2026
a1e699a
feat(desktop): roaming pet patrols the base of an open overlay
OutThisLife Jun 29, 2026
d417ffb
Merge pull request #55114 from NousResearch/bb/pet-roam
OutThisLife Jun 29, 2026
bff91f9
feat(desktop): type voice.auto_tts in desktop config
OutThisLife Jun 29, 2026
09abbf8
feat(desktop): mirror voice.auto_tts into an $autoSpeakReplies store
OutThisLife Jun 29, 2026
572c7db
feat(desktop): add read-replies-aloud composer strings
OutThisLife Jun 29, 2026
fcdc05c
feat(desktop): add auto-speak watcher hook
OutThisLife Jun 29, 2026
596b813
feat(desktop): add read-replies-aloud toggle and wire auto-speak
OutThisLife Jun 29, 2026
290fa7f
fix(gateway): skip confirmed-dead delivery targets (deleted groups, b…
teknium1 Jun 29, 2026
f171842
Merge pull request #55154 from NousResearch/bb/desktop-auto-speak-rep…
OutThisLife Jun 29, 2026
89daacb
test(gateway): cover AsyncSessionDB offload + raw-call guard (failing)
yoniebans Jun 29, 2026
ea26f22
feat(gateway): add AsyncSessionDB offload facade
yoniebans Jun 29, 2026
0896fac
fix(gateway): route SessionDB calls through AsyncSessionDB
yoniebans Jun 29, 2026
0a997aa
fix(gateway): route aliased SessionDB calls through AsyncSessionDB
yoniebans Jun 29, 2026
6735162
fix(gateway): offload the Telegram topic-recovery helper tree off the…
yoniebans Jun 29, 2026
d2ce2c8
test(gateway): assert interleaving safety of concurrent offloaded DB …
yoniebans Jun 29, 2026
f3d2dfb
fix(dashboard_auth): allow any http:// host in self-hosted OIDC redir…
spjoes Jun 29, 2026
3a55f66
refactor(relay): adopt scope_id wire key (guild_id → scope_id dual-re…
benbarclay Jun 30, 2026
808ba82
feat(ci): add CI timing report
ethernet8023 Jun 25, 2026
66ba9e0
change(ci): remove lint PR comment
ethernet8023 Jun 25, 2026
cca8b4e
fix(ci): unify amd64/arm64 docker pipelines
ethernet8023 Jun 29, 2026
41c85fb
fix(agents.md): fix documentation on subprocess isolation in tests
ethernet8023 Jun 29, 2026
481caa6
feat(display): friendly human-phrased tool labels for built-in tools …
teknium1 Jun 30, 2026
53a75f1
feat(dashboard_auth): support confidential clients (client_secret) in…
benbarclay Jun 30, 2026
6aefc9d
feat(gateway): show per-category context breakdown in /usage (#55204)
teknium1 Jun 30, 2026
b7322f9
feat(desktop): calmer, more realistic pet roam + split roam modules
OutThisLife Jun 30, 2026
30cd39d
refactor(desktop): collapse stroll-direction coin to a single draw
OutThisLife Jun 30, 2026
33d044c
Merge pull request #55400 from NousResearch/bb/pet-roam-calmer
OutThisLife Jun 30, 2026
184c10c
fix(slack): warn when configured token is a user token, not a bot token
benbarclay Jun 30, 2026
9ce79cd
feat(xai): Imagine public-URL storage, chaining & video edit/extend
Jaaneek Jun 29, 2026
5a3d7fb
fix(xai): suppress false-positive windows-footgun on binary image read
teknium1 Jun 30, 2026
d4c1401
feat(claude-design): add surface-first conditioning + slop diagnostic…
teknium1 Jun 30, 2026
d3f2931
fix(container-boot): autostart a gateway stranded in 'draining' state
benbarclay Jun 29, 2026
463b1df
fix(container-boot): also autostart a gateway stranded in 'degraded'
teknium1 Jun 30, 2026
05ac167
feat(gateway): per-platform typing_indicator toggle
benbarclay Jun 30, 2026
04639ad
feat(desktop): flag already-installed themes in the install pickers
OutThisLife Jun 30, 2026
972b162
Merge pull request #55410 from NousResearch/bb/install-theme-dedupe
OutThisLife Jun 30, 2026
0b33bc5
fix(kanban): gate goal_mode task completion with auxiliary judge
beardthelion Jun 3, 2026
b3c1b3b
fix(kanban): address review feedback on goal_mode judge gate
beardthelion Jun 3, 2026
14c4a84
fix(kanban): make goal_mode judge gate truly fail-open
beardthelion Jun 3, 2026
96552c3
feat(learning): profile-scoped memory + learned-skill graph API
OutThisLife Jun 30, 2026
dec4499
feat(desktop): Memory Graph — playable radial timeline of memories + …
OutThisLife Jun 30, 2026
a101136
feat(agent): add pre_verify hook and verify-on-stop coding guidance
OutThisLife Jun 30, 2026
821d9f7
feat(agent): add configurable coding_instructions
OutThisLife Jun 30, 2026
a81c592
Merge pull request #55413 from NousResearch/bb/pre-stop-hook
OutThisLife Jun 30, 2026
7ff6908
refactor(desktop): split thread.tsx god file into focused modules
OutThisLife Jun 30, 2026
88e29e3
refactor(desktop): split sidebar/index.tsx god file into focused modules
OutThisLife Jun 30, 2026
dd659c8
refactor(desktop): extract composer pure helpers into composer-utils
OutThisLife Jun 30, 2026
25c7900
refactor(desktop): thin desktop-controller by extracting session-list…
OutThisLife Jun 30, 2026
0ea318a
test: make windows no-window-flag assertions immune to update-check d…
OutThisLife Jun 30, 2026
7548910
perf(desktop): cache memory-graph paint + billboard node sizing
OutThisLife Jun 30, 2026
bde2dc1
refactor(desktop): extract use-prompt-actions standalone helpers into…
OutThisLife Jun 30, 2026
aa3c1d6
Merge pull request #55457 from NousResearch/bb/fix-windows-subprocess…
OutThisLife Jun 30, 2026
4dbd869
feat(agent): restore surface-aware "auto" default for verify_on_stop
OutThisLife Jun 30, 2026
d6396e6
Merge pull request #55449 from NousResearch/bb/verify-on-stop-auto-de…
OutThisLife Jun 30, 2026
c0b308e
fix(desktop): center memory-graph timeline stars, surface quiet buckets
OutThisLife Jun 30, 2026
5e51f9c
refactor(desktop): add iconSize token and migrate ad-hoc icon sizes o…
OutThisLife Jun 30, 2026
c2fb651
refactor(desktop): formalize row-as-button primitive (RowButton)
OutThisLife Jun 30, 2026
f3cd744
docs(desktop): tighten iconSize doc comment
OutThisLife Jun 30, 2026
57dd86f
docs(desktop): tighten RowButton doc comment
OutThisLife Jun 30, 2026
b6e57e2
refactor(desktop): share theme-repaint observer; memory-graph depth p…
OutThisLife Jun 30, 2026
03311ab
fix(desktop): make ⌘K / session-switcher HUDs ignore titlebar drag band
OutThisLife Jun 30, 2026
bd1d354
tune(desktop): ignite memory-graph nodes in clusters, not 1-by-1
OutThisLife Jun 30, 2026
ddf0d98
Merge pull request #55473 from NousResearch/bb/cmdk-drag-region
OutThisLife Jun 30, 2026
374d38f
Merge pull request #55451 from NousResearch/bb/desktop-split-thread
OutThisLife Jun 30, 2026
6121196
Merge pull request #55453 from NousResearch/bb/desktop-split-sidebar
OutThisLife Jun 30, 2026
116acf3
Merge pull request #55455 from NousResearch/bb/desktop-split-composer
OutThisLife Jun 30, 2026
b69c2d2
Merge pull request #55456 from NousResearch/bb/desktop-split-controller
OutThisLife Jun 30, 2026
28ba01c
Merge pull request #55459 from NousResearch/bb/desktop-split-prompt-a…
OutThisLife Jun 30, 2026
8f8487b
Merge pull request #55468 from NousResearch/bb/desktop-icon-size-token
OutThisLife Jun 30, 2026
a1b6e7e
Merge pull request #55470 from NousResearch/bb/desktop-button-consist…
OutThisLife Jun 30, 2026
c1b9de7
perf(context-refs): expand @-references concurrently
kshitijk4poor Jun 29, 2026
c9269fb
fix(web_extract): bound stored full-text size + give concrete read_fi…
kshitijk4poor Jun 29, 2026
fa7bce0
refactor(desktop): colocate hook/component families into scoped folders
OutThisLife Jun 30, 2026
6763d63
Merge pull request #55493 from NousResearch/bb/desktop-hook-folders
OutThisLife Jun 30, 2026
3a83b6b
fix(gateway): self-heal stale sessions.json routing at message time
davidgut1982 Jun 30, 2026
ed47f2b
refactor(desktop): split use-session-actions into folder + utils
OutThisLife Jun 30, 2026
0863438
refactor(desktop): split use-message-stream into folder + utils
OutThisLife Jun 30, 2026
643b0dc
fix(cron): raise default pre-run script timeout from 120s to 1h (#55489)
teknium1 Jun 30, 2026
08c83d0
refactor(desktop): extract slash dispatcher into use-prompt-actions/s…
OutThisLife Jun 30, 2026
5edfda5
Merge pull request #55497 from NousResearch/bb/desktop-split-session-…
OutThisLife Jun 30, 2026
f2ccb28
fix(agent): persist compression backoff across resume (#54465)
rodboev Jun 28, 2026
53ef954
fix(agent): keep cooldown and lock refresh on one authority (#54465)
rodboev Jun 28, 2026
f2ace45
fix(agent): release refreshed compression locks on every exit path (#…
rodboev Jun 29, 2026
cafe9d9
fix(agent): prevent stale lock leases after early compression exits (…
rodboev Jun 29, 2026
6fd701a
fix(agent): keep cooldown state on the active session (#54465)
rodboev Jun 29, 2026
7479f26
fix(agent): keep unbound compressors on the fail-open path (#54465)
rodboev Jun 29, 2026
58d8e25
fix(agent): make compression lock-lease refresher tolerate transient …
kshitijk4poor Jun 30, 2026
51a710e
refactor(desktop): extract gateway-event dispatcher into its own sub-…
OutThisLife Jun 30, 2026
7337248
refactor(desktop): extract submit pipeline into use-prompt-actions/su…
OutThisLife Jun 30, 2026
90f59ec
Merge pull request #55501 from NousResearch/bb/desktop-split-message-…
OutThisLife Jun 30, 2026
f9b619d
Merge pull request #55504 from NousResearch/bb/desktop-split-prompt-body
OutThisLife Jun 30, 2026
3e7ed0c
feat(desktop): memory-graph share dialog + core/zoom & light-mode polish
OutThisLife Jun 30, 2026
fa3ab2f
fix: normalize tool_call_id whitespace in sanitizer
Jun 30, 2026
babbefb
fix(desktop): scope memory graph cache by profile
OutThisLife Jun 30, 2026
5746234
fix(desktop): keep composer preview links visible when a bg task appears
OutThisLife Jun 30, 2026
3f19df2
fix(mcp): late-refresh must see desktop/dashboard discovery thread ow…
teknium1 Jun 30, 2026
67783ad
Merge pull request #55542 from NousResearch/bb/desktop-preview-stack-…
OutThisLife Jun 30, 2026
f47459c
fix(desktop): proper agent icon for subagents + give the queue an icon
OutThisLife Jun 30, 2026
90c5433
Merge pull request #55543 from NousResearch/bb/desktop-status-stack-i…
OutThisLife Jun 30, 2026
e0a7833
refactor(desktop): extract composer sizing into useComposerMetrics
OutThisLife Jun 30, 2026
00694b9
perf(desktop): composer typing no longer re-renders ChatBar (imperati…
OutThisLife Jun 30, 2026
cf05b38
refactor(desktop): extract composer voice engine into useComposerVoice
OutThisLife Jun 30, 2026
bd53230
refactor(desktop): extract composer drag-and-drop into useComposerDrop
OutThisLife Jun 30, 2026
9ee7333
refactor(desktop): extract composer draft engine into useComposerDraft
OutThisLife Jun 30, 2026
4c4b790
refactor(desktop): extract composer queue engine into useComposerQueue
OutThisLife Jun 30, 2026
773a370
refactor(desktop): extract composer submit engine into useComposerSubmit
OutThisLife Jun 30, 2026
33d9102
perf+fix(desktop): coalesce composer paste/input flush; scope dock gl…
OutThisLife Jun 30, 2026
94d70de
perf(desktop): stop ChatBar re-rendering on cross-session status/queu…
OutThisLife Jun 30, 2026
e5253d8
fix(desktop): tree-kill Windows terminal descendants
OutThisLife Jun 30, 2026
2f46fde
fix(desktop): keep queued composer edit ref in sync
OutThisLife Jun 30, 2026
eeb69c7
Merge pull request #55547 from NousResearch/bb/54744-windows-bash-spawn
OutThisLife Jun 30, 2026
9998ff4
fix(desktop): persist live composer draft before swap/reload
OutThisLife Jun 30, 2026
aa07400
chore(desktop): keep draft persist effect deps clean
OutThisLife Jun 30, 2026
6d20ac4
Merge pull request #55500 from NousResearch/bb/desktop-composer-draft
OutThisLife Jun 30, 2026
1d495cf
Merge pull request #55226 from NousResearch/bb/desktop-memory-graph
OutThisLife Jun 30, 2026
b03635d
fix(approval): catch hermes gateway stop/restart behind a profile fla…
teknium1 Jun 30, 2026
cb9308f
fix(discord): channel name matching and flush pending sends on shutdown
Apr 12, 2026
b604517
fix(discord): extend channel-name matching to slash-command auth; cla…
teknium1 Jun 30, 2026
26f39f7
fix(credentials): prefer ~/.hermes/.env over stale os.environ on key …
kshitijk4poor Jun 30, 2026
e6f66bc
fix(security): cover Move and no-space headers in patch_tool sensitiv…
0xbyt4 Jun 30, 2026
c8376e0
fix(auxiliary): stop SDK retries from multiplying compression stall (…
teknium1 Jun 30, 2026
3b2bb30
fix(security): harden heredoc approval, NFKC homograph fold, env-var …
MarioYounger Jun 30, 2026
35a0803
fix(delegation): budget subagent summaries against parent context hea…
teknium1 Jun 30, 2026
ebb81f1
fix(tui_gateway): prevent WS disconnect under GIL pressure
peetwan Jun 24, 2026
9d10dcd
fix(tui_gateway): route frontend-polled inline RPCs to pool under GIL…
Zyxxx-xxxyZ Jun 30, 2026
1a0c576
fix(tui_gateway): drop emit-only session.info from _LONG_HANDLERS
teknium1 Jun 30, 2026
db88018
chore(release): add AUTHOR_MAP entries for #51841 and #54287 salvage
teknium1 Jun 30, 2026
eeb4735
test(web_server): assert ws-ping invariant, not frozen 20.0 literal
teknium1 Jun 30, 2026
cd9f5cc
fix(delegate): route subagent progress lines through _safe_print for …
theAgenticBuilder Jun 30, 2026
b8ebe32
fix(agent): flatten multi-part user_message in codex intermediate-ack…
DataAdvisory Jun 30, 2026
c6eb7f9
fix(memory/mem0): recall on the current question + stronger search gu…
kartik-mem0 Jun 30, 2026
f4a54b6
fix(gateway): abort startup during restart
Disaster-Terminator Apr 24, 2026
fee3d4e
test(gateway): update startup-restart-race fixtures for current main
teknium1 Jun 30, 2026
cb9d18c
fix(gateway): stop media-send fallbacks from leaking host paths into …
UgwujaGeorge Jun 30, 2026
f5eb4c3
fix(gateway): stop Matrix upload fallback from leaking host path
teknium1 Jun 30, 2026
62b9fb6
fix(acp): thread-safe interactive approval via contextvars
georgex8001 Jun 30, 2026
c7e0bde
fix(agent): stop over-cap max_tokens 400s from death-looping into com…
teknium1 Jun 30, 2026
0df3c12
fix(agent): guard against non-dict model_extra in tool call normaliza…
huangxudong663-sys Jun 30, 2026
bf2dc18
test+chore: real-path regression test for #15157 model_extra guard + …
teknium1 Jun 30, 2026
fbd15e2
fix(copilot): switch to VS Code client ID and derive enterprise base URL
difujia Apr 24, 2026
fb07215
fix(copilot): recognize enterprise subdomains in host checks
difujia May 22, 2026
15e4452
fix(copilot): prefer endpoints.api for base URL, guard empty chat bas…
teknium1 Jun 30, 2026
3ecc58a
chore: map trevorgordon981 in AUTHOR_MAP for #50590 co-authorship
teknium1 Jun 30, 2026
d3d768e
test(copilot): update stale get_copilot_api_token mock to tuple signa…
teknium1 Jun 30, 2026
da4f15c
fix(cron): log and redact on secrets-redaction failure
sprmn24 May 14, 2026
d76ca3a
fix(moa): propagate api_mode from slot runtime to call_llm
liuhao1024 Jun 28, 2026
1366f37
fix(moa): pin chat_completions on live switch to a MoA preset
teknium1 Jun 30, 2026
84f350e
feat(whatsapp): opt-in forwarding of owner-typed messages in bot mode
keiravoss94 Apr 27, 2026
a61cf77
feat(whatsapp): tag owner-typed inbound text with [owner reply] prefix
keiravoss94 Apr 28, 2026
db52ad0
fix(whatsapp): gate owner-typed forwards on customer chatId allowlist
keiravoss94 Apr 27, 2026
24aa021
test(whatsapp): repoint owner test import after adapter relocation
vKongv Jun 27, 2026
6d6702e
fix(whatsapp-bridge): clarify FIFO outbound-id tracker semantics
vKongv Jun 27, 2026
2e0b591
fix(tools): validate acp_command binary exists before forcing copilot…
nikshepsvn May 17, 2026
d82a69b
fix(tools): prune acp_command from delegate_task schema when no ACP C…
nikshepsvn May 17, 2026
ea95fdd
chore(release): add nikshepsvn to AUTHOR_MAP for PR #27426 salvage
teknium1 Jun 30, 2026
c701c6d
fix(security): redact Fireworks AI API keys in logs
flamiinngo May 17, 2026
018009b
fix(kanban): unknown skill warns instead of crashing the worker
jimmyjohansson84 Jun 30, 2026
2ae9e22
chore: AUTHOR_MAP entry for PR #27123 salvage (jimmyjohansson84)
teknium1 Jun 30, 2026
6dd188d
fix(gateway): add session staleness guard to stream consumer
jasonQin6 Jun 30, 2026
c510f48
chore(release): add jasonQin6 to AUTHOR_MAP for PR #15093 salvage
teknium1 Jun 30, 2026
d634fa0
fix(pool): sync anthropic entry on access_token change, not just refr…
EloquentBrush0x May 18, 2026
ea9f8bd
fix(security): sanitize LSP diagnostic fields to prevent indirect pro…
memosr May 29, 2026
af5cea0
fix(discord): split oversized final edits, truncate mid-stream previe…
teknium1 Jun 30, 2026
b7c4369
fix(telegram): chunk formatted messages with UTF-16 length accounting
Jeffgithub0029 Jun 30, 2026
abca776
chore(release): map Jeffgithub0029 author email for #28558 salvage
teknium1 Jun 30, 2026
ac38005
fix(credential-pool): distinguish OpenRouter upstream 429s from accou…
znding04 Jun 30, 2026
179eb8c
fix(security): require operator opt-in for plugin tool_override to pr…
memosr May 28, 2026
3101222
fix(security): enforce tool_override opt-in at registry sink to close…
memosr Jun 27, 2026
12f5624
fix(security): bind tool_override authorization to handler's defining…
memosr Jun 27, 2026
bff61f5
feat(plugins): enable-time consent prompt for tool_override grant
teknium1 Jun 30, 2026
e7ca53e
fix(moa): disabled presets no longer hijack a plain model switch (#55…
teknium1 Jun 30, 2026
d6c53dc
fix(gateway): stop per-turn agent-cache eviction from model + message…
fayenix Jun 30, 2026
d2d470e
test(compression): tolerate safe contention rollback in concurrent-fo…
teknium1 Jun 30, 2026
cbe397e
fix(agent): merge consecutive assistant messages before API replay (#…
teknium1 Jun 30, 2026
5582b51
fix(gateway): stop poisoning the LLM prompt with STT-mode chatter
nnnet Jun 30, 2026
6148a9a
chore(release): map nnnet author email for PR #25142 salvage
teknium1 Jun 30, 2026
1cae1bd
test(cli): deterministically join bg worker thread instead of polling…
teknium1 Jun 30, 2026
a8841e2
fix(aux): preserve provider identity for resolved endpoints
helix4u Jun 30, 2026
c080a53
fix(cli): redact status API keys with --all
londo161 Apr 25, 2026
9dc6dc0
fix(agent): handle string context compression messages
londo161 Apr 25, 2026
fe355d0
fix(moa): handle dict/str message shape in MoA response extraction
teknium1 Jun 30, 2026
8e6fd4c
chore(release): add AUTHOR_MAP entry for londo161 (#15795 salvage)
teknium1 Jun 30, 2026
c969090
fix(cli): clear input-blocking overlays when interrupting a running a…
neo-2026 Jun 30, 2026
6e84257
fix(registry): derive toolset availability from per-tool checks
xxxigm Jun 29, 2026
efebe45
test(registry): cover mixed terminal toolset doctor false negative
xxxigm Jun 29, 2026
824f227
refactor(registry): drop dead toolset-check helpers after per-tool av…
kshitijk4poor Jun 30, 2026
1324add
fix(image-gen): honor top-level image_gen.model for Nous/OpenRouter
xxxigm Jun 30, 2026
63731fe
test(image-gen): cover Nous/OpenRouter top-level model resolution
xxxigm Jun 30, 2026
1b37685
docs(image-gen): align OpenRouter model-resolution docstrings with ne…
kshitijk4poor Jun 30, 2026
62a1bf4
fix(tools): return previews on zero-match in replace/remove to preven…
kyssta-exe Jun 9, 2026
a5e8cd4
fix(memory): degrade gracefully after repeated at-capacity consolidat…
kshitijk4poor Jun 30, 2026
4bb8226
fix(gateway): deliver MEDIA tags for extension-less files when path v…
HexLab98 Jun 30, 2026
773a48f
test(gateway): cover extension-less MEDIA delivery
HexLab98 Jun 30, 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
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion .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
2 changes: 1 addition & 1 deletion .envrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
watch_file pyproject.toml uv.lock
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
50 changes: 0 additions & 50 deletions .github/actions/hermes-smoke-test/action.yml

This file was deleted.

88 changes: 87 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ permissions:
pull-requests: write # needed by lint (PR comment) + supply-chain (PR comment)
actions: read # needed by osv-scanner (SARIF upload)
security-events: write # needed by osv-scanner (SARIF upload)
packages: write # needed by docker build

concurrency:
group: ci-${{ github.ref }}
Expand All @@ -32,6 +33,7 @@ jobs:
# (all lanes true) so post-merge validation is never weakened.
# ─────────────────────────────────────────────────────────────────────
detect:
name: Detect affected areas
runs-on: ubuntu-latest
outputs:
python: ${{ steps.classify.outputs.python }}
Expand All @@ -53,47 +55,65 @@ jobs:
# Skipped workflows (if condition is false) don't spin up runners.
# ─────────────────────────────────────────────────────────────────────
tests:
name: Python tests
needs: detect
if: needs.detect.outputs.python == 'true'
uses: ./.github/workflows/tests.yml
with:
slice_count: 8

lint:
name: Python lints
needs: detect
if: needs.detect.outputs.python == 'true'
uses: ./.github/workflows/lint.yml
with:
event_name: ${{ needs.detect.outputs.event_name }}

typecheck:
name: TypeScript
needs: detect
if: needs.detect.outputs.frontend == 'true'
uses: ./.github/workflows/typecheck.yml

docs-site:
name: Docs Site
needs: detect
if: needs.detect.outputs.site == 'true'
uses: ./.github/workflows/docs-site-checks.yml

history-check:
name: Deny unrelated histories
needs: detect
if: needs.detect.outputs.event_name == 'pull_request'
uses: ./.github/workflows/history-check.yml

contributor-check:
name: Check contributors
needs: detect
if: needs.detect.outputs.python == 'true'
uses: ./.github/workflows/contributor-check.yml

uv-lockfile:
name: Check uv.lock
needs: detect
uses: ./.github/workflows/uv-lockfile-check.yml

docker-lint:
name: Lint Docker scripts
needs: detect
if: needs.detect.outputs.docker_meta == 'true'
uses: ./.github/workflows/docker-lint.yml

docker:
name: Build&Test Docker image
needs: detect
if: needs.detect.outputs.python == 'true' || needs.detect.outputs.frontend == 'true' || needs.detect.outputs.docker_meta == 'true'
uses: ./.github/workflows/docker.yml
secrets: inherit

supply-chain:
name: Supply-chain scan
needs: detect
if: needs.detect.outputs.event_name == 'pull_request' && (needs.detect.outputs.scan == 'true' || needs.detect.outputs.deps == 'true' || needs.detect.outputs.mcp_catalog == 'true')
uses: ./.github/workflows/supply-chain-audit.yml
Expand All @@ -104,7 +124,7 @@ jobs:
mcp_catalog: ${{ needs.detect.outputs.mcp_catalog == 'true' }}

osv-scanner:
needs: detect
name: OSV scan
uses: ./.github/workflows/osv-scanner.yml

# ─────────────────────────────────────────────────────────────────────
Expand All @@ -127,6 +147,8 @@ jobs:
- docker-lint
- supply-chain
- osv-scanner
# we don't require docker to pass rn because it's so slow lol
# - docker
if: always()
runs-on: ubuntu-latest
steps:
Expand All @@ -143,3 +165,67 @@ jobs:
sys.exit(1)
print('All checks passed (or were skipped)')
"

# ─────────────────────────────────────────────────────────────────────
# CI timing report: collect per-job/step durations from the GitHub API,
# cache them on main (as a baseline), and on PRs generate an HTML diff
# report with a gantt chart + per-step breakdown. The report is uploaded
# as an artifact and a markdown summary is written to $GITHUB_STEP_SUMMARY.
# ─────────────────────────────────────────────────────────────────────
ci-timings:
name: CI timing report
needs: [all-checks-pass, docker]
if: always()
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Restore baseline cache (PR only)
if: github.event_name == 'pull_request'
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ci-timings-baseline.json
# Prefix-match: exact key will never hit (run_id differs), so
# restore-keys finds the most recent baseline from main.
key: ci-timings-baseline-never-exact
restore-keys: |
ci-timings-baseline-

- name: Collect timings and generate report
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 scripts/ci/timings_report.py \
--baseline ci-timings-baseline.json \
--output ci-timings-report.html \
--json-out ci-timings.json \
--summary-out ci-timings-summary.md

- name: Upload HTML report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
id: ci-timings-artifact
with:
name: ci-timings-report
path: ci-timings-report.html
retention-days: 14
archive: false

- name: Output summary
env:
REPORT_URL: ${{ steps.ci-timings-artifact.outputs.artifact-url}}
run: |
echo "# CI Timing report" >> "$GITHUB_STEP_SUMMARY"
echo "[View the full interactive report]($REPORT_URL)" >> "$GITHUB_STEP_SUMMARY"
cat ci-timings-summary.md >> "$GITHUB_STEP_SUMMARY"

- name: Save baseline cache (main only)
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
run: cp ci-timings.json ci-timings-baseline.json

- name: Upload baseline to cache (main only)
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ci-timings-baseline.json
key: ci-timings-baseline-${{ github.run_id }}
2 changes: 1 addition & 1 deletion .github/workflows/docker-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Docker / shell lint

# Lints the container build inputs: Dockerfile (via hadolint) and any shell
# scripts under docker/ (via shellcheck). These catch the class of regression
# the behavioral docker-publish smoke test can't — unquoted variable
# the behavioral docker smoke test can't — unquoted variable
# expansions, silently-failing RUN commands, etc.
#
# Rules and ignores are documented in .hadolint.yaml at the repo root.
Expand Down
Loading
Loading