8 Commits

Author SHA1 Message Date
Yuyao Huang
0d148b694f fix: change DOING takeover behavior to PENDING and enforce status sort order
- When setting a new task to DOING, the previous DOING task now switches to PENDING instead of TODO
- Task display order now prioritizes by status: DONE < DOING < PENDING < TODO, with order field respected within each status group
2026-05-09 13:43:57 +08:00
Yuyao Huang
427f62acca fix: handle foreign key constraint when deleting tasks with selected_task_id refs
Goals table has selected_task_id referencing tasks(id) without
ON DELETE SET NULL. When deleting a task, first clear any
selected_task_id references in goals to prevent FK violation.

Also update schema for future databases.
2026-05-09 13:05:53 +08:00
Yuyao Huang
8ede63adcd fix: quote column names in UPDATE statements to handle reserved keywords
'order' is a reserved keyword in SQLite. Quote all column names
in update_user, update_goal, and update_task to prevent syntax
errors when updating columns with reserved names.
2026-05-09 12:57:18 +08:00
Yuyao Huang
3c325bdb0f feat(notes): add notes feature with CRUD operations and UI
- Implement notes database schema and API endpoints
- Add notes page with filtering, search, and markdown support
- Persist selected goal and task preferences for better UX
- Include responsive design and mobile-friendly layout
2026-05-08 17:42:42 +08:00
Yuyao Huang
a5c5f5b077 Remove db.json migration logic 2026-05-08 16:23:00 +08:00
Yuyao Huang
a8fe6ed7b3 Migrate from TinyDB to SQLite
- Replace TinyDB (JSON file) with sqlite3 for data persistence
- Add schema.py: table creation + data migration from db.json
- Rewrite database.py: all CRUD operations use sqlite3 directly
- All data retains original IDs via migration script
- Remove tinydb dependency from pyproject.toml
2026-05-08 16:18:26 +08:00
Yuyao Huang
6b05ba3e2c Improve tasks UI: scroll-to-focus picker, landscape layout, height alignment
- Complete tasks now displayed in scroll view alongside unfinished tasks
- Priority order: completed tasks first (by finished_time desc), then unfinished (by order asc)
- Time picker-style scroll: wheel scroll snaps per task, center item gets visual focus
- Landscape mode (>=1024px): scroll view + edit panel side by side, panel always visible
- Portrait mode: edit panel slides in from right on tap
- Fixed flex layout so scroll view and edit panel align perfectly in height
2026-05-08 15:47:25 +08:00
Yuyao Huang
f3bffa40cd Initial commit: GoalsBreakDown web app
- Flask backend with TinyDB database
- Multi-user auth with bcrypt password hashing
- Goal CRUD with activation/deactivation and per-user limits
- Task CRUD with status tracking (todo/doing/pending/done)
- Focus rule: one doing task per goal
- Time picker-style scroll view with drag-and-drop reordering
- Admin panel for user management
- uv environment management
2026-05-08 12:41:19 +08:00