Commit Graph
3965 Commits
Author SHA1 Message Date
Rod Boev 028be2fe22 fix(mobile): constrain Worklog summary overflow on narrow viewports (#4064) 2026-06-12 13:33:26 -04:00
nesquena-hermes df6cfd0a15 Merge pull request #4038 from nesquena/stage-4022
Release MH — v0.51.369 — WebUI streaming honors runtime target model/base_url (#4022, fixes #3895)
2026-06-12 01:18:34 -07:00
nesquena-hermes 6204dbe9ea docs(changelog): stamp #4022 runtime base_url fix as v0.51.369 (Release MH) 2026-06-12 08:16:00 +00:00
nesquena-hermes c35c1c6e70 test(#4022): update sprint42 runtime-route assertion for target_model threading
#4022 now calls resolve_runtime_provider(requested=..., target_model=...) so
per-model base_url normalization applies; the sprint42 test pinned the old
single-arg signature. Updated the assertion to expect target_model (pre-existing
test, not a behavior regression — confirmed it passes on master only because the
call signature changed here).
2026-06-12 07:57:26 +00:00
nesquena-hermes 005b2ca460 fix(#4022): preserve different-endpoint config base_url override (Codex CORE)
Codex caught a regression: the contributor's _runtime_preferred_base_url preferred
the runtime base_url for ALL non-custom providers, which would clobber an explicit
providers.<id>.base_url override pointing at a different host/port (LM Studio at a
LAN IP, an OpenRouter mirror). Now only prefer the runtime URL when it's the SAME
scheme+host+port as the configured one (the #3895 /v1-dedup case is path-only on
the same host); a genuinely different configured endpoint wins. Added
_same_base_url_endpoint() + 2 regression tests (different-endpoint preserved,
same-endpoint normalization).
2026-06-12 07:54:48 +00:00
nesquena-hermes 983f059acd Merge #4022 — honor runtime target model+base_url in WebUI streaming (#3895) 2026-06-12 07:48:26 +00:00
nesquena-hermes 9e96f5f6ad Merge pull request #4036 from nesquena/stage-4023
Release MG — v0.51.368 — bind active-profile cookie to auth session (#4023, fixes #803)
2026-06-12 00:46:01 -07:00
nesquena-hermes 061eda9b91 docs(changelog): stamp #4023 profile-cookie session binding as v0.51.368 (Release MG) 2026-06-12 07:43:46 +00:00
nesquena-hermes 03799f8e4a harden(#4023): apply Opus security findings — verify-side name-pattern gate + require handler when auth enabled
Opus independent security review concurred SAFE and surfaced 2 LOW defense-in-depth
items, both applied: (1) verify_profile_cookie_value now validates the profile name
against _PROFILE_ID_RE itself (not only in get_profile_cookie) so a future second
caller can't return an unvalidated name; (2) build_profile_cookie raises when auth is
enabled and no handler is passed, so a future call site can't silently emit an
unsigned (session-unbound) profile cookie. +3 regression tests.
2026-06-12 07:37:48 +00:00
nesquena-hermes aef15ca559 Merge #4023 — bind active profile cookie to session (#803) 2026-06-12 07:19:46 +00:00
nesquena-hermes 242d79eacd Merge pull request #4035 from nesquena/stage-mf-fixes
Release MF — v0.51.367 — autocomplete filter + lineage merge + shutdown i18n (#4021, #4032, #4018)
2026-06-12 00:16:54 -07:00
nesquena-hermes 3eac7ccd96 docs(changelog): stamp #4021 + #4032 + #4018 fix batch as v0.51.367 (Release MF) 2026-06-12 07:14:16 +00:00
nesquena-hermes 07585a11f8 Merge #4018 2026-06-12 07:07:34 +00:00
nesquena-hermes 0e7cf6c388 Merge #4032 2026-06-12 07:07:33 +00:00
nesquena-hermes fd28024cc4 Merge #4021 2026-06-12 07:07:33 +00:00
nesquena-hermes 95c84204d8 Merge pull request #4034 from nesquena/release/stage-md2
Release v0.51.366 — Release ME (assistant turn anchor source normalizer Slice 2, #3980)
2026-06-11 23:56:04 -07:00
nesquena-hermes 39e9790597 Release v0.51.366 — Release ME (assistant turn anchor source normalizer Slice 2, #3980) 2026-06-12 06:45:02 +00:00
ai-ag2026 de3b756558 fix: merge missing webui lineage display rows 2026-06-12 08:00:11 +02:00
Frank Song d701828d72 fix(anchor): harden normalizer identity handling 2026-06-12 13:57:54 +08:00
Frank Song 2abff38ee1 fix(anchor): harden normalizer payload shaping 2026-06-12 13:57:54 +08:00
Frank Song 36123628d5 feat(anchor): add assistant turn source normalizer 2026-06-12 13:57:54 +08:00
hinotoi-agent 4dca506858 Bind profile cookie to auth session 2026-06-12 10:52:56 +08:00
Rod Boev 891f392922 test(#3895): drop stale import after review cleanup 2026-06-11 21:17:50 -04:00
Rod Boev 819346304c test(#3895): replace brittle wiring assertions 2026-06-11 21:13:11 -04:00
Rod Boev 6e50e94649 test(#3895): cover credential self-heal runtime resolution 2026-06-11 21:10:48 -04:00
Rod Boev 6e133a4f44 fix(#3895): carry target model through credential self-heal 2026-06-11 21:08:24 -04:00
Rod Boev e62a31e463 fix(#3895): preserve configured base-url fallback through self-heal 2026-06-11 21:06:16 -04:00
Rod Boev 1753cc0c60 fix(commands): hide CLI-only slash collisions from autocomplete (#3969) 2026-06-11 20:58:51 -04:00
Rod Boev a692314acf fix(#3895): honor runtime target model and base_url in WebUI streaming 2026-06-11 20:56:22 -04:00
Rod Boev 9d1e3910ee Scope shutdown i18n assertions to the relevant DOM 2026-06-11 20:45:54 -04:00
nesquena-hermes c275db0970 Merge pull request #4019 from nesquena/stage-md-fixes
Release MD — v0.51.365 — lineage-segment open + reasoning chip fixes (#4009, #4015)
2026-06-11 16:01:18 -07:00
nesquena-hermes fbd7f82478 docs(changelog): stamp #4009 + #4015 fix batch as v0.51.365 (Release MD) 2026-06-11 22:55:04 +00:00
Rod Boev 0ff3860186 fix(#4002): split shutdown i18n text from static code spans 2026-06-11 18:53:39 -04:00
nesquena-hermes ff3de220d8 Merge #4015 — keep reasoning effort status on the active session model (#3958) 2026-06-11 22:48:36 +00:00
nesquena-hermes 8a849a1bb8 Merge #4009 — open clicked lineage segments without sid rewrite (#4003) 2026-06-11 22:48:36 +00:00
Rod Boev a82eb1622f fix(#3958): keep reasoning effort status on the active session model 2026-06-11 18:46:17 -04:00
nesquena-hermes b2482913e9 Merge pull request #4014 from nesquena/stage-3993
Release MC — v0.51.364 — self-heal stuck session loads (#3993)
2026-06-11 15:45:43 -07:00
nesquena-hermes cb93a8014e docs(changelog): stamp #3993 session-load self-heal as v0.51.364 (Release MC) 2026-06-11 22:43:07 +00:00
nesquena-hermes 952ac146e0 test(#3993): re-anchor _load_session_error_block past the new stale-load guard
The stale-load guard (#3993 Codex race fix) adds an early  at the top
of the loadSession catch block; the test helper anchored  on the first
 after the catch, which now truncated at the guard. Anchor the body
extraction past the guard (from ) so it captures the 404/non-404
self-heal body as before. Behavior unchanged.
2026-06-11 22:37:09 +00:00
nesquena-hermes 8e7d3b086d fix(#3993): add stale-load guard before self-heal so a superseded boot load can't wipe a healthy session (Codex CORE race)
currentSid is snapshotted before the awaited /api/session fetch; if the user
clicks a healthy session while a boot-time restore is in flight and that boot
load then fails non-404, _clearStuckSessionOnBoot(sid, null) would wipe the
healthy session's localStorage/URL. Guard the catch block on
_loadingSessionId !== sid (a newer load superseded this one) — re-arm the active
stream and bail before any self-heal/DOM mutation. Protects both the non-404 and
404 inline self-heal paths. + regression test.
2026-06-11 22:27:01 +00:00
nesquena-hermes 7e341a0d70 test(#3993): cover _clearStuckSessionOnBoot self-heal guards (clears on boot-failure, preserves a live session) 2026-06-11 22:20:57 +00:00
nesquena-hermes 63c62194a1 Merge #3993 — self-heal stuck session loads on non-404 failures 2026-06-11 22:19:14 +00:00
nesquena-hermes 8669b6b8b5 Merge pull request #4013 from nesquena/stage-3994
Release MB — v0.51.363 — materialize CLI sessions on rename/move/update (#3994, fixes #3985)
2026-06-11 14:54:06 -07:00
nesquena-hermes 1e61aea10e docs(changelog): stamp #3994 materialize-CLI-sessions fix as v0.51.363 (Release MB) 2026-06-11 21:51:29 +00:00
nesquena-hermes 7a5c3bc374 fix(#3994): scope happy-path guard to read_only flag; complete #1436 mock stub
Refined the Codex-CORE fix: the happy-path (already-stored session) guard rejects
only an explicit read_only flag — a stored messaging session already owns its
sidecar, so the messaging-fork risk is specific to the materialize FALLBACK
(which creates a sidecar) where the _is_messaging_session_record check stays.
Also completed test_issue1436's _stub_session MagicMock (read_only=False,
_loaded_metadata_only=False) — bare MagicMock auto-attrs were truthy, tripping
the new read-only guard + _ensure_full_session_before_mutation reload.
2026-06-11 21:45:36 +00:00
nesquena-hermes 6f41fe7490 fix(#3994): reject read-only + messaging sessions on BOTH happy-path and materialize fallback (Codex CORE x2)
Codex caught two data-integrity gaps in the contributor's guard: (1) the
get_session() happy path returned a stored session without checking read_only/
messaging, so an already-imported read-only session could be mutated via
rename/update/move; (2) the fallback only checked cli_meta.read_only, but agent
rows normalize messaging sources WITHOUT setting read_only — materializing a
writable sidecar for a state.db-owned messaging session forks its title/state.
Now reject getattr(s,'read_only') OR _is_messaging_session_record on the happy
path, and cli_meta.read_only OR _is_messaging_session_record(cli_meta) in the
fallback. Replaced the messaging-stub test with 3 regression tests (stored
read-only, stored messaging, messaging cli_meta without read_only flag).
2026-06-11 21:41:51 +00:00
nesquena-hermes e934fdde70 test(#3994): cover _get_or_materialize_session (in-store, missing, read-only-403, CLI-import, messaging-stub) 2026-06-11 21:36:28 +00:00
nesquena-hermes 89fbc898f3 Merge #3994 — materialize CLI sessions on rename/move/update (#3985) 2026-06-11 21:35:13 +00:00
nesquena-hermes ca2538f43c Merge pull request #4012 from nesquena/stage-4008
Release MA — v0.51.362 — malformed providers config no longer crashes (#4008, fixes #3979)
2026-06-11 14:17:46 -07:00
nesquena-hermes 951abb7753 docs(changelog): stamp #4008 malformed-providers-config crash fix as v0.51.362 (Release MA) 2026-06-11 21:15:11 +00:00