fix(tui): refresh on external session reset and clear stale run state#40472
fix(tui): refresh on external session reset and clear stale run state#40472wsyjh8 wants to merge 2 commits into
Conversation
Greptile SummaryThis PR fixes the TUI not refreshing when the current session is reset externally (e.g., via
Confidence Score: 4/5
Last reviewed commit: 52969c0 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 31ac3190ee
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
Good catch — added "session" to the advertised gateway event list so
hello.features.events matches the new runtime session reset event.
chatgpt-codex-connector[bot] ***@***.***> 于2026年3月8日周日
23:13写道:
… ***@***.***[bot]* commented on this pull request.
💡 Codex Review
Here are some automated review suggestions for this pull request.
*Reviewed commit:* 31ac3190ee
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo.
Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment ***@***.*** <https://github.com/codex> review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT <https://openai.com/codex>,
Codex can also answer questions or update the PR, like ***@***.***
<https://github.com/codex> address that feedback".
------------------------------
In src/gateway/server-methods/sessions.ts
<#40472 (comment)>:
> + context.broadcast("session", {
+ type: "reset",
+ sessionKey: target.canonicalKey ?? key,
+ reason: p.reason === "new" ? "new" : "reset",
*[image: P2 Badge]
<https://camo.githubusercontent.com/f2c1aacb361ddd3a0e9f9cacdb84fab050de434017f6747bb916e31e29bdf03d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50322d79656c6c6f773f7374796c653d666c6174>
Advertise the new session event in gateway feature list*
This now emits a session websocket event on reset, but the server’s
advertised event capabilities still come from GATEWAY_EVENTS in
src/gateway/server-methods-list.ts (which does not include session), so
clients that rely on hello.features.events for event
negotiation/discovery can legitimately ignore this event and never refresh
after reset. Please add session to the advertised event list so the
protocol contract matches runtime behavior.
Useful? React with 👍 / 👎.
—
Reply to this email directly, view it on GitHub
<#40472 (review)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AHN3EMBZUZ3JHBTUBGR5MMD4PYZEZAVCNFSM6AAAAACWLKNOPOVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZTSMJSGYZTSMJZG4>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
6f52e1a to
50c053d
Compare
|
The remaining failing check appears unrelated to this PR. This PR only changes:
The current failing job is in
This appears independent of the session-reset/TUI changes in this PR. Happy to adjust if maintainers would prefer a re-run or a different next step. |
|
This pull request has been automatically marked as stale due to inactivity. |
|
Thanks for the context here. I swept through the related work, and this is now duplicate or superseded. Keep open: the linked TUI/session-state bug is still present on current main and v2026.5.20, and this PR is the right implementation direction, but it is not merge-ready while the branch is conflicting, lacks real multi-client proof, and does not yet account for current-main pending-run state. Canonical path: Close this stale PR. The latest review rated it F, the branch still lacks merge-ready proof, and there has been no human follow-up after the durable review. So I’m closing this here because the remaining work is already tracked in the canonical issue. Review detailsBest possible solution: Close this stale PR. The latest review rated it F, the branch still lacks merge-ready proof, and there has been no human follow-up after the durable review. Do we have a high-confidence way to reproduce the issue? Do we have a high-confidence way to reproduce the issue? Yes, by source inspection: current main and v2026.5.20 can emit subscription-gated Is this the best way to solve the issue? Is this the best way to solve the issue? Yes for the direction: reusing Security review: Security review cleared: No concrete security or supply-chain concern found; the diff is limited to TUI/gateway event plumbing, focused tests, and changelog text. What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against d7a078f1962b. |
50c053d to
b92965c
Compare
|
ProjectClownfish pushed a narrow repair to this branch so the original contributor path can stay canonical. Source PR: #40472 |
Thanks for the narrow repair and for taking the time to look into my work. I really appreciate that the original contributor path was preserved. I’ll keep an eye on the checks and any follow-up review feedback. I’m happy to continue contributing to OpenClaw with focused bug fixes where I can. |
|
ClawSweeper PR egg 🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat. Where did the egg go?
|
|
ClawSweeper applied the proposed close for this PR.
|
…26.6.8) (#1144) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.6.6` → `2026.6.8` | --- ### Release Notes <details> <summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary> ### [`v2026.6.8`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#202668) [Compare Source](openclaw/openclaw@v2026.6.6...v2026.6.8) ##### Highlights - Telegram and WhatsApp channel delivery are richer and less brittle: Telegram can send structured rich text with tables, lists, expandable blockquotes, prompt-preserving CLI backend delivery, retired native draft migration, and safer rich-media boundaries, while WhatsApp now honors configured ACP bindings. ([#​92679](openclaw/openclaw#92679), [#​84082](openclaw/openclaw#84082), [#​89421](openclaw/openclaw#89421), [#​92513](openclaw/openclaw#92513)) Thanks [@​obviyus](https://github.com/obviyus), [@​jzakirov](https://github.com/jzakirov), [@​spacegeologist](https://github.com/spacegeologist), and [@​TurboTheTurtle](https://github.com/TurboTheTurtle). - Agent and Gateway recovery is sharper across account-scoped DM sends, generated media completions, restart shutdown aborts, yielded subagent pauses, yielded cron media, heartbeat dedupe, session identity prompts, and unknown OpenAI agent selector rejection. ([#​92788](openclaw/openclaw#92788), [#​91246](openclaw/openclaw#91246), [#​91357](openclaw/openclaw#91357), [#​92631](openclaw/openclaw#92631), [#​92146](openclaw/openclaw#92146), [#​91287](openclaw/openclaw#91287), [#​92468](openclaw/openclaw#92468), [#​92510](openclaw/openclaw#92510)) Thanks [@​yetval](https://github.com/yetval), [@​TurboTheTurtle](https://github.com/TurboTheTurtle), [@​ooiuuii](https://github.com/ooiuuii), [@​openperf](https://github.com/openperf), [@​IWhatsskill](https://github.com/IWhatsskill), [@​ZengWen-DT](https://github.com/ZengWen-DT), and [@​zhangguiping-xydt](https://github.com/zhangguiping-xydt). - Provider/model handling expands and tightens with GLM-5.2, Claude Haiku 4.5 catalog rows, OpenRouter and Google Vertex provider-prefix normalization, managed SecretRef auth, bounded model browse discovery, storeless OpenAI Responses replay gating, and Claude 4.5 Copilot tool-streaming safety. ([#​92796](openclaw/openclaw#92796), [#​90116](openclaw/openclaw#90116), [#​92627](openclaw/openclaw#92627), [#​91218](openclaw/openclaw#91218), [#​90686](openclaw/openclaw#90686), [#​92247](openclaw/openclaw#92247), [#​90706](openclaw/openclaw#90706), [#​75393](openclaw/openclaw#75393)) Thanks [@​arkyu2077](https://github.com/arkyu2077), [@​liuhao1024](https://github.com/liuhao1024), [@​bymle](https://github.com/bymle), [@​rohitjavvadi](https://github.com/rohitjavvadi), [@​samson910022](https://github.com/samson910022), [@​snowzlm](https://github.com/snowzlm), and [@​Kailigithub](https://github.com/Kailigithub). - `/usage` and reply payload hooks now have a native full footer renderer, default template, fixed-decimal formatting, credential-aware limits, better partial-count handling, and warnings for broken templates instead of silent bad output. ([#​92657](openclaw/openclaw#92657), [#​89835](openclaw/openclaw#89835), [#​89629](openclaw/openclaw#89629)) Thanks [@​Marvinthebored](https://github.com/Marvinthebored). - UI and mobile flows are steadier: workspace files can collapse and start collapsed, WebChat backscroll survives streaming, the sidebar session picker remains interactive above the desktop workbench, reset soft args survive UI dispatch, stale dashboard session parent lineage is preserved, and iOS reconnects stale foreground gateways. ([#​92779](openclaw/openclaw#92779), [#​92622](openclaw/openclaw#92622), [#​92705](openclaw/openclaw#92705), [#​91353](openclaw/openclaw#91353), [#​90658](openclaw/openclaw#90658), [#​92552](openclaw/openclaw#92552)) Thanks [@​shakkernerd](https://github.com/shakkernerd), [@​TurboTheTurtle](https://github.com/TurboTheTurtle), [@​NianJiuZst](https://github.com/NianJiuZst), [@​zhouhe-xydt](https://github.com/zhouhe-xydt), [@​luoyanglang](https://github.com/luoyanglang), and [@​Solvely-Colin](https://github.com/Solvely-Colin). - Memory, state, and diagnostics recover cleaner: oversized OpenAI embedding batches split before 431s, QMD memory search stays available in transient mode, SQLite avoids WAL on NFS state volumes, stuck-session recovery scheduling no longer resets warning backoff, and Infinity chunk limits stay genuinely unbounded. ([#​92650](openclaw/openclaw#92650), [#​92618](openclaw/openclaw#92618), [#​92639](openclaw/openclaw#92639), [#​91247](openclaw/openclaw#91247), [#​92752](openclaw/openclaw#92752), [#​92735](openclaw/openclaw#92735)) Thanks [@​mushuiyu886](https://github.com/mushuiyu886), [@​TurboTheTurtle](https://github.com/TurboTheTurtle), [@​849261680](https://github.com/849261680), [@​gnanam1990](https://github.com/gnanam1990), and [@​yhterrance](https://github.com/yhterrance). ##### Changes - Providers/models: add GLM-5.2 support and Claude Haiku 4.5 catalog entries while keeping provider-qualified model IDs normalized across OpenRouter and Google Vertex paths. ([#​92796](openclaw/openclaw#92796), [#​90116](openclaw/openclaw#90116), [#​92627](openclaw/openclaw#92627), [#​91218](openclaw/openclaw#91218)) Thanks [@​arkyu2077](https://github.com/arkyu2077), [@​liuhao1024](https://github.com/liuhao1024), and [@​bymle](https://github.com/bymle). - Channel plugins: ship Telegram rich-message delivery and WhatsApp ACP binding support, including rich prompt handoff to CLI backends and transport fixtures for richer drafts. ([#​92679](openclaw/openclaw#92679), [#​92513](openclaw/openclaw#92513)) Thanks [@​obviyus](https://github.com/obviyus) and [@​TurboTheTurtle](https://github.com/TurboTheTurtle). - Agent commands: support `/btw` in CLI-backed sessions and keep CLI usage-error exits classified as usage failures instead of successful runs. ([#​92669](openclaw/openclaw#92669), [#​92162](openclaw/openclaw#92162)) Thanks [@​joshavant](https://github.com/joshavant) and [@​Pandah97](https://github.com/Pandah97). - Usage hooks: add built-in full footer rendering, default footer templates, per-turn usage state, credential-aware limits, and fixed-decimal formatting for usage-bar templates. ([#​92657](openclaw/openclaw#92657), [#​89835](openclaw/openclaw#89835), [#​89629](openclaw/openclaw#89629)) Thanks [@​Marvinthebored](https://github.com/Marvinthebored). - Docs and operator guidance: document node config examples, clarify before-install hook scope, correct agent default concurrency comments, refresh ZAI provider docs, and update channel/group docs for current Telegram and WhatsApp behavior. ([#​92677](openclaw/openclaw#92677), [#​92766](openclaw/openclaw#92766), [#​92695](openclaw/openclaw#92695)) Thanks [@​liuhao1024](https://github.com/liuhao1024), [@​sallyom](https://github.com/sallyom), and [@​ArielSmoliar](https://github.com/ArielSmoliar). ##### Fixes - Onboarding/skills: show the Homebrew install recommendation only on macOS and Linux, so FreeBSD and other unsupported platforms no longer get a misleading brew prompt. Fixes [#​68893](openclaw/openclaw#68893); carries forward [#​68894](openclaw/openclaw#68894), [#​68910](openclaw/openclaw#68910), [#​68941](openclaw/openclaw#68941), [#​68943](openclaw/openclaw#68943), [#​69002](openclaw/openclaw#69002), and [#​69545](openclaw/openclaw#69545). Thanks [@​yurivict](https://github.com/yurivict), [@​Sanjays2402](https://github.com/Sanjays2402), [@​Eruditi](https://github.com/Eruditi), [@​JustInCache](https://github.com/JustInCache), [@​nnish16](https://github.com/nnish16), and [@​Mlightsnow](https://github.com/Mlightsnow). - Channels and delivery: preserve account-scoped DM channel send policy, rich Telegram final replies, rich Telegram tables and lists, Telegram thread-create CLI remapping, Slack outbound `message_sent` hooks, contributed message-tool schema optionality, same-channel generated media completions, and channel chunking around surrogate pairs and Infinity limits. ([#​92788](openclaw/openclaw#92788), [#​92679](openclaw/openclaw#92679), [#​89421](openclaw/openclaw#89421), [#​89943](openclaw/openclaw#89943), [#​91137](openclaw/openclaw#91137), [#​91246](openclaw/openclaw#91246), [#​92735](openclaw/openclaw#92735)) Thanks [@​yetval](https://github.com/yetval), [@​obviyus](https://github.com/obviyus), [@​spacegeologist](https://github.com/spacegeologist), [@​rishitamrakar](https://github.com/rishitamrakar), [@​lundog](https://github.com/lundog), [@​TurboTheTurtle](https://github.com/TurboTheTurtle), and [@​yhterrance](https://github.com/yhterrance). - Auto-reply/groups: keep ordinary group text replies on automatic final-reply delivery while allowing `message(action=send)` for files, images, and other attachments to the same group or topic. Carries forward [#​43276](openclaw/openclaw#43276); refs [#​48004](openclaw/openclaw#48004). Thanks [@​NayukiChiba](https://github.com/NayukiChiba) and [@​ShakaRover](https://github.com/ShakaRover). - Auto-reply/skills: preserve multiline payloads for `/skill` and direct skill slash commands while keeping command-head normalization for aliases, colon syntax, and bot mentions. Fixes [#​79155](openclaw/openclaw#79155); carries forward [#​81305](openclaw/openclaw#81305). Thanks [@​web3blind](https://github.com/web3blind). - iMessage: normalize leading NUL sent-message echo prefixes while preserving interior NUL bytes and the leading attributedBody marker handling from [#​73942](openclaw/openclaw#73942). Carries forward [#​63581](openclaw/openclaw#63581). Thanks [@​drvoss](https://github.com/drvoss). - Discord: give generated auto-thread titles a 60-second timeout and 4,096-token reasoning-model output budget, clamped to the selected model output cap. ([#​64734](openclaw/openclaw#64734)) Thanks [@​hanamizuki](https://github.com/hanamizuki). - Agent, cron, and Gateway runtime: mark active main sessions before restart shutdown aborts, pause yielded subagent runs whose terminal also signals abort, preserve yielded media completions, de-duplicate main-session heartbeat events, expose session identity in runtime prompts, reject unknown OpenAI agent selectors, keep generated media completions and slash-command block replies in WebChat, preserve fresh post-compaction usage while clearing stale usage snapshots, and require admin privileges for HTTP session/model override surfaces. ([#​91357](openclaw/openclaw#91357), [#​92631](openclaw/openclaw#92631), [#​92146](openclaw/openclaw#92146), [#​91287](openclaw/openclaw#91287), [#​92468](openclaw/openclaw#92468), [#​92510](openclaw/openclaw#92510), [#​91246](openclaw/openclaw#91246), [#​50795](openclaw/openclaw#50795), [#​50845](openclaw/openclaw#50845), [#​82874](openclaw/openclaw#82874), [#​92651](openclaw/openclaw#92651), [#​92646](openclaw/openclaw#92646)) Thanks [@​ooiuuii](https://github.com/ooiuuii), [@​openperf](https://github.com/openperf), [@​IWhatsskill](https://github.com/IWhatsskill), [@​ZengWen-DT](https://github.com/ZengWen-DT), [@​zhangguiping-xydt](https://github.com/zhangguiping-xydt), [@​Hollychou924](https://github.com/Hollychou924), [@​leno23](https://github.com/leno23), and [@​TurboTheTurtle](https://github.com/TurboTheTurtle). - Agents/exec: default empty-success background completion notices on only for real chat channels, preserving explicit opt-outs and keeping generic providers silent while carrying forward the narrow UX intent from [#​39726](openclaw/openclaw#39726) and [#​46926](openclaw/openclaw#46926). Thanks [@​Sapientropic](https://github.com/Sapientropic) and [@​wenkang-xie](https://github.com/wenkang-xie). - Providers and model replay: preserve storeless OpenAI Responses replay compatibility, avoid eager tool streaming for Claude 4.5 in Copilot, honor profile auth for SecretRef model entries, bound model browsing, strip provider prefixes where runtimes need bare IDs, and surface nested embedding fetch failures. ([#​90706](openclaw/openclaw#90706), [#​75393](openclaw/openclaw#75393), [#​90686](openclaw/openclaw#90686), [#​92247](openclaw/openclaw#92247), [#​92627](openclaw/openclaw#92627), [#​91218](openclaw/openclaw#91218), [#​92628](openclaw/openclaw#92628)) Thanks [@​snowzlm](https://github.com/snowzlm), [@​Kailigithub](https://github.com/Kailigithub), [@​rohitjavvadi](https://github.com/rohitjavvadi), [@​samson910022](https://github.com/samson910022), [@​liuhao1024](https://github.com/liuhao1024), [@​bymle](https://github.com/bymle), and [@​mushuiyu886](https://github.com/mushuiyu886). - Memory, state, diagnostics, and config: split header-too-large embedding batches, keep QMD memory search enabled in transient mode, avoid SQLite WAL on NFS volumes, preserve recovery scheduling outside stuck-session warning backoff, and keep shell environment fallbacks contained in config write tests. ([#​92650](openclaw/openclaw#92650), [#​92618](openclaw/openclaw#92618), [#​92639](openclaw/openclaw#92639), [#​91247](openclaw/openclaw#91247), [#​92752](openclaw/openclaw#92752)) Thanks [@​mushuiyu886](https://github.com/mushuiyu886), [@​TurboTheTurtle](https://github.com/TurboTheTurtle), [@​849261680](https://github.com/849261680), and [@​gnanam1990](https://github.com/gnanam1990). - Workspace setup state: store setup completion outside the workspace dot directory using an OpenClaw-named root file, migrate valid legacy state forward, and avoid clobbering generic root `workspace-state.json` files for TigerFS-style dot-path compatibility. This Clownfish replacement carries forward the focused [#​53326](openclaw/openclaw#53326) fix idea because the original branch was closed and uneditable. ([#​53326](openclaw/openclaw#53326), [#​44783](openclaw/openclaw#44783), [#​39446](openclaw/openclaw#39446)) Thanks [@​1qh](https://github.com/1qh). - UI/mobile/TUI: preserve dashboard session parent lineage, WebChat backscroll, reset soft command args, sidebar session picker interactivity, collapsed workspace files, resolved `/model` confirmation refs, and stale foreground iOS Gateway reconnects. ([#​90658](openclaw/openclaw#90658), [#​92622](openclaw/openclaw#92622), [#​91353](openclaw/openclaw#91353), [#​92705](openclaw/openclaw#92705), [#​92779](openclaw/openclaw#92779), [#​92773](openclaw/openclaw#92773), [#​92552](openclaw/openclaw#92552)) Thanks [@​luoyanglang](https://github.com/luoyanglang), [@​TurboTheTurtle](https://github.com/TurboTheTurtle), [@​zhouhe-xydt](https://github.com/zhouhe-xydt), [@​NianJiuZst](https://github.com/NianJiuZst), [@​shakkernerd](https://github.com/shakkernerd), [@​NarahariRaghava](https://github.com/NarahariRaghava), and [@​Solvely-Colin](https://github.com/Solvely-Colin). - TUI: reload the active session after external `/new` or `/reset` session-change events so stale transcript and stream state clear promptly. Fixes [#​38966](openclaw/openclaw#38966); carries forward [#​40472](openclaw/openclaw#40472). Thanks [@​yizhanzjz](https://github.com/yizhanzjz) and [@​wsyjh8](https://github.com/wsyjh8). - Control UI: preserve Gateway Access tokens during same-normalized WebSocket URL edits and reload gateway-scoped tokens when switching endpoints. Fixes [#​41545](openclaw/openclaw#41545); repairs [#​42001](openclaw/openclaw#42001) with additional source PRs [#​41546](openclaw/openclaw#41546), [#​41552](openclaw/openclaw#41552), and [#​41718](openclaw/openclaw#41718). Thanks [@​wsyjh8](https://github.com/wsyjh8), [@​llagy0020](https://github.com/llagy0020), [@​llagy007](https://github.com/llagy007), [@​pingfanfan](https://github.com/pingfanfan), and [@​zheliu2](https://github.com/zheliu2). - Gateway CLI: tolerate a single transient clean WebSocket close before `hello-ok` so one-shot RPC calls reconnect instead of failing noisily, while repeated clean pre-hello closes still surface. Carries forward source PRs [#​54475](openclaw/openclaw#54475) and [#​54774](openclaw/openclaw#54774); [#​85253](openclaw/openclaw#85253) covered adjacent connect assembly diagnostics. Thanks [@​ruanrrn](https://github.com/ruanrrn). - Gateway/Linux: keep root-owned systemd user service lifecycle commands on root's user manager when a stale `SUDO_USER` remains in a root shell with root's user bus environment. Fixes [#​81410](openclaw/openclaw#81410). Thanks [@​Ericksza](https://github.com/Ericksza) and [@​ChuckClose-tech](https://github.com/ChuckClose-tech). - Release and test reliability: extend slow Gateway/full-suite watchdogs, split local full-suite shards when throttled, stabilize plugin auth marker fixtures, avoid brittle provider-ref error text, and keep QA Lab bootstrap selection assertions aligned with flow-only scenarios. ([#​92652](openclaw/openclaw#92652)) - macOS Peekaboo bridge: update the embedded Peekaboo package to 3.5.2 and route bundled-skill CLI commands through the OpenClaw app bridge so they inherit its Screen Recording and Accessibility grants. - Agent routing: route subagent RPC callbacks addressed to an agent-shaped `--to` target to the correct session key instead of falling back to the main session, so WeChat (and other channel) session-key callbacks reach the intended subagent session. ([#​90231](openclaw/openclaw#90231)) Thanks [@​zhangguiping-xydt](https://github.com/zhangguiping-xydt). - Cron: preserve model, fallback, thinking, timeout, light-context, unsafe-content, and tool allow-list overrides on implicit text payloads by promoting them to agent turns, while explicit system events still prune those fields. Fixes [#​28905](openclaw/openclaw#28905); carries forward [#​64060](openclaw/openclaw#64060) and [#​73946](openclaw/openclaw#73946). Thanks [@​liaoandi](https://github.com/liaoandi). - QQBot delivery: keep markdown table chunks self-contained across message boundaries by preserving table state across block deliveries, flushing unfinished table-row fragments as plain text, and detecting short pipe-terminated rows by column count so split rows are not sent as malformed markdown. ([#​92428](openclaw/openclaw#92428)) Thanks [@​sliverp](https://github.com/sliverp). </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1144
Summary
Describe the problem and fix in 2–5 bullets:
/newor/resetfrom another client), so it could keep showing stale transcript/token state.sessions.resetnow broadcasts a lightweightsessionreset event; TUI now listens for that event, refreshes history/session info for the current session, and clears stale in-memory run tracking state.chatevents that are still keyed only bysessionKey.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
User-visible / Behavior Changes
List user-visible changes (including defaults/config).
If none, write
None.Security Impact (required)
Yes/No) NoYes/No) NoYes/No) NoYes/No) NoYes/No) NoYes, explain risk + mitigation:Repro + Verification
Environment
Steps
/newor/reset).Expected
Actual
Evidence
Attach at least one:
Human Verification (required)
What you personally verified (not just CI), and how:
sessions.resetnow broadcasts asessionreset event; verified that TUI handles that event by reloading history/session info and clearing stale run state.Review Conversations
If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.
Compatibility / Migration
Yes/No) YesYes/No) NoYes/No) NoFailure Recovery (if this breaks)
sessionevent broadcast/handling changes.src/gateway/server-methods/sessions.tssrc/tui/tui.tssrc/tui/tui-types.tssrc/tui/tui-event-handlers.tssrc/tui/tui-event-handlers.test.tsRisks and Mitigations
List only real risks for this PR. Add/remove entries as needed. If none, write
None.sessionreset event could trigger an unnecessary refresh for the wrong session if session matching is incorrect.sessionKeymatches the current session.activeChatRunId,sessionRuns,finalizedRuns, local run IDs, and recreatestreamAssembleron current-session reset.chatevents are still not perfectly distinguishable if they share the samesessionKey.