@modelstatus/cli 0.1.48 → 0.1.49

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/src/tui/app.js +11 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modelstatus/cli",
3
- "version": "0.1.48",
3
+ "version": "0.1.49",
4
4
  "description": "Track which AI models you use, where, and never get surprised by a retirement. Free offline model-health for any repo (mm status), browser sign-in for cloud inventory + alerts.",
5
5
  "keywords": [
6
6
  "llm",
package/src/tui/app.js CHANGED
@@ -69,11 +69,17 @@ function useTermDims() {
69
69
  const cols = Number.isFinite(fw) && fw > 0 ? fw : dims.cols;
70
70
  const rows = Number.isFinite(fh) && fh > 0 ? fh : dims.rows;
71
71
  // Never exceed the real terminal width (a wider frame soft-wraps every chrome
72
- // line and shatters the window). Fill the FULL terminal height: when the frame
73
- // height ≥ the terminal rows, ink redraws with a full clear each frame; render
74
- // shorter than the screen (the old 80-row cap did this on tall external
75
- // monitors) and ink falls back to cursor-up diffing, which drifts/scrolls.
76
- return { outer: Math.min(cols || 80, 220), termRows: Math.max(8, Math.min(rows || 24, 200)) };
72
+ // line and shatters the window).
73
+ //
74
+ // Height: RESERVE THE LAST ROW (rows - 1). A frame that fills the full height
75
+ // makes ink write+newline the bottom line, which scrolls the buffer up by 1
76
+ // EVERY render; across the handful of renders during load/settle that scroll
77
+ // accumulates and creeps the window's top off-screen (the "not full-screen after
78
+ // the game / in Warp" clip). One row short keeps the last line blank so nothing
79
+ // ever scrolls. This is safe now that the TUI lives in the ALT SCREEN: ink's
80
+ // cursor-up diffing (which it uses when the frame is shorter than the terminal)
81
+ // stays inside the fixed alt buffer and can't drift the way it did inline.
82
+ return { outer: Math.min(cols || 80, 220), termRows: Math.max(8, Math.min((rows || 24) - 1, 200)) };
77
83
  }
78
84
 
79
85
  function PromptRow({ prompt }) {