diff --git a/docs/dev-workflow.md b/docs/dev-workflow.md index cfd467e..9a1b9ba 100644 --- a/docs/dev-workflow.md +++ b/docs/dev-workflow.md @@ -119,11 +119,33 @@ HTML-макеты → PNG: **headless Edge** (`--headless --screenshot`), он атрибуция AboutSlint) — зафиксировать в README и LICENSE - [ ] Скриншоты в README из tools/out +## Решение по архитектуре запуска (исследование 2026-08-25) + +ОС вызывает пикер так: `CreateProcess("bropicker.exe", "https://...")` — новый процесс +на каждый клик, постоянной связи с вызывающим приложением нет. Два режима: + +- **Новый инстанс (выбрано для MVP):** нулевая сложность; если cold start < 100 ms, + разница с резидентом невидима +- **Резидент + трей (этап G, по показаниям):** spawn-заглушка + IPC + показ готового + окна (~5-10ms), но: постоянная память ~30-80MB, named mutex, IPC (named pipe / + WM_COPYDATA), крейс `tray-icon` + скрытое winit-окно (в Slint трея нет), автозапуск + +Критерий старта этапа G: замер этапа F показал cold start > 100 ms, либо нужен +доступ к настройкам/функциям из трея. Single-instance guard (named mutex + фокус +существующего окна) можно добавить отдельно, без полного резидента — если быстрые +клики по нескольким ссылкам начнут плодить окна. + +## Этап G — резидент + трей (отложен до результатов этапа F) + +- [ ] Решение по итогам замера cold start (см. блок выше) +- [ ] Single-instance guard: named mutex, форвард URL в существующий инстанс (named pipe) +- [ ] Иконка в трее (`tray-icon`), меню: Открыть настройки / Выход +- [ ] Автозапуск (HKCU Run или Startup-ярлык) + ## Заметки для агента - GUI-приложение запускать только через `tools/run-and-shot.ps1`, никогда не блокирующе - После каждого изменения UI: скриншот + сравнение с `tools/out/ref-{dark,light}.png` -- Тёмная/светлая тема переключается кнопкой sun/moon (Theme.toggle уже работает); - для скриншота светлой темы кликать нельзя — добавить env-флаг `BP_THEME=light`, - который в main() выставит `Theme.is-dark = false` перед показом +- Тёмная/светлая тема: переключение кнопкой sun/moon (Theme.toggle); для скриншота + светлой темы — `tools/run-and-shot.ps1 -Light` (env `BP_THEME=light`) - Cargo.toml правится только через cargo CLI; манифесты руками — только человеком