You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Features
feat(ui): live 42 t/s pill on the streaming reply card; settled card shows 1.2k tok · 42 t/s summary. Computed via the bundled DeepSeek tokenizer; gated below 4 tokens / 500 ms so the first chunk doesn't print bogus rates. (#334, PR #356)
feat(ui):space toggles pause / resume on the auto-mode 5-second undo countdown. While paused the bar freezes at the captured fraction, the badge swaps to Ns · paused. (#337, PR #356)
feat(ui):ctrl-o toggles "expanded" mode on the live streaming card so a long plan / todo can be read while it's still being written. Up to 60 visual lines + a ⋯ N earlier lines above overflow hint. Auto-resets to collapsed at turn end. (#335, #337, PR #359)
Bug fixes
fix(ui):splitCardStream only treated the LAST card as live, committing every earlier card to Ink's <Static>. When the model streamed reasoning then content, the reasoning card was frozen into <Static> while still streaming: true — when reasoning.end later flipped streaming: false, the spinner kept spinning forever. The split now scans for the first unsettled card and keeps everything from that index onward live. (PR #358)
fix(ui): SessionPicker hardcoded ¥ and ran USD → CNY itself, so USD-wallet users saw ¥X.XX in the session list. SessionMeta gains balanceCurrency; picker accepts a walletCurrency prop. (#312, PR #357)
fix(dashboard): cost displays were hardcoded to $ via fmtUsd(), so a CNY-wallet user saw session $0.5190 while the same session read ¥0.024 in the CLI. Dashboard now mirrors the CLI's currency-aware formatCost() for overview, chat rail, and chat status-bar costs. Claude-equivalent comparisons stay USD by design. (PR #360)