diff --git a/CLAUDE.md b/CLAUDE.md index 5ebf7b6..5656fb0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -56,11 +56,11 @@ The GUI uses Svelte 5 runes mode (`$state`, `$derived`, `$effect`, `$props()`). - **Kebab menus**: Tasks, lists, and workspaces all use kebab → submenu pattern for delete. - **New task**: FAB button opens bottom toast sheet (outside sliding container for fixed positioning). -### Current state (2026-03-31) +### Current state (2026-04-01) - **Phase 1** (Core + CLI): Complete - **Phase 2** (WebDAV sync): Backend done, CLI done, GUI wired (settings auto-populates credentials) -- **Phase 3** (GUI MVP): Near complete — core features working, both Tauri and Flutter GUIs maintained +- **Phase 3** (GUI MVP): Complete — both Tauri and Flutter GUIs at feature parity ### GUI features done @@ -73,7 +73,7 @@ The GUI uses Svelte 5 runes mode (`$state`, `$derived`, `$effect`, `$props()`). - Workspace switcher drop-up with add/remove - Dark mode (GNOME-style neutral grays, cyan-blue accent) - Completed tasks section with animated show/hide -- Due date picker/editor (DateTimePicker in new task + task detail) +- Due date picker/editor (DateTimePicker in new task + task detail); `has_time: bool` field tracks whether time is set - Move task between lists (kebab menu → "Move to..." submenu) - List rename (inline input via list kebab menu) - Group-by-due-date toggle per list (list kebab menu) @@ -81,15 +81,17 @@ The GUI uses Svelte 5 runes mode (`$state`, `$derived`, `$effect`, `$props()`). - WebDAV setup flow (settings auto-populates URL/credentials from config + keychain) - File watcher (notify crate, 500ms debounce, auto-reloads on external changes) - Setup screen with window dragging + "Open Existing Folder" option +- Sync status indicators (last-sync time + upload/download counts chip) +- Push/pull/full sync mode selection (session-only, in settings) +- Desktop packaging (Linux: AppImage + .deb) +- Flutter GUI at full parity with Tauri (WebDAV UI, has_time, sync status, sync mode) ### GUI features NOT yet done -- Push-only / pull-only sync modes -- Sync status view/indicators - Workspace retarget/migrate - Subtask hierarchy (data model exists, not used anywhere) - Search/filter tasks -- Desktop packaging (Windows, Linux, macOS) +- Desktop packaging for Windows and macOS ## Roadmap diff --git a/PLAN.md b/PLAN.md index ccaae6f..2c3f343 100644 --- a/PLAN.md +++ b/PLAN.md @@ -716,17 +716,17 @@ WorkspaceConfig { - [x] Dark mode (GNOME-style neutral theme, cyan-blue accent) - [x] Animated completed section show/hide - [x] Move task between lists (kebab menu → "Move to..." submenu in task detail view) -- [ ] Optional time on due dates (backend `due_date` is `DateTime` — needs a separate `due_time` field or a nullable time component so date-only tasks don't default to midnight; currently the GUI uses `hours == 0 && minutes == 0` as a heuristic for "no time set" which breaks for actual midnight times) +- [x] Optional time on due dates (`has_time: bool` field on Task with `#[serde(default)]` for backward compat; replaces the hours==0 heuristic) - [x] Due date picker/editor (DateTimePicker component in both new task toast + task detail view) - [x] WebDAV setup flow with credentials (settings auto-populates URL/username/password from config + keychain on open) - [x] List rename (inline input via list kebab menu in drawer) - [x] Keyboard shortcuts (Escape closes settings → detail → drawer → menus in priority order) -- [ ] Sync status indicators (per workspace) -- [ ] Push/pull sync mode selection +- [x] Sync status indicators (last-sync time + upload/download counts chip in TasksScreen) +- [x] Push/pull sync mode selection (session-only sync direction selector in SettingsScreen) - [x] Group-by-due-date toggle per list (checkmark toggle in list kebab menu) - [ ] Subtask hierarchy (data model exists, needs UI) - [ ] Search/filter tasks -- [ ] Desktop packaging (Windows, Linux, macOS) +- [x] Desktop packaging (Linux: AppImage + .deb; Windows/macOS not yet verified) - [x] File watcher (notify crate, 500ms debounce, auto-reloads UI on external file changes) ### Deliverables @@ -735,6 +735,7 @@ WorkspaceConfig { - [ ] Sub-300ms startup time (not yet measured/optimized) - [x] Clean, minimal UI - [ ] Feature parity with CLI +- [x] Flutter GUI at feature parity with Tauri (WebDAV, has_time, sync status, sync mode) ### Build & Release