sigrank 0.12.2 → 0.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/tui.mjs +13 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigrank",
3
- "version": "0.12.2",
3
+ "version": "0.12.3",
4
4
  "description": "SigRank MCP server — the yield cascade + live leaderboard as MCP tools any agent can call",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/tui.mjs CHANGED
@@ -1275,7 +1275,19 @@ function showSplash() {
1275
1275
  const hint = () => interactive
1276
1276
  ? `${dim(' [P]')} ${paused ? 'resume' : 'pause'} ${dim('[Enter]')} enter`
1277
1277
  : dim(' loading…')
1278
- const paint = () => { write(CLEAR); write(splashFrame(mode)); write(`\n${ctr(hint())}`) }
1278
+ // FIXED-WINDOW FIX (2026-06-27): paint the splash via the buffered flushScreen
1279
+ // path (GOTO positioning), NOT raw write('\n'). Raw \n scrolls the alt-screen
1280
+ // buffer, creating scrollback above the TUI — that's why you could scroll up
1281
+ // to see what was above it. flushScreen uses absolute cursor positioning so
1282
+ // nothing ever scrolls the buffer. This matches how tokscale renders its frame.
1283
+ const paint = () => {
1284
+ startBuffer()
1285
+ const lines = splashFrame(mode).split('\n')
1286
+ lines.forEach((ln) => writeln(ln))
1287
+ writeln(ctr(hint()))
1288
+ setFooter([])
1289
+ flushScreen()
1290
+ }
1279
1291
  paint()
1280
1292
  let timer = setInterval(paint, 110)
1281
1293