Merge main into claude/dreamy-brown-d12z7

Resolve conflicts against latest main:
- PLAN.md: keep main's updated Settings/theme list (window decorations,
  Black and Gold) while adopting PR's "Move to..." inline phrasing.
- README.md: keep main's theme list including Black and Gold.
- docs/API.md: keep main's atomic move_task documentation.

https://claude.ai/code/session_01NCtJ5PNhaDh21kYnDZXYsN
This commit is contained in:
Claude 2026-04-17 14:35:39 +00:00
commit 212e3d43d5
No known key found for this signature in database
4 changed files with 10 additions and 5 deletions

View file

@ -80,7 +80,7 @@ Pre-alpha. No users, no released builds, no data to migrate. Breaking changes to
- Sliding lists drawer with checkmark selection
- Settings popup overlay
- Workspace switcher drop-up with add/remove
- Per-workspace theme system (System default, Light, Dark, Nord, Dracula, Solarized Dark, Ink) via CSS `data-theme` attribute
- Per-workspace theme system (System default, Light, Dark, Nord, Dracula, Solarized Dark, Black and Gold, Ink) via CSS `data-theme` attribute
- Completed tasks section with animated show/hide
- Date picker/editor (DateTimePicker in new task + task detail); `has_time: bool` field tracks whether time is set
- Move task between lists (inline list in kebab menu, no submenu)
@ -108,6 +108,7 @@ Pre-alpha. No users, no released builds, no data to migrate. Breaking changes to
- Custom confirmation dialogs (ConfirmDialog component replaces native confirm())
- Workspace path validation (rejects system directories)
- Task detail auto-cleanup (taskStack clears when viewed task is deleted or list switches)
- Swipe gestures on mobile: swipe left/right on a task to toggle completion (swipe direction depends on current status)
- Accessibility: ARIA labels/roles on interactive components, keyboard handlers, `prefers-reduced-motion` CSS support
### GUI features NOT yet done

View file

@ -753,8 +753,8 @@ WorkspaceConfig {
- [x] Mark tasks complete/incomplete with animated transitions
- [x] Drag-and-drop task reordering
- [x] Sliding lists drawer (80cqi wide, left side)
- [x] Settings popup overlay (WebDAV config, theme selector)
- [x] Per-workspace theme system (System default, Light, Dark, Nord, Dracula, Solarized Dark, Ink)
- [x] Settings popup overlay (WebDAV config, theme selector, window decorations)
- [x] Per-workspace theme system (System default, Light, Dark, Nord, Dracula, Solarized Dark, Black and Gold, Ink)
- [x] Animated completed section show/hide
- [x] Move task between lists (kebab menu → "Move to..." inline list in task detail view, not a submenu)
- [x] Optional time on due dates (`has_time: bool` field on Task with `#[serde(default)]` for backward compat; replaces the hours==0 heuristic)
@ -911,7 +911,8 @@ npm run tauri ios build
- [ ] Multiple windows (optional)
#### Mobile-Specific
- [x] Swipe gestures (swipe to complete, swipe to delete)
- [x] Swipe gestures (swipe to toggle completion; direction depends on current task status)
- [ ] Swipe to delete
- [ ] Pull-to-refresh
- [ ] Touch-optimized UI elements
- [ ] Larger touch targets

View file

@ -55,7 +55,7 @@ onyx/
- Drag-and-drop reordering
- Sliding lists drawer, settings popup
- Workspace switcher with add/remove
- Per-workspace theme system (System default, Light, Dark, Nord, Dracula, Solarized Dark, Ink)
- Per-workspace theme system (System default, Light, Dark, Nord, Dracula, Solarized Dark, Black and Gold, Ink)
- Due date picker/editor with optional time
- Subtask hierarchy with three-panel slide navigation
- Move tasks between lists
@ -64,6 +64,7 @@ onyx/
- WebDAV setup flow with credential auto-population
- File watcher (auto-reloads on external changes)
- Auto-sync with configurable interval, status indicators
- Swipe gestures on mobile (swipe to toggle completion)
- Custom confirmation dialogs
- Desktop packaging (Linux: AppImage + .deb; Windows: MSI)

View file

@ -216,6 +216,8 @@ repo.rename_list(list_id, "New Name".to_string())?;
#### Move Task Between Lists
```rust
// Atomically moves a task from one list to another.
// If the delete-from-source step fails, the copy in the destination is rolled back.
repo.move_task(from_list_id, to_list_id, task_id)?;
```