Skip to content

v0.30.2

Choose a tag to compare

@esengine esengine released this 07 May 06:07
· 1917 commits to main-v2 since this release
43d437f

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)