Skip to content

Shellit v0.9.5

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Oct 02:35

🚀 Shellit v0.9.5 — Пользовательская типографика, каскад Nerd Fonts и Kitty Graphics Protocol (Custom Typography & In-Terminal Graphics)

📌 О релизе / Release Overview

Релиз v0.9.5 выводит пользовательский опыт работы в консоли Shellit на уровень ведущих Linux-эмуляторов терминалов (Kitty, WezTerm, Alacritty), отвечая на пожелания сообщества и разработчиков:

  1. Кастомная типографика и каскад Nerd Fonts (kTerminalFontFallbacks):

    • Глобальный каскад шрифтов: Внедрен kTerminalFontFallbacks (JetBrainsMono Nerd Font, Symbols Nerd Font Mono, Nerd Font Symbols, monospace), обеспечивающий автоматическое подтягивание глифов приватной области Unicode U+E000..U+F8FF без перекоса ширины сетки знакомест.
    • Интерактивный селектор шрифтов: В TerminalSettingsCard добавлен выпадающий список популярных шрифтов для программирования (JetBrains Mono, JetBrainsMono Nerd Font, Fira Code, FiraCode Nerd Font, Cascadia Code), режим ручного указания любого шрифта ОС (Custom...), поле ввода с валидацией и живое превью с глифами (📁, 📄, , [✓], 🚀).
    • Настройки реактивно сохраняются в зашифрованное хранилище storage_vault и синхронизируются на старте.
  2. Архитектура протокола внутритерминальной графики Kitty Graphics Protocol:

    • Потоковый APC-перехватчик (KittyGraphicsStreamFilter): Создан фильтр потока байт, вырезающий escape-последовательности \x1b_G ... \x1b\ и \x1b_G ... \x07 до их попадания в xterm.dart. Это исключает выброс сырого base64 на экран и зависания текстового буфера.
    • Реестр текстур (TerminalGraphicsRegistry): Реализована сборка многосегментных передач (m=1/m=0), декодирование форматов PNG и RGBA через нативный движок Flutter (ui.instantiateImageCodec), позиционирование по ячейкам сетки и автоочистка текстур из видеопамяти при удалении (a=d) или закрытии сессии.
    • Слой оверлея (TerminalGraphicsOverlay): Смонтирован в стеке TerminalScreen точно между текстовым холстом TerminalView и изолированным слоем курсора TerminalCursorOverlay.
  3. Сохранность архитектурных инвариантов:

    • Курсор (BUG-052): Изолированный слой курсора на базе RepaintBoundary с 0% CPU в режиме покоя рендерится поверх графического слоя, сохраняя видимость каретки при просмотре картинок в консольном файл-менеджере yazi.
    • Метки команд (OSC 133): Левое поле отступа 22px под статус-индикаторы команд осталось абсолютно неизменным.

Release v0.9.5 elevates Shellit's terminal ergonomics to match modern Linux terminal emulators (Kitty, WezTerm, Alacritty), delivering user-requested typography enhancements and in-terminal graphic rendering:

  1. Custom Typography & Resilient Nerd Fonts Cascade (kTerminalFontFallbacks):

    • Global Fallback Cascade: Integrated kTerminalFontFallbacks (JetBrainsMono Nerd Font, Symbols Nerd Font Mono, Nerd Font Symbols, monospace) to flawlessly render Unicode Private Use Area glyphs U+E000..U+F8FF without cell-width distortions.
    • Interactive Font Selector: Added typography dropdown in TerminalSettingsCard with popular developer presets (JetBrains Mono, JetBrainsMono Nerd Font, Fira Code, FiraCode Nerd Font, Cascadia Code), arbitrary system font text input (Custom...), and live interactive preview with icons (📁, 📄, , [✓], 🚀).
    • Settings reactively persist to encrypted storage_vault and sync on boot.
  2. Kitty Graphics Protocol Architecture:

    • Streaming APC Filter (KittyGraphicsStreamFilter): Intercepts APC commands \x1b_G ... \x1b\ and \x1b_G ... \x07 before they reach xterm.dart, preventing terminal buffer pollution and base64 text spam.
    • Texture Registry (TerminalGraphicsRegistry): Supports chunked payloads (m=1/m=0), decodes PNG and raw pixel buffers using Flutter engine (ui.instantiateImageCodec), binds images to cell grid coordinates, and frees memory upon deletion (a=d) or session teardown.
    • Overlay Canvas (TerminalGraphicsOverlay): Layered cleanly between TerminalView and the isolated TerminalCursorOverlay.
  3. Preservation of Core Architectural Invariants:

    • Isolated Cursor (BUG-052): Bounded by RepaintBoundary with 0% idle CPU, rendering strictly on top of image canvases in yazi.
    • Prompt Markers (OSC 133): 22px left margin for command execution indicators remains completely untouched.

🔒 Ключевые изменения / Key Changes

1. Терминальный интерфейс (packages/terminal_ui)

  • lib/src/graphics/kitty_graphics_types.dart: Модели команд KittyAction, KittyFormat, KittyImageCommand.
  • lib/src/graphics/kitty_graphics_parser.dart: Потоковый фильтр KittyGraphicsStreamFilter и разбор APC-последовательностей.
  • lib/src/graphics/terminal_graphics_registry.dart: Реестр TerminalGraphicsRegistry сборки чанков, декодирования и управления текстурами.
  • lib/src/graphics/terminal_graphics_overlay.dart: Слой TerminalGraphicsOverlay с кастомным рендерером сетки ячеек.
  • lib/src/providers/terminal_settings_provider.dart: terminalFontFamilyProvider и каскад kTerminalFontFallbacks.
  • lib/src/widgets/terminal/terminal_screen.dart: Интеграция TerminalGraphicsOverlay под слоем курсора, применение каскада шрифтов.
  • lib/src/widgets/mobile/mobile_terminal_screen.dart: Поддержка каскада шрифтов на смартфонах и планшетах.
  • test/kitty_graphics_test.dart: Модульные тесты перехвата APC, склейки чанков и реестра графики (7/7 успешно).

2. Приложение и Настройки (apps/shellit)

  • lib/src/screens/settings/terminal_settings_card.dart: Селектор шрифтов, поле ввода кастомного шрифта, интерактивный блок превью.
  • lib/src/shellit_app.dart: Синхронизация сохраненного шрифта из хранилища при старте приложения.

3. Документация и Портал (apps/website, docs/)

  • Добавлен Акт XVI в Хронику проекта (docs/CHRONICLE.md, docs/CHRONICLE.en.md, apps/website/src/content/chronicle/).
  • Зарегистрирован баг BUG-057 в docs/BUGS_AND_ISSUES.md.
  • Обновлен StatsHUD.astro (57+ разобранных дефектов, статус v0.9.5 Alpha Preview).
  • Завершена Фаза 27 в docs/CHECKLIST.md.

📦 Сборка и верификация / Verification

  • Flutter & Dart Analysis: dart analyze --fatal-infos — 0 ошибок, 0 предупреждений, 0 инфо (All clear).
  • Unit & Widget Tests:
    • packages/terminal_ui: 210 тестов (100% успешно);
    • apps/shellit: 61 тест (100% успешно);
    • packages/storage_vault: 63 теста (100% успешно);
    • Всего: 467+ зеленых тестов.

📦 Git Commits & Changes

🚀 Features & Enhancements

  • feat(release): v0.9.5 - custom terminal typography, Nerd Fonts cascade & Kitty graphics protocol (BUG-057) (626f8c1)

🔧 Maintenance & Improvements

  • test(smoke): expand viewport height for full settings visibility in CI (1fc23a9)

Full Changelog: v0.9.4...v0.9.5