feat(ui): команды, snapshots, Fyne-окно и интеграция (--noui)
Команды (спец 12.2): - ui.Commands: действия UI → текстовые команды канала (start/cancel/skip/ retry/continue/approve/send), единый путь через chat.Channel. - ui.Window = chat.Channel + View; NilWindow для headless/тестов. Snapshots (спец 12.5): - ui.Store: чтение-модель, возвращает только копии (ListTasks/GetTask/ GetHistory/GetTraces); ui.DBStore поверх storage. Fyne-окно (internal/ui/desktop, build-tag cgo): - список задач слева, сплиты рабочей области и панели «Логи»/«Состояние», ввод+кнопки команд, тёмная тема, fullscreen, сохранение layout в Preferences, сворачивание при закрытии крестиком. - Колбэки View через fyne.Do (спец 12.4). Интеграция: - app.New(..., noUI); флаг --noui; UI собирается только с cgo (ui_cgo/ ui_noui фабрики), приложение headless без него. - Run: окно блокирует главную горутину; «Завершить» → cancel → graceful shutdown (спец 12.6). - go.mod: fyne.io/fyne/v2 v2.6.0 (direct).
This commit is contained in:
15
internal/app/ui_cgo.go
Normal file
15
internal/app/ui_cgo.go
Normal file
@@ -0,0 +1,15 @@
|
||||
//go:build cgo
|
||||
|
||||
package app
|
||||
|
||||
import (
|
||||
"github.com/kamelion/ratatoskr-go/internal/ui"
|
||||
"github.com/kamelion/ratatoskr-go/internal/ui/desktop"
|
||||
)
|
||||
|
||||
// newUIWindow создаёт десктопное окно (Fyne) на основе чтения-модели.
|
||||
// Сборка с cgo: GLFW доступен, окно реально.
|
||||
func newUIWindow(store ui.Store) ui.Window {
|
||||
w := desktop.New("ratatoskr-go", store)
|
||||
return w
|
||||
}
|
||||
Reference in New Issue
Block a user