You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Choose library folder — empty libraries land on media with a primary “choose folder” CTA; import fills the library and registers the folder as watched (including unhiding media types that received files)
Import from another library — merge another registered database into the active one (match-or-create media, remap tags/links/playlists) with a confirm warning and NDJSON progress
Watched folders → @parcel/watcher — replace broken chokidar globs with a parcel native watcher, plus a risk gate before adding large folders
Empty states → next step — empty media/playlists/inbox/home widgets offer one primary CTA instead of dead-end copy
Player touch gestures (LAN / PWA) — swipe left/right for next/previous; double-tap left/right halves to seek ±10s
Multiline text metadata — string meta fields auto-grow like bookmark notes in edit, bulk edit, and previews
Loading skeletons — view-aware shimmer skeletons for folder browse and media library grids
Quiet post-import backfill — after fast import, quietly probe missing image/video metadata and create missing thumbs (including home widgets)
Changed
Onboarding — single welcome dialog; after continue, empty libraries go straight to choosing a library folder
Folders / playlists / markers decks — path-row folder actions, optional filter panels, mix-from-phrase in a dialog, create-smart-playlist action
Sidebar — pin Settings / Inbox / Trash below the scrollable tags list; drop the System section header
Header gradient — enabled by default instead of a solid color
Starter Gender tags — only Male and Female
README — lead with chips, tags, filters, and previews; scale as secondary proof
Fixed
Large watched folders — O(n) sync/diff and capped WS payloads so Downloads-sized trees no longer freeze Settings or the UI
Import process totals — keep the full added count when the dialog list is capped; refresh sidebar counts after import
Timeline / video grids — stop concurrent thumb+grid probes from cancelling each other and re-triggering createGrid; skip grids that already exist on disk
Atomic generated images — temp-file + retry replace for thumbs, grids, marks, faces, and folder covers on all platforms
Inbox lost files — stop watcher DB refresh from wiping filesystem paths (false “lost” entries)
Metadata pinning — allow any metadata field to be pinned to media types; block only group tag categories
Tag category parent — ignore accidental parentMetaId: null on non-category meta Apply payloads
Scroll-to-top — show only when the list exceeds one viewport
Feedback — send structured OS version via systemVersion
Country picker — UK nations and missing ISO/extra entries
Watch-folder risk meter — lighter background for contrast
Playlist tooltips — hide when button labels are already visible