feat(core): add fullscreen mode for screens#101
Conversation
Add alternate screen buffer support for Ink-based TUIs: - `FullScreen` component: enters/exits alt screen buffer on mount/unmount with idempotent cleanup handlers for SIGINT, SIGTERM, and process.exit - `useFullScreen` hook: reads terminal dimensions and fullscreen state from context, falls back to process.stdout when outside FullScreen - `useTerminalSize` hook: standalone terminal dimension tracking with resize events - `fullscreen` option on ScreenDef: wraps the component tree in FullScreen automatically, with a finally safety net in renderFn - Rename kitchen-sink example to tui, enable fullscreen on dashboard Co-Authored-By: Claude <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: 416d8de The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis pull request introduces fullscreen terminal UI capabilities to the core package and migrates the example CLI from kitchen-sink to tui. The changes add a new Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Summary
<FullScreen>component,useFullScreenhook, anduseTerminalSizehook for alternate screen buffer support in Ink-based TUIsfullscreen?: booleanoption toScreenDefthat automatically wraps the component tree in<FullScreen>with afinallysafety netkitchen-sinkexample totuiand enable fullscreen mode on the dashboard commandTest plan
pnpm checkpasses (typecheck + lint + format)pnpm test --filter=@kidd-cli/corepasses (744 tests)tuiexample withpnpm dev -- dashboardand verify alternate screen buffer activatesq)useFullScreen()returns reactivecolumns/rowson terminal resize