diff --git a/src/apps/shell/public/page-css.test.ts b/src/apps/shell/public/page-css.test.ts new file mode 100644 index 0000000..9132faa --- /dev/null +++ b/src/apps/shell/public/page-css.test.ts @@ -0,0 +1,17 @@ +import { readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { describe, expect, it } from 'vitest'; + +const css = readFileSync(join(__dirname, 'page.css'), 'utf8'); + +describe('shell page.css terminal rendering', () => { + it('does not clip the last terminal row on the alternate screen buffer', () => { + // A clip-path inset on .alt-screen .xterm-screen hides the bottom row of + // TUI apps (e.g. the Claude Code mode/status line). Regression guard for + // the workaround that amputated one full row of content. + const altScreenBlocks = css.match(/\.alt-screen[^{]*\{[^}]*\}/g) ?? []; + for (const block of altScreenBlocks) { + expect(block).not.toMatch(/clip-path/); + } + }); +}); diff --git a/src/apps/shell/public/page.css b/src/apps/shell/public/page.css index ccca6d8..e04b0a9 100644 --- a/src/apps/shell/public/page.css +++ b/src/apps/shell/public/page.css @@ -346,11 +346,6 @@ display: none !important; } -/* Clip the last row — 17px ≈ 14px font × 1.2 line-height */ -.page-shell .alt-screen .xterm-screen { - clip-path: inset(0 0 17px 0); -} - /* ── Browser pane ─────────────────────────────────────────────────── */ .page-shell .browser-nav { display: flex;