Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Alexander <akotenev2003@gmail.com>
3.3 KiB
План 4 — shturman-shell (первый Slint-кадр)
REQUIRED SUB-SKILL:
executing-plans+ TDD. Полный код — вsrc; здесь дизайн/задачи/acceptance.
Goal: первый Slint-кадр (срезы C03/C04/C05/C07/C02): статус-бар (часы + сеть «unknown») + home-грид
плейсхолдеров + тема день/ночь; читает ui.theme/Power через sdk (best-effort, деградирует без шины — #4).
Architecture: shturman-shell (bin) ← sdk + common + slint. Реализует тезис «first-party на SDK».
Чистая логика темы — тестируема (TDD); рендер кадра — на железе/в Lima (План 5 E2E + just shell-frame).
Tech/решения: Slint = GPL-3.0 (вариант A; exception в deny.toml, финал к v4). Slint+D-Bus: одноразовое
чтение состояния при старте (tokio-runtime, block_on), затем Slint event loop; live-обновления (Changed/AccChanged) —
позже (v0.5). Часы v0 — UTC HH:MM (без tz-deps; локальная tz — позже, a-base §7). UI — slint!-макрос.
P4.1: Slint в граф + deny.toml exception
Cargo.tomlworkspace.deps:slint = "1".deny.toml:[licenses] exceptions— для крейтовslint/i-slint-*/slint-*разрешитьGPL-3.0(список уточнить по выводуcargo denyпосле добавления зависимости). Комментарий: вариант A, финал к v4.- Acceptance:
cargo deny checkзелёный с slint в графе.
P4.2: shturman-shell — тема (TDD) + Slint-кадр + main
crates/apps/shturman-shell(members). Deps:shturman-sdk,shturman-common,slint,tokio,anyhow,tracing.theme.rs—pub fn resolve_night(theme: &str, hour_utc: u8) -> bool:night→true,day→false,auto→ночь еслиhour < 7 || hour >= 20(🟡 пороги). TDD: day/night явные; auto по часам; неизвестное → как auto.ui(slint!-макрос):AppWindowсin propertyis-night/clock/network/ignition+ грид тайлов-плейсхолдеров; фон/цвета отis-night.main.rs:init_tracing; одноразовое чтениеui.theme(Settings) +ignition(Power) черезsdk(best-effort, при отсутствии шины — дефолтыauto/unknown, кадр всё равно рисуется #4);resolve_nightот UTC-часа; выставить свойства;AppWindow::run().justfile:shell-frame— запустить shell (ручная проверка кадра). (Реальный screenshot-E2E — План 5.)- Acceptance:
cargo build -p shturman-shell(slint! компилируется);theme-тесты зелёные;just ciзелёный (deny с slint-exception);just testне требует шины (shell-тесты — чистая логика).
Дальше
План 5 — dev-tools (валидатор манифеста/scaffolding/fixtures) + systemd-юниты + Lima + сквозной E2E (screenshot кадра).