Tags that are no longer associated with any entry are automatically
deleted from the database when a tag is removed from an entry.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove auto-parsing on collapse
- Add "Scan for #tags" button that parses from current textarea content
- Always show tags section with delete buttons
- Show help text when no tags exist
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Parse hashtags when content textarea loses focus (blur)
- Parse hashtags when QuickCapture form is submitted
- Add tag display with delete buttons in expanded entry view
- Remove automatic hashtag parsing during typing
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tags are now automatically extracted from #hashtags in content text.
Removed TagInput from entry editing, keeping it only in FilterBar.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add searchQuery prop to EntryCard for text highlighting
- Use {@html highlightText()} for title and content in collapsed view
- Integrate SearchBar and FilterBar in +page.svelte
- Add search/filter state with reactive sync to filters.query
- Pass recentSearches store to SearchBar
- Update filterEntries to use generics for type preservation
- Create TagInput.svelte with Svelecte for multi-select autocomplete
- Support creating new tags inline via creatable mode
- Display tags on collapsed entry cards (max 3 with +N indicator)
- Add TagInput in expanded view for editing entry tags
- Pass availableTags through EntryList to EntryCard
- Handle tag changes with immediate save via updateTags action
- Install svelecte package for tag input with autocomplete
- Import tagRepository in +page.server.ts
- Attach tags to entries in load function alongside images
- Return allTags for autocomplete suggestions
- Add updateTags action to update entry tags via JSON payload
- Add togglePin action to toggle entry.pinned boolean state
- Add updateDueDate action to set/clear entry.dueDate
- Both actions validate entry exists before updating
- Delete image files from filesystem (original + thumbnail)
- Delete image record from database
- Continue database deletion even if file deletion fails
- Returns success after cleanup
- Add uploadImage action that handles multipart file uploads
- Validate file type and entry existence before processing
- Generate thumbnail using Sharp with EXIF rotation
- Save original and thumbnail to filesystem
- Store image metadata in database
- Return entries with their images attached from load function
- Add GET /api/images/[id] for original images
- Add GET /api/images/[id]/thumbnail for thumbnails
- Both endpoints return 404 for missing images
- Immutable cache headers for CDN optimization
- 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
- 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>
- 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
- 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
- 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