Merge pull request #24 from SteelDynamite/docs/audit-update

docs: audit and update all markdown files to reflect current progress
This commit is contained in:
SteelDynamite 2026-04-03 11:58:19 +01:00 committed by GitHub
commit 4483a6450f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 50 additions and 31 deletions

View file

@ -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.
- **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 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
- 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)
- Desktop packaging (Linux: AppImage + .deb; Windows: MSI)
- 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)
- 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
- Search/filter tasks
- Desktop packaging for Windows and macOS
- Desktop packaging for macOS
## Roadmap

44
PLAN.md
View file

@ -508,15 +508,15 @@ keyring = "3.0"
### Features
- [ ] WebDAV client implementation in core library
- [ ] Credential storage (platform keychain)
- [ ] Bi-directional sync (push/pull)
- [ ] Conflict resolution (last-write-wins)
- [ ] Offline queue for pending operations
- [ ] CLI: `sync --setup` command
- [ ] CLI: `sync --push` command
- [ ] CLI: `sync --pull` command
- [ ] CLI: `sync --status` command
- [x] WebDAV client implementation in core library
- [x] Credential storage (platform keychain)
- [x] Bi-directional sync (push/pull)
- [x] Conflict resolution (last-write-wins)
- [x] Offline queue for pending operations
- [x] CLI: `sync --setup` command
- [x] CLI: `sync --push` command
- [x] CLI: `sync --pull` command
- [x] CLI: `sync --status` command
- [ ] Progress indicators for sync operations
### CLI Usage Examples
@ -590,9 +590,9 @@ Workspace: shared
### Deliverables
- [ ] Working WebDAV sync in backend
- [ ] CLI can sync with remote WebDAV server
- [ ] Reliable conflict resolution
- [x] Working WebDAV sync in backend
- [x] CLI can sync with remote WebDAV server
- [x] Reliable conflict resolution
- [ ] Tested with Nextcloud, ownCloud
---
@ -726,12 +726,12 @@ WorkspaceConfig {
- [x] Group-by-due-date toggle per list (checkmark toggle in list kebab menu)
- [x] Subtask hierarchy (expand/collapse, inline add, cascade toggle/delete)
- [ ] 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)
### 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)
- [x] Clean, minimal UI
- [ ] Feature parity with CLI
@ -803,15 +803,15 @@ npm run tauri ios build
#### Features
- [ ] Gate file-watcher initialization behind `#[cfg(not(mobile))]`
- [ ] Install Android Studio + NDK, configure env vars
- [ ] Add Android Rust targets
- [ ] `npm run tauri android init` (generates `gen/android/`)
- [ ] Confirm `npm run tauri android build` succeeds
- [x] Gate file-watcher initialization behind `#[cfg(not(mobile))]`
- [x] Install Android Studio + NDK, configure env vars
- [x] Add Android Rust targets
- [x] `npm run tauri android init` (generates `gen/android/`)
- [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
- [ ] `npm run tauri ios init` (generates `gen/ios/`)
- [ ] 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
**Document Version**: 4.1
**Last Updated**: 2026-04-03
**Document Version**: 4.2
**Status**: Ready to Implement - Milestone-Driven Plan

View file

@ -27,8 +27,9 @@ onyx/
## Project Status
- **Phase 1** (Core + CLI): Complete
- **Phase 2** (WebDAV Sync): Backend and CLI complete, GUI partially wired
- **Phase 3** (GUI MVP): In progress — core task CRUD working, UI polished
- **Phase 2** (WebDAV Sync): Complete — backend, CLI, and GUI all wired
- **Phase 3** (GUI MVP): Complete
- **Phase 4** (Mobile): Tauri Android cfg-gated, needs `tauri android init` + build
### Core Library (`onyx-core`)
- Data models (Task, TaskList, AppConfig, WorkspaceConfig)
@ -36,8 +37,9 @@ onyx/
- Local storage with repository pattern
- Multiple workspace support
- Task ordering and grouping
- Subtask hierarchy (parent_id)
- WebDAV sync with three-way diff and offline queue
- Platform keychain credential storage
- Platform keychain credential storage (feature-gated for Android)
### CLI (`onyx-cli`)
- Workspace management (init, add, list, switch, remove, retarget, migrate)
@ -52,7 +54,17 @@ onyx/
- Drag-and-drop reordering
- Sliding lists drawer, settings popup
- 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
@ -199,7 +211,7 @@ cargo test -- --nocapture
## What's Next?
- **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 7**: Google Tasks importer and unique features

View file

@ -19,6 +19,7 @@ pub struct Task {
pub description: String,
pub status: TaskStatus,
pub due_date: Option<DateTime<Utc>>,
pub has_time: bool, // Whether due_date includes a specific time
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub parent_id: Option<Uuid>,
@ -106,6 +107,8 @@ Configuration for a single workspace.
```rust
pub struct WorkspaceConfig {
pub path: PathBuf,
pub webdav_url: Option<String>,
pub last_sync: Option<DateTime<Utc>>,
}
```
@ -374,6 +377,9 @@ pub enum Error {
WorkspaceNotFound(String),
ListNotFound(String),
TaskNotFound(String),
WebDav(String),
Sync(String),
Credential(String),
}
```

View file

@ -74,7 +74,8 @@ onyx/
│ │ └── lib/
│ │ ├── screens/ # Full-page views
│ │ ├── 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)
│ ├── Cargo.toml
│ ├── tauri.conf.json