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:
@@ -27,6 +27,7 @@ var updateToken = ""
|
||||
func main() {
|
||||
cfg := flag.String("config", "", "путь к config.yaml (по умолчанию — CWD/config.yaml)")
|
||||
versionFlag := flag.Bool("version", false, "показать версию и выйти")
|
||||
noUI := flag.Bool("noui", false, "работать без графического окна (headless)")
|
||||
flag.Parse()
|
||||
|
||||
if *versionFlag {
|
||||
@@ -34,7 +35,7 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
a, err := app.New(*cfg, version, updateToken)
|
||||
a, err := app.New(*cfg, version, updateToken, *noUI)
|
||||
if err != nil {
|
||||
log.Fatalf("app init: %v", err)
|
||||
}
|
||||
@@ -60,4 +61,4 @@ func main() {
|
||||
}
|
||||
log.Print("ratatoskr: остановлен")
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user