- Add sort mode selector (Updated/Created/Custom) with localStorage persistence
- Sort notes client-side via derived stores based on selected mode
- Enable drag-to-reorder in Custom mode via svelte-dnd-action on NoteGrid
- Add POST /api/notes/reorder endpoint for bulk sortOrder updates
- E2E tests for sorting by updated/created and persistence across reload
Closes#12
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add drag-to-reorder via svelte-dnd-action with grip handles
- Add "hide completed" toggle with collapsible done section
- Each checklist item gets a unique ID for stable drag operations
- E2E test for hide/show completed items
Closes#11
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The allTags derived store now filters out archived and trashed notes
before collecting tags, so the sidebar tag filter only shows tags that
yield visible results.
Closes#9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sidebar filter and tag selection handlers now call onClose() on mobile
viewports (< 1024px), so the overlay dismisses after tapping a link.
Closes#10
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
macOS sed requires -i '' while GNU sed requires -i without argument.
Detect OS with uname to use the correct syntax.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 6 screenshots (3 desktop + 3 mobile) with real app data
- Click-to-zoom lightbox on all screenshots
- Align header logo color (gold) between website and app
- Remove placeholder images
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move version badge from footer to bottom of sidebar (right-aligned)
- Update release script to sed-replace version in website/index.html
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Static landing page with parchment/retro theme matching the app aesthetic.
Includes GitHub Pages deploy workflow, responsive layout, feature grid,
deploy quick-start, and 404 page. Screenshot placeholders ready for
real captures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add LICENSE, CONTRIBUTING, CHANGELOG, SECURITY, CODE_OF_CONDUCT,
GitHub issue/PR templates, CODEOWNERS. Update package.json with
license/repo/author metadata. Add badges and logo to README.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move docker-compose.yml update from release.sh (pre-build) to a
post-release job in both bump.yml and release.yml. This ensures the
image tag in docker-compose only appears on main after the image
exists on ghcr.io, preventing Dokploy from trying to pull a
non-existent image.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- GET /api/sync now attaches tags to notes (matching GET /api/notes
and GET /api/search behavior)
- Add trashedAt field to Note schema in OpenAPI spec
- Add optional id field to NoteInput schema
- Add 400 error response for POST /api/sync
- Add response schema for GET attachments list
- Regenerate API.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- FEATURES.md: add rich text editor section (Tiptap, formatting toolbar,
raw markdown mode) and expand text formatting list
- DEPLOYMENT.md: fix docker-compose example to use image from ghcr.io
instead of local build
- CLAUDE.md: add documentation maintenance instructions, update CI/CD
section to reflect consolidated bump.yml workflow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update release.sh to also bump docker-compose.yml image tag in the
same commit, keeping the tagged commit in sync
- Add CI and Docker release jobs to bump.yml so it's self-contained
(GITHUB_TOKEN pushes don't trigger other workflows)
- Remove "Pin docker-compose" post-step from release.yml since it's
now handled by release.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use the new favicon SVG in the header, login, setup, empty state,
and error pages. Keep the pretzel emoji in the footer tagline.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace inline emoji favicon with full cross-platform favicon support
including SVG, PNG, ICO, Apple touch icon, and PWA manifest icons.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move docker-compose version pinning from release script to the release
workflow so it runs after the image is pushed to GHCR. Dokploy will
always find the referenced image.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Release script now updates docker-compose.yml with the exact version
tag so Dokploy always pulls the correct image.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- docker-compose.yml now uses pre-built ghcr.io image instead of build
- ORIGIN is configurable via env var for deployment
- Remove deploy job from release workflow (Dokploy pulls compose from repo)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add noteCard() helper to target specific cards by title instead of
generic getByTestId('note-card') which fails with multiple matches
- Scope action button clicks (trash, pin, archive) within their card
- Scope tag-chip filter clicks to the tag-filter container
- Wait for networkidle after auth to ensure full hydration
- Remove "empty notes list" test incompatible with shared DB
- Use toHaveCount(0) instead of not.toBeVisible for search empty state
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create (auth) and (app) layout groups to isolate login/setup pages
from the main app chrome (header, sidebar, footer)
- Use window.location.href instead of goto() after login/setup to
ensure clean full-page load across layout groups
- Add reusable TagChip component, used in TagFilter and NoteCard
- Add fade-in/pop-in entrance animation to note editor overlay
- Add persistent clickable pin indicator on pinned cards (top-right
bookmark icon, replaces hover-only pin button for pinned notes)
- Improve "Add a crumb..." button with + icon and dashed border
- Update CLAUDE.md with retro parchment design system guidelines
- Add /.claude/ to .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded colors (gray-500, #b44, red-300/red-50/red-600,
green-600) with CSS variables for theme consistency. Add --destructive,
--error-*, --success-*, and --card-shadow variables to :root. Soften
default card borders from --border to --border-subtle and add 8-bit
style hard-offset shadows with hover effects. Apply accent-color for
themed checkboxes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add notesLoaded store flag set after IDB read completes. Gate the empty
state message behind it so it only shows once we know the store is empty.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Checklist toggle: SquareCheck (→ checklist) / Type (→ text).
Markdown toggle: FileCode (→ markdown) / FileText (→ rich text).
Icons now show what you'll switch to, not the current state.
Remove active color highlight since icon swap communicates state.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change color picker popup from top-full to bottom-full so it appears
above the toolbar instead of overflowing below the editor.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a semi-transparent backdrop overlay (lg:hidden) behind the sidebar
on mobile. Clicking/tapping the backdrop closes the sidebar.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove scroll from toolbar, move undo/redo into More dropdown to fit
single line. All dropdowns now open upward (bottom-full) so they don't
overflow below the editor on small screens. Use Ellipsis icon for More.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wrap editor content in a scrollable container with max-h-[60vh] so long
notes scroll within the editor instead of pushing it off-screen. Also make
the overlay itself scrollable with bottom padding for small viewports.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use window.matchMedia to check viewport width on mount. Sidebar defaults
to closed, then opens automatically on desktop (>= 1024px).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>