docs: audit and update all markdown files to reflect current progress
Phase 2 (WebDAV sync) and Phase 3 (GUI MVP) are complete but docs still showed them as in-progress. Phase 4 Android steps 1-4 are done. Windows MSI packaging was added. Multiple doc inaccuracies fixed: missing Error variants, stale struct definitions, wrong filenames in directory trees. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
1b8febcb45
commit
52de450a0f
|
|
@ -57,7 +57,7 @@ The GUI uses Svelte 5 runes mode (`$state`, `$derived`, `$effect`, `$props()`).
|
||||||
- **Main panel header**: Hamburger + window controls in top bar; list name (large, bold) + kebab below divider (matching task detail layout). Kebab has Rename, Group by due date, Delete completed, Delete list.
|
- **Main panel header**: Hamburger + window controls in top bar; list name (large, bold) + kebab below divider (matching task detail layout). Kebab has Rename, Group by due date, Delete completed, Delete list.
|
||||||
- **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-04-01)
|
### Current state (2026-04-03)
|
||||||
|
|
||||||
- **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)
|
||||||
|
|
@ -86,7 +86,7 @@ The GUI uses Svelte 5 runes mode (`$state`, `$derived`, `$effect`, `$props()`).
|
||||||
- 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)
|
- Sync status indicators (last-sync time + upload/download counts chip)
|
||||||
- Push/pull/full sync mode selection (session-only, in settings)
|
- Push/pull/full sync mode selection (session-only, in settings)
|
||||||
- Desktop packaging (Linux: AppImage + .deb)
|
- Desktop packaging (Linux: AppImage + .deb; Windows: MSI)
|
||||||
- Tauri desktop-only deps (notify, keyring) feature-gated for Android compilation
|
- Tauri desktop-only deps (notify, keyring) feature-gated for Android compilation
|
||||||
- Subtask hierarchy: subtask count shown on parent tasks in list, subtask detail via three-panel slide navigation, inline add at top of subtask list (new subtasks prepend), collapsible completed subtasks section, cascade delete (parent deletion removes all subtasks with confirmation warning)
|
- Subtask hierarchy: subtask count shown on parent tasks in list, subtask detail via three-panel slide navigation, inline add at top of subtask list (new subtasks prepend), collapsible completed subtasks section, cascade delete (parent deletion removes all subtasks with confirmation warning)
|
||||||
- Custom confirmation dialogs (ConfirmDialog component replaces native confirm())
|
- Custom confirmation dialogs (ConfirmDialog component replaces native confirm())
|
||||||
|
|
@ -95,7 +95,7 @@ The GUI uses Svelte 5 runes mode (`$state`, `$derived`, `$effect`, `$props()`).
|
||||||
|
|
||||||
- Workspace retarget/migrate
|
- Workspace retarget/migrate
|
||||||
- Search/filter tasks
|
- Search/filter tasks
|
||||||
- Desktop packaging for Windows and macOS
|
- Desktop packaging for macOS
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
||||||
|
|
|
||||||
44
PLAN.md
44
PLAN.md
|
|
@ -508,15 +508,15 @@ keyring = "3.0"
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- [ ] WebDAV client implementation in core library
|
- [x] WebDAV client implementation in core library
|
||||||
- [ ] Credential storage (platform keychain)
|
- [x] Credential storage (platform keychain)
|
||||||
- [ ] Bi-directional sync (push/pull)
|
- [x] Bi-directional sync (push/pull)
|
||||||
- [ ] Conflict resolution (last-write-wins)
|
- [x] Conflict resolution (last-write-wins)
|
||||||
- [ ] Offline queue for pending operations
|
- [x] Offline queue for pending operations
|
||||||
- [ ] CLI: `sync --setup` command
|
- [x] CLI: `sync --setup` command
|
||||||
- [ ] CLI: `sync --push` command
|
- [x] CLI: `sync --push` command
|
||||||
- [ ] CLI: `sync --pull` command
|
- [x] CLI: `sync --pull` command
|
||||||
- [ ] CLI: `sync --status` command
|
- [x] CLI: `sync --status` command
|
||||||
- [ ] Progress indicators for sync operations
|
- [ ] Progress indicators for sync operations
|
||||||
|
|
||||||
### CLI Usage Examples
|
### CLI Usage Examples
|
||||||
|
|
@ -590,9 +590,9 @@ Workspace: shared
|
||||||
|
|
||||||
### Deliverables
|
### Deliverables
|
||||||
|
|
||||||
- [ ] Working WebDAV sync in backend
|
- [x] Working WebDAV sync in backend
|
||||||
- [ ] CLI can sync with remote WebDAV server
|
- [x] CLI can sync with remote WebDAV server
|
||||||
- [ ] Reliable conflict resolution
|
- [x] Reliable conflict resolution
|
||||||
- [ ] Tested with Nextcloud, ownCloud
|
- [ ] Tested with Nextcloud, ownCloud
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -726,12 +726,12 @@ WorkspaceConfig {
|
||||||
- [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)
|
||||||
- [x] Subtask hierarchy (expand/collapse, inline add, cascade toggle/delete)
|
- [x] Subtask hierarchy (expand/collapse, inline add, cascade toggle/delete)
|
||||||
- [ ] Search/filter tasks
|
- [ ] Search/filter tasks
|
||||||
- [x] Desktop packaging (Linux: AppImage + .deb; Windows/macOS not yet verified)
|
- [x] Desktop packaging (Linux: AppImage + .deb; Windows: MSI; 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
|
||||||
|
|
||||||
- [x] Functional desktop GUI app (Linux verified, Wayland native)
|
- [x] Functional desktop GUI app (Linux verified, Windows MSI packaging added)
|
||||||
- [ ] 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
|
||||||
|
|
@ -803,15 +803,15 @@ npm run tauri ios build
|
||||||
|
|
||||||
#### Features
|
#### Features
|
||||||
|
|
||||||
- [ ] Gate file-watcher initialization behind `#[cfg(not(mobile))]`
|
- [x] Gate file-watcher initialization behind `#[cfg(not(mobile))]`
|
||||||
- [ ] Install Android Studio + NDK, configure env vars
|
- [x] Install Android Studio + NDK, configure env vars
|
||||||
- [ ] Add Android Rust targets
|
- [x] Add Android Rust targets
|
||||||
- [ ] `npm run tauri android init` (generates `gen/android/`)
|
- [x] `npm run tauri android init` (generates `gen/android/`)
|
||||||
- [ ] Confirm `npm run tauri android build` succeeds
|
- [x] Confirm `npm run tauri android build` succeeds
|
||||||
|
- [ ] Basic smoke test: app launches, workspace setup, create a task
|
||||||
- [ ] Set up macOS CI for iOS builds
|
- [ ] Set up macOS CI for iOS builds
|
||||||
- [ ] `npm run tauri ios init` (generates `gen/ios/`)
|
- [ ] `npm run tauri ios init` (generates `gen/ios/`)
|
||||||
- [ ] Confirm `npm run tauri ios build` succeeds on CI
|
- [ ] Confirm `npm run tauri ios build` succeeds on CI
|
||||||
- [ ] Basic smoke test: app launches, workspace setup, create a task
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -1011,6 +1011,6 @@ This project is free and open-source software licensed under GPL v3.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Last Updated**: 2026-04-01
|
**Last Updated**: 2026-04-03
|
||||||
**Document Version**: 4.1
|
**Document Version**: 4.2
|
||||||
**Status**: Ready to Implement - Milestone-Driven Plan
|
**Status**: Ready to Implement - Milestone-Driven Plan
|
||||||
|
|
|
||||||
22
README.md
22
README.md
|
|
@ -27,8 +27,9 @@ onyx/
|
||||||
## Project Status
|
## Project Status
|
||||||
|
|
||||||
- **Phase 1** (Core + CLI): Complete
|
- **Phase 1** (Core + CLI): Complete
|
||||||
- **Phase 2** (WebDAV Sync): Backend and CLI complete, GUI partially wired
|
- **Phase 2** (WebDAV Sync): Complete — backend, CLI, and GUI all wired
|
||||||
- **Phase 3** (GUI MVP): In progress — core task CRUD working, UI polished
|
- **Phase 3** (GUI MVP): Complete
|
||||||
|
- **Phase 4** (Mobile): Tauri Android cfg-gated, needs `tauri android init` + build
|
||||||
|
|
||||||
### Core Library (`onyx-core`)
|
### Core Library (`onyx-core`)
|
||||||
- Data models (Task, TaskList, AppConfig, WorkspaceConfig)
|
- Data models (Task, TaskList, AppConfig, WorkspaceConfig)
|
||||||
|
|
@ -36,8 +37,9 @@ onyx/
|
||||||
- Local storage with repository pattern
|
- Local storage with repository pattern
|
||||||
- Multiple workspace support
|
- Multiple workspace support
|
||||||
- Task ordering and grouping
|
- Task ordering and grouping
|
||||||
|
- Subtask hierarchy (parent_id)
|
||||||
- WebDAV sync with three-way diff and offline queue
|
- WebDAV sync with three-way diff and offline queue
|
||||||
- Platform keychain credential storage
|
- Platform keychain credential storage (feature-gated for Android)
|
||||||
|
|
||||||
### CLI (`onyx-cli`)
|
### CLI (`onyx-cli`)
|
||||||
- Workspace management (init, add, list, switch, remove, retarget, migrate)
|
- Workspace management (init, add, list, switch, remove, retarget, migrate)
|
||||||
|
|
@ -52,7 +54,17 @@ onyx/
|
||||||
- Drag-and-drop reordering
|
- Drag-and-drop reordering
|
||||||
- Sliding lists drawer, settings popup
|
- Sliding lists drawer, settings popup
|
||||||
- Workspace switcher with add/remove
|
- Workspace switcher with add/remove
|
||||||
- Dark mode
|
- Dark mode (GNOME-style neutral grays, cyan-blue accent)
|
||||||
|
- Due date picker/editor with optional time
|
||||||
|
- Subtask hierarchy with three-panel slide navigation
|
||||||
|
- Move tasks between lists
|
||||||
|
- List rename, group-by-due-date toggle, delete completed tasks
|
||||||
|
- Keyboard shortcuts (Escape priority chain)
|
||||||
|
- WebDAV setup flow with credential auto-population
|
||||||
|
- File watcher (auto-reloads on external changes)
|
||||||
|
- Sync status indicators and push/pull/full mode selection
|
||||||
|
- Custom confirmation dialogs
|
||||||
|
- Desktop packaging (Linux: AppImage + .deb; Windows: MSI)
|
||||||
|
|
||||||
## Development Setup
|
## Development Setup
|
||||||
|
|
||||||
|
|
@ -199,7 +211,7 @@ cargo test -- --nocapture
|
||||||
## What's Next?
|
## What's Next?
|
||||||
|
|
||||||
- **Phase 4**: Mobile support (iOS & Android via Tauri v2 mobile)
|
- **Phase 4**: Mobile support (iOS & Android via Tauri v2 mobile)
|
||||||
- **Phase 5**: GUI advanced features (subtasks, search, date picker)
|
- **Phase 5**: GUI advanced features (rich markdown editor, search/filter)
|
||||||
- **Phase 6**: Mobile polish and platform-specific integrations
|
- **Phase 6**: Mobile polish and platform-specific integrations
|
||||||
- **Phase 7**: Google Tasks importer and unique features
|
- **Phase 7**: Google Tasks importer and unique features
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ pub struct Task {
|
||||||
pub description: String,
|
pub description: String,
|
||||||
pub status: TaskStatus,
|
pub status: TaskStatus,
|
||||||
pub due_date: Option<DateTime<Utc>>,
|
pub due_date: Option<DateTime<Utc>>,
|
||||||
|
pub has_time: bool, // Whether due_date includes a specific time
|
||||||
pub created_at: DateTime<Utc>,
|
pub created_at: DateTime<Utc>,
|
||||||
pub updated_at: DateTime<Utc>,
|
pub updated_at: DateTime<Utc>,
|
||||||
pub parent_id: Option<Uuid>,
|
pub parent_id: Option<Uuid>,
|
||||||
|
|
@ -106,6 +107,8 @@ Configuration for a single workspace.
|
||||||
```rust
|
```rust
|
||||||
pub struct WorkspaceConfig {
|
pub struct WorkspaceConfig {
|
||||||
pub path: PathBuf,
|
pub path: PathBuf,
|
||||||
|
pub webdav_url: Option<String>,
|
||||||
|
pub last_sync: Option<DateTime<Utc>>,
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -374,6 +377,9 @@ pub enum Error {
|
||||||
WorkspaceNotFound(String),
|
WorkspaceNotFound(String),
|
||||||
ListNotFound(String),
|
ListNotFound(String),
|
||||||
TaskNotFound(String),
|
TaskNotFound(String),
|
||||||
|
WebDav(String),
|
||||||
|
Sync(String),
|
||||||
|
Credential(String),
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,8 @@ onyx/
|
||||||
│ │ └── lib/
|
│ │ └── lib/
|
||||||
│ │ ├── screens/ # Full-page views
|
│ │ ├── screens/ # Full-page views
|
||||||
│ │ ├── components/ # Reusable UI components
|
│ │ ├── components/ # Reusable UI components
|
||||||
│ │ └── stores/ # Svelte state (app.svelte.ts)
|
│ │ ├── stores/ # Svelte state (app.svelte.ts)
|
||||||
|
│ │ └── types.ts # TypeScript type definitions
|
||||||
│ └── src-tauri/ # Rust backend (Tauri commands)
|
│ └── src-tauri/ # Rust backend (Tauri commands)
|
||||||
│ ├── Cargo.toml
|
│ ├── Cargo.toml
|
||||||
│ ├── tauri.conf.json
|
│ ├── tauri.conf.json
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue