Implementation tracker for ADR 0001 — adopting Wails v2 as a desktop wrapper alongside the existing CLI mode.
Goal
Ship a native desktop build (Dashboard.app / .exe / .deb) that wraps the existing internal/server HTTP server and adds a native file-picker for .db files, while preserving the current ./dashboard -db <path> CLI flow unchanged.
Scope
Must have
Build & CI
Nice to have (follow-up issues OK)
Out of scope
- Auto-update integration (tracked separately if pursued)
- Rewriting htmx endpoints as Wails bindings — the ADR commits to keeping HTTP
- Any change to receipt database schema or write behavior
Acceptance criteria
wails dev launches a window that renders the current htmx UI identically to the browser version
- Opening a
.db via the native dialog shows the same receipt list/detail views as ./dashboard -db <path>
go test ./... still passes
- CLI binary from
go build ./cmd/dashboard is unchanged in behavior
- No network requests leave the machine when the desktop app is running offline (validates Tailwind vendoring)
References
Implementation tracker for ADR 0001 — adopting Wails v2 as a desktop wrapper alongside the existing CLI mode.
Goal
Ship a native desktop build (
Dashboard.app/.exe/.deb) that wraps the existinginternal/serverHTTP server and adds a native file-picker for.dbfiles, while preserving the current./dashboard -db <path>CLI flow unchanged.Scope
Must have
cmd/dashboard-desktop/), reusinginternal/serverandinternal/storehttp://127.0.0.1:<port>/in the webview.dbfile — passes the path to the same read-onlystore.Open()flow<script>with a built CSS file (Tailwind CLI) embedded via//go:embedso the desktop build works offlineinternal/storeremains read-only — no new write paths introduced by the Wails layer./dashboard -db ... -port ...) continues to work unchangedBuild & CI
make desktop(or equivalent) target that invokeswails buildCONTRIBUTING.md(even if not automated yet)Nice to have (follow-up issues OK)
.dbfile to open in Dashboard (OS file association)Out of scope
Acceptance criteria
wails devlaunches a window that renders the current htmx UI identically to the browser version.dbvia the native dialog shows the same receipt list/detail views as./dashboard -db <path>go test ./...still passesgo build ./cmd/dashboardis unchanged in behaviorReferences
docs/adr/0001-wails-desktop-wrapper.md