P3-3: Wails v3 shell, system tray and sync daemon lifecycle #32
Labels
No labels
data-integrity
engine
platform
procurement
remote
scaffold
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Cordy/cairn-desktop#32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Depends on P3-2.
Goal
The application skeleton: a tray-resident process that runs the sync loop and opens a window on demand.
Files
cmd/cairn-desktop/main.go,internal/app/app.go,internal/app/tray.go,frontend/(index.html, CSS, TS)Framework
Wails v3. Go backend, web frontend, native systray and menus, no bundled Chromium. Beta since 2026-08-02 with a stable desktop API.
Containment rule — this is the important part. Wails types must not leak past
cmd/cairn-desktop/andinternal/app/. The engine, remote, vfs, state and config packages must remain framework-agnostic. If v3's GA slips or disappoints, swapping to Fyne or a plain systray-plus-webview must cost weeks, not the project.internal/sync/arch_test.goalready forbids Wails there; keep it that way.Behaviour
Frontend styling
Reuse Cairn's existing design tokens so the client and the web UI look like one product:
Support light and dark, following the OS preference.
Steps
git commit -s -m "feat(app): Wails shell, tray, sync daemon lifecycle"Acceptance criteria
grep -r wails internal/sync internal/remote internal/vfs internal/statereturns nothing.