Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2081 commits
Select commit Hold shift + click to select a range
8dca287
fix(wecom): handle WSMsgType.CLOSING to prevent CPU spin
02356abc May 19, 2026
95846ed
fix(auth): treat empty credential pool entries as unauthenticated
rudi193-cmd May 19, 2026
7923f84
fix: include hermes_plugins in gateway.log component filter
zccyman May 19, 2026
5766504
fix(gateway): align kanban artifact _IMAGE_EXTS with response dispatch
EloquentBrush0x May 19, 2026
214b953
fix(process-registry): detach stdin from background subprocesses to p…
Junniorperez May 19, 2026
a24184f
chore(release): alias stale-ID salvage commit for @LifeJiggy (#28317)
teknium1 May 19, 2026
4e9df52
fix: elevate plugin discovery failures from debug to warning
zccyman May 19, 2026
52b049b
fix: treat inline-shell timeout guard as timeout
burjorjee May 19, 2026
5cbf86f
fix(acp): resolve /tmp symlink before workspace auto-approve check on…
EloquentBrush0x May 19, 2026
523254b
fix(kanban): single-row horizontal scroll for board columns
sadiksaifi May 19, 2026
6d495d9
fix(approval): surface pending-approval state with explicit marker vi…
LifeJiggy May 19, 2026
700f3b1
fix: recognize emoji and caret as natural response endings
oseftg May 19, 2026
7267c38
chore(release): pre-stage AUTHOR_MAP for May 2026 LHF batch group 8 (…
teknium1 May 19, 2026
e3293c0
fix: add pre_start() to _IncomingHandler for dingtalk SDK compatibility
samggggflynn May 19, 2026
8bcb608
fix(windows): handle redirected stdout in _cprint fallback
Syeda-Quratulain May 19, 2026
effdebb
chore(release): alias stale-ID salvage commit for @Grogger (#28334)
teknium1 May 19, 2026
87ace43
fix(aux): remove stale session_search model menu entry
hehehe0803 May 19, 2026
7321b3c
fix(tui): keep x status citation fallbacks link-like
YuanHanzhong May 19, 2026
b3e714e
fix(xai-oauth): quarantine dead tokens on terminal refresh failure
EloquentBrush0x May 18, 2026
af78449
feat(bg-review): add bundled/pinned skill protection rules to review …
zccyman May 19, 2026
c5cafd3
fix(web): portal Change Model modal so it renders above the app sidebar
maxmilian May 19, 2026
5987b24
fix(gateway): exit code 75 on service restart so launchd relaunches
zccyman May 19, 2026
2b538c1
fix: guard json.loads() against invalid TTS and skill_view responses
vanthinh6886 May 19, 2026
7a46c68
fix(gateway): bridge gateway_restart_notification from YAML platform …
colin-chang May 19, 2026
2e09d25
feat(kanban): add auto_promote_children config toggle
zccyman May 19, 2026
25e0f4d
fix: wrap _pool_may_recover_from_rate_limit call through run_agent na…
AceWattGit May 19, 2026
50158a6
fix(tui): improve charizard completion menu contrast
houenyang-momo May 19, 2026
4229fac
docs(windows): avoid piping installer directly into iex
iqdoctor May 19, 2026
7569007
fix(agent): add qwen and deepseek to TOOL_USE_ENFORCEMENT_MODELS
briandevans May 19, 2026
09b6dcc
fix(send_message): resolve Slack user IDs to DM channel IDs
jvinals May 19, 2026
ea49b38
fix(gateway): tighten MEDIA extraction regex + silent skip on file-no…
colin-chang May 19, 2026
60ef368
fix(xai-oauth): split 403 (tier/entitlement) from 400/401 in token en…
xxxigm May 16, 2026
3b6f57f
fix(run-agent): treat any 403 on xai-oauth as entitlement to stop ref…
xxxigm May 16, 2026
34f34ba
test(xai-oauth): pin tier-denied 403 behavior + docs warning for #26847
xxxigm May 16, 2026
6143013
fix: handle whitespace-only cron responses
joe102084 May 19, 2026
5d1f350
fix(cli): preserve cron asterisks in strip mode
felix-windsor May 19, 2026
06161c6
fix(mattermost): resolve thread root_id and route progress to threads
colin-chang May 19, 2026
bde6313
feat(kanban): archive --rm to hard-delete archived tasks
Beandon13 May 19, 2026
1d6f375
feat(proxy): add xai upstream adapter for Grok via OAuth
yannsunn May 18, 2026
2064a39
chore(release): map @yannsunn for PR #28064 xai proxy adapter salvage
teknium1 May 19, 2026
374785e
docs(skill): align kanban dispatcher failure_limit text with current …
r266-tech May 19, 2026
5a5c265
fix(oauth): add manual-paste fallback for browser-only remote consoles
xxxigm May 16, 2026
cafbc9a
feat(cli): wire --manual-paste into ``hermes auth add`` and ``hermes …
xxxigm May 16, 2026
817e1d6
test+docs(oauth): pin manual-paste semantics and document browser-onl…
xxxigm May 16, 2026
e1d9afe
docs(kanban): document max-retries task override
helix4u May 19, 2026
f76923b
docs(kanban): document inline create shortcuts
helix4u May 19, 2026
c91ad90
test(kanban): cover default board dashboard pin
LeonSGP43 May 19, 2026
e0309f7
docs: ignore box diagrams in ascii guard
Bartok9 May 19, 2026
f01ee0b
feat: per-task model override for kanban workers
hongchen1993 May 19, 2026
028bbc5
test(kanban-dashboard): cover _task_dict task_age fallback
wuli666 May 19, 2026
d62964c
fix(kanban): clear _INITIALIZED_PATHS in remove_board so recycled DBs…
briandevans May 19, 2026
4519d2b
fix(web): add Cache-Control: no-store to plugin static file serving
momowind May 19, 2026
97ac94f
fix(kanban): seed bundled skills (e.g. kanban-worker) on kanban init
ms-alan May 19, 2026
8a64e15
fix(kanban): ignore stale HERMES_KANBAN_BOARD for removed boards
QuenVix May 19, 2026
afae2dd
fix(kanban): keep board-management commands independent from board ov…
QuenVix May 19, 2026
326c15d
fix(kanban): preserve notifier_profile for dashboard home subscriptions
Zyrixtrex May 19, 2026
b7ea62e
fix(kanban): promote dependents when a parent is archived
Zyrixtrex May 19, 2026
f149e1e
fix(cli): make kanban specify max_tokens configurable
argabor May 19, 2026
bc961c1
fix(kanban): sync slash subcommands with live parser
Que0x May 19, 2026
40c1dec
fix(kanban): promote blocked tasks when parent dependencies complete
bradhallett May 19, 2026
5db0d72
fix(kanban): use 'is not None' check for max_runtime_seconds in creat…
sprmn24 May 19, 2026
f042931
fix(kanban): reset failure counters on unblock_task
bradhallett May 19, 2026
de9bcfc
fix(kanban): fingerprint crash errors to prevent fleet-wide retry exh…
bradhallett May 19, 2026
9281599
fix(kanban): align board_exists with board discovery rules
soynchux May 19, 2026
917e518
fix(kanban): demote ready children when a parent is reopened
Drexuxux May 19, 2026
ca8126b
fix(kanban): serialize DB initialization
psionic73 May 19, 2026
d8ad431
fix(kanban): task_age() tolerates ISO-8601 timestamps
Interstellar-code May 19, 2026
4f6101c
Fix Kanban dashboard initial board selection
moortekweb-art May 19, 2026
8627916
fix(kanban): persist worker session metadata on completion
wesleysimplicio May 19, 2026
0f62013
fix(kanban): make claim ttl configurable
LeonSGP43 May 19, 2026
8bfb456
fix(kanban): pass accept-hooks to worker chat subprocess
LeonSGP43 May 19, 2026
fe5e0bf
feat(kanban): add board-level default workdir (#25430)
zccyman May 19, 2026
f12382f
docs(kanban-worker): document notification routing configuration
LizerAIDev May 19, 2026
c30608c
fix(kanban): preserve worker tools with restricted toolsets
haran2001 May 19, 2026
0b547ae
fix(kanban): make legacy task migration idempotent
ht1072 May 19, 2026
5d079fe
fix: harden Kanban worker Hermes command resolution
hanzckernel May 19, 2026
a5c2836
feat(kanban): allow trimmed task comments
ACR27 May 19, 2026
6c4f11c
fix: show scheduled kanban tasks in dashboard
roycepersonalassistant May 19, 2026
4da4133
fix: assign single-task kanban decompositions
DoGMaTiiC May 19, 2026
2dec760
fix(kanban-dashboard): make Orchestration mode checkbox label static
maxmilian May 19, 2026
4341072
docs(env): add HERMES_KANBAN_DISPATCH_IN_GATEWAY override (#21956)
Bartok9 May 19, 2026
0392cf5
fix(kanban): close sqlite connection on init failure to prevent fd leak
Ade5954 May 19, 2026
b9d38a5
fix(kanban): don't crash dispatched workers when kanban-worker skill …
oemtalks May 19, 2026
fdb374e
fix(packaging): ship dashboard plugin assets in wheel
LeonSGP43 May 19, 2026
713c231
docs(kanban): document worker protocol auto-blocks
helix4u May 19, 2026
666b66a
fix(oneshot): pass fallback_providers from profile config to AIAgent
uzunkuyruk May 19, 2026
e8ce7b8
fix(kanban): reject direct running transitions in dashboard bulk updates
kronexoi May 19, 2026
fb96208
feat(kanban): add initial-status for human-ops cards
shunsuke-hikiyama May 19, 2026
9f008bc
fix(kanban): release scratch workspace and tmux session on task compl…
LeonJS May 19, 2026
a94ddd8
fix(kanban): honor severity thresholds in diagnostics
LeonSGP43 May 19, 2026
d3345cc
test: isolate Kanban env pins in hermetic fixture
steezkelly May 19, 2026
5fdcfd8
feat(kanban): add max_in_progress config to cap concurrent running tasks
SimbaKingjoe May 19, 2026
3a7ed7b
fix(packaging): ship bundled skills in wheel
LeonSGP43 May 19, 2026
365da2d
fix: 4 small surgical bugs
Bartok9 May 19, 2026
206f595
perf(prompt): cache kanban worker guidance at session init
RyanRana May 19, 2026
a846e50
feat(kanban): add --sort option to 'hermes kanban list'
LizerAIDev May 19, 2026
b65dfbb
docs: add kanban codex lane skill
tchanee May 19, 2026
02efad7
feat(kanban): worker visibility endpoints (workers/active, runs/{id},…
Interstellar-code May 19, 2026
9d9f316
chore(release): map contributor email for attribution check
eloklam May 19, 2026
e215558
test(kanban-dashboard): pin enriched 409 detail and inline error wiri…
xxxigm May 19, 2026
78da7ef
docs(codex_app_server): document multi-root Kanban writable_roots (#2…
xxxigm May 19, 2026
d375747
fix(gateway): quiet corrupt kanban dispatcher boards
aqilaziz May 19, 2026
8158494
docs: align kanban readiness docs and smoke tests
bensargotest-sys May 19, 2026
79f6654
feat(kanban): surface per-task model_override in show + tool output
loicnico96 May 19, 2026
3ee7a55
feat(cli): add kanban swarm topology helper
Niraven May 19, 2026
8e193cf
feat(kanban): add optional board parameter to all MCP tools
nnnet May 19, 2026
31fe229
feat(kanban): stamp originating ACP session_id on tasks
awizemann May 19, 2026
f55d94a
feat(kanban): wire dispatcher to dispatch review agents from review c…
thewillhuang May 19, 2026
e286e68
feat(kanban): stale detection for running tasks in dispatcher
thewillhuang May 19, 2026
341912c
feat(kanban): filter tasks by workflow fields and runs by status/outcome
nehaaprasaad May 19, 2026
264e85b
feat(kanban): add respawn guard to block repeat worker storms
fardoche6 May 19, 2026
1a51727
feat(kanban): show dashboard cron jobs across profiles
SerenityTn May 19, 2026
1a883b4
fix(kanban): remove orphan conflict markers from config.py (#28458)
teknium1 May 19, 2026
53cf82a
fix(kanban): remove orphan conflict markers from kanban.py (#28459)
teknium1 May 19, 2026
1733cb3
feat(kanban): configure worktree paths and branches
aqilaziz May 19, 2026
b5c1fe7
feat(skills): add skill bundles — alias /<name> loads multiple skills…
teknium1 May 19, 2026
e382365
feat(kanban): add scheduled status for delayed follow-ups
roycepersonalassistant May 19, 2026
dfcf48b
feat(kanban): drag-to-delete trash zone + bulk delete for task cards
Jpalmer95 May 19, 2026
c4c45f1
docs: add Korean Kanban documentation
pochi-gio May 19, 2026
1912810
fix(tests): catch up six stale tests after compression/aux/kanban cha…
teknium1 May 19, 2026
6fb57bc
fix(telegram): render full clarify choice text in message body, use s…
asdlem May 18, 2026
ab11d09
chore(release): map @asdlem for PR #27852 salvage
teknium1 May 19, 2026
7fad501
fix(telegram): default streaming transport to edit
LeonSGP43 May 15, 2026
21a15b6
fix(telegram): respect reply_to_mode for DM topic reply fallback
liuhao1024 May 11, 2026
b93996c
fix(gateway): route Telegram audio file attachments away from STT pip…
Bartok9 May 13, 2026
785993b
chore(release): map bartok9 noreply for PR #24879 salvage
teknium1 May 19, 2026
edce8a5
fix(send_message): route standalone Telegram sends through TELEGRAM_P…
pepelax May 14, 2026
b58b418
chore(release): map @pepelax for PR #25419 salvage
teknium1 May 19, 2026
362ef91
fix(kanban-dashboard): restore implementations dropped during salvage…
teknium1 May 19, 2026
f55c67a
fix(gateway): roll over Telegram tool progress bubbles
Qwinty May 15, 2026
256c4c1
fix(gateway): scope audio_file_paths outside media_urls guard
teknium1 May 19, 2026
1b3c51b
fix(gateway): keep tool-progress edits alive after Telegram flood con…
erhnysr May 13, 2026
32435df
chore(release): map @erhnysr for PR #25198 salvage
teknium1 May 19, 2026
6be579f
fix(telegram): preserve can_edit after transient network errors in pr…
Bartok9 May 18, 2026
f260aa6
fix(telegram): recover from post-update polling conflict without ente…
CryptoByz May 14, 2026
17f3254
fix(test+release): update conflict retry count for MAX=5; map @CryptoByz
teknium1 May 19, 2026
fbabd56
fix(gateway): route background-process notifications into Telegram DM…
fabiosiqueira May 17, 2026
2994bf4
chore(release): map @fabiosiqueira for PR #27212 salvage
teknium1 May 19, 2026
de4cb55
fix(telegram): route resumed DM topic sends directly
Qwinty May 18, 2026
db50af9
fix(telegram): enforce TELEGRAM_ALLOWED_USERS allowlist on inbound me…
ygd58 May 11, 2026
89d3205
fix(telegram): fail-closed auth fallback when TELEGRAM_ALLOWED_USERS …
liuhao1024 May 12, 2026
8439ddc
test(telegram): stub _is_callback_user_authorized in trigger-gating f…
teknium1 May 19, 2026
5c4b43c
fix(telegram): reset sticky fallback IP on connect failure, retry pri…
falconexe May 12, 2026
e7a3e99
test+release: align stale sticky-IP test for #24511; map @falconexe
teknium1 May 19, 2026
434d508
fix(telegram): propagate extra base_url config
LeonSGP43 May 15, 2026
cf814c9
feat(send_message): auto-detect @username mentions and create Telegra…
fonhal May 18, 2026
9a444a9
test+release: align send_message mocks for MessageEntity import; map …
teknium1 May 19, 2026
ba2572e
fix(telegram): resume typing indicator after inline approval click (#…
briandevans May 18, 2026
d69f0c1
fix(gateway): mark final voice reply as notify-worthy so Telegram del…
briandevans May 18, 2026
7b2bcba
fix: avoid Telegram group reply thread session splits
eliteworkstation94-ai May 18, 2026
b46ef2e
chore(release): map @eliteworkstation94-ai for PR #28157 salvage
teknium1 May 19, 2026
f8eeb57
fix(gateway): avoid duplicate Telegram text after auto-TTS voice replies
Zyrixtrex May 16, 2026
35781ba
chore(release): map @Zyrixtrex for PR #26754 salvage
teknium1 May 19, 2026
4b6d35b
fix(telegram): escape send_slash_confirm preview with format_message
nftpoetrist May 14, 2026
bf6a287
chore(release): map @nftpoetrist for PR #25856 salvage
teknium1 May 19, 2026
af381ef
fix(telegram): retry wrapped connect timeouts
samahn0601 May 18, 2026
e19f4c1
chore(release): map @samahn0601 for PR #27887 salvage
teknium1 May 19, 2026
ed9087f
fix(tts): keep native audio outside Telegram voice delivery
aqilaziz May 15, 2026
470edfa
chore(release): map @aqilaziz for PR #26406 salvage
teknium1 May 19, 2026
ede47a5
fix(gateway): pin Telegram DM-topic routing to user's current topic
karthikeyann May 15, 2026
fc42bb9
chore(release): map @karthikeyann for PR #26609 salvage
teknium1 May 19, 2026
df530b4
fix(send_message): add thread-not-found retry for Telegram forum topi…
kunci115 May 16, 2026
2bb04f6
test(send_message): add thread-not-found retry tests for Telegram for…
kunci115 May 16, 2026
4abaec1
test(send_message): add thread-not-found retry tests for Telegram topics
kunci115 May 16, 2026
38356cc
chore(release): map @kunci115 for PR #27098 salvage
teknium1 May 19, 2026
7682198
fix(gateway): register Telegram commands for groups
chromalinx May 15, 2026
efc3740
test+release: fix test fixture for forum_commands; map @chromalinx
teknium1 May 19, 2026
46ce345
fix(telegram): gate profile bots by allowed topics
booker1207 May 13, 2026
032d4ca
chore(release): map @booker1207 for PR #25132 salvage
teknium1 May 19, 2026
a4fb0a3
fix(cron): route Telegram cron deliveries to a dedicated topic via TE…
konsisumer May 13, 2026
77c4675
fix(telegram): route image documents (.png/.jpg/.webp/.gif) through v…
kiranvk-2011 May 13, 2026
1d37860
test+release: stub auth in test_telegram_documents fixture; map @kira…
teknium1 May 19, 2026
417a653
fix(gateway): prevent Windows Telegram /restart leaving gateway stopped
May 14, 2026
c66efcf
chore(release): map @rak135 for PR #25960 salvage
teknium1 May 19, 2026
3ec28f3
fix(telegram): preserve topic metadata on overflow edits
Qwinty May 17, 2026
9d789f3
feat(telegram): add disable_topic_auto_rename gateway flag
B0Tch1 May 17, 2026
5734c3f
chore(release): map @B0Tch1 for PR #27634 salvage
teknium1 May 19, 2026
95a0955
fix(gateway): restore Telegram DM topic thread_id after session split…
jackjin1997 May 17, 2026
721d47f
chore(release): map @jackjin1997 for PR #27239 salvage
teknium1 May 19, 2026
b38140e
fix(gateway): allow chat-scoped telegram auth without sender user_id
soynchux May 18, 2026
15e89e1
chore(release): map @soynchux for PR #27806 salvage
teknium1 May 19, 2026
16d8e44
fix(telegram): add DM topic typing fallback when message_thread_id re…
fonhal May 18, 2026
d81b888
fix(telegram): report cron topic fallback
el-analista May 14, 2026
4f6fef1
chore(release): map @el-analista for PR #25368 salvage
teknium1 May 19, 2026
1891bee
fix(telegram): wire gt: callback dispatch for gmail-triage buttons
khungate May 14, 2026
e80d308
chore(release): map @khungate for PR #25829 salvage
teknium1 May 19, 2026
b1acf80
feat(telegram): support quick-command-only menus
stevehq26-bot May 18, 2026
17b8121
chore(release): map @stevehq26-bot for PR #28015 salvage
teknium1 May 19, 2026
704872a
fix(telegram): handle channel post updates
brndnsvr May 14, 2026
84a9b81
test: address telegram channel post review
brndnsvr May 14, 2026
f1cefad
test+release: stub auth in channel_posts fixture; map @brndnsvr
teknium1 May 19, 2026
8a80eee
Quiet noisy Telegram gateway errors
May 11, 2026
bb8e9ea
chore(release): map oracle@jarviss-mbp.home for PR #24014 salvage
teknium1 May 19, 2026
ce4d857
Route Telegram multi-bot mentions exclusively
OCWC22 May 12, 2026
e90869e
Document Telegram multi-profile gateway commands
OCWC22 May 12, 2026
fbfe294
fix: ignore Telegram messages for other bots
OCWC22 May 14, 2026
da48be1
chore(release): map @OCWC22 for PR #24581 salvage
teknium1 May 19, 2026
c931dad
feat(telegram): ignore_root_dm with system command lobby
ai-hana-ai May 12, 2026
6d66ad2
docs(telegram): document ignore_root_dm feature
ai-hana-ai May 12, 2026
ce46e6b
chore(release): map @ai-hana-ai for PR #23928 salvage
teknium1 May 19, 2026
a724c3b
feat(telegram): pin incoming user message for duration of agent turn
indigokarasu May 15, 2026
6265b3a
chore(release): map @indigokarasu for PR #26636 salvage
teknium1 May 19, 2026
ad2531b
feat(telegram): skip-STT audio path + 2GB cap via local Bot API server
alber70g May 13, 2026
69b1d31
chore(release): map @alber70g for PR #25280 salvage
teknium1 May 19, 2026
1335ce9
fix(web): add scheduled column to i18n type definitions (#28549)
alt-glitch May 19, 2026
eacce70
docs: comprehensive 2-week sweep of feature/PR coverage gaps (#28497)
teknium1 May 19, 2026
6dd0b35
chore(release): pre-stage AUTHOR_MAP for May 2026 LHF batch group 9 (…
teknium1 May 19, 2026
7f40767
feat(signal): add require_mention filter for group chats
jdelmerico May 19, 2026
03f7bc0
Revert "feat(telegram): pin incoming user message for duration of age…
teknium1 May 19, 2026
22120ef
Revert "feat(telegram): support quick-command-only menus"
teknium1 May 19, 2026
bbd2b46
Revert "feat(send_message): auto-detect @username mentions and create…
teknium1 May 19, 2026
4d44304
Revert "fix(telegram): enforce TELEGRAM_ALLOWED_USERS allowlist on in…
teknium1 May 19, 2026
e2a1a2b
fix(gateway): pre-mark sessions as resume_pending before drain to pre…
LifeJiggy May 19, 2026
276e6cc
fix(matrix): implement thread_require_mention to prevent multi-agent …
justemu May 19, 2026
8c3b065
fix(cli): show active profile in TUI prompt
burjorjee May 19, 2026
6cac56f
fix(tui): preserve dunder identifiers in markdown
helix4u May 19, 2026
0b89628
test(file_ops): add regression tests for git baseline warning in writ…
LifeJiggy May 19, 2026
afffb8d
fix(dashboard): use browser scrollback for chat wheel
YuanHanzhong May 19, 2026
425aba7
fix(cli): ignore stale HERMES_TUI_RESUME env
noctilust May 19, 2026
663ee14
fix(cron): allow emoji ZWJ sequences in prompts
outsourc-e May 19, 2026
b8a9cbd
fix: tolerate unreadable gateway JSONL transcripts
MoonJuhan May 19, 2026
87c6edc
fix(skills): add timeout to Google OAuth urlopen calls
Zyrixtrex May 19, 2026
d759a67
fix: add recovery hints to loop guard warnings
ooovenenoso May 19, 2026
62573f4
fix: guard yaml.safe_load, flock unlock, TOCTOU races, and atomic writes
vanthinh6886 May 19, 2026
4039e2a
chore(release): alias xxxigm noreply for upcoming #27986 salvage (#28…
teknium1 May 19, 2026
12c3983
fix(doctor): attach codex CLI hint to OpenAI Codex auth warning for #…
xxxigm May 19, 2026
a0bd11d
fix(tests): catch up 25 stale tests after recent merges (#28626)
teknium1 May 19, 2026
aedb8ac
feat(update): syntax-validate critical files post-pull, auto-rollback…
teknium1 May 19, 2026
58591d9
feat: show names of user-modified skills in bundled skill sync summary
zccyman May 19, 2026
7f253f5
fix(acp): use tempfile.gettempdir() in workspace auto-approve
Zyrixtrex May 19, 2026
88ee58f
fix(kanban): stale reclaim must not tick failure counter (#28680)
teknium1 May 19, 2026
a3c7531
fix(telegram): address post-merge audit follow-ups (#28670, #28672, #…
teknium1 May 19, 2026
424f2cc
chore(actions)(deps): bump the actions-minor-patch group across 1 dir…
dependabot[bot] May 18, 2026
2692457
chore(actions)(deps): bump docker/login-action from 3.7.0 to 4.1.0
dependabot[bot] May 13, 2026
bbee1dd
chore(actions)(deps): bump docker/build-push-action from 6.19.2 to 7.1.0
dependabot[bot] May 8, 2026
b10b783
chore(actions)(deps): bump actions/setup-python from 5.3.0 to 6.2.0
dependabot[bot] May 15, 2026
7bcdced
fix(kanban): respawn guard defers blocker_auth instead of auto-blocki…
teknium1 May 19, 2026
c498116
chore(actions)(deps): bump actions/checkout from 4.3.1 to 6.0.2
dependabot[bot] May 18, 2026
709e37e
fix(dashboard): add scheduled kanban i18n strings (#28534)
helix4u May 19, 2026
f1254b1
fix(cli): exit prompt_toolkit cleanly on SIGTERM/SIGHUP instead of ra…
teknium1 May 19, 2026
fc90f1b
chore(deps): bump dompurify from 3.3.3 to 3.4.2 in /website
dependabot[bot] May 5, 2026
0b75d24
chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /website
dependabot[bot] May 5, 2026
c4bcc77
chore(deps): bump lodash from 4.17.23 to 4.18.1 in /website
dependabot[bot] May 5, 2026
7f1d124
chore(deps): bump lodash-es and langium in /website
dependabot[bot] May 5, 2026
dffcb6f
chore(deps): bump python-multipart from 0.0.22 to 0.0.27
dependabot[bot] May 6, 2026
a9c38c7
chore(deps): bump python-dotenv from 1.2.1 to 1.2.2
dependabot[bot] May 12, 2026
43f8edb
chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /website
dependabot[bot] May 8, 2026
070eeaa
chore(deps): bump @babel/plugin-transform-modules-systemjs in /website
dependabot[bot] May 9, 2026
ff0a703
fix(web): consume bundled design system assets (#26391)
austinpickett May 19, 2026
3ce4b8c
chore: sync with upstream main (2026-05-19)
May 19, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ BROWSER_INACTIVITY_TIMEOUT=120
# TELEGRAM_ALLOWED_USERS= # Comma-separated user IDs
# TELEGRAM_HOME_CHANNEL= # Default chat for cron delivery
# TELEGRAM_HOME_CHANNEL_NAME= # Display name for home channel
# TELEGRAM_CRON_THREAD_ID= # Forum topic ID for cron deliveries; overrides TELEGRAM_HOME_CHANNEL_THREAD_ID for cron so replies work in topic mode

# Webhook mode (optional — for cloud deployments like Fly.io/Railway)
# Default is long polling. Setting TELEGRAM_WEBHOOK_URL switches to webhook mode.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/contributor-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
check-attribution:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # Full history needed for git log

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ jobs:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

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

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
digest: ${{ steps.push.outputs.digest }}
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive

Expand All @@ -65,7 +65,7 @@ jobs:
# to gha with a per-arch scope; the push step below reuses every
# layer from this build.
- name: Build image (amd64, smoke test)
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand All @@ -82,7 +82,7 @@ jobs:

- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand All @@ -99,7 +99,7 @@ jobs:
- name: Push amd64 by digest
id: push
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand Down Expand Up @@ -142,7 +142,7 @@ jobs:
digest: ${{ steps.push.outputs.digest }}
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive

Expand All @@ -153,7 +153,7 @@ jobs:
# to gha with a per-arch scope; the push step below reuses every
# layer from this build.
- name: Build image (arm64, smoke test)
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand All @@ -170,15 +170,15 @@ jobs:

- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Push arm64 by digest
id: push
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand Down Expand Up @@ -232,7 +232,7 @@ jobs:
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down Expand Up @@ -324,15 +324,15 @@ jobs:
cancel-in-progress: false
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 1000

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down Expand Up @@ -445,15 +445,15 @@ jobs:
cancel-in-progress: false
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 1000

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs-site-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
docs-site-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
Expand All @@ -26,7 +26,7 @@ jobs:
run: npm ci
working-directory: website

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/history-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
check-common-ancestor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # full history both sides for merge-base

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # need full history for merge-base + worktree

Expand Down Expand Up @@ -167,7 +167,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
Expand All @@ -191,10 +191,10 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up Python
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v5
with:
python-version: "3.11"

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/nix-lockfile-fix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}

- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: main
token: ${{ steps.app-token.outputs.token }}
Expand Down Expand Up @@ -194,7 +194,7 @@ jobs:

Triggered by @${{ github.actor }} — [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).

- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ steps.resolve.outputs.owner }}/${{ steps.resolve.outputs.repo }}
ref: ${{ steps.resolve.outputs.ref }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/nix-setup
with:
cachix-auth-token: ${{ secrets.CACHIX_AUTH_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/osv-scanner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ permissions:
jobs:
scan:
name: Scan lockfiles
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@c51854704019a247608d928f370c98740469d4b5 # v2.3.5
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@9a498708959aeaef5ef730655706c5a1df1edbc2 # v2.3.8
with:
# Scan explicit lockfiles rather than recursing, so we only look at
# the three sources of truth and skip vendored / test / worktree dirs.
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/skills-index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ jobs:
if: github.repository == 'NousResearch/hermes-agent'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down Expand Up @@ -53,7 +53,7 @@ jobs:
# Only deploy on schedule or manual trigger (not on every push to the script)
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
Expand All @@ -66,7 +66,7 @@ jobs:
cache: npm
cache-dependency-path: website/package-lock.json

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/supply-chain-audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

Expand Down Expand Up @@ -145,7 +145,7 @@ jobs:
if: contains(github.event.pull_request.changed_files_url, 'pyproject.toml') || true
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
timeout-minutes: 20
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y ripgrep
Expand Down Expand Up @@ -58,7 +58,10 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y ripgrep

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y ripgrep
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/upload_to_pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
name: Build distribution 📦
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# On workflow_dispatch, check out the confirmed tag.
Expand All @@ -43,7 +43,7 @@ jobs:
fi

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.13'

Expand Down Expand Up @@ -145,7 +145,7 @@ jobs:

- name: Sign with Sigstore
if: env.skip_sign != 'true'
uses: sigstore/gh-action-sigstore-python@f514d46b907ebcd5bedc05145c03b69c1edd8b46 # v3.0.0
uses: sigstore/gh-action-sigstore-python@04cffa1d795717b140764e8b640de88853c92acc # v3.3.0
with:
inputs: >-
./dist/*.tar.gz
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/uv-lockfile-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
Expand Down
14 changes: 8 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -830,10 +830,11 @@ kanban task.
`unlink`, `comment`, `complete`, `block`, `unblock`, `archive`,
`tail`, plus less-commonly-used `watch`, `stats`, `runs`, `log`,
`assignees`, `heartbeat`, `notify-*`, `dispatch`, `daemon`, `gc`.
- **Worker toolset:** `tools/kanban_tools.py` exposes `kanban_show`,
`kanban_complete`, `kanban_block`, `kanban_heartbeat`, `kanban_comment`,
`kanban_create`, `kanban_link` — gated by `HERMES_KANBAN_TASK` so
the schema only appears for processes actually running as a worker.
- **Worker/orchestrator toolset:** `tools/kanban_tools.py` exposes
`kanban_show`, `kanban_complete`, `kanban_block`, `kanban_heartbeat`,
`kanban_comment`, `kanban_create`, `kanban_link`; profiles that
explicitly enable the `kanban` toolset outside a dispatcher-spawned
task also get `kanban_list` and `kanban_unblock` for board routing.
- **Dispatcher:** long-lived loop that (default every 60s) reclaims
stale claims, promotes ready tasks, atomically claims, and spawns
assigned profiles. Runs **inside the gateway** by default via
Expand All @@ -849,8 +850,9 @@ Isolation model:
- **Tenant** is a soft namespace *within* a board — one specialist
fleet can serve multiple businesses with workspace-path + memory-key
isolation.
- After ~5 consecutive spawn failures on the same task the dispatcher
auto-blocks it to prevent spin loops.
- After `kanban.failure_limit` consecutive non-success attempts on the
same task (default: 2), the dispatcher auto-blocks it to prevent spin
loops.

Full user-facing docs: `website/docs/user-guide/features/kanban.md`.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scri
Run this in PowerShell:

```powershell
irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1 | iex
iex (irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1)
```

The installer handles everything: uv, Python 3.11, Node.js, ripgrep, ffmpeg, **and a portable Git Bash** (MinGit, unpacked to `%LOCALAPPDATA%\hermes\git` — no admin required, completely isolated from any system Git install). Hermes uses this bundled Git Bash to run shell commands.
Expand Down
Loading
Loading