symfony/tui
The Symfony TUI component provides a terminal UI framework for building rich, interactive CLI applications in PHP. It offers building blocks for dynamic terminal interfaces, though it is experimental and not covered by Symfony's backward compatibility promise.
tinker, custom commands) by adding rich UI components (tables, forms, progress bars).#66446, #66502, #66439, #66579) makes TUI tables viable for internationalized data (names, messages, addresses) that previously misaligned. MarkdownWidget fixes (#66580, #66587) make in-terminal changelog/README rendering credible for internal documentation tools.echo/prompt() in custom Artisan commands with TUI components (e.g., interactive table selection for migrate:fresh).laravel/new scaffolding tool).^8.1.9 (Composer constraint) so the accumulated terminal-input and width fixes land together; treat 8.1.x as a single quality baseline rather than cherry-picking patches.#66583), Kitty keypad/escape handling (#66576, #66555, #66499), bracketed-paste key decoding in tmux (#66582), and terminals without the Kitty protocol (#66578). Residual risk is now concentrated in niche emulators and older Windows consoles, not mainstream terminals.#66575), and Ctrl+letter keys arrive correctly inside tmux paste — previously a plausible "frozen CLI" support ticket.#66688), and emoji ZWJ/modifier/tag sequences measure as two columns (#66446). Remaining risk is locale/LANG misconfiguration on the host, not the library.symfony/console) suffice?^8.1.9.Console/Command output with TUI components.AppServiceProvider or a dedicated ConsoleServiceProvider.Process component to test CLI interactions; add UTF-8/CJK/emoji fixtures to golden-output tests.db:analyze command) on ^8.1.9.^8.1.9 and integrate TUI into one existing Artisan command (e.g., a progress bar on queue:work); verify rendering in tmux.symfony/tui releases; the 8.1.x cadence is frequent but low-risk (bug fixes only). Schedule a monthly patch bump rather than reactive upgrades.LANG/LC_ALL").#66581, #66579) materially reduce cost and corruption risk when rendering long lines and wide Unicode content.SIGINT/SIGTERM gracefully (save state before exiting).#66591) are now addressed.#66575; keep a "kill and restart" escape hatch documented anyway.queue:listen) for memory bloat.How can I help you explore Laravel packages today?