Описание задачи (Epic)
Аудит текущего Querya Desktop против продуктовой базы знаний показал, что базовая UI-архитектура уже сформирована (shadcn, workbench/editor theme layers, UI scale, motion tokens, reduced motion), но desktop shell пока содержит маркетинговый empty state, визуально и функционально ложные controls, слабую keyboard/screen-reader accessibility и несколько обходов общей дизайн-системы.
Цель эпика — привести оболочку приложения и общие UI-компоненты к минималистичному IDE-like интерфейсу Querya: предсказуемому, task-oriented, доступному и одинаковому во всех темах.
Источники требований
obsidian/Querya/Querya/04 — Расширения/Единый UI-стандарт для драйверов и расширений.md
obsidian/Querya/Querya/02 — Архитектура/Единообразие дерева подключений.md
obsidian/Querya/Querya/03 — Система тем/Анимации и высокая частота.md
obsidian/Querya/Querya/03 — Система тем/Система тем.md
obsidian/Querya/Querya/05 — Релизы/Чеклист релиза.md
Паритет driver workspaces и SDUI/RPC уже отслеживается отдельно в #322–#326; этот эпик не должен дублировать их scope.
Найденные проблемы
1. Empty workspace не ориентирован на рабочий сценарий
WorkspaceEmptyHero занимает небольшую часть большого workspace и показывает marketing copy, декоративный mock editor и ссылки на файлы документации. Для desktop DB-клиента primary flow должен вести к подключению или открытию локальной БД.
Дополнительно текст calm dark interface неверен при Light/System theme.
2. Ложные или мёртвые controls
- fallback-вкладка Query History показывает
Coming Soon, хотя рабочий showSqlQueryHistoryDialog уже используется в driver workspaces;
- fallback-кнопка Execute/Refresh (F5) всегда disabled;
- меню показывает
Shift+Ctrl+N, но shortcut не зарегистрирован;
- search icon в title bar визуально выглядит интерактивным, но не имеет действия.
3. Недостаточная accessibility
- кастомные tabs построены на
GestureDetector без tab semantics, focus state и keyboard navigation;
- resize handles управляются только drag-мышью и не имеют semantic label/keyboard actions;
- отсутствуют semantics/widget tests для основных shell-компонентов.
Reduced motion уже реализован и должен сохраниться.
4. Общая дизайн-система применяется непоследовательно
- часть overlays использует
showAppDialog с blur/scale, часть — Material showDialog / AlertDialog;
- часть уведомлений использует Material Snackbar вместо общего toast pattern;
- Redis/Mongo views содержат hardcoded status/type colors вместо theme/workbench tokens;
showAppDialog должен иметь однозначно проверенное поведение barrierDismissible.
5. Недостаточная visual QA
- в репозитории нет golden tests и эталонных desktop screenshots;
assets/images/ объявлен в pubspec.yaml, но source assets и fallback-поведение необходимо проверить чистой сборкой;
- sidebar width не сохраняется между запусками;
- глобальный read-only state недостаточно заметен в window chrome.
Предлагаемые workstreams
Место в коде (ориентир)
lib/features/main_screen/workspace_empty_hero.dart
lib/features/main_screen/workspace_panel.dart
lib/features/main_screen/querya_window_title_bar.dart
lib/features/main_screen/main_screen.dart
lib/shared/widgets/app_dialog.dart
lib/features/redis/
lib/features/mongodb/
lib/core/theme/
test/features/main_screen/
pubspec.yaml, assets/images/
Acceptance Criteria
Scope
- Scope:
desktop
- Component:
App Shell / Shared UI / Accessibility / Themes
- Kind:
epic / UX hardening
Описание задачи (Epic)
Аудит текущего Querya Desktop против продуктовой базы знаний показал, что базовая UI-архитектура уже сформирована (shadcn, workbench/editor theme layers, UI scale, motion tokens, reduced motion), но desktop shell пока содержит маркетинговый empty state, визуально и функционально ложные controls, слабую keyboard/screen-reader accessibility и несколько обходов общей дизайн-системы.
Цель эпика — привести оболочку приложения и общие UI-компоненты к минималистичному IDE-like интерфейсу Querya: предсказуемому, task-oriented, доступному и одинаковому во всех темах.
Источники требований
obsidian/Querya/Querya/04 — Расширения/Единый UI-стандарт для драйверов и расширений.mdobsidian/Querya/Querya/02 — Архитектура/Единообразие дерева подключений.mdobsidian/Querya/Querya/03 — Система тем/Анимации и высокая частота.mdobsidian/Querya/Querya/03 — Система тем/Система тем.mdobsidian/Querya/Querya/05 — Релизы/Чеклист релиза.mdПаритет driver workspaces и SDUI/RPC уже отслеживается отдельно в #322–#326; этот эпик не должен дублировать их scope.
Найденные проблемы
1. Empty workspace не ориентирован на рабочий сценарий
WorkspaceEmptyHeroзанимает небольшую часть большого workspace и показывает marketing copy, декоративный mock editor и ссылки на файлы документации. Для desktop DB-клиента primary flow должен вести к подключению или открытию локальной БД.Дополнительно текст
calm dark interfaceневерен при Light/System theme.2. Ложные или мёртвые controls
Coming Soon, хотя рабочийshowSqlQueryHistoryDialogуже используется в driver workspaces;Shift+Ctrl+N, но shortcut не зарегистрирован;3. Недостаточная accessibility
GestureDetectorбез tab semantics, focus state и keyboard navigation;Reduced motion уже реализован и должен сохраниться.
4. Общая дизайн-система применяется непоследовательно
showAppDialogс blur/scale, часть — MaterialshowDialog/AlertDialog;showAppDialogдолжен иметь однозначно проверенное поведениеbarrierDismissible.5. Недостаточная visual QA
assets/images/объявлен вpubspec.yaml, но source assets и fallback-поведение необходимо проверить чистой сборкой;Предлагаемые workstreams
New Connection,New from URL,Open SQLite file, recent connections; убрать theme-dependent copy.Место в коде (ориентир)
lib/features/main_screen/workspace_empty_hero.dartlib/features/main_screen/workspace_panel.dartlib/features/main_screen/querya_window_title_bar.dartlib/features/main_screen/main_screen.dartlib/shared/widgets/app_dialog.dartlib/features/redis/lib/features/mongodb/lib/core/theme/test/features/main_screen/pubspec.yaml,assets/images/Acceptance Criteria
Scope
desktopApp Shell / Shared UI / Accessibility / Themesepic / UX hardening