107 lines
3.6 KiB
JSON
107 lines
3.6 KiB
JSON
{
|
|
"id": "desktop-shell-gui",
|
|
"name": "desktop-shell-gui",
|
|
"title": "Design desktop shell for ocswitch",
|
|
"description": "Define a desktop-shell architecture for ocswitch that adds launch-at-login, tray/menu, notifications, and a GUI control surface without rewriting existing Go core logic into desktop-specific code.",
|
|
"status": "completed",
|
|
"dev_type": "docs",
|
|
"scope": "desktop",
|
|
"package": null,
|
|
"priority": "P2",
|
|
"creator": "Apale",
|
|
"assignee": "Apale",
|
|
"createdAt": "2026-04-18",
|
|
"completedAt": "2026-04-18",
|
|
"branch": null,
|
|
"base_branch": "master",
|
|
"worktree_path": null,
|
|
"current_phase": 6,
|
|
"next_action": [
|
|
{
|
|
"phase": 1,
|
|
"action": "brainstorm"
|
|
},
|
|
{
|
|
"phase": 2,
|
|
"action": "research"
|
|
},
|
|
{
|
|
"phase": 3,
|
|
"action": "implement"
|
|
},
|
|
{
|
|
"phase": 4,
|
|
"action": "check"
|
|
},
|
|
{
|
|
"phase": 5,
|
|
"action": "update-spec"
|
|
},
|
|
{
|
|
"phase": 6,
|
|
"action": "record-session"
|
|
}
|
|
],
|
|
"commit": null,
|
|
"pr_url": null,
|
|
"subtasks": [],
|
|
"children": [],
|
|
"parent": null,
|
|
"relatedFiles": [
|
|
".trellis/tasks/04-18-desktop-shell-gui/prd.md",
|
|
"internal/config/config.go",
|
|
"internal/config/config_test.go",
|
|
"internal/app/types.go",
|
|
"internal/app/service.go",
|
|
"internal/app/service_test.go",
|
|
"internal/proxy/server.go",
|
|
"internal/opencode/opencode.go",
|
|
"internal/cli/root.go",
|
|
"internal/cli/provider.go",
|
|
"internal/cli/opencode.go",
|
|
"internal/cli/doctor.go",
|
|
"internal/cli/serve.go",
|
|
"internal/desktop/app.go",
|
|
"internal/desktop/bindings.go",
|
|
"internal/desktop/runtime_fallback.go",
|
|
"internal/desktop/runtime_wails.go",
|
|
"internal/desktop/http.go",
|
|
"internal/desktop/http_test.go",
|
|
"internal/desktop/tray.go",
|
|
"internal/desktop/notify.go",
|
|
"internal/desktop/autostart.go",
|
|
"internal/desktop/autostart_test.go",
|
|
"internal/desktop/wails.go",
|
|
"cmd/ocswitch-desktop/main_fallback.go",
|
|
"cmd/ocswitch-desktop/main_wails.go",
|
|
"main_wails.go",
|
|
"frontend/assets.go",
|
|
"frontend/package.json",
|
|
"frontend/package-lock.json",
|
|
"frontend/tsconfig.json",
|
|
"frontend/tsconfig.node.json",
|
|
"frontend/vite.config.ts",
|
|
"frontend/index.html",
|
|
"frontend/src/main.tsx",
|
|
"frontend/src/App.tsx",
|
|
"frontend/src/api.ts",
|
|
"frontend/src/types.ts",
|
|
"frontend/src/env.d.ts",
|
|
"frontend/src/styles.css",
|
|
"frontend/dist/index.html",
|
|
"frontend/dist/assets/"
|
|
],
|
|
"notes": "Implemented the next desktop-shell iteration with a real Wails integration path and a formal React + TypeScript frontend. The browser fallback shell now serves the same frontend assets as the Wails build, Linux XDG launch-at-login is implemented for real, and close-to-background behavior is wired through the desktop preference model. Verification passed for `npm run build`, `go test ./...`, and `go test -tags desktop_wails ./...`. `wails build -tags desktop_wails -debug` now reaches native compilation and is blocked only by missing Linux system packages (`pkg-config`, plus GTK/WebKit dev packages). Stable public tray and native notification APIs remain unresolved in the pinned Wails version, so those desktop-only pieces are intentionally limited to lifecycle wiring/placeholders rather than private-API integrations.",
|
|
"meta": {
|
|
"desktopShellRequired": true,
|
|
"recommendedShell": "wails",
|
|
"recommendedFrontend": "react",
|
|
"requiredDesktopCapabilities": [
|
|
"launch-at-login",
|
|
"tray-menu",
|
|
"native-notifications"
|
|
],
|
|
"sharedServiceLayer": "internal/app"
|
|
}
|
|
}
|