docs: update CLAUDE.md and PLAN.md to reflect Phase 3 completion

Mark all Phase 3 features complete: has_time, sync status indicators,
push/pull mode, desktop packaging (Linux), and Flutter GUI parity.
Update current state date and feature lists.
This commit is contained in:
Tristan Michael 2026-04-01 01:38:18 -07:00
parent 95ba90d2c1
commit 12b500ef6f
2 changed files with 13 additions and 10 deletions

View file

@ -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. - **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). - **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 1** (Core + CLI): Complete
- **Phase 2** (WebDAV sync): Backend done, CLI done, GUI wired (settings auto-populates credentials) - **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 ### 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 - Workspace switcher drop-up with add/remove
- Dark mode (GNOME-style neutral grays, cyan-blue accent) - Dark mode (GNOME-style neutral grays, cyan-blue accent)
- Completed tasks section with animated show/hide - 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) - Move task between lists (kebab menu → "Move to..." submenu)
- List rename (inline input via list kebab menu) - List rename (inline input via list kebab menu)
- Group-by-due-date toggle per list (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) - WebDAV setup flow (settings auto-populates URL/credentials from config + keychain)
- File watcher (notify crate, 500ms debounce, auto-reloads on external changes) - File watcher (notify crate, 500ms debounce, auto-reloads on external changes)
- Setup screen with window dragging + "Open Existing Folder" option - 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 ### GUI features NOT yet done
- Push-only / pull-only sync modes
- Sync status view/indicators
- Workspace retarget/migrate - Workspace retarget/migrate
- Subtask hierarchy (data model exists, not used anywhere) - Subtask hierarchy (data model exists, not used anywhere)
- Search/filter tasks - Search/filter tasks
- Desktop packaging (Windows, Linux, macOS) - Desktop packaging for Windows and macOS
## Roadmap ## Roadmap

View file

@ -716,17 +716,17 @@ WorkspaceConfig {
- [x] Dark mode (GNOME-style neutral theme, cyan-blue accent) - [x] Dark mode (GNOME-style neutral theme, cyan-blue accent)
- [x] Animated completed section show/hide - [x] Animated completed section show/hide
- [x] Move task between lists (kebab menu → "Move to..." submenu in task detail view) - [x] Move task between lists (kebab menu → "Move to..." submenu in task detail view)
- [ ] Optional time on due dates (backend `due_date` is `DateTime<Utc>` — 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] 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] 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] List rename (inline input via list kebab menu in drawer)
- [x] Keyboard shortcuts (Escape closes settings → detail → drawer → menus in priority order) - [x] Keyboard shortcuts (Escape closes settings → detail → drawer → menus in priority order)
- [ ] Sync status indicators (per workspace) - [x] Sync status indicators (last-sync time + upload/download counts chip in TasksScreen)
- [ ] Push/pull sync mode selection - [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) - [x] Group-by-due-date toggle per list (checkmark toggle in list kebab menu)
- [ ] Subtask hierarchy (data model exists, needs UI) - [ ] Subtask hierarchy (data model exists, needs UI)
- [ ] Search/filter tasks - [ ] 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) - [x] File watcher (notify crate, 500ms debounce, auto-reloads UI on external file changes)
### Deliverables ### Deliverables
@ -735,6 +735,7 @@ WorkspaceConfig {
- [ ] Sub-300ms startup time (not yet measured/optimized) - [ ] Sub-300ms startup time (not yet measured/optimized)
- [x] Clean, minimal UI - [x] Clean, minimal UI
- [ ] Feature parity with CLI - [ ] Feature parity with CLI
- [x] Flutter GUI at feature parity with Tauri (WebDAV, has_time, sync status, sync mode)
### Build & Release ### Build & Release