diff --git a/CLAUDE.md b/CLAUDE.md index 149df6a..179b3a9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -106,7 +106,7 @@ Pre-alpha. No users, no released builds, no data to migrate. Breaking changes to - Task deduplication on load (handles sync conflict duplicates) - 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()) -- Workspace path validation (rejects system directories) +- Workspace path validation (rejects filesystem root `/` and system directories: `/etc`, `/usr`, `/bin`, `/sbin`, `/var`, `/proc`, `/sys`, `/dev`) - 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 diff --git a/docs/API.md b/docs/API.md index f8b3c1d..b8d2435 100644 --- a/docs/API.md +++ b/docs/API.md @@ -454,7 +454,7 @@ All metadata and state files use an atomic write pattern (write to `.tmp` then r - **List names**: Rejected if they contain `/`, `\`, or `..` components. Canonicalized and verified to stay within workspace root. - **Sync paths**: Validated to reject `..` components and backslashes anywhere in the path before any file system operation. -- **Workspace paths** (Tauri): Rejected if they point to system directories (`/etc`, `/usr`, `/bin`, etc.). +- **Workspace paths** (Tauri): Rejected if they point to the filesystem root (`/`) or system directories (`/etc`, `/usr`, `/bin`, `/sbin`, `/var`, `/proc`, `/sys`, `/dev`). - **Filenames**: Sanitized to replace `/ \ : * ? " < > |` and control characters with `_`. ## Example: Complete Workflow