Commit Graph
4529 Commits
Author SHA1 Message Date
nesquena-hermes 83a479d7a5 fix(#4365): wrap /api/provider/quota in profile_env_for_active_request
Codex gate caught that the new load_pool() path runs under the process-default
profile (sibling endpoints /api/providers + /api/models/live already wrap).
Without it a multi-profile client sees+seeds the default profile's pool
(#4247/#4067 profile-isolation class).
2026-06-19 05:27:42 +00:00
nesquena-hermes 16a94ba0b3 Merge pull request #4475 from nesquena/release/stage-4393
Release v0.51.512 — RW (interrupted-turn user prompt no longer replays, #4393)
2026-06-18 22:27:21 -07:00
nesquena-hermes 3dd2e9ddfe release: v0.51.512 — interrupted-turn user prompt no longer replays (#4393, #4283)
Maintainer fix on top: pass-4 recovered-user keep now uses actual kept
neighbours (was forward-scan-only → adjacent-user 400). + 3 regression tests.
Codex SAFE + Opus 'ship it' + suite 9575.

Co-authored-by: kaishi00 <kaishi00@users.noreply.github.com>

Closes #4393
Closes #4283
2026-06-19 05:23:51 +00:00
nesquena-hermes c845e14087 fix(#4283/#4393): pass-4 recovered-user keep decision uses actual kept neighbours
Codex+Opus gate caught that the forward-scan-only keep produced [user, _recovered
user, assistant] -> adjacent users -> strict-provider 400 once the anchoring
assistant's prev kept neighbour was a user. Keep a recovered user ONLY when it
separates two assistants (prev_kept==assistant AND next==assistant); mirror in
_api_safe_message_positions. + 3 regression tests.
2026-06-19 05:19:52 +00:00
26f54b9972 docs: weekly contributor tally refresh + cherry-pick credit accuracy fix (#4473)
* docs: weekly contributor tally refresh (20260619)

Regenerated by scripts/regen_contributors.py --apply. Includes the source (e)/(f)
ship-signal accuracy fix that recovers systematically-undercounted cherry-picked
contributions (~77 contributors). 280 contributors / 1559 credits (was 263/1232).
Markers spliced, prose untouched, --verify clean, 0 double-counts.

* docs: align CONTRIBUTORS header prose with the 5-source credit algorithm

Addresses greptile P2: the header still described the old three-source union
(merged-PR list + CHANGELOG + Co-authored-by) but regen_contributors.py now adds
two more — ship-comment scans and absorb-commit scans — for five total. Updates
the prose to match what the script actually runs.

---------

Co-authored-by: nesquena-hermes <nesquena-hermes@users.noreply.github.com>
Co-authored-by: nesquena-hermes <agent@nesquena-hermes>
2026-06-18 22:05:37 -07:00
nesquena-hermes b5ece8adc6 Merge pull request #4472 from nesquena/release/stage-4468
Release v0.51.511 — RV (virtual transcript renders during programmatic scrolls, #4468)
2026-06-18 21:43:03 -07:00
nesquena-hermesandrodboev f040d2a047 release: v0.51.511 — virtual transcript renders during programmatic scrolls (#4468)
Fixes a regression from #4434 (v0.51.500). Author (rodboev) gave explicit
go-ahead. Gated earlier: Codex SAFE + Opus SAFE + browser-smoke + suite.

Co-authored-by: rodboev <rodboev@users.noreply.github.com>

Closes #4468
2026-06-19 04:36:39 +00:00
nesquena-hermes 0498e0e345 Merge pull request #4471 from nesquena/release/stage-4453
Release v0.51.510 — RU (Kanban task workspace + dependency controls, #4453)
2026-06-18 21:27:39 -07:00
nesquena-hermes e480adae66 release: v0.51.510 — Kanban task workspace + dependency controls (#4453, #3797)
Maintainer fixes on top of the contributor PR: dependency direction, XSS-safe
ID encoding, dark-theme dependency input + task-autocomplete datalist,
self-dep guard, i18n backfill. Remaining parity gaps tracked in #4470.

Co-authored-by: rodboev <rodboev@users.noreply.github.com>

Closes #4453
Closes #3797
2026-06-19 04:24:16 +00:00
nesquena-hermes 43580f9490 i18n: backfill kanban_dependency_self across all locales (locale-parity) 2026-06-19 04:16:50 +00:00
nesquena-hermes 76770425f4 fix(#4453): correct dependency direction, JS-context-encode IDs (XSS), dark-theme the dependency input + datalist autocomplete, reject self-dep 2026-06-19 04:05:15 +00:00
nesquena-hermes 4a52fe728a Merge commit 'refs/pull/4453/head' of github.com:nesquena/hermes-webui into review/4453 2026-06-19 03:55:18 +00:00
nesquena-hermes 17afa0b4bd Merge pull request #4466 from nesquena/release/stage-4456b
Release v0.51.509 — RT (gateway-cant-do-approvals notice, #4456)
2026-06-18 20:17:23 -07:00
nesquena-hermesandrodboev 46f234f4fa release: v0.51.509 — notice when connected gateway can't do approvals (#4456, #4300)
Includes a showToast arg-order fix (4000ms,'warning') caught at gate.

Co-authored-by: rodboev <rodboev@users.noreply.github.com>

Closes #4456
2026-06-19 03:14:08 +00:00
nesquena-hermes 0ebb1e2ea7 Merge pull request #4464 from nesquena/release/stage-4448
Release v0.51.508 — RS (/model command works under reverse-proxy subpath, #4448)
2026-06-18 20:06:26 -07:00
nesquena-hermesandtomtong2015 6a7c18fc6d release: v0.51.508 — /model command works under reverse-proxy subpath (#4448)
Co-authored-by: tomtong2015 <tomtong2015@users.noreply.github.com>

Closes #4448
2026-06-19 03:02:29 +00:00
nesquena-hermes 779da64e50 Merge commit 'refs/pull/4448/head' of github.com:nesquena/hermes-webui into release/stage-4448 2026-06-19 02:54:51 +00:00
nesquena-hermes d5e6a36a44 Merge pull request #4463 from nesquena/release/stage-4455
Release v0.51.507 — RR (jump-to-question button stays usable on mobile, #4455)
2026-06-18 19:51:44 -07:00
nesquena-hermes a0c5a92706 release: v0.51.507 — jump-to-question button stays usable on mobile (#4455, #3851)
Verified at 390px: icon (arrow) stays visible, text label hidden, button not cut off.

Co-authored-by: rodboev <rodboev@users.noreply.github.com>

Closes #4455
Closes #3851
2026-06-19 02:48:22 +00:00
nesquena-hermes 26c5415660 Merge commit 'refs/pull/4455/head' of github.com:nesquena/hermes-webui into release/stage-4455 2026-06-19 02:28:37 +00:00
nesquena-hermes 42fbc67b82 Merge pull request #4462 from nesquena/release/stage-3879c
Release v0.51.506 — RQ (harden destructive workspace Git paths against repo-local execution, #3879)
2026-06-18 19:18:03 -07:00
nesquena-hermes fa92baa63d release: v0.51.506 — harden destructive workspace Git paths vs repo-local execution (#3879, #3777)
6-round RCE-class security hardening, converged. Codex SAFE (live exploit probes) + Opus SAFE (flag-off-reachability enumeration) + full suite 9508 on the byte-identical gated head. Nathan signed off.

Co-authored-by: Rod Boev <rod.boev@gmail.com>

Closes #3879
Closes #3777
2026-06-19 02:14:13 +00:00
nesquena-hermes 9e79fc3697 Merge pull request #4460 from nesquena/release/stage-4420b
Release v0.51.505 — RP (allow macOS Mail message: links in chat markdown, #4420)
2026-06-18 19:01:59 -07:00
nesquena-hermes f94508994f release: v0.51.505 — allow macOS Mail message: links in chat markdown (#4420, #4319)
Co-authored-by: bergeouss <bergeouss@users.noreply.github.com>

Closes #4420
Closes #4319
2026-06-19 01:58:28 +00:00
nesquena-hermes 4a91b36c09 Merge pull request #4459 from nesquena/release/stage-4440b
Release v0.51.504 — RO (group OpenRouter/Nous models by vendor in model picker, #4440)
2026-06-18 18:56:53 -07:00
nesquena-hermesandrodboev eeee30fc6e release: v0.51.504 — group OpenRouter/Nous models by vendor in model picker (#4440)
Browser-stress-tested end-to-end (collapse parent/sub, search filter+restore,
select-from-subgroup, flat single-vendor rows) — Nathan approved from screenshots.

Co-authored-by: rodboev <rodboev@users.noreply.github.com>

Closes #4440
2026-06-19 01:41:09 +00:00
nesquena-hermes b3a848967e Merge commit 'refs/pull/4440/head' of github.com:nesquena/hermes-webui into release/stage-4440b 2026-06-19 01:31:54 +00:00
nesquena-hermes 671e929867 Merge pull request #4458 from nesquena/release/stage-4441b
test: cover archived webhook session projections (#4441)
2026-06-18 18:26:57 -07:00
nesquena-hermesandsantastabber d5c71c6f2d test: cover archived webhook session projections (#4441)
Test-only coverage extension (extends #4385 to the webhook source); no version bump.

Co-authored-by: santastabber <santastabber@users.noreply.github.com>

Closes #4441
2026-06-19 01:21:34 +00:00
nesquena-hermes 045874d2b5 Merge commit 'refs/pull/4441/head' of github.com:nesquena/hermes-webui into release/stage-4441b 2026-06-19 01:21:22 +00:00
nesquena-hermes 9c484b1bad Merge pull request #4457 from nesquena/release/stage-4439b
Release v0.51.503 — RN (process-wakeup turns no longer render as user messages, #4439)
2026-06-18 18:19:43 -07:00
nesquena-hermes 0fa0c39d58 release: v0.51.503 — process-wakeup turns no longer render as user messages (#4439, #4373)
Co-authored-by: Rod Boev <rod.boev@gmail.com>

Closes #4439
Closes #4373
2026-06-19 01:12:33 +00:00
nesquena-hermes b28ef26d15 harden: clear pending_user_source on the compression-snapshot load branch too (Opus symmetry nit) 2026-06-19 01:05:01 +00:00
nesquena-hermes 7827297011 Merge commit 'refs/pull/4439/head' of github.com:nesquena/hermes-webui into release/stage-4439b 2026-06-19 00:55:13 +00:00
Rod Boev aed7da07e9 fix(kanban): skip workspace validation in edit mode (#3797) 2026-06-18 20:51:17 -04:00
Rod Boev 7fb58478bf fix(kanban): correct parent/child inversion in dependency removal (#3797) 2026-06-18 20:36:33 -04:00
Rod Boev cb812a0aae fix(i18n): add missing kanban keys to zh, zh-Hant, fr, tr, pl (#3797) 2026-06-18 20:30:55 -04:00
Rod Boev 14c098e996 fix(tests): remove bs4 dependency and unused imports (#3797) 2026-06-18 20:21:18 -04:00
Rod Boev 8f83a11225 fix(tests): scope span:last-child assertion to mobile media query (#3851) 2026-06-18 20:17:25 -04:00
Rod Boev a3c1647afb fix(kanban): correct dependency endpoint and payload field names (#3797) 2026-06-18 20:06:38 -04:00
Rod Boev 2264c5aff9 fix(tests): correct mobile CSS assertions to match refactored styling (#3851) 2026-06-18 20:03:16 -04:00
Rod Boev 32c8fa0626 fix(chat): keep jump-to-question visible on mobile (#3851) 2026-06-18 19:48:53 -04:00
Rod Boev 947b770a57 feat(kanban): add task workspace and dependency controls (#3797) 2026-06-18 19:48:47 -04:00
nesquena-hermes c3041277d3 Merge pull request #4446 from nesquena/fix/test-flakes
Release v0.51.502 — RL (visibility toggle invalidates sidebar cache + de-flake node test timeouts)
2026-06-18 16:17:19 -07:00
nesquena-hermes af5fc4ff5e docs: note title-only UPDATE fallback gap in fingerprint comment (Opus/Codex follow-up) 2026-06-18 22:58:30 +00:00
nesquena-hermes d5ccaf0c27 fix(perf): fingerprint reads read-only + index-only MAX(rowid), no table scan / no lock stall (Codex gate)
Codex CORE findings on the fingerprint: (1) default busy timeout could stall
/api/sessions ~10s on a locked state.db; (2) COUNT(*) forced a full messages
table SCAN (~16-22ms/refresh on 200k rows). Fix: open file:...?mode=ro with
timeout=0.05 + PRAGMA busy_timeout=50 (returns fast, falls back to stat stamp on
lock), and use index-only MAX(rowid) per table (no COUNT, no scan). Verified:
EXPLAIN shows SEARCH not SCAN, 0.36ms on 200k msgs, 0.16ms while EXCLUSIVE-locked.
Fingerprint shape is now (sessions_max_rowid, messages_max_rowid); regression
tests updated.
2026-06-18 22:53:58 +00:00
nesquena-hermes f8d5ad2b1e fix(sessions): commit-reliable state.db content fingerprint in cache keys (real flake root cause)
Codex root-cause consult confirmed: the CLI-session cache (_CLI_SESSIONS_CACHE,
5s TTL) and session-list cache were keyed on (st_mtime_ns, st_size) of state.db
+ WAL sidecars. Under WAL-mode writes those stamps collide (same mtime-ns bucket
+ WAL frame size after checkpoint), serving a stale cache -> freshly-committed
gateway/CLI session intermittently absent from /api/sessions (the recurring
test_gateway_sync flake AND a real up-to-5s sidebar delay for gateway writes).

PRAGMA data_version is NOT usable here (fresh per-request connection always
reports its own initial value, never advances — verified). Fix = a cheap
content fingerprint (COUNT/MAX(rowid) over sessions+messages) read on a fresh
connection, which DOES advance on every commit and is immune to mtime
granularity. Wired into _sqlite_file_stat_cache_key (models) + the routes-layer
source stamp. + 3 regression tests + corrected the earlier false root-cause
comments.
2026-06-18 22:48:07 +00:00
Rod Boev b09796375f Keep process-wakeup tags through cancel and recovery paths 2026-06-18 18:33:29 -04:00
nesquena-hermes 1cc90e2955 fix: also invalidate session-list cache on show_previous_messaging_sessions toggle (Codex gate)
Codex completeness finding: show_previous_messaging_sessions is a third
visibility setting in the /api/sessions cache key (bypasses messaging dedupe)
with the same stale-cache bug. Added it to the invalidation tuple.
2026-06-18 22:25:32 +00:00
Rod Boev 2053825d74 fix(#4373): keep process-wakeup source on settled transcript rows 2026-06-18 18:21:10 -04:00