- Standardize header height (h-11) across detail view and main panel
- Move kebab menu below header in task detail view
- Move workspace switcher to drawer header with window drag support
- Move settings button to drawer footer with label
- Add mark-as-completed/restore to kebab menu, remove bottom action bar
- Enlarge checkbox hit target without changing visual size
- Show checkmark animation before task collapse transition
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add header(), detail(), item(), blank() functions to output.rs
- Replace all raw println!() calls with output::* equivalents
- Fix {:?} debug format for paths — use .display() for clean output
- Extract print_tasks() helper to deduplicate task display logic
- Consistent formatting: info for empty states, item for list entries
- Replace redundant closures with function references (webdav.rs, sync.rs)
- Use is_some_and instead of map_or(false, ...) (sync.rs)
- Use map instead of and_then(|x| Some(...)) (sync.rs)
- Use if-let instead of single-arm match (webdav.rs)
- Add load_credentials Tauri command and use it in triggerSync() instead
of passing empty username/password strings
- Replace raw __TAURI_INTERNALS__.invoke() with proper invoke import in
SettingsScreen
- Wrap window event listeners in $effect() with cleanup to prevent
memory leak on component remount
- Return created Task from createTask() and use it directly in
NewTaskInput instead of guessing from array index
- Add confirm() dialogs before deleting tasks, lists, and workspaces
Replace illegal filesystem characters (/ \ : * ? " < > |) and control
characters with underscores. Fall back to task ID as filename if the
sanitized title is empty.
- Add GPL-3.0 LICENSE file
- Update README with current project status (all 3 phases), fix structure
- Update PLAN.md Phase 2 API signatures to match actual implementation
- Add WebDAV & Sync section to docs/API.md
- Update docs/DEVELOPMENT.md with Tauri app structure and setup
- Add metadata (description, license, repository) to all Cargo.toml files
- Update .gitignore with node_modules, .env, dist, build entries
- Remove stale Cargo.lock from .gitignore (apps should track it)
- Update example dates from 2025 to 2026 across all docs
- Update CLAUDE.md date to 2026-03-30
Use the same visual structure as TaskDetailView: large bold title input,
description textarea with notes icon, and date/time row with
DateTimePicker. Uses fixed positioning with a combined backdrop wrapper
to avoid layout shifts and ensure proper slide-up animation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Transparent windows require platform-specific workarounds (WebView2 on
Windows, compositor support on Linux) and don't work on mobile. Use an
opaque window instead, removing the outer padding, rounded corners, and
drop shadow that depended on transparency.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace inline task editing with a full-viewport detail panel that
slides in from the right. Includes editable title, description, custom
calendar-based date/time picker (bottom sheet), kebab menu with delete,
and mark complete/restore button. Simplify TaskItem to remove inline
editing and kebab menu, add chevron hint and onopen callback. Use list
icon for drawer toggle instead of back arrow.
Remove native window decorations and add transparent background with
rounded corners, border, and drop shadow. Add custom close button
(Linux) and minimize/maximize/close (Windows) in the header. Add
programmatic window dragging via mousedown and double-click to maximize.
Install tauri-plugin-os for platform detection. Move sync spinner to
bottom-right corner. Convert drawer layout from vw to cqi units to
support the padding-based shadow approach.
- Remove Flutter app and egui placeholder crate, commit to Tauri as sole GUI
- Update PLAN.md to replace egui with Tauri across all phases (v4.0)
- Redesign task screen: sliding drawer for list picker, floating FAB for new tasks,
bottom sheet toast for task creation with title + description fields
- Add description support to create_task Tauri command
- Lighten dark theme to GNOME-style neutral grays, shift primary to cyan-blue
- Fix Wayland compatibility (dev port change)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add 'list create' command to features and CLI examples
- Clarify that task titles exclude .md extension in filenames
- Change deliverables from ✅ to - [ ] for consistency with feature checklists
Changes task ordering model:
- Remove SortOrder enum (Manual/ByDueDate)
- Replace with simple group_by_due_date boolean
- Tasks always use manual ordering via task_order array
- Grouping by due date is optional view toggle
Data model changes:
- TaskList.sort_order → TaskList.group_by_due_date: bool
- .listdata.json: "sort_order" → "group_by_due_date": false
- API: set_sort_order() → set_group_by_due_date()
- CLI: sort command → group enable/disable command
Benefits:
- Simpler mental model: always manual order, optional grouping
- Less complex to implement and reason about
- User always has ordering control via task_order
- Grouping is just a view option
Add workspace path management:
- workspace retarget: Update path in config (files already moved)
Use when files moved externally or different mount point
- workspace migrate: Move files AND update config
Use to relocate workspace to new folder
Clarify edit command behavior:
- Added note that edit is CLI-only (not mobile/GUI)
- Explains: creates temp file, opens $EDITOR, blocks, parses
- GUI/mobile use get_task() + update_task() directly
workspace remove behavior:
- Only removes from config, files remain on disk
- User responsible for deleting files if desired
Updates the project plan to support multiple independent task
workspaces, allowing users to maintain separate task folders for
different contexts (e.g., personal vs shared/collaborative).
Key changes:
Data Model:
- AppConfig now contains HashMap of named WorkspaceConfig
- WorkspaceConfig holds path and WebDAV settings per workspace
- current_workspace field tracks active workspace
CLI Features:
- `init` command now creates named workspace
- New workspace management commands:
- workspace add: Add additional workspaces
- workspace list: View all workspaces
- workspace switch: Change current workspace
- workspace remove: Delete workspace
- All commands support --workspace flag for explicit targeting
- Commands use current workspace by default
Phase 2 (WebDAV):
- Per-workspace WebDAV configuration
- Each workspace can sync to different WebDAV server
- Sync commands are workspace-aware
- Status command shows per-workspace or all workspaces
Phase 3 (GUI):
- Workspace selector dropdown in toolbar
- Quick-switch between workspaces UI
- Workspace setup dialog on first launch
- Settings panel for workspace management
- Per-workspace last opened list tracking
Benefits:
- Separate personal and shared/collaborative task folders
- Different sync configurations per workspace
- Better organization for different contexts
- Flexible folder locations (local, Dropbox, etc.)
Enhanced CLI Usage Examples in Phase 1 and Phase 2 with realistic
output examples showing:
Phase 1 (Core & CLI):
- Init command with success messages
- Add tasks with UUID confirmation and due date display
- List command showing task status, counts, and due dates
- Complete/edit/delete with confirmation messages
- Config and sort commands with feedback
Phase 2 (WebDAV Sync):
- Interactive setup with prompts and keychain confirmation
- Push/pull with file upload/download progress
- Automatic two-way sync with change indicators
- Status command showing connection, last sync, and pending changes
All examples now show:
- Command prompts ($)
- Realistic UUIDs
- Success indicators (✓)
- Progress/status information
- Colored output representation (checkmarks, arrows)
- Helpful feedback messages
Makes it much clearer what users can expect from the CLI.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated terminology to use standard "recurring tasks" instead of
"repeating tasks". Also updated frontmatter fields:
- repeat -> recurs
- repeat_until -> recurs_until
"Recurring" is the more common and standard term in task management.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added detailed repeating tasks functionality to Advanced Features:
How it works:
- When a repeating task is completed, it automatically:
1. Returns to backlog status
2. Updates due date by specified interval
Supported intervals:
- daily, weekly, monthly, yearly
- Custom intervals (e.g., "every 3 days")
- Optional end date or repetition limit
Frontmatter fields:
- repeat: "daily" | "weekly" | "monthly" | "yearly" | "every N days/weeks/months"
- repeat_until: (optional) end date for repetitions
Example use cases:
- Daily standup notes
- Weekly review tasks
- Monthly bill payments
- Quarterly reports
This is a Phase 7 feature as it requires background processing
to check completed tasks and reset them based on intervals.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Clean up data model and remove unnecessary notes:
1. Simplified TaskStatus:
- Only two states: Backlog and Completed
- Removed in-progress, not-started complexity
- Clearer, simpler model
2. Removed unnecessary comments:
- "Note: position stored in .listdata.json" (obvious from context)
- "Note: theme and UI preferences added in Phase 3" (unnecessary)
3. Removed subtask folder example:
- Already have parent_id for subtask relationships
- No need to show nested folder structure
- Keeps file structure example simple
4. Simplified AppConfig in Phase 1:
- Just local_path, no extra comments
Changes keep the plan focused and remove noise.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>