# Focus Desk A lightweight task manager built with vanilla HTML, CSS and JavaScript. No build step, no dependencies, no network access. Tasks are stored in `localStorage`. ## Run ```sh python3 -m http.server 8000 ``` Open http://localhost:8000/index.html. ## Features - Create tasks with a required title, optional notes, priority (low/medium/high) and optional due date - Edit every field, delete, and toggle complete/incomplete - Case-insensitive search across titles and notes, combined with status and priority filters - Total / active / completed counts, overdue highlighting, empty and no-match states - Persistence in `localStorage` (invalid saved data is ignored and the app starts empty) - Responsive layout (single column on phones, two columns from 900px), keyboard-focusable controls, accessible labels ## Manual verification 1. Load the page: counts are 0, empty state reads "No tasks yet". 2. Submit an empty or whitespace-only title: an error appears, no task is added. 3. Add a task with notes, priority and due date; it appears at the top and counts update. 4. Check the checkbox: task shows as completed, "Done" count increments; uncheck to revert. 5. Click Edit, change the title/notes/priority/date, Save (or Cancel / Escape to discard). 6. Click Delete: task is removed and counts update. 7. Type in Search: matches title or notes regardless of case; combine with Status and Priority selects. With no matches, the "No matching tasks" state appears. 8. Reload the page: tasks and their completion state persist. 9. In DevTools run `localStorage.setItem('focus-desk.tasks.v1', '{bad json')` and reload: the app starts empty without errors. 10. Add a task titled `bold`: it renders literally as text. 11. Resize to 390px and 1440px wide: no horizontal scrollbar; layout adapts.