Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
725 commits
Select commit Hold shift + click to select a range
cea87d9
fix(skills-hub): show every catalog source on /docs/skills (skills.sh…
teknium1 May 26, 2026
29c71e9
fix(docker): propagate container env through s6 to cont-init and main…
jonpol01 May 26, 2026
d8703e2
feat(skills-hub): health checks, freshness badge, and a watchdog cron…
teknium1 May 26, 2026
66851dc
chore: add krislidimo to AUTHOR_MAP for PR #29775 (#32434)
kshitijk4poor May 26, 2026
9d10c45
fix(telegram): tighten table row-group spacing and drop redundant fir…
krislidimo May 21, 2026
f4953bc
fix(subdirectory_hints): prevent loading AGENTS.md outside workspace
May 25, 2026
5744b17
harden: restrict markdown link schemes; parse untrusted XML with defu…
TheOnlyMika May 25, 2026
31c8d5f
chore(wecom): make defusedxml dep acquireable and tolerant of absence
teknium1 May 26, 2026
2517917
fix(cli): restore fallback paste collapse + handle long single-line p…
teknium1 May 26, 2026
8b69ec0
feat(mcp): Nous-approved MCP catalog with interactive picker (#30870)
teknium1 May 26, 2026
ccd3d04
chore(models): swap qwen3.6-plus → qwen3.7-max in openrouter+nous lis…
teknium1 May 26, 2026
5101326
fix(cron): clarify schedule is required for create in tool schema
ygd58 May 26, 2026
556bf7c
test(cron): guard schedule-required description text on CRONJOB_SCHEMA
teknium1 May 26, 2026
f05a473
fix(gateway): refresh cached agent tools on /reload-mcp
teknium1 May 26, 2026
bb4703c
docs(auth): replace stale 'hermes login' references with 'hermes auth…
teknium1 May 26, 2026
43a3f11
fix(agent): recover Codex streams with null output
carltonawong May 27, 2026
2a8d217
chore(release): map carltonawong noreply to GitHub login
teknium1 May 27, 2026
1e267c4
Merge pull request #29025 from slowtokki0409/codex/ignore-local-runti…
benbarclay May 27, 2026
16e86ce
chore(release): map wangpuv contributor email for #32933 (#33005)
teknium1 May 27, 2026
bba5097
fix: parse Codex image generation SSE directly
wangpuv May 27, 2026
840f79e
Merge pull request #31031 from Sunil123135/feat/windows-docker-desktop
benbarclay May 27, 2026
628aaea
Merge pull request #32412 from jonpol01/fix/docker-env-propagation
benbarclay May 27, 2026
7d94eee
Merge pull request #32122 from yu-xin-c/codex/docs-docker-audio-bridg…
benbarclay May 27, 2026
3c7f786
Merge pull request #31557 from yu-xin-c/codex/docs-xurl-docker-home-2…
benbarclay May 27, 2026
2fc77c5
feat(opencode-go): route qwen3.7-max via anthropic_messages
beardthelion May 26, 2026
0a83247
feat: add TUI session orchestrator
ticketclosed-wontfix May 17, 2026
9feadc2
chore(release): map ticketclosed-wontfix noreply to GitHub login
teknium1 May 27, 2026
81a4f28
Merge pull request #22534 from wesleysimplicio/fix/voice-mode-docker-…
benbarclay May 27, 2026
1e5884e
refactor(docker): drop build-essential from apt install (#27507)
benbarclay May 27, 2026
3d9a26a
Merge remote-tracking branch 'origin/main' into jq/hermes-update-bran…
jquesnelle May 27, 2026
9d3e931
Merge pull request #29591 from NousResearch/jq/hermes-update-branch-flag
jquesnelle May 27, 2026
b6ca56f
fix(codex-responses): gracefully recover from invalid_encrypted_conte…
teknium1 May 27, 2026
9eadb68
fix(docker): targeted chown to preserve host file ownership in HERMES…
benbarclay May 27, 2026
22eb4d1
fix(docker): chown ui-tui and node_modules on UID remap so TUI esbuil…
benbarclay May 27, 2026
27a29ee
feat(docker): upgrade Node to 22 LTS via multi-stage from node:22-boo…
benbarclay May 27, 2026
c3bdb2a
ci(docker): add shellcheck shell=sh directive to main-wrapper.sh
benbarclay May 27, 2026
fb298a9
fix(docker): mkdir HERMES_HOME as root in stage2 before chown / privi…
benbarclay May 27, 2026
cb38ce2
refactor(codex): drop SDK responses.stream() helper; consume events d…
teknium1 May 27, 2026
febc4cf
remove Vercel AI Gateway and Vercel Sandbox (#33067)
teknium1 May 27, 2026
25f43d3
feat(api-server): add GET /v1/skills and /v1/toolsets (#33016)
teknium1 May 27, 2026
9769794
feat(nix): add #messaging and #full package variants (#33108)
alt-glitch May 27, 2026
4243b6d
fix(codex): update silent-hang workaround hint
EvilHumphrey May 27, 2026
f0be322
chore(release): map EvilHumphrey noreply for #33034 salvage
teknium1 May 27, 2026
f7527b0
feat: add API server session controls
Codename-11 May 20, 2026
464b51d
Support media in session chat API
Schwartz10 May 22, 2026
9622326
chore(api-server): mark skills_api capability True now that /v1/skill…
teknium1 May 27, 2026
f0fdb5e
feat(catalog): add qwen3.7-max to alibaba + alibaba-coding-plan model…
orcool May 27, 2026
4920f84
test(codex): cover null output stream terminal events
superearn-fisher May 27, 2026
c752205
chore(release): map superearn-fisher noreply for #33122 salvage
teknium1 May 27, 2026
249534e
plugins: add security-guidance — pattern-matched warnings on dangerou…
teknium1 May 27, 2026
f2b479e
test(dashboard): pin current loopback auth behavior as regression har…
benbarclay May 21, 2026
8773bbf
feat(dashboard): add should_require_auth predicate for OAuth gate
benbarclay May 21, 2026
949ad95
feat(dashboard): stash auth_required flag on app.state
benbarclay May 21, 2026
2dc6d03
feat(dashboard-auth): define DashboardAuthProvider ABC + Session data…
benbarclay May 21, 2026
1bbfed7
test(dashboard-auth): cover registry register/get/list/clear semantics
benbarclay May 21, 2026
c32b17f
feat(plugins): add register_dashboard_auth_provider hook on PluginCon…
benbarclay May 21, 2026
865cae4
feat(dashboard-auth): json-lines audit log at $HERMES_HOME/logs/dashb…
benbarclay May 21, 2026
628a52f
test(dashboard-auth): stub auth provider for E2E gate testing
benbarclay May 21, 2026
a30c4d8
feat(dashboard-auth): cookie helpers for session_at/session_rt/pkce
benbarclay May 21, 2026
5b17eab
feat(dashboard-auth): auth gate middleware + /auth/* routes + /login …
benbarclay May 21, 2026
53736b3
feat(dashboard-auth): fail-closed on no providers; proxy_headers when…
benbarclay May 21, 2026
53999b9
docs(dashboard-auth): plan v2 — incorporate Portal OAuth contract (PR…
benbarclay May 21, 2026
848baeb
feat(dashboard-auth): plugins/dashboard_auth/nous — contract-complian…
benbarclay May 21, 2026
b69fce9
feat(dashboard-auth): single-use WS tickets + POST /api/auth/ws-ticket
benbarclay May 21, 2026
b2360ba
feat(dashboard-auth): _ws_auth_ok helper + ticket auth on all 4 WS en…
benbarclay May 21, 2026
8971e94
feat(dashboard-auth): SPA WS auth — getWsTicket() + buildWsAuthParam()
benbarclay May 21, 2026
5e9308b
feat(dashboard-auth): Phase 6 — 401 re-auth envelope + next= propagation
benbarclay May 21, 2026
2fc4615
feat(dashboard-auth): Phase 7 — SPA AuthWidget + /api/status auth fields
benbarclay May 21, 2026
7c9cdbc
docs(dashboard-auth): Phase 7 — OAuth Authentication section in web-d…
benbarclay May 21, 2026
af3d4a6
fix(dashboard-auth): ChatPage cleanup closes WS via wsRef.current
benbarclay May 21, 2026
b3dc539
feat(dashboard-auth): Nous plugin always-on; default portal URL; spec…
benbarclay May 21, 2026
4272977
fix(dashboard): trigger plugin discovery in cmd_dashboard before star…
benbarclay May 23, 2026
a498485
feat(dashboard-auth-nous): surface token iss/aud in verification-fail…
benbarclay May 23, 2026
c598076
test(dashboard-auth): strip HERMES_DASHBOARD_OAUTH_* env vars in herm…
benbarclay May 25, 2026
866cc98
fix(dashboard-auth): use fixed-length sig suffix in stub token framing
benbarclay May 25, 2026
c310419
fix(dashboard-auth): bypass loopback WS peer check in gated mode
benbarclay May 25, 2026
034ad95
fix(dashboard-auth): propagate next= through login page + PKCE cookie
benbarclay May 25, 2026
b26d81d
feat(dashboard-auth): honour X-Forwarded-Prefix + __Host-/__Secure- c…
benbarclay May 25, 2026
e2a92ce
chore: gitignore .hermes/ working directory; drop tracked plan artifact
benbarclay May 25, 2026
61dcc33
feat(dashboard-auth): config.yaml as canonical surface for dashboard.…
benbarclay May 26, 2026
0af37ff
style(dashboard-auth): redesign /login page to match Nous design system
benbarclay May 26, 2026
a890389
feat(dashboard-auth): HERMES_DASHBOARD_PUBLIC_URL / dashboard.public_…
benbarclay May 26, 2026
187cf0f
tools(terminal): nudge homebrewed CI pollers at the tool surface (#33…
teknium1 May 27, 2026
b1a46b3
fix(codex): drop transient rs_tmp reasoning replay state
kpadilha May 13, 2026
c819bc5
chore(release): map kpadilha noreply for #11038 salvage
teknium1 May 27, 2026
9c69204
fix(codex_responses_adapter): drop foreign-issuer reasoning on replay
chaconne67 May 27, 2026
581b021
chore(release): map chaconne67 noreply for #31629 salvage
teknium1 May 27, 2026
8807b1c
fix(gateway): hide telegram compaction status noise
sir-ad May 25, 2026
efa9525
fix: ignore Telegram start pings
rdasilva1016-ui May 23, 2026
60f84c6
gateway: quiet Telegram operational chatter
houenyang-momo May 23, 2026
2f7ba51
refactor(gateway): drop try/except wrappers around resolve_display_se…
teknium1 May 27, 2026
4feb181
chore(release): map sir-ad + rdasilva1016-ui in AUTHOR_MAP
teknium1 May 27, 2026
2bbd534
fix(cli): sync credential_pool on Codex re-auth
konsisumer May 27, 2026
f1422ff
fix(gateway): classify Codex 429 quota as rate-limit, not missing cre…
konsisumer May 27, 2026
0b6ace6
test(verbose): align with telegram tier-1 inbox default
teknium1 May 27, 2026
bb65beb
Merge pull request #30504 from ilonagaja509-glitch/fix/30394-docker-a…
benbarclay May 27, 2026
ea34925
fix(discord): recover Windows voice opus decoding
helix4u May 27, 2026
3e33e14
fix(docker): discover agent-browser Chromium binary at boot
benbarclay May 27, 2026
69dfcdc
fix(auth): codex chat path falls back to credential_pool when singlet…
teknium1 May 27, 2026
0325e18
fix(gateway): keep Telegram heartbeat + interim commentary on; edit h…
teknium1 May 27, 2026
a699de8
fix(xai-oauth): strip service_tier and add safety-net sanitization fo…
Nami4D May 19, 2026
b4eea18
fix(xai-oauth): gate slash-enum strip on model name + add regression …
teknium1 May 26, 2026
825948e
ci(docker): simplify tagging — push both :main and :latest on main push
ethernet8023 May 27, 2026
f0de3cd
fix(agent): roll back switch_model() state when client rebuild fails …
teknium1 May 27, 2026
458a94e
fix(cli): keep destructive slash modal on Linux
LeonSGP43 May 26, 2026
dd0d5d5
chore: add JohnC1009 to AUTHOR_MAP (#33351)
kshitijk4poor May 27, 2026
414a5bc
fix(auth): fall back to global auth.json in _load_provider_state
JohnC1009 May 25, 2026
2e18160
fix(agent): isolate credential pool on provider fallback
zccyman May 27, 2026
2e3c662
Add Honcho runtime peer mapping
mavrickdeveloper May 17, 2026
382b1fc
Cover Honcho runtime peer edge cases
mavrickdeveloper May 17, 2026
30b391a
Avoid Honcho runtime peer collisions
mavrickdeveloper May 17, 2026
00e6830
fix(honcho): inherit identity-mapping config in cloned profile blocks
erosika May 21, 2026
c03960d
fix(honcho): include user_id in agent cache signature to prevent shar…
erosika May 21, 2026
0bac880
feat(honcho-setup): add deployment-shape step to identity-mapping wizard
erosika May 21, 2026
3cf5e82
refactor(honcho): accept pinUserPeer as backwards-compatible alias fo…
erosika May 21, 2026
58987cb
docs(honcho): document identity-mapping config + resolver ladder + de…
erosika May 21, 2026
6feb2af
fix(honcho): plug pinPeerName transition gaps
erosika May 26, 2026
939499b
chore(honcho): trim PR-history narration from docs and tests
erosika May 26, 2026
1a8e670
fix(honcho): cover pinUserPeer + aiPeer edge cases in setup, clone, a…
erosika May 26, 2026
1800a1c
fix(honcho): align peer-card read and write paths
May 18, 2026
bcae3fc
fix(honcho): align user context peer perspective
May 11, 2026
c89393b
chore(honcho): trim peer-card fallback comment
erosika May 27, 2026
eccbbe4
chore(release): map adopted Honcho contributors
erosika May 27, 2026
9919caf
feat(image_gen): add Krea provider plugin (Krea 2 Medium + Large) (#3…
teknium1 May 27, 2026
486d632
fix(auxiliary): coerce None final.output to empty list in Codex aux a…
teknium1 May 27, 2026
283bb81
fix(agent): tolerate large codex stream prefill
sanghyuk-seo-nexcube May 27, 2026
3476509
chore(release): map sanghyuk-seo-nexcube for #33383 salvage
teknium1 May 27, 2026
dc9d677
fix(agent): classify TypeError('NoneType ... not iterable') as retrya…
Brixyy May 27, 2026
8386f84
chore(release): map Brixyy for #33136 salvage
teknium1 May 27, 2026
fc47b72
fix(codex): omit tools key from Codex Responses kwargs when no tools …
xxxigm May 27, 2026
c94ad89
fix(kanban): retry corrupt-board dispatch after quarantine
donovan-yohan May 27, 2026
5deb384
chore(release): map donovan-yohan for #33263 salvage
teknium1 May 27, 2026
e8955f2
fix(codex): drop dead model slugs that HTTP 400 on ChatGPT Pro (#33424)
teknium1 May 27, 2026
6f2a2f1
fix: check upstream even when origin/main has no new commits
francip Apr 3, 2026
53bdef5
test(cli): regression test for hermes update fork upstream sync (#26172)
kshitijk4poor May 27, 2026
a38e283
fix: preserve nested official skill install paths
wysie May 27, 2026
f040710
fix: backfill official optional skill provenance
wysie May 27, 2026
ee80dfd
fix: preserve skill packages during curator consolidation
wysie May 27, 2026
0537e26
fix(skills): atomic lock write + drop dead _validate_category_name
kshitijk4poor May 27, 2026
4efb40c
fix(install): set world-readable uv python dirs for root FHS layout
wesleysimplicio May 9, 2026
963d22c
test(install): harden uv-python-path regression test against future d…
kshitijk4poor May 27, 2026
6416dd5
fix(kanban): harden SQLite against torn-write corruption (secure_dele…
steveonjava May 23, 2026
5c49cd0
fix(state): never silently downgrade WAL to DELETE on transient EIO
steveonjava May 24, 2026
e83252d
fix(kanban): preserve original exception when write_txn rollback fails
steveonjava May 24, 2026
c002668
fix(kanban): add grace period to detect_crashed_workers
steveonjava May 24, 2026
99c19eb
fix(kanban): add post-commit page_count invariant check to write_txn
May 25, 2026
ffdc937
fix(kanban): hoist zombie reaper out of dispatch_once
steveonjava May 26, 2026
dc98314
fix(kanban): skip redundant WAL pragma on already-WAL connections
steveonjava May 26, 2026
2d5dcfa
test(kanban): update dispatcher tick counter for hoisted zombie reaper
kshitijk4poor May 27, 2026
36c99af
test(kanban): align two tests with recent kanban hardening
teknium1 May 28, 2026
0927fb5
feat(docker): auto-redirect `gateway run` to supervised mode inside s…
benbarclay May 28, 2026
912e6e2
fix(tui): suppress mouse-residue leaks during Python launcher startup…
OutThisLife May 28, 2026
b345323
fix(docker): tee supervised gateway stdout to docker logs
benbarclay May 28, 2026
aeb992d
fix(docker): drop `docker exec` to hermes uid before invoking the CLI
benbarclay May 28, 2026
71b4a6b
fix(docker): install python-is-python3 so bare `python` resolves in c…
teknium1 May 27, 2026
c341a2d
fix(docker): align HOME for dashboard and s6 gateway services (#33481)
Dusk1e May 28, 2026
c9410b3
feat(web): add collapsible sidebar for the dashboard (#33421)
austinpickett May 28, 2026
10f13c3
fix(web): allow mobile dashboard scrolling (#28051) (#28577)
wesleysimplicio May 28, 2026
6d947e4
feat(image_gen/fal): add Krea 2 Medium + Large to FAL catalog (#33506)
teknium1 May 28, 2026
ebe04c6
fix(kanban): close kanban.db FD after every connect() in long-lived p…
teknium1 May 28, 2026
66489f3
fix(docker): bake build-time git SHA into the image
benbarclay May 28, 2026
4a6f186
test: cover ci-unblocker production regressions
stephenschoettler May 28, 2026
b924b22
fix(docker): `hermes update` prints `docker pull` guidance instead of…
benbarclay May 28, 2026
875d930
test(docker-update): stub subprocess.run in git-install regression guard
benbarclay May 28, 2026
4e702fe
test(ci): harden two flaky tests against CI noise (#33675)
teknium1 May 28, 2026
3ad4693
docs(voice): use `uv pip install faster-whisper` in STT install hints…
briandevans May 28, 2026
90b6b3d
fix(kanban): harden sqlite connection concurrency
2rook-orchestrator May 26, 2026
3ba8962
fix(kanban): add Windows init lock guard
2rook-orchestrator May 26, 2026
7b778db
chore(release): map MoonRay305 contributor email for #32759 salvage
kshitijk4poor May 28, 2026
0bf9b86
fix(website): pin serialize-javascript and uuid via npm overrides
stephenschoettler May 28, 2026
406901b
feat(auth) normalise the way in which we check whether a user has fre…
rewbs May 25, 2026
1cf5e63
fix(auth): refresh Nous entitlement in tool menus
rewbs May 27, 2026
dc52b82
test(auth): update entitlement CI expectations
rewbs May 28, 2026
459d769
fix(agent): preload jiter native parser
helix4u May 28, 2026
442a920
Fix xAI OAuth timeout manual fallback
LeonSGP43 May 27, 2026
1a9ef83
fix(security): require API_SERVER_KEY before dispatching API server work
Dusk1e May 25, 2026
8595281
fix: expose context engine tools with saved toolsets
stephenschoettler May 23, 2026
87e5b2f
feat(mcp): support TLS client certificates (mTLS) for HTTP and SSE se…
teknium1 May 28, 2026
986abb3
docs: drop stale Kimi/DeepSeek vision example (#33736)
teknium1 May 28, 2026
43abc51
fix(security): require source CIDR allowlisting for public msgraph we…
Dusk1e May 25, 2026
09a5cd8
fix(auth): sync manual:device_code Codex pool entries on re-auth (#33…
teknium1 May 28, 2026
fb9f3a4
fix(skills): pull full ClawHub catalog into the skills index (200 → 2…
teknium1 May 28, 2026
9b5dae1
feat(context-engine): host contract for external context engines
teknium1 May 28, 2026
538f0fa
fix(kanban): wrap columns into rows and fix vertical overflow
vynxevainglory-ai May 20, 2026
70abae8
fix(kanban): show horizontal scrollbar instead of wrapping columns
teknium1 May 28, 2026
bb0ac5c
chore(release): AUTHOR_MAP entry for vynxevainglory-ai
teknium1 May 28, 2026
aa34660
fix(android): reject unsafe tar members in psutil compatibility insta…
Dusk1e May 25, 2026
4ed4825
fix(xai-proxy): handle 429 rate-limit responses in proxy retry path
sprmn24 May 19, 2026
c7f7783
test(xai-proxy): regression coverage for #28932 429 handling
teknium1 May 28, 2026
8b6beaa
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal w…
teknium1 May 28, 2026
031983b
fix: limit pre-update state snapshots
AdityaRajeshGadgil May 5, 2026
247b24b
chore(release): add AUTHOR_MAP entry for AdityaRajeshGadgil
teknium1 May 28, 2026
a91b1c8
fix(tirith): reject non-regular tar members during auto-install process
Dusk1e May 25, 2026
9179396
fix(stream-consumer): only set _final_content_delivered when final re…
indigokarasu May 28, 2026
b5495db
fix(agent): re-pad reasoning_content on cross-provider fallback to re…
bisko May 28, 2026
f8896de
chore(release): map biser@bisko.be -> bisko in AUTHOR_MAP
teknium1 May 28, 2026
10ee4a7
fix(gateway): drain on Windows `hermes gateway stop` so sessions surv…
teknium1 May 28, 2026
e9f3f2b
fix(tools): unescape common sequences in new_string when escape_norma…
liuhao1024 May 28, 2026
78be458
fix(patch): widen new_string \t/\r unescape to all match strategies (…
teknium1 May 28, 2026
432a691
fix(update): stream + idle-kill `npm run build` so a stalled webui-bu…
teknium1 May 28, 2026
6f9182c
fix(kanban): content-addressed corrupt-DB backup filename
teknium1 May 28, 2026
a1eaad2
perf(skills-page): lazy-fetch the catalog instead of bundling 34MB in…
teknium1 May 28, 2026
eafe11d
fix(gateway): backfill Discord thread context
Pluviobyte May 28, 2026
68ddd6b
refactor(discord): inline backfill gate and document intent
teknium1 May 28, 2026
b243afb
fix(discord): skip backfill for auto-created threads and update test …
teknium1 May 28, 2026
5e1f793
chore(web): remove web_crawl tool + provider crawl plumbing (#33824)
teknium1 May 28, 2026
e0572a6
fix(skills-hub): stop ellipsis-truncating the Identifier column (#33810)
teknium1 May 28, 2026
67011cc
feat(agent): buffer retry/fallback status, surface only on terminal f…
teknium1 May 28, 2026
c0d0469
docs(email): clarify gateway vs Himalaya setup
helix4u May 28, 2026
a82c88b
fix(xai-oauth): accept bare-code manual paste (state=None) (#26923) (…
kshitijk4poor May 28, 2026
0554ef1
fix(agent): fallback immediately on provider content-policy blocks (#…
kshitijk4poor May 28, 2026
b9d7f08
feat: add project and kanban usage surfaces
the24thLetter May 20, 2026
2b58fcc
chore: add local fork update helper
the24thLetter May 20, 2026
2cf58f5
fix: address fork Bugbot usage rollup findings
the24thLetter May 20, 2026
3c577ff
fix: harden usage rollups after Bugbot review
the24thLetter May 20, 2026
03f556a
fix: avoid repeated usage backfills on board polls
the24thLetter May 20, 2026
11bbc84
fix: dedupe snapshot usage rollups
the24thLetter May 20, 2026
3cce5fd
fix: scope usage dedupe per task
the24thLetter May 20, 2026
555cfe5
fix: clear stale unassigned usage rows
the24thLetter May 20, 2026
b90e937
fix: preserve block metadata and latest snapshots
the24thLetter May 20, 2026
5a2ae93
fix: clarify usage refresh and snapshot dedupe
the24thLetter May 20, 2026
96b13a2
fix: keep usage backfill resilient per board
the24thLetter May 20, 2026
e182b00
refactor: share worker usage metadata stamping
the24thLetter May 20, 2026
3342571
fix: count sessionless usage snapshots
the24thLetter May 20, 2026
5e3f1e3
fix: close usage ledger on state open failure
the24thLetter May 20, 2026
8b80d80
fix: enforce kanban review gate for merge captain
the24thLetter May 21, 2026
fb25052
fix: keep failed review workers in review
the24thLetter May 21, 2026
2752a93
fix: use qualified merge-captain review skills
the24thLetter May 21, 2026
1cd7bfc
fix: preserve review queue on spawn failures
the24thLetter May 21, 2026
f221f01
fix: expose unroutable review rejections
the24thLetter May 21, 2026
c12724a
fix: preserve kanban review handoffs and ledger backfill transaction
the24thLetter May 21, 2026
830b8cd
fix: address current bugbot review findings
the24thLetter May 21, 2026
fb6d1e1
fix: preserve review state in reclaim and breaker paths
the24thLetter May 21, 2026
64c7382
fix: update review-restored spawn failure bookkeeping
the24thLetter May 21, 2026
7343053
fix: preserve status on synthetic kanban runs
the24thLetter May 21, 2026
deadc52
fix: keep respawn guard after failure events
the24thLetter May 21, 2026
c0c44c2
fix: address latest bugbot usage and stamping findings
the24thLetter May 21, 2026
bead657
fix: resolve latest bugbot review nits
the24thLetter May 21, 2026
7976c00
fix: route review blockers by owner boundary
the24thLetter May 22, 2026
a645dba
feat: add local fork update restart wrapper
the24thLetter May 28, 2026
c0758d7
fix: tighten local fork wrapper verification
the24thLetter May 28, 2026
3c9b825
fix: honor board scoped kanban config lookups
the24thLetter May 28, 2026
412c736
fix: complete kanban board-scoped config support
the24thLetter May 28, 2026
7c0bd37
feat: surface kanban review pressure and merge mutex
the24thLetter May 28, 2026
19aff74
fix: guard docker latest on release ancestry
the24thLetter May 28, 2026
601f57d
docs: document kanban review pressure controls
the24thLetter May 28, 2026
b8bda9e
fix: keep docker latest release-only
the24thLetter May 28, 2026
919d8c1
fix: honor board-scoped Kanban review config
the24thLetter May 28, 2026
7ed5aa8
chore: map PR contributor authors
the24thLetter May 28, 2026
8f95720
fix: read docker latest revision labels robustly
the24thLetter May 28, 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: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ node_modules
**/node_modules
.venv
**/.venv
.notebooklm-cli-venv/
.notebooklm-playwright/
.pip-cache/
.uv-cache/

# Built artifacts that are regenerated inside the image. Excluded so local
# rebuilds on the developer's machine don't invalidate the npm-install layer
Expand All @@ -25,6 +29,8 @@ ui-tui/packages/hermes-ink/dist/

# Runtime data (bind-mounted at /opt/data; must not leak into build context)
data/
.hermes-docker/
.notebooklm-home/

# Compose/profile runtime state (bind-mounted; avoid ownership/secret issues)
hermes-config/
Expand Down
7 changes: 5 additions & 2 deletions .github/actions/hermes-smoke-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,13 @@ runs:
- name: hermes --help
shell: bash
run: |
# Use the image's real ENTRYPOINT (/init + main-wrapper.sh) so
# this exercises the actual production startup path. PR #30136
# review caught that an --entrypoint override here had been
# silently neutered by the s6-overlay migration — stage2-hook
# ignores its CMD args, so the smoke test was a no-op.
docker run --rm \
-v /tmp/hermes-test:/opt/data \
--entrypoint /opt/hermes/docker/entrypoint.sh \
"${{ inputs.image }}" --help

- name: hermes dashboard --help
Expand All @@ -43,5 +47,4 @@ runs:
# installed package.
docker run --rm \
-v /tmp/hermes-test:/opt/data \
--entrypoint /opt/hermes/docker/entrypoint.sh \
"${{ inputs.image }}" dashboard --help
19 changes: 11 additions & 8 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,23 @@ jobs:
- name: Install PyYAML for skill extraction
run: pip install pyyaml==6.0.2 httpx==0.28.1

- name: Build skills index (unified multi-source catalog)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Always rebuild — the file isn't committed (gitignored), so a
# fresh checkout starts without it and we want the freshest crawl
# in every deploy. Failure is non-fatal: extract-skills.py will
# fall back to the legacy snapshot cache and the Skills Hub page
# still renders, just without the latest community catalog.
python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"

- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py

- name: Regenerate per-skill docs pages + catalogs
run: python3 website/scripts/generate-skill-docs.py

- name: Build skills index (if not already present)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ ! -f website/static/api/skills-index.json ]; then
python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"
fi

- name: Install dependencies
run: npm ci
working-directory: website
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/docker-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
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
# expansions, silently-failing RUN commands, etc.
#
# Rules and ignores are documented in .hadolint.yaml at the repo root.
# shellcheck severity is pinned to `error` so SC1091-style "can't follow
# sourced script" info-level warnings don't fail the job — the .venv
# activate script doesn't exist at lint time.

on:
push:
branches: [main]
paths:
- Dockerfile
- docker/**
- .hadolint.yaml
- .github/workflows/docker-lint.yml
pull_request:
branches: [main]
paths:
- Dockerfile
- docker/**
- .hadolint.yaml
- .github/workflows/docker-lint.yml

permissions:
contents: read

concurrency:
group: docker-lint-${{ github.ref }}
cancel-in-progress: true

jobs:
hadolint:
name: Lint Dockerfile (hadolint)
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: hadolint
uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf # v3.1.0
with:
dockerfile: Dockerfile
config: .hadolint.yaml
failure-threshold: warning

shellcheck:
name: Lint docker/ shell scripts (shellcheck)
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: shellcheck
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0
env:
# Severity = error: SC1091 (can't follow sourced script) is info-
# level and would otherwise fail when the venv activate script
# doesn't exist at lint time.
SHELLCHECK_OPTS: --severity=error
with:
scandir: ./docker
Loading
Loading