Repository navigation
Shellit v0.9.3
Pre-release
Pre-release
🚀 Shellit v0.9.3 — Высокопроизводительный кадровый рендеринг, VSync-коалесцинг и вытеснение истории (High-Performance Rendering & Buffer Coalescing)
📌 О релизе / Release Overview
Релиз v0.9.3 реализует глубокую модернизацию графического конвейера терминала и устраняет узкие места производительности, обнаруженные в ходе независимого архитектурного аудита с помощью Gemini 3.8 Flash в Google AI Studio, а также решает фундаментальную проблему рассинхронизации командных меток при вытеснении истории терминала:
- Кадровый троттлинг и VSync-коалесцинг (
BUG-053): Входящие сетевые байты SSH-сокета больше не бомбардируют главный UI Isolate сотнями разрозненных пакетов в секунду. МодульTerminalStreamCoalescerагрегирует чанки и сбрасывает их строго синхронно с частотой обновления дисплея черезSchedulerBinding.scheduleFrameCallback. Внедрен алгоритм_getIncompleteUtf8TrailingByteCount, предотвращающий появление ромбиковU+FFFDпри разрезании многобайтовых символов UTF-8, а также защита от переполнения памяти OOM Guard (>512 КБ). - Векторный рендерер псевдографики Box Drawing (
BUG-054): Все 128 символов псевдографики Unicode (U+2500..U+257F) переведены со шрифтового рендеринга на прямое математическое черчение векторамиcanvas.drawLineпо субпиксельному центру знакоместа без антиалиасинга. Рамки вhtop,mcиlazygitсмыкаются монолитно без ступенек и зазоров при любом масштабе экрана. - Холодный режим ожидания и изоляция каретки (
BUG-052): Мигающий курсор терминала вынесен в изолированный оверлейTerminalCursorOverlayс собственнымRepaintBoundaryи пассивнымIgnorePointer. Таймер 550 мс переведен наValueNotifier<bool>без инвалидации основного холста текста. Потребление CPU терминалом в режиме ожидания сведено к абсолютному 0%. - Синхронное вытеснение истории и защита маркеров OSC 133: При генерации сверхдлинных простыней вывода строки вытесняются из кольцевого буфера истории. Командные блоки
ShellCommandBlockтеперь привязаны к живым объектам строкBufferLine with IndexedItem. При вытеснении строки метки команд синхронно скрываются как на левом поле, так и на полосе прокрутки, предотвращая скачки к неверному тексту. Вверху скроллбара появился индикатор[▲ N]с тултипом о количестве вытесненных команд.
Release v0.9.3 introduces a comprehensive overhaul of the terminal rendering pipeline, addressing architectural bottlenecks diagnosed by Gemini 3.8 Flash in Google AI Studio, and solving semantic shell marker desynchronization during scrollback buffer eviction:
- VSync Stream Coalescing & UTF-8 Protection (
BUG-053): SSH socket chunks no longer flood the UI Isolate with hundreds of unscheduled dispatches.TerminalStreamCoalesceraccumulates byte packets and delivers them in sync with display refresh cycles usingSchedulerBinding.scheduleFrameCallback. Integrated trailing byte analyzer preserves split multi-byte UTF-8 sequences, complemented by an active OOM Guard (>512 KB). - Precision Vector Box Drawing (
BUG-054): All 128 Unicode Box Drawing glyphs (U+2500..U+257F) are drawn via direct mathematical vectors (canvas.drawLine) anchored to subpixel cell centers with antialiasing disabled, eliminating visual seam gaps inhtop,mc, andlazygitacross high-DPI scaling. - Cold Idle State & Isolated Cursor Layer (
BUG-052): The blinking cursor is decoupled into an isolatedTerminalCursorOverlaywrapped withRepaintBoundaryand pass-throughIgnorePointer. The 550 ms timer toggles a lightweightValueNotifier<bool>without invalidating the text canvas, dropping idle CPU utilization to zero. - Resilient Command Marker Scrollback Eviction (OSC 133): Bound
ShellCommandBlockto underlyingBufferLine with IndexedIteminstances. Evicted historical lines dynamically hide associated gutter dots and scrollbar ticks in tandem. Added a top scrollbar badge[▲ N]detailing evicted command history, and updated keyboard navigation (Alt+Up/Alt+Down) to cleanly bypass pruned blocks.
🔒 Ключевые изменения / Key Changes
1. Архитектура рендеринга терминала (BUG-052, BUG-053, BUG-054)
- Компонент
TerminalStreamCoalescer(terminal_stream_coalescer.dart):
Обеспечивает агрегацию сетевых байт и сброс вTerminal.write()синхронно с VSync. Снабжен защитой_getIncompleteUtf8TrailingByteCount, fallback-таймером на 16 мс для фонового режима и аварийным сбросом при превышении буфера в 512 КБ. - Векторный движок
BoxDrawingVectorRenderer(box_drawing_vector_renderer.dart):
Поддерживает тонкие, жирные, двойные, пунктирные линии, диагонали и скругленные углы Bezier (╭ ╮ ╯ ╰). - Слой каретки
TerminalCursorOverlay(terminal_cursor_overlay.dart):
Изолирует отрисовку каретки от текстового буфера. Предотвращает перерисовку сорока строк консоли каждые 550 мс. Слоты матричных сплитов вSplitMatrixViewобернуты в индивидуальныеRepaintBoundary.
2. Целостность шелл-интеграции и вытеснение буфера
- Динамический статус
isEvicted:
ShellCommandBlockхранит ссылкуpromptBufferLine. Если строка вытеснена из кольцевого буфера, блок помечается как вытесненный. - Синхронное скрытие маркеров:
ShellGutterMarkersOverlayиShellCommandMarkersOverlayфильтруют вытесненные блоки, исключая отображение призрачных меток. - Индикатор вытесненных команд
[▲ N]:
На полосе прокрутки отображается аккуратный бейдж с количеством скрытых команд и информативным тултипом. - Безопасная навигация:
Горячие клавишиAlt+UpиAlt+Downпереходят только между живыми командами в пределах доступного буфера.
📦 Сборка и верификация / Verification
- Flutter & Dart Analysis:
dart analyze --fatal-infos— 0 ошибок, 0 предупреждений, 0 инфо (All clear). - Unit & Widget Tests: 100% прохождение всех тестов монорепозитория:
packages/terminal_ui: 202 теста (включая тесты коалесцера, векторных линий, каретки и вытеснения буфера);packages/storage_vault: 63 теста;apps/shellit: 61 тест;- Всего: 460+ зеленых тестов.
- Сборка Windows Dev: Собран и проверен нативный исполняемый файл
shellit.exe(Debug x64). - Сайт и документация: Актуализирован
StatsHUD.astro(54 разобранных инцидента, статус v0.9.3 Alpha Preview), опубликованы главы Хроники (Акт XIV: ru & en).
📦 Git Commits & Changes
🚀 Features & Enhancements
- feat(release): v0.9.3 - high-performance terminal rendering, VSync coalescing & buffer eviction (e5d76ba)
Full Changelog: v0.9.2...v0.9.3