Skip to content

feat: add shuffle - #4

Merged
pythoninthegrass merged 10 commits into
mainfrom
music-scanner
Sep 26, 2025
Merged

pythoninthegrass merged 10 commits into
mainfrom
music-scanner

Conversation

@pythoninthegrass

Copy link
Copy Markdown
Collaborator

Mix and match with unimplemented music scanner

@pythoninthegrass
pythoninthegrass merged commit 824a87a into main Sep 26, 2025
pythoninthegrass added a commit that referenced this pull request Jan 19, 2026
…lugin

Implements infinite scroll/lazy loading for the library view to improve
performance with large music collections (1000+ tracks).

Changes:
- Install and register @alpinejs/intersect plugin (v3.15.4)
- Add pagination to library store (visibleCount, batchSize, getVisibleTracks)
- Implement sentinel element with x-intersect directive in library view
- Auto-load 100 more tracks when scrolling to bottom
- Reset to first 100 tracks when filters/search changes
- Create comprehensive documentation in docs/infinite-scroll-pattern.md

Performance impact for 10k track library:
- Before: 10,000 DOM nodes rendered immediately
- After: 100 DOM nodes initially (~99% reduction)
- Lazy load additional batches as user scrolls

This addresses task-157 acceptance criteria #1, #2, #3, #5, #6.
Performance measurement (#4) pending manual testing with large dataset.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
pythoninthegrass added a commit that referenced this pull request Jan 25, 2026
Documents the completed settings migration work:
- Settings service architecture and features
- Component-by-component migration details
- Initialization flow and watcher patterns
- Benefits: eliminates 13 Alpine.$persist calls
- Files modified summary

Marks acceptance criteria #3 and #4 as complete.

Part of task-198: Settings unification

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
pythoninthegrass added a commit that referenced this pull request Jan 25, 2026
Update log export to use .log file extension instead of .txt for
better file type recognition. Add loading state with visual feedback
to inform users the export is in progress.

Changes:
- Change default file extension from .txt to .log
- Update file filter from "Text" to "Log Files"
- Add isExportingLogs state to track export progress
- Show "Exporting..." text while export is in progress
- Disable export button during export to prevent multiple clicks
- Add proper error handling with try/finally to reset loading state

Fixes task-206 acceptance criteria #3, #4, #5

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@pythoninthegrass
pythoninthegrass deleted the music-scanner branch January 27, 2026 18:40
pythoninthegrass added a commit that referenced this pull request Feb 11, 2026
Library browsing and artwork loading verified working with reduced cache.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
pythoninthegrass added a commit that referenced this pull request Sep 14, 2026
…-355.6 AC#1-4) (#50)

* feat(frontend): inject the sidecar endpoint and flip library.getTracks

shared.js kept its API_BASE as a hardcoded constant after the Python
sidecar was removed, so the HTTP path could never reach a sidecar on an
OS-assigned port. Make the base URL and bearer token module state with
that constant as the default, and fill them at startup from a new
sidecar_get_endpoint command reading the endpoint the Rust health probe
already resolved -- the same shape get_backend_url/initBackendUrl had in
621f681 and b3cc99c, plus the auth header the Zig sidecar requires.

library.getTracks is the one module flipped: it is the one endpoint the
Zig sidecar implements, so its tauriInvoke('library_get_all') branch is
now gone rather than merely unused. Every other domain module keeps its
tauriInvoke, which is still correct for commands with no sidecar
counterpart.

- [task-355.6]

* style(frontend): revert unrelated function/ternary rewrites from task-355.6

Two hunks in 7e38f6a touched code the acceptance criteria never asked
about: handleFileDrop/testDialog's function->arrow conversion in main.js,
and a ternary condition flip in library.js's getSection. Both are
semantically identical to what was there before; reverting to keep the
diff to what AC#1-#4 actually describe.

* chore(backlog): record human review of TASK-355.6 AC#1-4

Status stays In Progress rather than Done since AC#5 (the POC report and
go/no-go recommendation) is deliberately out of scope for this run and
still outstanding.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant