opencode-provider-switch/.trellis/workspace/OpenCode/journal-1.md
apale7 f3b211f745 feat(desktop): refresh localized control panel
Rebuild the Wails desktop shell into a localized tabbed control panel so provider, alias, sync, and settings workflows are easier to manage in one place. Extend desktop preferences with theme and language, document the desktop build flow, and keep the browser fallback shell aligned with the same frontend.
2026-04-19 10:07:46 +08:00

102 lines
3.2 KiB
Markdown

# Journal - OpenCode (Part 1)
> AI development session journal
> Started: 2026-04-18
---
## Session 1: Finish Windows desktop integrations
**Date**: 2026-04-18
**Task**: Finish Windows desktop integrations
**Branch**: `master`
### Summary
Completed the Windows-focused desktop integration pass for `ocswitch desktop` by fixing the Wails bridge path, adding native tray controls, wiring desktop notifications, implementing Windows launch-at-login, and fixing cross-platform file locking that previously blocked Windows builds.
### Main Changes
| Area | Description |
|------|-------------|
| Wails bridge | Corrected frontend bridge detection and access from `window.go.main.App` to `window.go.desktop.App`. |
| Tray | Added Wails-only native tray integration via `github.com/getlantern/systray` with open/hide/start/stop/quit actions and proxy status display. |
| Notifications | Hooked desktop preference state to Wails runtime notifications for proxy start/stop, sync apply, and notification enablement. |
| Launch at login | Added Windows Startup-folder `.cmd` launcher generation while preserving existing Linux XDG autostart flow. |
| Windows compatibility | Replaced direct `syscall.Flock` usage with platform-specific file locking helpers and aligned config tests with cross-platform lock helpers. |
| Task docs | Added implementation PRD for `.trellis/tasks/04-18-windows-desktop-integrations/`. |
**Updated Files**:
- `.trellis/tasks/04-18-windows-desktop-integrations/prd.md`
- `.trellis/tasks/04-18-windows-desktop-integrations/task.json`
- `.trellis/workspace/OpenCode/journal-1.md`
- `internal/desktop/app.go`
- `internal/desktop/tray.go`
- `internal/desktop/tray_wails.go`
- `internal/desktop/notify.go`
- `internal/desktop/autostart.go`
- `internal/desktop/autostart_test.go`
- `internal/desktop/runtime_wails.go`
- `internal/desktop/runtime_fallback.go`
- `internal/fileutil/fileutil.go`
- `internal/fileutil/lock_unix.go`
- `internal/fileutil/lock_windows.go`
- `internal/config/config_test.go`
- `internal/config/file_lock_testhelper_unix_test.go`
- `internal/config/file_lock_testhelper_windows_test.go`
- `frontend/index.html`
- `frontend/src/api.ts`
- `frontend/src/env.d.ts`
- `frontend/tsconfig.json`
### Git Commits
(No commits - implementation left in worktree)
### Testing
- [OK] `npm run build` (in `frontend/`)
- [OK] `go test ./internal/desktop`
- [OK] `go test -tags desktop_wails ./internal/desktop`
- [OK] `go test ./internal/config ./internal/opencode`
### Status
[OK] **Completed**
### Next Steps
- If needed, run a full desktop binary build path (`wails build` or Windows packaging) on a machine with final packaging prerequisites.
## Session 1: Desktop GUI i18n and UX refresh
**Date**: 2026-04-19
**Task**: Desktop GUI i18n and UX refresh
**Branch**: `master`
### Summary
Added desktop theme/language preferences across Go and frontend, rebuilt the app into a tabbed localized shell, refreshed CSS theming/layout, updated Wails desktop prefs models, and verified with npm run build plus go test ./internal/app ./internal/desktop.
### Main Changes
(Add details)
### Git Commits
(No commits - planning session)
### Testing
- [OK] (Add test results)
### Status
[OK] **Completed**
### Next Steps
- None - task complete