Viboplr v0.9.97 May 30, 2026

Features

  • hero: swap 3 TV looks for 4 new effect families; default to by-artist
  • ui: unify currently-playing indicator as shared spinning disc

Bug Fixes

  • tidal: button-triggered search, scoped loading, and modal downloads
  • home: shelf card clicks navigate to detail / plugin views

Refactoring

  • app: extract orchestration from App.tsx + squash PoC migrations
Viboplr v0.9.96 May 29, 2026

Features

  • spotify: sync reliability, diagnostics, and login surfacing
  • hero: animated old-TV background effect for detail pages
  • home: play overlay and detail navigation on shelf cards

Refactoring

  • split large files into cohesive modules
Viboplr v0.9.95 May 28, 2026

Features

  • history: restructure tabs as Recent / Tracks / Artists with timespan picker

Bug Fixes

  • queue: prevent stuck phantom items from React key collisions
  • settings: hide providers from uninstalled plugins
  • home: resolve most-played-artists via backend for diacritic matching

Performance

  • startup: cut ~485ms by gating browse-windows remote URLs to Windows
Viboplr v0.9.94 May 27, 2026

Features

  • detail-hero: unify detail page heroes (artist / album / track / tag)
  • radio: start a radio station from any track

Bug Fixes

  • history: use correct command name for artist image resolution

Performance

  • home: refresh only when snapshot is older than 24h

Documentation

  • add implementation plan for unified detail hero
  • clarify HeroOverflowMenu and enqueue wiring in detail-hero spec
  • design for unified detail hero across artist/album/track/tag
Viboplr v0.9.93 May 25, 2026

Features

  • playback: make mute an independent gate from volume

Performance

  • home: keep view mounted, stream shelves, cache snapshot, push liked filter to db
  • playback: build Web Audio graph lazily on EQ engage
Viboplr v0.9.92 May 25, 2026

Features

  • home: use video frames as top image source on hero and shelves
  • history: default video history tracking to on

Bug Fixes

  • queue: strip plugin cache-buster suffix before persisting cover/thumbs
  • home: cache video frame snapshot to prevent infinite render loop
  • track-detail: render normally when locating the currently-playing video
Viboplr v0.9.91 May 24, 2026

Features

  • detail-hero: blurred image hero backgrounds for detail pages
  • home: add Home view with featured carousel, built-in and plugin shelves
  • auto-continue: align popover style and proportions with equalizer
  • eq: redesign popover with response curve, pre-gain, and remove from settings

Bug Fixes

  • playback: mark audio elements CORS-aware so EQ graph isn't muted in release

Chores

  • deps: bump @tauri-apps/api to ^2.11 to match tauri crate
Viboplr v0.9.90 May 24, 2026

Bug Fixes

  • playback: resume audio context if suspended
  • queue: preserve plugin image cache-buster in playlist banner
Viboplr v0.9.89 May 24, 2026

Features

  • queue: redesign playlist header as mini hero with cover-tinted gradient
  • eq: 10-band graphic equalizer + auto-continue UI polish
  • eq: 10-band graphic equalizer
Viboplr v0.9.88 May 23, 2026

Features

  • p2p: connection-strength badge on sidebar
  • p2p: warn when relay reservation stalls

Bug Fixes

  • p2p: connect to relay and complete circuit reservation

Chores

  • deps: bump libp2p to 0.56
Viboplr v0.9.87 May 23, 2026

Features

  • spotify-browse: detailed sync log + cache-bust rotating covers

Bug Fixes

  • detail-views: sync track row state on like, delete, youtube, bulk edit
  • now-playing: show cached image without waiting for next currentTrack mutation
Viboplr v0.9.86 May 22, 2026

Features

  • spotify-browse: drop archive, redesign Liked Songs UX, virtualize long lists
  • mini-player: show liked heart before title

Bug Fixes

  • tidal-browse: sync fallback instances and prioritize like Monochrome
  • mini-player: make spinning disc icon visibly rotate
Viboplr v0.9.85 May 22, 2026

Features

  • spotify-browse: add Liked Songs collection support
  • tidal: show all uptime status pages in settings instead of just the first

Bug Fixes

  • tidal-browse: enhance error handling and improve instance probing logic
  • spotify-browse: use og:image for playlist covers to fix Discover Weekly / Release Radar
  • p2p: dial configured relay and listen on /p2p-circuit so peers behind NAT are reachable
Viboplr v0.9.84 May 21, 2026

Features

  • p2p: log when a relay accepts our reservation
  • p2p: show active relay in plugin settings panel
  • p2p: plugin auto-picks relay from Supabase relays table
  • p2p: pure pickRelayFromList helper with Vitest
  • google-image-search: surface window with explanation on captcha
  • mini-player: spinning disc indicator and live image updates

Bug Fixes

  • playback: correct duration and seek for transcoded video

Documentation

  • note libp2p version coupling between app and viboplr-relay
Viboplr v0.9.83 May 20, 2026

Bug Fixes

  • playback: ensure duration is set only for finite values in onLoadedMetadata
  • library: refresh artist/album/tag like state in SearchView; sync docs
Viboplr v0.9.82 May 19, 2026

Features

  • p2p: remove toggle and disconnect button from plugin UI
  • p2p: search on Enter only via submitOnly option on search-input

Bug Fixes

  • auto-tagger: category checkboxes before names, multi-type support, run now
Viboplr v0.9.81 May 19, 2026

Features

  • auto-tagger: entity classification with per-item category checkboxes
  • p2p: add diagnostics panel, device name, and accurate track count

Bug Fixes

  • refresh library view after bulk edit properties

Refactoring

  • remove StatusBar and session logging system
Viboplr v0.9.80 May 18, 2026

Features

  • p2p: binary transfer protocol with streaming, downloads, and resume
  • plugins: enhance plugin sandbox environment with additional globals
  • delete: move files to OS trash instead of permanent deletion
  • p2p: add peer-to-peer file sharing via libp2p
Viboplr v0.9.79 May 18, 2026

Features

  • tags: support multi-select tag deletion from context menu

Bug Fixes

  • bulk-edit: fetch tracks from backend and skip video tag writing
  • tidal-browse: skip TLS validation for uptime endpoint fetch
Viboplr v0.9.78 May 17, 2026

Bug Fixes

  • context-menu: remove premature ref cleanup that raced with action callbacks
  • scanner: stop adding folder names as tags for video files

Tests

  • scanner: update video tag tests to match no-folder-tags behavior
Viboplr v0.9.77 May 16, 2026

Features

  • queue: redesign queue item layout and playing indicator
  • tidal: improve instance discovery with fallback list and load balancing

Bug Fixes

  • queue: allow locate button to show track details for all tracks
  • css: replace hardcoded colors with skin system variables
Viboplr v0.9.76 May 16, 2026

Features

  • mixtape: play immediately on file open and redesign modal

Bug Fixes

  • code health — consolidate utils, fix canonical actions, remove dead code
  • spotify: toolbar toggle, pickasso URL filter, and debug coverUrl
  • http: use browser User-Agent for all plugin HTTP requests
Viboplr v0.9.75 May 15, 2026

Bug Fixes

  • spotify: add debug diagnostics for empty playlist scrapes
  • views: prevent blank main content when entity view has no selection
  • spotify: handle broken cover URLs and log image download failures
Viboplr v0.9.74 May 15, 2026

Bug Fixes

  • bump: streamline version bump logic and improve error handling

Refactoring

  • detail-views: decouple from library via DetailViewContext
Viboplr v0.9.73 May 15, 2026

Bug Fixes

  • bump: streamline version bump logic and improve error handling

Refactoring

  • detail-views: decouple from library via DetailViewContext
Viboplr v0.9.72 May 14, 2026

Bug Fixes

  • bump: add version bump log message for better visibility
  • downloads: use resolveByMetadata instead of asset URL for resolver downloads
Viboplr v0.9.71 May 14, 2026

Features

  • mixtape-export: add tabbed layout with Details, Metadata, and Tracks tabs

Bug Fixes

  • mixtape: fix playlist export and preserve metadata through full pipeline
  • restore: persist track detail metadata for reliable restore on restart
  • context-menu: fetch tracks from DB for Play/Enqueue actions
  • restore: prevent blank window when ext: track was selected on close
  • modals: remove click-outside-to-close from all modals
Viboplr v0.9.70 May 13, 2026

Bug Fixes

  • mini-mode: add event listener to restore mini mode from minimized state
Viboplr v0.9.69 May 13, 2026

Features

  • mini: improve mini player context menu

Bug Fixes

  • now-playing: add video frame resolution to currentTrack image
  • queue: move image resolution entirely to async QueuePanel fallback
  • queue: let stamp() handle image resolution instead of pre-stamping
  • artist: show albums containing tracks by artist, not just owned albums
Viboplr v0.9.68 May 13, 2026

Bug Fixes

  • like: use direct library ID for like/dislike instead of metadata lookup
  • queue: only show playlist context when explicitly playing all
Viboplr v0.9.67 May 13, 2026

Bug Fixes

  • queue: use correct command name for fallback image resolution
  • macos: add folder usage descriptions to prevent repeated TCC prompts
Viboplr v0.9.66 May 11, 2026

Features

  • dependencies: add per-consumer reasons for each dependency
  • dependencies: unified external dependency management system

Bug Fixes

  • playback: trigger ffmpeg transcode fallback when play() throws
  • spotify-browse: wait for playlist content before scraping + error recovery

Refactoring

  • name-based image system and self-contained detail pages
  • playback: simplify follow-playing to instant binary toggle
Viboplr v0.9.65 May 10, 2026

Bug Fixes

  • track-detail: restore non-library track detail view (reverted by 34d3780)
  • queue: simplify playlist cover to always use imagePath via main-playlist/cover.jpg
Viboplr v0.9.64 May 10, 2026

Features

  • transcode: local ffmpeg transcoding server for unsupported video formats
  • youtube: add configurable cache size limit in settings

Bug Fixes

  • youtube, playback: add diagnostics for stream resolver timeout
  • track-detail: show detail view for non-library tracks
Viboplr v0.9.63 May 10, 2026

Bug Fixes

  • youtube, playback: fix stream resolver timeout and add LRU cache eviction
Viboplr v0.9.62 May 10, 2026

Bug Fixes

  • browse-window, mini-player, store: fix ACL, size migration, and init resilience
Viboplr v0.9.61 May 10, 2026

Bug Fixes

  • browse-window: allow browse_window_send command from remote pages
Viboplr v0.9.60 May 10, 2026

Features

  • introduce QueueTrack type — remove DB IDs from queue/playback surfaces
  • cursor-tracker: add Windows cursor tracking functionality

Bug Fixes

  • mini-player: rename size labels and restore correct height on startup
  • spotify-browse: extract playlist covers from detail page instead of grid
  • search: move sort bar outside scrollable area so it stays fixed below tabs
  • browse-window: allow IPC calls from external URLs on Windows
  • spotify-browse: open debug window on Start so DevTools is always accessible
  • settings: allow re-checking for updates after "up to date" result
Viboplr v0.9.59 May 10, 2026

Features

  • browse-windows: add capability for managing plugin browse windows

Bug Fixes

  • queue: restore cover image on restart and remove sidecar dedup
Viboplr v0.9.58 May 9, 2026

Features

  • downloads: add plugin quality options API for download modal
  • downloads: persist download quality preference across modal sessions

Bug Fixes

  • db: add migration for playlists description and metadata columns
  • sidebar: prevent horizontal scrollbar when collapsed
Viboplr v0.9.57 May 9, 2026

Features

  • tags: add refresh image context menu and tile menu button
  • plugin-view: add useRef to manage previous value in PluginTextInput
  • spotify-browse: implement step-by-step debugger and update devtools commands

Refactoring

  • google-image-search: replace debug mode with step-by-step debugger

Style

  • settings: add max-width and center settings content
Viboplr v0.9.56 May 8, 2026

Features

  • google-image-search: add debug mode to save HTML pages on search
  • images: support force-refresh for tag images

Bug Fixes

  • spotify: update login detection for current Spotify web player DOM
Viboplr v0.9.55 May 8, 2026

Features

  • plugins: always show TIDAL server status banner in browse view
  • plugins: extend google-image-search to artists and albums with per-entity suffixes
  • plugins: add search suffix setting and image gallery to google-image-search
  • mini: expand on hover without window focus via native cursor polling

Bug Fixes

  • queue: write cover.jpg from local path when coverUrl is not an HTTP URL
  • queue: persist coverUrl in manifest so cover can be re-downloaded on restart
  • ui: show original source URL in Now Playing tooltip instead of resolved playable URL
  • plugins: improve google-image-search reliability with settle delay and size filter
  • ui: move collection sync progress indicator to right of global search

Refactoring

  • images: remove automatic composite tag image generation
  • settings: reorganize Settings panel layout and tabs
  • plugins: remove priority from manifests, use internal defaults

Other

  • Revert "fix(queue): persist coverUrl in manifest so cover can be re-downloaded on restart"
Viboplr v0.9.54 May 7, 2026

Features

  • types: add multiline and rows properties to PluginViewData type
  • plugins: replace greek-lyrics and lyrics-search with unified google-lyrics plugin
  • ui: redesign follow-playback as tri-state button in right controls
  • spotify: show last updated date next to toolbar title

Bug Fixes

  • ui: show spinner in download modal while preparing download
  • ui: move status bar inside main content and suppress horizontal scrollbars
  • ui: increase like/dislike button size on detail pages
Viboplr v0.9.53 May 6, 2026

Maintenance release.

Viboplr v0.9.52 May 6, 2026

Bug Fixes

  • downloads: use stream resolver's download provider for NowPlaying downloads
Viboplr v0.9.51 May 6, 2026

Bug Fixes

  • downloads: use stream resolver's download provider for NowPlaying downloads
  • ui: fix mini player progress bar visibility and positioning
  • ui: left-align ultra mini player text, add album, improve progress bar
  • ui: add playback indicator and bump progress bar in ultra mini player
  • ui: improve ultra-compact mini player typography
  • ui: suppress focus-visible outlines in mini player
  • ui: improve mini player resting size toggle clarity
Viboplr v0.9.50 May 5, 2026

Features

  • ui: add multi-select, lasso selection, and multi-entity actions
  • mini-player: add width-cycle button and context menu submenu
  • mini-player: add fixed width size state, remove auto-resize
  • mini-player: add MiniWidthSize type and cycleMiniWidth function

Bug Fixes

  • images: bust browser cache when pasting/setting entity images
  • tags: refresh global tags list after track tag mutations
  • ui: add padding to information panel tab content
  • macos: add Homebrew paths to PATH when spawning yt-dlp/ffmpeg
  • mini-player: remove buttons from ultra-compact mode, center text
  • ui: add multi-select support to SearchView list and tiles modes
Viboplr v0.9.49 May 4, 2026

Bug Fixes

  • tags: rewrite Google Image Search plugin to extract data:image URIs
Viboplr v0.9.48 May 4, 2026

Bug Fixes

  • ui: remove focus outline globally instead of per-component
  • playback: Space key play/pause not working during video playback
  • tags: immediately remove deleted tag from SearchView list
Viboplr v0.9.47 May 4, 2026

Features

  • tags: add Google Image Search fallback for tag images
  • tags: add context menu with delete action for tags
  • search: keep SearchView mounted to preserve state across navigation
  • search: auto-load more results on scroll instead of manual button

Bug Fixes

  • nav: track tag navigation in back/forward history
  • playback: detect unsupported video codec and fail gracefully
  • updater: stop playback before installing app update on Windows
  • video-frames: reset cancelled entries to idle so re-enqueue works
  • prevent video element from stealing Space key for play/pause
Viboplr v0.9.46 May 3, 2026

Features

  • queue: consolidate play actions, fix context banner, editable metadata
  • tidal-browse: enrich album play context with source and metadata
  • artist: enrich play context with cached bio and add roundtrip tests
  • album: enrich play context with metadata and cached review
  • playlists: preserve metadata through mixtape export/import roundtrip
  • playlists: add description and metadata columns with full roundtrip
  • spotify-browse: scrape playlist descriptions and add per-playlist timestamps

Refactoring

  • remove TIDAL hardcoding from core, make plugin schemes generic
  • spotify-browse: unify playlist source URI and propagate metadata
  • context-menu: replace deny-list scheme checks with allow-list pattern

Chores

  • clean up all Rust compiler warnings
Viboplr v0.9.45 May 3, 2026

Features

  • now-playing: redesign download button and Follow toggle
  • surface video frame extraction progress and failures to session log
  • docked status bars for Spotify and TIDAL plugin views
  • spotify-browse: per-playlist dates, structured metadata, and status bar

Bug Fixes

  • db: add missing description column migration; feat(tidal-browse): persistent status toolbar

Refactoring

  • streamline playlist metadata handling and improve UI component structure

Documentation

  • reframe README and ui.md around plugin orchestration, remove service-specific references
  • update CLAUDE.md, README.md, and conventions.md to match current codebase
Viboplr v0.9.44 May 2, 2026

Features

  • queue: differentiate current track animation for playing vs paused
  • spotify-browse: include retrieval date in playlist queue title
Viboplr v0.9.43 May 2, 2026

Bug Fixes

  • playback: sync currentTrack with queue index on play failure
  • stream-resolver: strip remaster suffixes in TIDAL and YouTube resolvers
Viboplr v0.9.42 May 2, 2026

Features

  • mini-player: add native right-click context menu
  • queue: add behavioral contract, improve thumbnails and UX
  • report: add initial code health report with findings and recommendations

Bug Fixes

  • stream-resolver: strip remaster suffixes from title/album before library lookup

Refactoring

  • spotify: unify Open Spotify / Refresh All / Open Browser into single Sync button
Viboplr v0.9.41 May 2, 2026

Features

  • context-menu: replace HTML menus with native OS menus via Tauri Menu.popup()
  • track-detail: unify library and non-library track detail views
  • plugins: add Greek Lyrics plugin for Greek lyrics sites
  • search: multi-field sort chain with Like as a sort key
  • queue: prefer extracted video frame as thumbnail for video tracks

Bug Fixes

  • context-menu: use ref for context menu state so handlers read current value
  • context-menu: replace useEffect with direct call to avoid stale closures
  • db: honor artist_id and tag_id in get_tracks
  • queue: retry thumbnail load once backend finishes writing
  • queue: fall back to placeholder when thumb URL 404s

Refactoring

  • plugins: move info type order and priority to app-controlled defaults

Chores

  • remove outdated UI guidelines and architect documentation
Viboplr v0.9.40 May 1, 2026

Features

  • now-playing: rich source tooltip with audio props and quick actions
  • main-playlist: persist live queue in folder-based mixtape format
  • video-frames: auto-extract frames for visible video rows in library
  • mini-player: hover/focus expand and ultra-compact resting size

Bug Fixes

  • window: force exit on main window close to kill lingering process
  • queue: remove deleted library tracks from active queue

Performance

  • tags: bulk apply + per-track FTS update to stop post-scan UI freeze
Viboplr v0.9.39 May 1, 2026

Features

  • downloads: open DownloadModal from now playing Download button
  • youtube: persistent cache by videoId, smart transcode, logging
  • add confirm plugin view type, use playlist_id for archives
  • add api.storage.files for nested plugin file storage
  • spotify: diagnostics for scrape runs, Music button fallback
  • add api.downloads.enqueue, remove generic invoke escape hatch
  • add top-level api.log method, migrate tidal-browse
  • add api.system.exec, api.env.get, api.storage cache methods
  • replace enqueueTrack with insertTrack/insertTracks, add spotify track play
  • replace TIDAL-specific playback API with generic PluginTrack
  • expand plugin library API with FTS search, entity lookups, and getTags
  • batch overwrite with per-track comparison, replace TidalAlbumDownloadModal
  • create unified DownloadModal replacing single and batch modals
  • detect existing library tracks in batch download review step
  • wire BatchDownloadModal into App.tsx, add batch CSS styles
  • BatchDownloadModal downloading step with per-track progress
  • BatchDownloadModal resolve and review steps with inline manual search
  • BatchDownloadModal component with configure step
  • add download provider submenu to multi-track context menu
  • add debugOnly manifest flag — hides plugins when debug mode is off
  • default Save To to Downloads Folder, reorder dropdown
  • add spinner to loading states in InteractiveDownloadModal
  • add error rate and empty search rate to mock download plugin
  • add Show in Folder and Play buttons to download complete step
  • tidal-browse registers interactive download handlers
  • download context menu submenu with per-provider entries
  • replace TidalDownloadModal with generic InteractiveDownloadModal
  • create generic InteractiveDownloadModal component
  • add interactive download plugin API (onInteractiveSearch, onInteractiveResolve)
  • resolveTrackDownload supports provider filtering
  • add provider field to DownloadRequest for targeted downloads

Bug Fixes

  • downloads: play downloaded track with full library metadata
  • tidal: allow insecure TLS for TIDAL proxy instances
  • youtube: use after_move:filepath to get reliable output path
  • plugin toggles use checked: not value: for state
  • unified DownloadModal batch download fixes
  • BatchDownloadModal uses downloadFormat prop for quality default
  • prevent re-render loop in BatchDownloadModal resolve step
  • reload plugins when debugMode changes after initial load
  • Play button finds track from DB after download, falls back to path
  • Play button adds downloaded track to queue instead of replacing it
  • style disabled search button with reduced opacity
  • disable Search button while searching
  • move delay before error/empty checks in mock search handler
  • prevent double auto-search on mount in InteractiveDownloadModal
  • show download submenu in queue and playlist context menus

Refactoring

  • plugins: remove existing plugins section for clarity
  • move getDownloadFormat from api.collections to api.downloads
  • replace api.tidal with generic onResolveStreamByUri
  • replace InteractiveDownloadModal + BatchDownloadModal with unified DownloadModal
  • move spinner and disabled styles to design system
  • update tidal-browse and youtube plugins to new download provider API
  • unified download provider chain with resolveByUri + resolveByMetadata
  • replace source_provider_id/track_id/collection_id with uri + duration_secs on DownloadRequest
  • mixtape export uses download_file and download-resolve-request event
  • use shared download_file() in download_to_path and download_preview
  • extract shared download_file() helper in downloader.rs

Chores

  • remove obsolete lastfm cache migration
  • remove dead plugin API methods
  • cleanup old TidalDownloadModal CSS, fix album modal import

Other

  • debug: add console.log to mock download interactive search
Viboplr v0.9.38 April 27, 2026

Features

  • handle WebM downloads with ffmpeg conversion or DB-only metadata
  • add "Show in Folder" button to Already Downloaded modal
  • interactive seek slider in expanded mini player

Bug Fixes

  • show download button for tracks played via fallback resolvers
  • mini player close button now exits the app instead of just closing the window
  • prevent race conditions when restoring main window from mini player
Viboplr v0.9.37 April 27, 2026

Features

  • skip to next track when disliking the currently playing track
  • mini player expand-on-focus with direction-aware growth
  • add download button to now playing bar for remote tracks
  • add recommended metadata key suggestions to mixtape export
  • auto-set mixtape type from album/artist detail context

Bug Fixes

  • detect already-downloaded tracks before downloading
  • show source-aware progress during mixtape export

Refactoring

  • remove unused MINI_COLLAPSE_DELAY constant from useMiniMode hook
  • unify like/dislike buttons with shared LikeDislikeButtons component
Viboplr v0.9.36 April 27, 2026

Features

  • persist search view settings across navigations
  • make video frame captures clickable to play from timestamp

Bug Fixes

  • remove deleted tracks from search view locally instead of full refetch
  • force process exit on window close to kill lingering background threads
Viboplr v0.9.35 April 27, 2026

Features

  • add debug logging to YouTube plugin and mixtape download resolve
  • queue save dropdown, playlist context, and mixtape export modes
  • integrate video frame hover cycling into track tile cards
  • integrate video filmstrip into track detail view
  • add VideoFrameCard component for tile hover cycling
  • add VideoFilmstrip component for track detail page
  • add useVideoFrames hook for lazy frame extraction
  • add Tauri commands for video frame extraction and cache lookup
  • add video_frames module with ffmpeg duration parsing and frame extraction
  • add play and menu overlays to Spotify playlist detail header
  • add image fallback chain to queue panel with full debug tooltip
  • restyle tooltips with structured layout and skin-adaptive colors
  • add debug mode setting and improve queue tooltip

Bug Fixes

  • polish video frame thumbnails after code review
  • derive auto-save stream resolvers from plugin state instead of ref
Viboplr v0.9.34 April 26, 2026

Features

  • replace DuckDuckGo with hidden Google webview in lyrics-search plugin
  • add collection auto-update scheduler thread
  • add is_collection_due_for_auto_update with unit tests
  • add resyncing_collections guard to AppState
  • add last checked timestamp and server status to TIDAL plugin

Bug Fixes

  • strip whitespace-only lines in lyrics-search to eliminate double blank lines
  • remove duplicate double-click maximize handler from caption bar
  • use expansive power curve for more dramatic waveform display
  • transliterate non-ASCII chars to ASCII in image slugs
  • use drop guard for resync cleanup to prevent leak on panic
  • update last_synced_at on sync error to prevent tight retry loops

Refactoring

  • decouple history system from library IDs
  • clean up Track model with key field, nullable id, and remove dead fields
  • extract run_collection_resync from resync_collection command

Chores

  • upgrade 5 Rust crates to latest versions
Viboplr v0.9.33 April 25, 2026

Features

  • add code health review skill for auditing frontend and backend code quality
  • enhance image handling in App and components for better cover display

Bug Fixes

  • hide console window when spawning yt-dlp/ffmpeg on Windows
Viboplr v0.9.32 April 25, 2026

Features

  • redesign card hover to Spotify-style with gradient play button
  • show loading feedback in now playing bar during track transitions
  • add Open Folder and Go to Server buttons to collections
  • add toolbar to auto-tagger plugin with Apply Tags button
  • add track list and information sections to tag detail page
  • auto-tagger improvements and tag operation fixes

Bug Fixes

  • refresh frontend library after auto-tagger applies tags
Viboplr v0.9.31 April 24, 2026

Features

  • add stopword and character stripping to auto-tagger tokenizer
  • per-resolver auto-save stream toggles
  • TIDAL uptime monitoring with 30-minute health checks
  • match YouTube search results by duration (±3 seconds)
  • prefetch and preload next track at T-20 seconds
  • rewrite waveform cache with name/duration metadata and debug logging
  • enhance CollectionsView actions layout and button states
  • prefetch auto-continue track before playback ends
  • improve extensions view and YouTube plugin settings
  • integrate Media Session API for macOS Now Playing controls

Bug Fixes

  • exclude .claude/ worktrees from vitest test discovery
  • persist playlist track images and fix local cover URL rendering
  • key waveform cache by artist+title+duration instead of file path
  • refresh SearchView after track deletion

Chores

  • add debug logging for prefetch/preload/crossfade pipeline
  • consolidate CI checks into release pipeline and bump script
Viboplr v0.9.30 April 24, 2026

Bug Fixes

  • auto-tagger plugin fixes and sidebar icon improvements
  • add concurrency control and use git tag for release uploads
Viboplr v0.9.29 April 24, 2026

Maintenance release.

Viboplr v0.9.28 April 24, 2026

Bug Fixes

  • filter by liked in search query when liked_only is set
Viboplr v0.9.27 April 24, 2026

Features

  • separate playback (webm) from download (transcoded) for YouTube
  • add YouTube stream resolver via yt-dlp download
  • show volume slider in mini player on scroll
  • add toolbar plugin view type, redesign Spotify plugin header
  • add last check info, auto-refresh interval, open browser, per-section refresh
  • add plugin-storage archive and restore Save to Playlists
  • redesign Spotify plugin with section-based tabs and archived playlists

Bug Fixes

  • remove download progress UI from status bar
  • update currentAssetUrl on crossfade and gapless track advance
  • show file path instead of localhost in source tooltip
  • route auto-save downloads to correct collection
  • cache yt-dlp downloads and support file:// in downloader
  • remove sections to monitor from settings, managed via tabs instead
  • add title to toolbar plugin view type, show Spotify heading
  • restore keyboard paste image for album detail views
  • forward button data to plugin actions, add remove section tab

Refactoring

  • simplify playlist scraper to single link strategy

Documentation

  • add spec for Spotify browse plugin

Chores

  • clean up yt_cache directory on app startup
Viboplr v0.9.26 April 22, 2026

Features

  • add option to minimize to mini player instead of taskbar

Bug Fixes

  • show default disc placeholder when track has no image
  • remove source badge overlay from track images in queue and now playing
  • attach album images to tracks added via auto-continue and play next
  • include artist name in album image and web search queries
  • show album/artist label on track detail image to clarify source
Viboplr v0.9.25 April 22, 2026

Features

  • add auto-save trigger for remote tracks during playback
  • add pre-resolution local copy check for remote tracks
  • add Downloads section in Settings with folder picker and auto-save toggle
  • add backend commands for downloads collection management
  • add is_downloads column to collections (migration v29)
  • implement auto-tagger plugin with tokenization, analysis, and auto-assign
  • add auto-tagger plugin manifest
  • emit track-removed Tauri event from delete_tracks
  • bridge Tauri scan/sync/track events to plugin dispatchEvent
  • add track:added, track:removed, scan:complete to PluginEventName
  • spotify: rework plugin — remove archives, add diff tracking, configurable sections, settings panel
  • add debug logging to forward frontend activity to backend log file

Bug Fixes

  • write logs inside each profile directory instead of shared location
  • trigger auto-save on scrobble instead of playback start
  • unify sidebar nav button font size to --fs-sm

Refactoring

  • replace is_downloads column with store-based setting

Tests

  • add tokenization pipeline tests for auto-tagger plugin

Chores

  • remove Cargo.lock from repo and gitignore it
Viboplr v0.9.24 April 21, 2026

Features

  • make screenshots opt-in in bump script via --screenshots flag
  • add ds-tooltip to design system, source icon in now playing bar
  • add track source tooltip to now playing bar subtitle
  • add YouTube plugin with fallback playback and download via yt-dlp
  • support direct HTTPS URLs from fallback providers
  • add yt_dlp_check and yt_dlp_extract_audio_url commands
  • clean up cached images on archive delete and plugin load
  • cache Spotify playlist images locally on scrape
  • add plugin_cache_* commands for plugin image caching
  • support local image paths in PluginViewRenderer
  • universal Download submenu with provider selection
  • add Download provider settings UI and context menu action
  • downloads: add resolve bridge listener, provider wiring, and resolution tests
  • types: add download provider types to plugin type system
  • tidal-browse: register as download provider with onResolve handler
  • commands: add enqueue_download, download_resolve_response, and provider CRUD commands
  • downloader: implement resolve bridge in worker thread and process_download
  • downloader: refactor DownloadRequest, build_dest_path, write_tags, add DownloadResolveRegistry
  • db: add download_providers table with CRUD and migration v28
  • add GitHub Sponsors links to website and in-app settings
  • read TIDAL streaming quality from plugin storage
  • tidal-browse: implement native HTTP client, API functions, settings panel, and download search action

Bug Fixes

  • update E2E tests and Tauri mock for current app UI
  • fallback to YouTube when TIDAL/Subsonic resolution fails
  • handle missing artist image in TIDAL plugin detail view
  • refresh library after track deletion
  • reorder Extensions tabs and section groups

Refactoring

  • rename fallbackProviders to streamResolvers with cascading resolution
  • move TIDAL stream resolution to plugin, remove tidal.rs
  • remove dead TIDAL types and get_album method
  • remove obsolete tidal_save_track, download_track, download_album commands
  • remove dead TIDAL API surface from TypeScript
  • remove TIDAL search/metadata commands from Rust backend
  • route TidalDownloadModal search through tidal-browse plugin
  • move plugin settings from Settings tab to Extensions view

Tests

  • add unit tests for plugin cache path validation
Viboplr v0.9.23 April 20, 2026

Bug Fixes

  • prevent playlist scrape race and remove unnecessary scroll
  • improve debug log readability with selectable pre-formatted text

Refactoring

  • reorganize Spotify plugin UI with shared header and Archive tab
  • move Spotify debug log to separate tab, add show-browser toggle
Viboplr v0.9.22 April 20, 2026

Features

  • add Spotify auto-refresh, change detection, archiving, and archive UI
  • add plugin badge API and scheduler API wiring
  • add plugin scheduler commands and background thread
  • add plugin_schedules DB table and CRUD functions
  • add discreet source badge on track artwork for non-local tracks
  • add ds-empty style, always show TIDAL tabs, use ds-tabs
  • add benchmark results for version 0.9.21

Bug Fixes

  • show playback errors inline in mini player, add failure logging
  • hide like/dislike buttons for non-library tracks in Now Playing
  • show artwork for external playlist tracks in Now Playing and Mini Player
  • update version to 0.9.21 and refactor search input handling in PluginViewRenderer
  • reuse ViewSearchBar in plugin views for consistent search layout

Documentation

  • add CONTRIBUTING.md and CI workflow for open source contributors
  • add Spotify playlist archiving implementation plan
  • update spec with reviewer fixes (migration, concurrency, cleanup)
  • add Spotify playlist auto-refresh & archiving design spec
Viboplr v0.9.21 April 20, 2026

Features

  • add install-from-URL, extension commands, and deep link install
  • move Play button to image overlay on all detail pages
  • add download logging to TIDAL plugin
  • add export and delete actions to playlist context menu
  • add icons to all plugin manifests and show in Extensions view
  • restructure queue save controls with mixtape round-trip support
  • rename tape to mixtape, add metadata key:value map to manifest
  • add fallback detail pages for non-library entities
  • add Extensions Manager with update checking and VS Code-style UI
  • add TODO for evaluating Tantivy as a fuzzy/typo-tolerant search solution
  • add removed track count to resync completion stats
  • add inline progress bar and status text to collection cards
  • add sync indicator to caption bar with spin/done/error states
  • add resyncProgress/resyncComplete state wired to backend events
  • add collection_id to progress events and newTracks to completion events
  • add skinnable design tokens for border-radius and card grid
  • add design system with ds-* CSS classes
  • standardize Library view search box to match pill style
  • rename sidebar "Search" to "Library" with book icon
  • enhance css-review skill to detect unused CSS classes and improve reporting
  • add css-review skill for auditing CSS compliance and hardcoded color checks

Bug Fixes

  • use skin-aware colors for detail play overlay, enlarge artist avatar
  • recover Spotify plugin when browse window is closed externally
  • show error modal when fallback playback resolution fails
  • improve collection resync UX with loading state and error handling

Refactoring

  • redesign Extensions view with Skins/Plugins tabs and stacked sections
  • wire Extensions view into App.tsx with section headers
  • migrate form inputs to ds-input/ds-select/ds-modal-title
  • migrate modals and toggles to ds-modal/ds-toggle classes
  • migrate buttons to ds-btn design system classes
  • migrate tabs to ds-tab design system classes
  • replace hardcoded colors with skin variables, remove 88 dead CSS classes, standardize search boxes
  • remove Breadcrumb component

Chores

  • remove allmusic plugin
Viboplr v0.9.20 April 19, 2026

Features

  • add SKILL documentation for architect, drag-and-drop, and release processes
  • add Tags tab to search view

Refactoring

  • remove standalone entity list views in favor of Search view

Chores

  • remove dead code, add downloader tests and E2E specs

Other

  • update architect skill with project-specific knowledge
Viboplr v0.9.19 April 19, 2026

Features

  • add sort controls to search view albums tab
  • add sort controls to search view artists tab
  • add sort and filter controls to search view tracks tab
  • add Search view with tabbed results, pagination, and browse-all
  • album download modal with progress tracking, detail-header, and async TIDAL commands
  • add play button, context menu, and album context to TIDAL cards
  • add search icon and clear button to plugin search input, remove dead TidalView
  • add database search benchmark suite with HTML report
  • replace TIDAL detail views with shared card/track-row classes
  • replace TIDAL search screen with shared UI components
  • add autoFocus prop to ViewSearchBar
  • add TidalView.css for detail-specific styles
  • sidebar: pin Collections and Settings to bottom of sidebar
  • settings: show current profile name in General tab
  • settings: move profile folder to General tab
  • tape: accept .tape files in queue Open Playlist picker
  • add Open Containing Folder to queue and playlist track context menus
  • remove track count from artist tiles
  • standardize album tile info to show Artist - Year

Bug Fixes

  • liked first is a sort modifier, not a filter
  • hide breadcrumb in search view
  • restore playlist context and track images for Spotify playback
  • tape: pass tape title and cover to queue context on Just Play
  • tape: show default playlist icon when tape has no cover image
  • tape: make cover image optional in tape export
  • tape: resolve playlist tracks to library tracks by path for tape export
  • tape: widen tape modals from 560px to 640px
  • tape: fix TapeExportModal layout structure
  • tape: fix TypeScript errors in TapePreviewModal
  • hide breadcrumb bar on artist detail page to remove empty space

Performance

  • db: improve search performance and clean up database layer

Chores

  • document PlaylistContext system in UI rules
  • enrich tile card structure documentation in UI rules
  • clean up DEVELOPMENT.md
  • absorb PLUGIN-SYSTEM.md into rules/plugins.md
  • remove outdated WORKTREE_WORKFLOW.md documentation
  • restructure Claude rules into modular .claude/rules/ files
  • remove Randomizer and Example Stats plugins
Viboplr v0.9.18 April 17, 2026

Features

  • add .tape shareable playlist file format
  • implement auto collection update worker thread
  • use skin colors, partial fill, and minute-mode border for segmented seek bar
  • replace flat seek fill with segmented bar fallback
  • add SegmentedSeekBar component for no-waveform fallback
  • make queue context banner responsive to panel size
  • carry image_url on Track for queue thumbnails
  • make queue items responsive with progressive detail
  • show playlist context (name + cover) in queue panel
  • extend TIDAL plugin context menus to albums and playlists

Bug Fixes

  • remove gradient pill backgrounds from seek bar time labels
  • use skin-aware gradients for detail header overlays
  • use skin-aware tooltip styling for information section tabs
  • let plugin playlist cards carry tracks into context menu targets
  • enable context menu on similar-artist cards
Viboplr v0.9.17 April 17, 2026

Features

  • add context menus to Spotify playlist cards and fix plugin view styling
  • register TIDAL as a fallback playback provider
  • add playback fallback provider ordering to settings
  • integrate fallback chain into resolveTrackSrc for unknown URL schemes
  • add fallbackProviderOrder to app store defaults
  • add fallback provider types and wire into plugin system
  • add fallback provider interface and resolution logic
  • add find_track_by_metadata backend command with two-pass matching
  • add 'unknown' URL scheme variant to parseUrlScheme
  • add context menu to playlist tiles with plugin extensibility
  • add playlist save/delete modals, default image, and play button
  • playlists: add Save Playlist action to Spotify plugin
  • playlists: add 'Save as Playlist' button in queue panel
  • playlists: add PlaylistsView styles
  • playlists: add Playlists sidebar entry and wire up view
  • playlists: add PlaylistsView component with list and detail modes
  • playlists: add PluginPlaylistsAPI and playlists View type
  • playlists: add Tauri commands for playlist CRUD and export
  • playlists: add playlists/playlist_tracks tables and CRUD functions
  • playlists: add Playlist and PlaylistTrack model structs
  • add Ctrl+A / Cmd+A select-all to queue panel

Bug Fixes

  • improve Spotify plugin debug log formatting and copy-paste support
  • improve Spotify scraper reliability for personalized playlists
  • playlists: add error handling and save feedback
  • album/tag detail header hidden by stale view search query
  • paste image bypasses WebKit clipboard permission prompt
  • synced lyrics not clearing previous active line highlight
  • sync-with-playing now follows normal track transitions
Viboplr v0.9.16 April 15, 2026

Features

  • add Ctrl+A / Cmd+A select-all to queue panel

Bug Fixes

  • paste image bypasses WebKit clipboard permission prompt
  • synced lyrics not clearing previous active line highlight
  • sync-with-playing now follows normal track transitions
Viboplr v0.9.15 April 15, 2026

Bug Fixes

  • album detail view uses unified scrollable layout
  • update album name display to include artist name
  • refresh library metadata after TIDAL download completes
Viboplr v0.9.14 April 14, 2026

Features

  • playlist double-click to play and "Keep only" context menu
  • add full re-sync option to Last.fm history import
  • add image menu to track detail view
  • add tab reordering to artist and album detail information sections
  • move information sections below track list in artist/album details

Bug Fixes

  • album detail image menu clipped by overflow:hidden

Documentation

  • update conventions for detail page consistency and layout structure
Viboplr v0.9.13 April 14, 2026

Features

  • thread onEntityContextMenu through detail views to App.tsx
  • add onEntityContextMenu to RendererProps and EntityListRenderer
  • make IDs optional in ContextMenuTarget and gate library-only actions
  • add itemKind to EntityListData for entity list context menus
  • add blurred vignette hero background to album, tag, and track detail pages
  • add blurred vignette hero background to artist detail page
  • Ctrl+A / Cmd+A selects all tracks in track list
  • use custom CSS tooltip on sync toggle button
  • add CSS-only tooltip styles via data-tooltip attribute
  • only auto-navigate to track details on automatic track changes
  • track source of track changes in usePlayback
  • drag-and-drop tab reordering in Track Detail View

Bug Fixes

  • add consistent trackId guards and remove unnecessary type assertions
  • track popularity matching for non-Latin titles (Greek, Cyrillic, etc.)
  • refresh track list after download completes
  • eliminate double track fetch when navigating to All Tracks
  • reduce top search bar width by 20%
  • register open_profile_folder in release build, show paths in debug settings
  • reassign albums to new artist when bulk editing artist name
  • clean up orphaned artists/albums/tags in recompute_counts
  • let information section content fill available space and scroll
  • widen duration column to fit header + sort icon, default numeric sorts to descending

Performance

  • make get_tracks async and memoize sortedTracks

Refactoring

  • extract shared context menu handlers to useContextMenuActions
Viboplr v0.9.12 April 13, 2026

Features

  • replace UpgradeTrackModal with unified TidalDownloadModal
  • universal track actions — plugin context menu items on all surfaces
  • add consistency enforcement skill

Bug Fixes

  • rename all YouTube actions to "Find in YouTube" for consistency
  • use modal instead of status bar for YouTube save feedback
  • resolve .catch() convention violations across frontend

Refactoring

  • unify Find-in-YouTube behind shared watchOnYoutube function
  • remove TrackActions dropdown from TrackDetailView

Documentation

  • update CONVENTIONS.md to reflect unified watchOnYoutube function
  • add information sections convention for detail page content
  • add consistency skill trigger to CLAUDE.md
  • add CONVENTIONS.md with canonical actions and behavioral rules
Viboplr v0.9.11 April 13, 2026

Features

  • show YouTube play button only when URL exists
  • move search providers into context menu submenu
  • unify image menus, add paste/search, fix album track play buttons
  • sort empty section tabs to the end
  • move tags to Details tab and add section data availability dots
  • split Genius song explanation into Song Bio and Song Meaning tabs
  • add tooltip descriptions to information section tabs
  • add show/hide toggle for Spotify browse window, hidden by default
  • rewrite Spotify plugin to use internal browse window
  • integrate screenshot generation into bump release script
  • add skinned detail view screenshots to features page
  • use real album art from iTunes CDN, collapse sidebar/queue
  • add artist and album art to screenshot mock
  • add generated screenshots to docs site
  • replace screenshot placeholders with actual images in docs
  • add screenshots npm script with WebP conversion
  • add Playwright screenshot test cases for 10 app views
  • add rich screenshot mock data for Playwright screenshots
  • spotify: add sp_dc cookie auth and 3-tier personalized feed fallback

Bug Fixes

  • normalize Genius annotation fragments before lyrics matching
  • route track_info data through InformationSections to fix race condition
  • allow disabling built-in plugins
  • reset active tab to first when entity changes
  • clean up Genius song explanation to show only lyrics & annotations
  • add ISSUES.md to .gitignore to prevent tracking
  • grab playlist cover images from detail pages during scrape
  • only auto-enable built-in plugins on first launch
  • fix screenshot mock store format and test selectors

Refactoring

  • unify detail view layout and fix Last.fm race condition

Documentation

  • add screenshot automation implementation plan
  • add screenshot automation design spec

Chores

  • regenerate screenshots with artwork
Viboplr v0.9.10 April 11, 2026

Features

  • spotify: add personalized home feed and full playlist pagination
  • improve YouTube URL state in Track Details actions menu
  • add Delete Track option to queue context menu

Documentation

  • add Spotify personalized feed design spec
Viboplr v0.9.9 April 11, 2026

Features

  • add consistent love/hate buttons and YouTube actions to detail views
  • genius: show full lyrics with inline annotations in Song Explanation

Bug Fixes

  • windows: use tauri-plugin-opener for folder reveal and open commands
  • info-sections: delay empty state transition to show fetch progress

Refactoring

  • move image menus to artwork, inline web search, remove Retrieve Info
Viboplr v0.9.8 April 11, 2026

Features

  • scanner: extract tags for video files from folders and filename keywords
  • info-sections: add tabOrder prop for configurable tab ordering
  • info-sections: show fetch progress with provider names and URLs
  • info-sections: show Source attribution for all plugin sections
  • info-sections: add refresh button, dimmed empty tabs, and empty state message
  • info-types: return empty state instead of hiding sections with no data
  • allmusic: implement artist bio scraping plugin
  • allmusic: add plugin manifest for artist bio fallback
  • add lyrics-search meta-search plugin with configurable domains
  • add Genius and Lyrics.ovh as lyrics fallback providers

Bug Fixes

  • genius: add _meta to lyrics response for View on link
  • update tests and CSS for hidden-to-empty rename
  • plugins: remove version-change cache wipeout that deleted shared type data
  • allmusic: use full artist URL for biography fetch

Refactoring

  • waveform: key cache on file path instead of track ID
  • info-types: replace hidden state with empty for visible empty sections

Documentation

  • add implementation plan for info sections UX improvements
  • address spec review feedback
  • add info sections UX improvements spec
  • add AllMusic plugin implementation plan
  • address spec review recommendations
  • add AllMusic plugin design spec
Viboplr v0.9.7 April 10, 2026

Bug Fixes

  • disable DMG AppleScript on CI to prevent flaky bundle failures

Chores

  • gitignore .claude/worktrees and remove accidentally committed worktrees
Viboplr v0.9.6 April 10, 2026

Features

  • add open profile folder button to debug settings
  • default to clean UI with sidebar, queue, and sort bar collapsed
  • add drag-and-drop guidelines and implementation pattern for Tauri's WKWebView
  • update breadcrumb and sidebar for settings view
  • wire settings view into main content area
  • convert SettingsPanel from modal to inline view with horizontal tabs
  • add 'settings' to View union type
  • add Provider Priority section to Settings Providers tab
  • add frontend image resolver hook
  • add JS image provider plugins (deezer, itunes, audiodb, musicbrainz, tidal)
  • add imageProviders API namespace for plugin image fetch handlers
  • replace hardcoded image provider chains with Rust-JS bridge mechanism
  • parse imageProviders from plugin manifests and sync to backend
  • add ImageResolveRegistry and provider management Tauri commands
  • add image_providers table and DB functions for configurable provider priority
  • add play/YouTube buttons to ranked list items (top tracks, similar tracks)
  • thread positionSecs context to renderers, handle save-lyrics action
  • upgrade LyricsRenderer with synced lyrics, editing, and context support
  • add lrclib JS plugin for lyrics via information types
  • rewrite useInformationTypes for provider fallback and name-based entity keys
  • update information type frontend types for integer PK and provider chains
  • refactor information_types to integer PK with FK from information_values
  • call info_sync_types instead of info_rebuild_types
  • replace destructive info_rebuild_types with idempotent info_sync_types
  • add Genius plugin with song explanation, artist/album descriptions
  • add AnnotationsRenderer for Genius song explanations
  • add annotations displayKind and AnnotationsData type
  • double artist avatar (160px) and album art (240px) sizes
  • add customTabs support to InformationSections, move Albums into tabs
  • move Albums section above InformationSections in artist detail
  • album detail uses dual-placement InformationSections layout
  • artist detail uses dual-placement InformationSections layout
  • add placement prop with tab rendering to InformationSections
  • add tab bar and right-placement styles for InformationSections
  • add InfoPlacement type and getInfoPlacement helper
  • integrate remaining Last.fm services into plugin system
  • move Last.fm client from Rust backend to frontend plugin
  • integrate InformationSections into artist detail view, migrate artist_bio
  • add lastfm-info internal plugin with artist_bio info type
  • add InformationSections generic component
  • add 10 display kind renderers for information type system
  • add useInformationTypes hook with fetch lifecycle and caching
  • extend usePlugins with informationTypes API namespace
  • add TypeScript types for information type system
  • add Tauri IPC commands for information type storage
  • db: add information types plugin system tables and CRUD
  • Delete/Backspace key deletes selected tracks from track list
  • debug builds auto-use dev-{worktree_name} profile

Bug Fixes

  • update @tauri-apps/plugin-dialog to version 2.7.0
  • resolve Dependabot security vulnerabilities
  • replace HTML5 DnD with manual mouse-event drag for provider pills
  • add pluginStates to fetchConfig deps and remove dead code
  • use plugin manifest names instead of hardcoded display name map
  • correct drag-and-drop logic for album embedded pill
  • add User-Agent header to plugin_fetch for MusicBrainz API compliance
  • remove double URL encoding in musicbrainz album search query
  • narrow entity type and add try/catch in invokeImageFetch
  • genius plugin registers as fallback provider for artist_bio and album_wiki
  • update .gitignore to exclude .claude directory
  • tidal download more robust error handling and dialog fallback
  • tidal download prompts for folder when no local collection exists
  • tidal download resolves first local collection as destination
  • tidal plugin download auto-resolves collection when not provided
  • tidal download respects user's preferred format from settings
  • make tidal_save_track format optional, default to flac
  • tidal download from plugin uses correct arg name tidalTrackId
  • clicking plugin sidebar button (Tidal) clears track detail and returns to view
  • ranked list play button searches DB for track, falls back to YouTube
  • play button on ranked list items — use correct get_track_by_id command
  • YouTube button uses search_youtube for direct video links instead of search page
  • move play/YouTube buttons before title and increase size in ranked lists
  • detail view layout — header fills width, right-placement matches height
  • queue locate track button opens track detail view
  • sync button always navigates to track detail view
  • exclude track_tags from TrackDetailView InformationSections
  • move lyrics to below-placement instead of right
  • let track header size naturally so right-placement sits beside it
  • restructure track detail layout to match artist/album pattern
  • only below-placement InformationSections spans all columns
  • double track detail art size from 120px to 240px
  • make InformationSections span all columns in track detail
  • exclude plugin similar_tracks from TrackDetailView
  • add InformationSections to TrackDetailView for plugin-based content
  • dock right-placement sections to the right edge
  • reduce right-placement section width and height
  • cap right-placement section height at 300px with scroll
  • below-placement tabs use full height and full width
  • use tabs for any placement with 2+ sections, not just right
  • match information sections styling to original About section
  • use return-based export in lastfm-info plugin instead of module.exports
  • auto-enable built-in plugins that provide informationTypes
  • address review issues in information type system
  • rename "Locate File" / "Show in Folder" to "Open Containing Folder"
  • prevent long titles from overflowing modal dialogs
  • path search uses exact substring matching instead of FTS tokenization

Refactoring

  • remove Rust image provider implementations replaced by JS plugin bridge
  • change Similar Tracks from entity_list to ranked_list display kind
  • remove lyrics search toggle and delete LyricsPanel component
  • delete unused NowPlayingView component
  • remove lyrics state and LyricsPanel from TrackDetailView
  • remove lyrics table, commands, and lyric_provider module
  • drop unused lastfm_cache table and methods
  • useArtistInfo discovers ranked_list types dynamically instead of hardcoding
  • move track details (format, path, plays) into InformationSections tab
  • move Lyrics and Play History into InformationSections tabs
  • remove hardcoded Similar Tracks, add YouTube links to plugin
  • remove genius.rs backend module, now handled by plugin
  • remove hardcoded Genius integration from TrackDetailView
  • unify InformationSections into single tab-based path with collapse
  • use compact popularity bar style in RankedListRenderer
  • move "View on Provider" link to footer below content
  • render Top Songs and Similar Artists as InformationSections

Documentation

  • update PLUGIN-SYSTEM.md and plugin-system skill for image provider refactor
  • add lyrics plugin migration implementation plan
  • add Genius plugin implementation plan
  • address spec review feedback for Genius plugin
  • add Genius plugin design spec
  • add information type plugin system implementation plan
  • add html and image_gallery renderers to info type spec

Tests

  • add info_sync_types tests for metadata update and reactivation
  • add unit tests for information type cache decision logic

Chores

  • add release skill for version bumping workflow
  • update dependencies

Other

  • Refactor: Update .gitignore to remove unnecessary entries; add PLUGIN-SYSTEM.md for comprehensive plugin architecture documentation; introduce ui-guidelines.md for UI design standards and button system specifications.
Viboplr v0.9.5 April 6, 2026

Features

  • resizable playlist panel with persistent width and edge collapse button
  • scroll wheel changes volume in mini player
  • per-view default column configs for detail views
  • index full relative path instead of filename in FTS search
  • expose relative_path field and show raw DB path in track list
  • YouTube integration in track detail view
  • collapsible details section with persistent show more/less toggle
  • show full URI path in track details
  • show full path in track details with locate and copy buttons
  • revamp track detail tags with community fallback and edit button
  • refactor: extract LikedTracksView component from App.tsx

Bug Fixes

  • consistent dislike button styling and seek bar border
  • dislike button style matches like button in now-playing bar
  • auto-continue excludes tracks already in the queue
  • smaller vertically stacked close/restore buttons in mini player
  • remove focus outline on mini player buttons
  • reduce volume arrow key step from 10% to 5%
  • reduce popularity column width by 25%
  • strip parenthesized content when matching track popularity
  • group section titles with content in detail views
  • restore full metadata for subsonic tracks on app restart
  • respect hideTitle prop in lyrics panel main view
  • consistent font size and inline labels for track detail sections
  • update Issues.md with additional details and clarify existing points
  • merge assigned and community tags into single line with add/remove
  • central search footer only visible with results and pinned at bottom

Refactoring

  • unify detail view sections with generic section-narrow/section-wide classes
  • store relative paths in DB, reconstruct full URIs in SQL
  • remove TrackPropertiesModal and move stats to track detail
  • extract AllTracksView component from App.tsx
  • extract TagListView component from App.tsx
  • extract AlbumDetailHeader component from App.tsx
  • extract AlbumListView component from App.tsx
  • extract ArtistDetailContent component from App.tsx
  • extract ArtistListView component from App.tsx
  • extract CaptionBar component from App.tsx
  • extract useContextMenuActions hook from App.tsx
  • extract useArtistInfo hook from App.tsx
  • extract useCollectionActions hook from App.tsx
  • extract useLikeActions hook from App.tsx
  • extract useDownloads hook from App.tsx
  • extract useLastfm hook from App.tsx
  • move stripAccents and formatCount to utils.ts

Documentation

  • remove FTS indexing from information type system
  • address spec review findings for information type system
  • add information type plugin system design spec

Chores

  • add Issues.md to .gitignore
  • clean up minor issues from refactoring review

Other

  • Removing src/components/Issues.md from the project as it is no longer needed. This file contained documentation for issues related to the project, but we have decided to remove it to streamline our documentation and focus on more relevant content. The information in Issues.md has been either integrated into other documentation or deemed unnecessary for our current needs.
  • Issues
Viboplr v0.9.4 April 5, 2026

Features

  • replace unicode triangle with SVG chevron for section toggles
  • collapsible detail view sections with inline clickable headers
  • apply glass buttons and SVG icons to mini player
  • show search instructions overlay on central search focus
  • apply glass button system app-wide and add UI guidelines
  • move sync-with-playback button from breadcrumb to now playing bar
  • make ViboPLR logo draggable for window movement
  • glass/frosted button redesign for now playing bar controls
  • now playing bar — art placeholder, aligned controls, subsonic path
  • group play history by year and normalize font sizes
  • improve TrackDetailView — lyrics actions, genius cleanup, local-only folder
  • redesign TrackDetailView sections — reorder, fix lyrics, masonry layout

Bug Fixes

  • wrap album review title and content together in detail view
  • hide sidebar collapse button in mini player mode
  • move mini player CSS to NowPlayingBar.css to fix cascade order
  • show modal when artist/album navigation fails
  • clear track detail view when committing central search
  • correct next track SVG icon path in now playing bar
  • align lyrics section title with other sections

Refactoring

  • split monolithic App.css into component-level CSS files

Documentation

  • add now playing bar glass controls redesign spec
Viboplr v0.9.3 April 5, 2026

Features

  • add Genius song explanation section to Track Detail View
  • Top Songs buttons — play single track only, use icon-only style
  • add inline Play/YouTube buttons to Top Songs, remove from context menu

Bug Fixes

  • use YouTube logo icon for Top Songs YouTube button

Other

  • Spec Update
Viboplr v0.9.2 April 5, 2026

Features

  • add lyrics include/exclude toggle for track search
  • make lyrics section responsive — sits right of header when space allows
  • redesign TrackDetailView with hero header, options menu, and quality info
  • remove NowPlayingView and add loading/empty states for Last.fm info
  • show only video in main area when viewing a video track's details
  • add sync-with-playback toggle for detail views
  • replace breadcrumb with view titles and deselect sidebar on detail views
  • add inline Track Detail View with lyrics, tags, play history, and similar tracks
  • multi-entity central search returning artists, albums, and tracks
  • add artist top songs, section toggles, web search rename, and layout improvements
  • responsive artist detail layout with horizontal album scroll
  • responsive album detail layout and sortable popularity column
  • enhance Now Playing view with album stats, popularity bars, unmatched tracks, and menu restructure
  • add play and context menu buttons to NP album/artist cards, fix lyrics overflow
  • consolidate similar tracks into inline links with library lookup

Bug Fixes

  • ensure highlighted search result scrolls into view
  • move like/dislike buttons between art and titles in now playing bar
  • use server URL in subsonic:// scheme and fix stale closure in auto-continue
Viboplr v0.9.1 April 4, 2026

Bug Fixes

  • use window.setTimeout to resolve Node/browser type conflict in LyricsPanel
Viboplr v0.9.0 April 4, 2026

Features

  • rename Track._location to url and add Playwright E2E tests
  • lyrics: integrate LyricsPanel into NowPlayingView with event listeners and auto-fetch
  • lyrics: add check_lyrics_match for search result lyrics badges
  • lyrics: add CSS styles for lyrics panel
  • lyrics: add LyricsPanel component with synced/plain display and edit mode
  • lyrics: add backend commands, fetch worker, and lyric provider chain
  • lyrics: add LyricProvider trait, fallback chain, and LRCLIB provider
  • lyrics: add lyrics CRUD, LRC timestamp stripping, and FTS update functions
  • lyrics: add lyrics table, model, FTS column, and migration v12
  • add waveform grow-in animation with stagger on peak data load
  • add album art glow and track info slide animation
  • add animated equalizer bars for playing track indicator
  • add sliding sidebar active indicator
  • smooth sort bar collapse/expand animation
  • add heart bounce animation on like/dislike toggle
  • add animation keyframes, modal and context menu scale-in
  • add playback error modal with auto-skip to next track
  • add Last.fm album track popularity column
  • add force refresh for artist/album images and info
  • clickable artist/album in list view and album detail placeholders
  • show detailed failure list in delete error modal

Bug Fixes

  • waveform grow-in triggers per-track, sidebar indicator default height

Documentation

  • add animations implementation plan
  • address spec review feedback for animation design
  • add animation design spec
  • add lyrics support implementation plan
  • address spec review feedback for lyrics design
  • add lyrics support design spec

Chores

  • update viboplr version to 0.8.10

Other

  • Spec Update
Viboplr v0.8.10 April 3, 2026

Features

  • enhance video container styling in now playing mode
  • persist per-view sort, filter, and liked-first preferences
  • add delete feedback — error modal on failure, status bar on success
  • add play button to album cards with hover effect
Viboplr v0.8.9 April 2, 2026

Bug Fixes

  • restore window dragging in caption bar after search box resize

Refactoring

  • decouple locate-track from library IDs, match by name instead
Viboplr v0.8.8 April 2, 2026

Maintenance release.

Viboplr v0.8.7 April 2, 2026

Maintenance release.

Viboplr v0.8.6 April 1, 2026

Features

  • add plugin gallery and user plugin management

Bug Fixes

  • gate macOS-only RunEvent variants with cfg(target_os = "macos")
Viboplr v0.8.5 April 1, 2026

Bug Fixes

  • use array notation for plugin resource bundling to preserve directory structure
Viboplr v0.8.4 April 1, 2026

Features

  • add Spotify plugin with OAuth PKCE auth and library browsing
  • migrate TIDAL features to plugin context menu system
  • replace MusicGateAway with native TIDAL backend + JS plugin

Refactoring

  • route "Search on TIDAL" through plugin and remove dead AddTidalModal
Viboplr v0.8.3 April 1, 2026

Bug Fixes

  • replace hardcoded colors and font sizes with CSS variables
  • define undefined CSS variables and add bg-tertiary/text-tertiary design tokens
Viboplr v0.8.2 April 1, 2026

Bug Fixes

  • add app bundle target to restore macOS updater support
Viboplr v0.8.1 April 1, 2026

Features

  • add auto-import settings UI in Last.fm settings panel
  • frontend auto-import state, event handling, and store integration
  • register auto-import commands and add graceful shutdown
  • make manual import incremental with from parameter and source/timestamp events
  • add auto-import commands and background thread
  • add from parameter to get_recent_tracks for incremental imports

Bug Fixes

  • tiles view layout and settings modal dismiss behavior
  • review fixes - stop_auto_import clears importing flag, use ToggleSwitch component
  • add missing AppState fields to test helper
  • disable single-instance plugin in dev builds
Viboplr v0.8.0 March 31, 2026

Features

  • add bulk_update_tracks Tauri command
  • add frontend bulk track editing UI
  • add bulk_update_tracks method to Database
  • add year column to tracks table with migration 11
  • add tag_writer module for updating local audio file metadata
  • redesign album detail view and add icons + providers to option menus
  • redesign artist detail view with improved header and responsive bio layout
  • add file-based logging system with Settings toggle
  • update logo to Vinyl V design and add open source branding

Bug Fixes

  • prevent mutex poison on tag insert failure and optimize file writing loop
  • restore now-playing from location+metadata instead of DB IDs
  • default plugins to disabled and fix plugin toggle UI
Viboplr v0.7.2 March 30, 2026

Maintenance release.

Viboplr v0.7.1 March 30, 2026

Maintenance release.

Viboplr v0.7.0 March 30, 2026

Features

  • add plugin system with native/user plugin support
  • split TIDAL search results into Tracks/Albums/Artists tabs
  • split history view into tabs and add arrow key navigation
  • make lists scroll independently and add arrow key navigation from search
  • make logo clickable to open the Viboplr website

Bug Fixes

  • restore current track on app restart and play single track on double-click
  • improve play/pause button sizing and skin compatibility
  • use skin-aware CSS variables for view search bar

Refactoring

  • move About section into General settings tab
Viboplr v0.6.0 March 29, 2026

Features

  • add play, TIDAL search, and YouTube actions to similar tracks
  • expand Last.fm integration with caching, async fetching, and UI improvements
  • skins: add Silver, Ocean Blue, Viboplr, and Sunset built-in skins
  • skins: add Skins tab to Settings with skin cards, import, and gallery UI
  • skins: implement useSkins hook for skin management and CSS injection
  • skins: add Rust skin file I/O and gallery HTTP commands
  • skins: add skin validation, CSS generation, and sanitization utilities
  • skins: add TypeScript type definitions for skin system
  • consolidate font sizes into 7-level CSS variable type scale

Bug Fixes

  • replace hardcoded colors with CSS variables for skin compatibility
  • improve caption bar — space logo from traffic lights, center search box, rotate placeholder text
  • add ellipsis truncation to track title column in table view
  • align track title text with other columns in table view
  • skins: add spinner to gallery loading state
  • skins: remove unused SkinJson import
  • skins: add missing SkinInfo and gallery type definitions

Refactoring

  • decouple similar track actions from TrackPropertiesModal
  • css: tokenize semantic colors and add overlay-base variable for skin support

Documentation

  • update CLAUDE.md and README.md for skins, Last.fm metadata, and track properties

Other

  • Spec Update
Viboplr v0.3.23 March 29, 2026

Features

  • improve download modal with track list, format picker, custom folder support
  • implement clamped position for context menu to prevent overflow
  • replace built-in TidalClient with MusicGateAway integration
  • URI-based M3U save/load and show_in_folder for queue tracks
  • resolve playback source from location URI instead of DB lookup
  • persist and restore queue as QueueEntry[] with location URIs
  • add QueueEntry utilities for URI-based queue persistence
  • add resolve_subsonic_location and get_tracks_by_paths commands
  • show per-collection statistics in collection cards
  • replace --data-dir with Chrome-like profile system

Bug Fixes

  • keep TidalView mounted to preserve state across view switches

Other

  • Reset scroll position when view search query changes
  • Hide window during mini mode transition to avoid UI flash
  • Split mini player drag handling by platform
  • Fix mini player double-click to restore on Windows
Viboplr v0.3.22 March 28, 2026

Bug Fixes

  • update package version to 0.3.21 and bump picomatch to 4.0.4
  • use ✖ (U+2716) as red close icon in mini player
  • mini player layout broken by queue/sidebar grid overrides
  • disable window resizing in mini player mode
  • update docs download URLs to v0.3.21 and fix bump script URL replacement
Viboplr v0.3.21 March 28, 2026

Maintenance release.

Viboplr v0.3.21 March 28, 2026

Features

  • enable devtools in production builds via F12/Ctrl+Shift+I
  • enhance bump.mjs into full release orchestrator

Bug Fixes

  • mini player layout broken on Windows due to stale viewport units

Documentation

  • update release history page
Viboplr v0.3.20 March 27, 2026

Features

  • add Last.fm history import with dedicated settings tab
  • add TIDAL upgrade download progress, save-as-copy option, and async commands
  • move view mode toggle and sort controls to breadcrumb row
  • add size sorting option in track query

Bug Fixes

  • preserve file extension in download temp files so tags are written correctly
  • adjust mini window size and enhance now playing button styling

Documentation

  • update release history page
Viboplr v0.3.19 March 27, 2026

Features

  • add track and artist rank display in now playing bar
  • add ViboPLR logo to caption bar and reduce caption bar height
  • add server-side track search and update history models with ranking
  • make playlist panel always visible in collapsed or expanded state
  • server-side artist search in history with global ranking
  • name-based artist image lookup for history view
  • add album ID to history entries and update HistoryView for album art display

Bug Fixes

  • update release dates in history.html for accuracy

Documentation

  • update release history page

Chores

  • remove pages deployment trigger from release workflow

Other

  • Update cloudflare token
Viboplr v0.3.18 March 27, 2026

Features

  • tokenized AND search for artists view
  • auto-generate composite tag images from top artist photos
  • double-click mini player to restore main window
  • redesign mini player with album art, two-line layout, and grouped right controls
  • two-line layout for track list view with larger fonts
  • enrich search dropdown with album art, two-line rows, and enqueue support
  • wire central search dropdown and per-view search bars in App
  • add CentralSearchDropdown component with overlay styles
  • add ViewSearchBar component for per-view search
  • add useCentralSearch hook for caption bar dropdown
  • add useViewSearchState hook for per-view search state
  • restructure grid layout, add rounded corners, restyle caption bar
  • add caption bar and traffic light styles, remove old sidebar brand styles
  • restructure caption bar with brand, sidebar toggle, and dual WindowControls
  • locate track navigates to album view when available
  • remove sidebar brand header, move branding to caption bar
  • add macOS traffic lights and mini player to WindowControls
  • disable native window decorations for custom caption bar

Bug Fixes

  • center hover circles on mini player buttons and add hover to play/pause
  • prevent mini player text from pushing controls out of view
  • fetch TIDAL instance list once per day, refresh on failure
  • absolutely center playback controls in now-playing bar
  • center now-playing controls independently of track info width
  • stop view search icon from floating over sidebar
  • add / shortcut for central search, avoid unnecessary IPC on client-side views
  • mini player layout — fill viewport height and center controls
  • prevent mini player window from going off-screen
  • redesign caption bar layout and enlarge search box
  • remove all Tauri event listeners from WindowControls to fix perf regression
  • use module-level singleton for Tauri window event listeners
  • properly cleanup Tauri event listeners, add global-shortcut perms
  • sidebar collapse on edge, rounded corners on html, queue visibility
  • move sidebar toggle to sidebar, fix WindowControls perf
  • address code review findings
  • improve waveform analysis and time label readability
  • add missing window permissions and error handling for mini player toggle
  • deduplicate changelog entries and trigger pages deploy after release

Refactoring

  • wrap artist, album, and tag info in a container for improved layout
  • remove shared searchQuery from useLibrary, accept per-view query param
  • change NavState to store per-view search queries map
  • remove searchQuery from persisted store defaults
  • move caption bar out of main, add mini player button and spacer
  • remove mini player from WindowControls component

Documentation

  • update release history page

Other

  • Merge: center now-playing controls independently of track info width
  • Spec Update
  • Cleanup
Viboplr v0.3.17 March 25, 2026

Features

  • scroll to playing track when playlist is expanded
  • move mini player button to caption bar
  • dynamic reconnection for ghost history entries
  • add labeled Sort/Filter rows with improved sort bar UX
  • rename "Go to Artist" to "Locate Track" in playlist context menu
  • store entity images by canonical name instead of database ID
  • add waveform analysis and view inside the seek bar

Bug Fixes

  • remove bundled Inter font, use system font stack
  • include entity name in image error notifications

Documentation

  • update release history page

Other

  • Spec Update
Viboplr v0.3.16 March 25, 2026

Features

  • upgrade track quality via TIDAL from context menu
  • add dislike field for tracks with tri-state liked system
  • add per-track download buttons in TIDAL search and album views
  • add TIDAL as priority image provider for artists and albums
  • detect actual TIDAL stream format for correct file extension
  • enlarge seek bar with embedded time display
  • playlist UI updates

Bug Fixes

  • handle non-Latin tag encoding for Greek, Cyrillic, etc.
  • show TIDAL breadcrumb instead of All Tracks in TIDAL view
  • add custom window controls for Windows/Linux caption bar
  • add shell: bash to changelog step in release workflow

Documentation

  • update release history page

Other

  • Spec Update
Viboplr v0.3.15 March 25, 2026

Features

  • add clear button to search bar
  • collapsible sort/filter bar in main list views
  • auto-generate release changelogs from conventional commits
  • add release history page to website with auto-generation
  • add custom caption bar with overlay title bar
  • improve settings UI with sidebar nav layout and modern controls
  • improve image download notifications with entity name and source
  • add "Go to Artist" option in playlist context menu
  • queue: wire collapsable playlist state and persistence
  • queue: add collapsed strip rendering and collapse button
  • queue: add CSS grid rules and collapsed strip styles
  • queue: add queueCollapsed store default
  • add global media key shortcuts

Bug Fixes

  • bundle Inter font for consistent cross-platform rendering
  • filename tag extractor treats numeric prefix as track number, not artist
  • backfill release changelogs and fix history page rendering
  • preserve volume when starting a new track
  • do not preserve search text across startups
  • repair status bar layout and positioning
  • restore mini player by adjusting min-height and window constraints

Documentation

  • add collapsable playlist implementation plan
  • add collapsable playlist design spec
Viboplr v0.3.14 March 24, 2026

Features

  • auto-discover TIDAL instances with failover and destination picker
  • download: add download format setting
  • download: add download status indicator with progress popover
  • download: add 'Download Album' button to TIDAL view
  • download: add 'Download to Library' context menu option
  • download: add download commands and worker thread
  • download: add download pipeline with tag writing and cover art
  • download: add DownloadManager core data structures
  • add fullscreen video controls overlay
  • add edit and remove functionality for collections
  • add decoupled playback history system
  • sort tracks by added and modified dates

Bug Fixes

  • improve breadcrumb font rendering on Windows
  • guard smooth scroll handler against non-selector hrefs
  • remove duplicate file path from Other tab in Track Properties
  • grey out history entries for disabled collections
  • extract duration from video files during scanning
  • dynamically set download URLs from GitHub release assets

Performance

  • cache library IDs on history tables, drop legacy play_history

Refactoring

  • reuse main search bar for TIDAL view
  • convert TIDAL from collection to settings-based integration
  • switch from soft delete to hard delete for tracks

Documentation

  • add download manager implementation plan
  • address spec review feedback for download manager
  • add download manager design spec
Viboplr v0.3.13 March 23, 2026

Features

  • move video player below content area
  • add visual distinction between sort and filter controls
  • add delete track option to context menu
  • add Main tab to track properties modal
  • make volume slider thicker with visible thumb
  • add Audio/Video/All media type filter to tracks view
  • add fullscreen button overlay on video player
  • skip tag reading for video files during scanning
  • increase seek bar height by 2px
  • revamp keyboard shortcuts and add tooltips
  • move shortcut hints from status bar to button tooltips
  • add "Same format" option to auto continue
  • show immediate feedback when adding a local folder collection
  • add branded sidebar header with logo and improved styling
  • dynamically show current version on website

Bug Fixes

  • detect and display playback errors for unsupported formats
  • enforce minimum height on now-playing bar and window
  • restore sidebar collapsed state without transition flash
  • align status bar left edge with sidebar when collapsed
  • skip 0-byte files during local folder scanning

Other

  • Spec Update
Viboplr v0.3.12 March 22, 2026

Bug Fixes

  • continue playback when app window is minimized
Viboplr v0.3.11 March 22, 2026

Features

  • make left panel collapsable and store user preference
  • show scrobble confirmation in now-playing bar
  • wire Last.fm now-playing and scrobble into playback
  • add Last.fm settings UI with connect/disconnect flow
  • add Last.fm Tauri commands and session management
  • add Last.fm client with signing, auth, scrobble
  • add setting to toggle video play history tracking
  • skip play history recording for video tracks
  • replace instant play recording with scrobble threshold
  • add 30s dedup window to record_play
  • add shouldScrobble utility function with tests
  • improve video playback with fullscreen, resizable splitter, and expanded view

Bug Fixes

  • use compile-time env vars for Last.fm API keys

CI

  • pass Last.fm API keys to release build

Other

  • Spec Update
Viboplr v0.3.10 March 22, 2026

Bug Fixes

  • add missing has_youtube_url param to test search_tracks calls

Performance

  • use LazyLock for scanner regex compilation

Refactoring

  • extract useMiniMode, useAppUpdater, useSessionLog hooks from App.tsx
  • extract useImageCache hook, remove image state duplication
  • unify get_tracks and search into single TrackQuery-based command
  • unify 12 image commands into 4 generic entity image commands
  • unify 4 toggle_liked commands into 1 generic command
  • extract collection_from_row and album_from_row helpers
  • replace 3 image modules with generic entity_image
Viboplr v0.3.9 March 22, 2026

Features

  • add liked and image attributes to tags
  • add view modes for Tracks/Liked, unified sort bars with grouped controls
  • add three view modes (Basic, List, Tiles) for Artists, Albums, Tags

Bug Fixes

  • restore actual audio volume on app launch

Other

  • Spec Update
Viboplr v0.3.8 March 21, 2026

Features

  • improve bump script feedback with labels and command output
  • add file size column to tracks list
  • add YouTube filter to All Tracks view
  • add shuffle button to All Tracks view
  • drag and drop tracks from track list to playlist position
  • warn on adding duplicate items to playlist
  • drag and drop to reorder tracks in playlist
  • add multi-select support to playlist panel
  • add selected track row styling
  • add track multi-selection with context menu integration
  • add multi-track context menu target type
  • add computeSelection helper for track multi-select
  • add like button to now playing bar
  • add GitHub Pages deployment workflow

Bug Fixes

  • remove Play All and Queue All buttons from tracks view
  • persist playlist panel visibility and name across restart
  • check duplicates on drag-drop to playlist
  • drag-and-drop not completing in playlist
  • align playlist selection styling with track list pattern
  • double-click plays only the selected track

Refactoring

  • replace duplicate warning modal with inline playlist banner

Documentation

  • update SPEC.md with playlist panel and recent changes

Other

  • Spec Update
  • Enable manual workflow
  • BugFix on full build
Viboplr v0.3.7 March 20, 2026

Features

  • add Cloudflare Web Analytics to showcase website
  • add static showcase website
  • add Collections view to sidebar navigation
  • support subsonic:// deep links
  • add test connection button to Subsonic server dialog
  • add track properties modal and audio properties retrieval
  • show clickable YouTube icon in track title cell
  • prompt for YouTube feedback and persist confirmed URLs
  • add "Watch on YouTube" context menu action

Bug Fixes

  • move website files to docs/ root instead of docs/website/
  • add missing allAlbumsRef declaration in useLibrary
  • debounce search to prevent UI freeze on keystroke
  • eliminate album list flicker when leaving artist detail
  • persist search query in navigation history

Refactoring

  • move Retry Failed Image Downloads to Settings > Debug
  • remove Collections tab from Settings, move debug actions

Documentation

  • update domain to viboplr.com and add SEO meta tags
  • add showcase website section to SPEC.md

Chores

  • add Cloudflare Web Analytics token
  • rename website/ to docs/ for GitHub Pages compatibility

Other

  • Update CNAME
  • Create CNAME
  • Fix History. Adding scroll position
  • bug: albums view shows all albums after leaving artist detail (#12)
  • bug: After confirming the YouTube URL, the track list now updates in-place
  • #9. Fix. Reset scroll position on view switch in App component
  • util: add auto-commit option for version bumping in bump script
Viboplr v0.3.6 March 19, 2026

Features

  • add frontend pagination state and infinite scroll for track lists
  • add pagination and server-side sort to track queries
  • add styles for navigation history buttons
  • wire navigation history hook, add toolbar buttons and shortcuts
  • add useNavigationHistory hook for back/forward navigation
  • tests: add comprehensive unit tests for database operations, media file handling, and utility functions

Bug Fixes

  • remove bare return that swallowed all Alt+key combos

Chores

  • add .worktrees/ to .gitignore

Other

  • Bug-Fix: re-fetch albums when selected artist is cleared
  • Add implementation plan for navigation history
  • Add design spec for navigation history (back/forward buttons)
  • Enhance error handling in sync process
Viboplr v0.3.5 March 18, 2026

Other

  • New app icons
Viboplr v0.3.4 March 18, 2026

Other

  • Rename and upgrade to v0.3.4
  • Porject renamed to viboplr

Ready to try Viboplr?

Free, fast, and built for music lovers.