Stability sweep — TUI / dashboard / loop bugs from field reports plus
the new /theme picker.
Fixes
- TUI tear-down on
/model//sessions— a card-stream layout
feedback loop tiedouter.heighttoscrollRows, which could trip
React'sMAX_NESTED_UPDATESwhen a picker mounted and shrank the
column in one commit. Hint row now reserved unconditionally so its
visibility no longer feeds back into measurement. (#549) - Stuck plan checkpoint —
pauseGate.askignored AbortSignal, so
Esc and/newcouldn't cancel an awaiting tool fn (the spinner
stayed live, prompt stayed disabled,/newwas silently dropped).
NewpauseGate.cancelAll()flushed by both paths. (#552) - Identity contamination — workspace files (Hermes / persona
platforms'SOUL.md,skills/,memories/, foreignREASONIX.md)
could make the model claim a layered architectural relationship.
Top-of-prompt identity guard + launch-time foreign-workspace
warning. (#555) - Dashboard chat-tab freeze on long sessions — every
assistant_deltare-rendered every historical message, re-running
marked + hljs on unchanged content. MemoizedChatMessage+
rAF-coalesced delta accumulation. (#560) - Stuck tool-card spinner —
runningflag was imperatively set
from paired events; missed end-events (storm-breaker, network drop,
parent abort) left it spinning forever. Replaced with a
finally-guaranteedInflightSeton the loop; UI derives the
spinner viauseIsInflight(card.id). (#566)
Features
/themepicker — bare/themeopens a SingleSelect modal
listingauto+ every registered theme;/theme <name>keeps
existing persist-and-report. Contributed by @J3y0r (#543, re-landed
via #567 after rebasing onto current main).
Install
npm install -g reasonix@0.36.2
# or run via npx
npx reasonix@0.36.2
Full changelog: https://github.com/esengine/DeepSeek-Reasonix/blob/main/CHANGELOG.md