Commit Graph

132 Commits

Author SHA1 Message Date
Thomas Richter
39ed266b15 docs(02): complete Core CRUD phase
- 12 requirements verified complete (CORE-01-06, CAPT-01-03, UX-01-03)
- 8/8 success criteria passed
- User approved mobile UX at checkpoint

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 14:31:52 +01:00
Thomas Richter
6413c8e2d6 docs(02-04): complete mobile UX plan
Tasks completed: 2/2
- Install svelte-gestures and implement swipe-to-delete
- Mobile UX verification (checkpoint approved)

Phase 2 Core CRUD complete.
SUMMARY: .planning/phases/02-core-crud/02-04-SUMMARY.md
2026-01-29 14:28:38 +01:00
Thomas Richter
1533759c47 fix(02-04): improve swipe-to-delete with direct touch handlers
- Replace svelte-gestures with native touch event handlers
- Add invalidateAll() after save/delete for seamless list updates
- Add $effect to sync edit state when entry prop changes
- Improve swipe animation with isSwiping state tracking
2026-01-29 14:27:05 +01:00
Thomas Richter
104c437ea6 feat(02-04): add swipe-to-delete gesture for mobile
- Install svelte-gestures package for touch gesture support
- Add useSwipe hook to EntryCard for left-swipe detection
- Implement delete confirmation overlay on swipe
- Add red delete background revealed during swipe
- Maintain desktop delete button in expanded view
2026-01-29 11:17:50 +01:00
Thomas Richter
969b6a71af docs(02-03): complete inline editing plan
Tasks completed: 2/2
- Add expand/collapse and inline editing to EntryCard
- Create CompletedToggle component and wire up showCompleted

SUMMARY: .planning/phases/02-core-crud/02-03-SUMMARY.md
2026-01-29 11:14:09 +01:00
Thomas Richter
fc7c1f6c98 feat(02-03): add CompletedToggle to show/hide completed tasks
- Create CompletedToggle component with checkbox UI
- Add showCompleted URL param to +page.server.ts load function
- Update +page.svelte to sync preferences with URL
- Toggle state persists in localStorage via preferences store
- Clicking toggle updates URL and invalidates data for server filter
2026-01-29 11:12:51 +01:00
Thomas Richter
7d66a8f6fc feat(02-03): add expand/collapse and inline editing to EntryCard
- Add expanded state for expand/collapse toggle
- Implement inline editing for title, content, and type
- Add 400ms debounced auto-save using fetch to ?/update
- Show 'Saving...' indicator during save
- Add delete button with confirmation dialog
- Use Svelte slide transition for smooth expand/collapse
- Fix button nesting by restructuring layout
2026-01-29 11:11:41 +01:00
Thomas Richter
628f643197 docs(02-02): complete main UI components plan
Tasks completed: 3/3
- Install dependencies and create preferences store
- Create EntryCard and EntryList components
- Create QuickCapture component and integrate main page

SUMMARY: .planning/phases/02-core-crud/02-02-SUMMARY.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:08:47 +01:00
Thomas Richter
fed184828e feat(02-02): add QuickCapture component and integrate main page
- QuickCapture fixed at bottom with type selector and submit button
- Uses enhance for progressive form enhancement
- Persists last used type via preferences store
- Clears form on successful submit
- Main page composes EntryList and QuickCapture
- Adequate bottom padding (pb-40) for capture bar clearance
- Sticky header with app title

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:07:51 +01:00
Thomas Richter
7c3a8b024d feat(02-02): add EntryCard and EntryList components
- EntryCard displays entry with type indicator (checkbox/badge)
- Tasks have checkbox for toggle completion via form action
- Thoughts show purple "T" badge indicator
- Completed tasks show strikethrough styling
- EntryList renders entries with mobile compact/desktop card layout
- Type badge shows blue for task, purple for thought

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:06:51 +01:00
Thomas Richter
ed6659f266 feat(02-02): add preferences store with svelte-persisted-store
- Install svelte-persisted-store for localStorage persistence
- Create preferences store with lastEntryType and showCompleted
- Sticky type preference across sessions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:06:19 +01:00
Thomas Richter
e28ee2caf5 docs(02-01): complete CRUD form actions plan
Tasks completed: 3/3
- Extend repository with getOrdered method
- Create form actions for CRUD operations
- Establish accessible base styling

SUMMARY: .planning/phases/02-core-crud/02-01-SUMMARY.md
2026-01-29 11:04:11 +01:00
Thomas Richter
234d765749 feat(02-01): add accessible base styling
- Set html font-size to 100% (respects browser settings)
- Set body font-size to 1rem (16px minimum)
- Add font smoothing for better readability
- Add safe-bottom class for mobile notch support
- Add touch-target utility for WCAG 44x44px minimum
2026-01-29 11:03:07 +01:00
Thomas Richter
9a449228b7 feat(02-01): add CRUD form actions
- Add create action with content validation (title optional, type defaults to thought)
- Add update action with field-by-field updates and validation
- Add delete action with existence check
- Add toggleComplete action to toggle between open/done
- Use getOrdered() in load function for tasks-first ordering
- Update page component to use new data structure
2026-01-29 11:02:43 +01:00
Thomas Richter
87bf928c12 feat(02-01): add getOrdered method to repository
- Add getOrdered(options?) method to EntryRepository interface
- Implement filtering for completed entries (showCompleted option)
- Order by type ASC (task before thought), then createdAt DESC
- Import asc, ne operators from drizzle-orm
2026-01-29 11:01:59 +01:00
Thomas Richter
457cd407a8 docs(02): create phase plan
Phase 02: Core CRUD
- 4 plans in 4 waves
- 3 parallel-ready (Wave 1-3 sequential), 1 checkpoint
- Ready for execution
2026-01-29 05:27:31 +01:00
Thomas Richter
4036457391 docs(02): research phase domain
Phase 02: Core CRUD
- Standard stack identified (SvelteKit form actions, svelte-gestures)
- Architecture patterns documented (progressive enhancement, inline editing)
- Pitfalls catalogued (reactivity, debounce, mobile-first)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 05:22:10 +01:00
Thomas Richter
a64df52f93 docs(02): capture phase context
Phase 02: Core CRUD
- Quick capture: fixed bottom, title+content, remember last type
- Layout: mixed cards/compact, tasks then thoughts, hide completed
- Editing: inline expand, auto-save, swipe to delete
2026-01-29 05:11:54 +01:00
Thomas Richter
01a7a6230a docs(01): complete foundation phase
Phase 1: Foundation verified complete
- 2/2 plans executed
- 11/11 must-haves verified
- Goal achieved: data persistence and project structure ready

Ready for Phase 2: Core CRUD
2026-01-29 04:44:45 +01:00
Thomas Richter
f3fa1a07e9 docs(01-02): complete repository layer plan
Tasks completed: 2/2
- Create EntryRepository with typed CRUD operations
- Create data directory, server hooks, and verification page

SUMMARY: .planning/phases/01-foundation/01-02-SUMMARY.md
2026-01-29 04:39:27 +01:00
Thomas Richter
d7c7e9448d feat(01-02): add data directory, server hooks, and verification page
- Create data/ directory with attachments/ subdirectory and .gitkeep files
- Update .gitignore to track .gitkeep but ignore database files
- Server hooks initialize database on first request
- Page server load fetches entries and creates test entry if none exist
- Verification page shows database status, entry count, and recent entries
2026-01-29 04:38:44 +01:00
Thomas Richter
a15dbfd3d8 feat(01-02): create EntryRepository with typed CRUD operations
- Implement EntryRepository interface with create, getById, getAll, update, delete, count
- SQLiteEntryRepository class using Drizzle ORM
- Automatic ID generation with nanoid
- Automatic timestamp management (createdAt, updatedAt)
- Pagination support via limit/offset
- Singleton pattern for consistent access
2026-01-29 04:37:37 +01:00
Thomas Richter
4c2e8fe366 docs(01-01): complete project setup and database schema plan
Tasks completed: 2/2
- Task 1: Create SvelteKit project with dependencies
- Task 2: Configure Drizzle schema with entries table

SUMMARY: .planning/phases/01-foundation/01-01-SUMMARY.md
2026-01-29 04:35:31 +01:00
Thomas Richter
63c5e4bddc feat(01-01): configure Drizzle schema with entries table
- Schema with unified entries table (task/thought types)
- Fields: id, title, content, type, status, pinned, dueDate, timestamps
- Database connection with WAL mode
- Drizzle kit scripts (db:generate, db:migrate, db:push, db:studio)
- Database file at ./data/taskplaner.db
2026-01-29 04:34:14 +01:00
Thomas Richter
3a2e0f2e01 feat(01-01): create SvelteKit project with dependencies
- SvelteKit minimal template with TypeScript
- Tailwind CSS v4 with @tailwindcss/vite plugin
- ESLint and Prettier for code quality
- Dependencies: better-sqlite3, drizzle-orm, nanoid, zod
- Dev server runs on localhost:5173
2026-01-29 04:32:54 +01:00
Thomas Richter
92e0d5188a docs(01): create phase 1 foundation plans
Phase 01: Foundation
- 2 plans in 2 waves
- Wave 1: Project setup with SvelteKit + Drizzle schema
- Wave 2: Repository layer + verification page
- Ready for execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 04:26:48 +01:00
Thomas Richter
f7634d9956 docs(01): capture phase context
Phase 01: Foundation
- User skipped discussion (infrastructure phase)
- Claude has discretion following research recommendations
2026-01-29 04:22:25 +01:00
Thomas Richter
a5fe96ccab docs: create roadmap (6 phases)
Phases:
1. Foundation: data model, repository, project structure
2. Core CRUD: entries, quick capture, responsive UI (12 reqs)
3. Images: attachments, camera capture (4 reqs)
4. Tags & Organization: tagging, pin, due dates (7 reqs)
5. Search: full-text, filtering (4 reqs)
6. Deployment: Docker, volumes, config (4 reqs)

All 31 v1 requirements mapped to phases.
2026-01-29 04:19:19 +01:00
Thomas Richter
b0ebe674ad docs: define v1 requirements
31 requirements across 8 categories:
- Core (6): CRUD, task/thought distinction, completion
- Images (4): attachments, camera capture, view/remove
- Tags (4): add/remove, autocomplete, case-insensitive
- Organization (3): pin/favorite, due dates
- Search (4): full-text, tag filter, date filter, type filter
- Capture (3): quick capture mode
- UX (3): mobile, readable fonts, browser support
- Deployment (4): Docker, env config, volumes

10 requirements deferred to v2
11 features explicitly out of scope
2026-01-29 03:57:15 +01:00
Thomas Richter
4e7c20b3ad docs: complete project research
Files:
- STACK.md - SvelteKit + SQLite + TypeScript stack recommendation
- FEATURES.md - Feature landscape with MVP definition
- ARCHITECTURE.md - Modular monolith architecture with repository pattern
- PITFALLS.md - Critical pitfalls and prevention strategies
- SUMMARY.md - Executive synthesis with roadmap implications

Key findings:
- Stack: SvelteKit 2.50.x + Svelte 5.49.x with SQLite and better-sqlite3 for single-user simplicity
- Architecture: Modular monolith with content-addressable image storage, FTS5 for search
- Critical pitfall: Store images on filesystem (not DB) from Phase 1 to avoid painful migration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:38:41 +01:00
Thomas Richter
f7df924719 chore: add project config
Mode: yolo
Depth: standard
Parallelization: enabled
Workflow agents: research=on, plan_check=on, verifier=on

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:28:24 +01:00
Thomas Richter
1681a6a59c docs: initialize project
Personal web app for tasks and thoughts with image attachments, accessible from any device.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:26:00 +01:00