docs: update CLAUDE.md and PLAN.md for Phase 3 progress
Mark completed features: move task, rename list, due date picker, group-by-due-date toggle, keyboard shortcuts, WebDAV credentials flow, file watcher. Update current state date, add Flutter GUI to architecture section, revise remaining TODO list. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
3ca49fe8f6
commit
471f181564
25
CLAUDE.md
25
CLAUDE.md
|
|
@ -32,6 +32,7 @@ Two-crate workspace (`resolver = "2"`, edition 2021) plus a Tauri app:
|
|||
- **onyx-core** — Pure Rust library. Storage trait with `FileSystemStorage` implementation, `TaskRepository` (main API), data models, config, error types. No CLI/UI dependencies.
|
||||
- **onyx-cli** — CLI frontend using clap. Commands are in `src/commands/` (init, workspace, list, task, group). Output formatting in `src/output.rs`.
|
||||
- **apps/tauri/** — Tauri v2 GUI. Svelte 5 frontend in `src/`, Rust backend in `src-tauri/` with Tauri commands that call into `onyx-core`.
|
||||
- **apps/flutter/** — Flutter GUI. Dart frontend in `lib/src/`, Rust backend in `rust/` via flutter_rust_bridge FFI into `onyx-core`.
|
||||
|
||||
### Key patterns
|
||||
|
||||
|
|
@ -55,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-30)
|
||||
### Current state (2026-03-31)
|
||||
|
||||
- **Phase 1** (Core + CLI): Complete
|
||||
- **Phase 2** (WebDAV sync): Backend done, CLI done, GUI partially wired (empty credentials issue)
|
||||
- **Phase 3** (GUI MVP): In progress — core task CRUD working, UI polished with animations
|
||||
- **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
|
||||
|
||||
### GUI features done
|
||||
|
||||
|
|
@ -72,17 +73,23 @@ 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)
|
||||
- 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)
|
||||
- Keyboard shortcuts (Escape priority chain: settings → detail → drawer → menus)
|
||||
- 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
|
||||
|
||||
### GUI features NOT yet done (CLI has these)
|
||||
### GUI features NOT yet done
|
||||
|
||||
- Due date editing (model supports it, not exposed in UI)
|
||||
- WebDAV setup flow (GUI passes empty credentials)
|
||||
- Push-only / pull-only sync modes
|
||||
- Sync status view
|
||||
- Sync status view/indicators
|
||||
- Workspace retarget/migrate
|
||||
- Group-by-due-date toggle
|
||||
- Subtask hierarchy (data model exists, not used anywhere)
|
||||
- List/workspace rename
|
||||
- Search/filter tasks
|
||||
- Desktop packaging (Windows, Linux, macOS)
|
||||
|
||||
## Roadmap
|
||||
|
||||
|
|
|
|||
13
PLAN.md
13
PLAN.md
|
|
@ -715,18 +715,19 @@ WorkspaceConfig {
|
|||
- [x] Settings popup overlay (WebDAV config, dark mode toggle)
|
||||
- [x] Dark mode (GNOME-style neutral theme, cyan-blue accent)
|
||||
- [x] Animated completed section show/hide
|
||||
- [ ] Move task between lists (needs `move_task(from_list, to_list, task_id)` added to onyx-core + Tauri command, then wire into task detail kebab menu)
|
||||
- [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)
|
||||
- [ ] Due date picker/editor (backend supports it, needs date input in new task toast + inline editing)
|
||||
- [ ] WebDAV setup flow with credentials (settings panel has fields, triggerSync needs to pull creds from config)
|
||||
- [ ] List/workspace rename (needs `rename_list` added to onyx-core first)
|
||||
- [ ] Keyboard shortcuts (Escape to close drawers/menus, tab navigation, Enter behaviors)
|
||||
- [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
|
||||
- [ ] Group-by-due-date toggle per list
|
||||
- [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] File watcher (notify crate, 500ms debounce, auto-reloads UI on external file changes)
|
||||
|
||||
### Deliverables
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue