2c7b530071
Release v0.51.269 — Release IK (stage-b2 — sidebar perf + search scope + Windows ctl) ( #3672 )
...
* perf(ui): single-pass sidebar session row partitioning (#3658 )
Co-authored-by: Pamnard <pamnard@users.noreply.github.com >
* fix(search): scope session search to active profile (#3646 )
Co-authored-by: hinotoi-agent <paperlantern.agent@gmail.com >
* fix(ctl): tree-kill ctl.sh stop on Windows (#3670 )
Co-authored-by: Rod Boev <rod.boev@gmail.com >
* docs(changelog): v0.51.269 — Release IK (stage-b2)
---------
Co-authored-by: nesquena-hermes <[email protected]>
Co-authored-by: Pamnard <pamnard@users.noreply.github.com >
Co-authored-by: hinotoi-agent <paperlantern.agent@gmail.com >
Co-authored-by: Rod Boev <rod.boev@gmail.com >
2026-06-05 10:53:45 -07:00
ba70926e51
Release v0.51.253 — Release HU (stage-r1) ( #3591 )
...
## Release v0.51.253 — Release HU (stage-r1)
Phase-1 low-risk batch — 7 PRs (no intervention beyond apply + one inline MUST-FIX).
### Fixed
| Issue/PR | Author | Fix |
|----------|--------|-----|
| #3525 | @TomBanksAU | Streaming DOM-replace "follow" window tightened 1200px→120px — a reader who scrolled up mid-stream no longer gets snapped to the bottom on completion. |
| #3556 | @ai-ag2026 | Topbar count distinguishes a partially-loaded transcript ("loaded of total" via server `message_count`); fully-loaded keeps the tool-row-filtered count. |
| #3502 follow-up | @rodboev | Sidebar messaging source badges (Telegram/Discord/…) render as chips, not just CLI ones. |
| — | @Karlineal | `.pre-header+pre` margin override scoped under `.msg-body` (removes a 10px gap above code blocks). |
### Tests
- `test_ctl_script.py` kills orphan fake-python trees on Windows; conftest `_discover_python` checks the Windows venv layout (`Scripts/python.exe`). (#3537 , #3577 , @rodboev)
### Docs
- Explicit WebUI–Agent compatibility policy + Docker pinning guidance. (#3232 , @franksong2702)
### Dropped from this batch
- **#3538** (self-update stash-pop recovery) — the Codex regression gate found a **BRICK-class data-loss**: the recovery path runs `git reset --merge` then `git stash drop`, permanently discarding the user's local modifications while returning `ok:true` + scheduling a restart. Held with `changes-requested` + a repro and the fix (keep the stash, return `ok:false`, no restart). Concept is good; the destructive `stash drop` must go.
### Gate
- Full pytest suite: **7575 passed, 0 failed**
- ESLint: CLEAN · ruff: CLEAN · browser-smoke: CLEAN
- Codex (regression): SHIP-ONLY-WITH-FIXES (BRICK data-loss #3538 + tool-row count regression #3556 ) → #3538 dropped, #3556 fixed inline → **SAFE TO SHIP**
Co-authored-by: TomBanksAU <TomBanksAU@users.noreply.github.com >
Co-authored-by: ai-ag2026 <ai-ag2026@users.noreply.github.com >
Co-authored-by: rodboev <rodboev@users.noreply.github.com >
Co-authored-by: Karlineal <Karlineal@users.noreply.github.com >
Co-authored-by: franksong2702 <franksong2702@users.noreply.github.com >
2026-06-04 10:50:34 -07:00
AJV20
18eea5b2ab
test(ctl): allow dotenv-free launches
2026-06-01 04:42:05 +00:00
nesquena-hermes
e86488072a
fix( #3291 ): make launchd duplicate-start guard port-aware (Codex gate MUST-FIX)
...
Codex regression gate found the launchd guard blocked ANY ctl.sh start while a
launchd job was live — including a legitimate second instance on a different
port (HERMES_WEBUI_PORT=8788). Now _launchd_webui_pid only treats the launchd
job as a conflict when its PID is actually listening on the requested CTL_PORT
(via a new best-effort _pid_listens_on_port helper using lsof); a different-port
start is allowed. When port ownership can't be determined (no lsof), falls back
to guarding only the default 8787 port so non-default ports are never wrongly
blocked. Adds a different-port-allowed regression test + makes the existing
block test deterministic. Co-authored-by preserved.
2026-05-31 23:08:52 +00:00
Andy Kang
91717b7e47
fix: block duplicate webui start when launchd owns 8787
2026-05-31 23:02:23 +00:00
Charanis
f0b0854773
fix: preserve webui launcher environment
...
(cherry picked from commit 2297ab4db854b52b20cdd34731cd82e8cc5bdb72)
2026-05-24 21:49:21 +02:00
Frank Song
d5dda03ec2
Fix ctl Python wrapper ownership
2026-05-13 13:09:42 +08:00
Michael Lam
46bdb3c1af
feat: add ctl daemon lifecycle script
2026-05-05 01:12:08 +00:00