0.3.2
StableThe same build as v0.3.2-preview, released as stable.
Breaking changes
- tags: add nested tags and search filters
clients and servers now require API protocol 2. Upgrade the server before clients; queued writes and device notes retain their existing formats.
- security: harden exposed servers and add admin invites
sign-up is closed after the first account by default; set REGISTRATION=open to add accounts. The bare session token from a sign-in response body is no longer accepted as a bearer token; use the set-auth-token header value. Restoring a backup signs everyone out except the admin who started it.
- sync: enforce client/server protocol compatibility
Data APIs now require a supported X-Catch-Protocol header. Existing clients must update to protocol 1; new clients pause sync against unversioned servers.
Features
- settings: swipe to exit mobile settings
- release: generate release notes and a changelog from tags and commits
- dev: seed nested tags and tagged demo notes
- release: add manual channel and version bump workflow
- web: prompt to reload outdated browser builds
- links: add rich link capture and bookmarklet intake
- ui: soften and stagger initial content entry
- header: scroll to top when tapping the title pill
- branding: formalize full decoration and shrink header lockups
- branding: refresh login and update page branding
- branding: trial motion marks in 36px header lockups
- branding: add scrolling wordmark to tab page headers
- branding: integrate outlined Catch wordmark lockups
- editor: add inset scrollbars to open notes
- gallery: toggle single-column layout in narrow containers
- sharing: receive incoming Android and PWA shares
- notes: add undo toast for archiving a note
- settings: add version page and Android app updates
- ci: reuse checks and coordinate releases by commit
- backups: add server backups, restore and pre-update backups for admins
- admin: add user management and password controls
- branding: integrate blue development build icons
- release: add an undistributed dev channel as the default
- branding: apply preview icons by release channel
- refine media viewer controls and row interactions
- fade media viewer in and out
- dismiss media details with a downward image swipe
- reveal media details by swiping up on images
- streamline narrow media viewer with draggable details
- add media to preview overlay and soften tray dismissal
- make the attachment viewer immersive and interactive
- import Keep attachments and refine media interactions
- add offline attachments with media previews and capture
- web: dismiss link previews with swipe
- web: keep notes on the device and queue writes offline
- server: make note and column writes safe to replay
- web: add dismissible top toasts
- links: rich previews for the links in notes
- settings: give Settings its own page with General and Account
- header: share the collapsing title header across dock pages
- dock: hold the deck button to pick a column
- deck: select notes and move them in bulk as a stack
- deck: reorder columns with drag handles
- note-editor: add block insertion menu
- quick-note: support swipe-up expansion
- deck: customize columns and refine sheet interactions
- gallery: animate title into the header
- web: show an open note beside the page on tablets and foldables
- worktrees: add bulk worktree removal
- web: animate the Gallery header on scroll
Fixes
- tags: tag existing notes when linking colors
- ui: show toasts below the header on phones, in the header's glass
- tags: focus new tag names and follow keyboard animations
- editor: remove the tags sidebar card
- gallery: animate card widths and page gutters when columns resize
- ui: preserve shadows around floating surfaces
- editor: animate attachment picker transitions
- release: name the image and APK inside the jobs that use them
- sync: keep static dev sessions and cached notes usable
- editor: smooth note return transitions and header blur
- notes: recognize quick-note swipes across the popup
- header: keep the tab title and brand clear of the controls and status bar
- e2e: wait across frames before aiming touch gestures
- ci: build pinned Electric source when its image is unavailable
- e2e: isolate Vite state and await attachment insertion
- notes: open card move picker in a popover
- editor: enable attachments immediately when opening notes
- notes: open a card pressed while its thumbnail loads
- editor: let a note reopened while closing close again
- dev: keep a worktree's project name valid when its branch slug is cut
- settings: show channel icon on update page
- release: query paginated releases with standalone jq
- ci: provision ffmpeg and wait for captured media to sync
- editor: keep the page still and the transition whole when a note opens
- dev: install host dependencies when the Capacitor CLI is missing
- branding: match approved preview violet gradient
- restore media playback and generate video previews
- dev: keep pnpm store volume owned by the host user
- remove media header seam and wait for decoded preview to fade in
- align media viewer navigation and control surfaces
- android: hide WebView and CSS scrollbars
- web: center quick note and slide dock in split view
- web: skip empty note updates
- dock: keep the dock's size steady through page transitions
- header: start the tab title expanded after switching pages
- deck: animate collapsing and expanding columns
- gallery: extend top blur across split view
- web: add spacing above page titles
- dock: fold gallery switcher for quick notes
- web: preserve shadows in split note pane
- dev: start stack before Android install
Performance
Other changes
- license Catch under MIT
- ci: stop requiring PR branches to be up to date with main
- allow full E2E runs before merge approval
- drop personal notes and regenerate the video fixture
- e2e: wait for the first note to sync before cutting off the API
- review: let agents request AI reviews for higher-risk changes
- release: build Android and Docker images in parallel
- review: add opt-in cubic reviews
- e2e: stabilize bookmarklet popup lifecycle
- gate PR E2E behind merge approval
- web: enlarge stacked login branding
- download the cached image layers before the stack builds
- keep one copy of the development image cache
- split e2e over shards and cache its setup
- e2e: cut setup time and run layout-independent tests once
- e2e: stabilize editor focus and transition waits
- e2e: steady tests that fail on a busy machine
- e2e: open the Embed tab in the image embed test
- e2e: fix stale dock layout check and fling race in list drag
- e2e: run each project on its own runner
- Render only the gallery cards near the viewport
- release: add tagged image and APK releases
- Keep undo and redo in the split-view header
- Keep the sync pill centered when history controls appear
- Add animated undo and redo controls to the note editor
- Improve mobile note layout and sync status motion
- dock: use dashboard icon for Gallery tab
- Unify note move controls with a destination picker
- Require agents to use their assigned worktree
- Fix editor popups losing focus to blank-space clicks
- Add Google Keep import under Settings > Data Management
- clarify worktree merge and push guidance
- Return to the original Catch link after login
- Keep note caret visible above the virtual keyboard
- Improve mobile list controls and align checklist previews
- Fix slash menu placement and add toolbar shortcut
- Apply Gentle Drop branding to web and Android
- Limit concurrent end-to-end test load
- Extend bottom blur across split view
- record offline persistence in ADR 0007
- web: reuse jsdom workers
- Add conditional bottom edge blur
- web: increase gallery top spacing
- Move search color filters above dock with mouse drag
- deck: match the drop zones to the dock's glass
- trigger checks manually
- Reorder deck notes with one drag gesture
- Show an open note as a card between its toolbars
- Trigger Gallery title crossfade at scroll threshold
- Select notes with a long press, as in Keep
- Refresh Catch branding from original icon
- Rearrange gallery notes by dragging, as in Keep
- Improve mobile formatting toolbar and blank-space editing
- Add bidirectional swipe dismissal for open notes
- Use Catch mark across web and Android branding
- Add swipe to archive in gallery
- Hide icon tooltips in Android app
- Match editor header corners to dock
- Style editor header actions as glass pills
- Refine gallery switcher and mobile note interactions
- Grow the dock into a gallery switcher; blur behind the dock again
- Fade the editor out cleanly when its card is gone; lower the dock
- Turn the dock into the open note's toolbar
- Follow the finger itself when turning deck columns during a drag
- Turn deck columns one at a time while dragging
- Soften the dock and accent: apricot brand, squarer dock, icon-only tabs
- Soften the start of note and page transitions
- Ease note and page transitions out instead of bouncing
- Spring the note and page transitions; stop the editor text jumping on open
- Slide between pages and return the dock indicator from search
- Track the Android keyboard and add a touch formatting bar
- Prefill the seeded admin login in development builds
- Redesign the app for Android: dock, quick notes, and card-to-editor transitions
- Add next steps and outstanding items
- Add live-reload Android workflow
- Port the note-taking baseline from catch-old
- Create volume mount points as the host user
- Run each Git worktree in its own isolated Docker stack
- Scaffold Catch on an agent-friendly stack