Compare commits
base: yonlu/yellowjacket:4e5c6b9f7aadb57af042146a667f3b6e3d0a89d2
yonlu/yellowjacket:main
yonlu/yellowjacket:batch/248-249
yonlu/yellowjacket:fix/248-artist-metadata-sweep
yonlu/yellowjacket:fix/247-cover-art-orphans
yonlu/yellowjacket:fix/249-unbounded-growth
yonlu/yellowjacket:fix/246-incremental-scan-phantoms
yonlu/yellowjacket:fix/183-phantom-across-retire
yonlu/yellowjacket:fix/243-model-fallback
yonlu/yellowjacket:feat/31-play-all-shuffle-all
yonlu/yellowjacket:fix/240-loop-operational-fixes
yonlu/yellowjacket:docs/220-skill-check-scope
yonlu/yellowjacket:fix/231-setter-rollback
yonlu/yellowjacket:fix/197-duplicate-column-label
yonlu/yellowjacket:fix/175-wizard-follows-the-library
yonlu/yellowjacket:fix/146-stub-etxtbsy
yonlu/yellowjacket:docs/225-fixtures-wav-tags
yonlu/yellowjacket:feat/238-merge-leg-refresh-watch
yonlu/yellowjacket:feat/236-autonomous-backlog-loop
yonlu/yellowjacket:test/217-fixture-names-in-queue-selection
yonlu/yellowjacket:fix/216-riff-parse-allocation
yonlu/yellowjacket:fix/170-queue-header-action-names
yonlu/yellowjacket:fix/210-nav-sheet-scroll-affordance
yonlu/yellowjacket:docs/50-readme-landing-page
yonlu/yellowjacket:feat/65-art-prefetch-ahead
yonlu/yellowjacket:feat/71-more-as-a-bottom-sheet
yonlu/yellowjacket:feat/54-native-touch-feel
yonlu/yellowjacket:feat/67-entity-links-into-menus
yonlu/yellowjacket:test/196-visual-tier-gates
yonlu/yellowjacket:fix/138-ui-test-storage-leak
yonlu/yellowjacket:fix/104-wav-tags-read
yonlu/yellowjacket:fix/207-sheet-scroll-affordance
yonlu/yellowjacket:fix/204-ui-visual-update-filter
yonlu/yellowjacket:pi-agent-backlog-automation
yonlu/yellowjacket:63-touch-model-phase-2
yonlu/yellowjacket:63-android-touch-model
yonlu/yellowjacket:186-touch-targets-settings
yonlu/yellowjacket:186-touch-targets-page-header
yonlu/yellowjacket:187-seek-bar-hit-area
yonlu/yellowjacket:189-190-explore-correctness
yonlu/yellowjacket:135-android-underrun-instrumentation
yonlu/yellowjacket:51-android-small-screens
yonlu/yellowjacket:fix/171-phone-queue-scrim
yonlu/yellowjacket:fix/137-touch-only-affordances
yonlu/yellowjacket:fix/154-nested-css-check
yonlu/yellowjacket:feat/58-mini-player-progress-line
yonlu/yellowjacket:fix/66-album-page-scrolls-as-one
yonlu/yellowjacket:60-context-menu-action-sheet
yonlu/yellowjacket:64-android-system-volume
yonlu/yellowjacket:59-slim-the-mini-player
yonlu/yellowjacket:55-queue-as-a-screen
yonlu/yellowjacket:feat/57-drop-the-android-top-bar
yonlu/yellowjacket:feat/62-jobs-as-a-notification
yonlu/yellowjacket:fix/53-seek-bar-never-moves
yonlu/yellowjacket:fix/159-android-task-app-id
yonlu/yellowjacket:fix/52-android-activity-recreation-restarts-the-process
yonlu/yellowjacket:fix/150-expand-button-under-the-art
yonlu/yellowjacket:feat/42-inline-volume-and-centred-transport
yonlu/yellowjacket:fix/156-queue-selection-fixture-order
yonlu/yellowjacket:fix/151-fuse-the-scroll-guard-and-the-write
yonlu/yellowjacket:fix/43-queue-panel-selection
yonlu/yellowjacket:fix/143-top-bar-fits-its-window
yonlu/yellowjacket:feat/27-jobs-into-settings
yonlu/yellowjacket:feat/25-configurable-sidebar-tabs
yonlu/yellowjacket:feat/6-global-back-forward
yonlu/yellowjacket:fix/72-active-view-broadcast
yonlu/yellowjacket:fix/69-page-header-action-overflow
yonlu/yellowjacket:fix/quick-wins-batch
yonlu/yellowjacket:fix/118-in-library-clear
yonlu/yellowjacket:fix/61-mini-player-plain-text
yonlu/yellowjacket:fix/68-hover-affordances-pointer
yonlu/yellowjacket:fix/119-dev-headless-port
yonlu/yellowjacket:fix/130-issue-claim-user
yonlu/yellowjacket:fix/131-codegen-check-scope
yonlu/yellowjacket:feat/28-autotag-match-on-album
yonlu/yellowjacket:feat/17-demote-version-selector
yonlu/yellowjacket:feat/38-ownership-visibility
yonlu/yellowjacket:ci/115-manual-release
yonlu/yellowjacket:feat/34-icon-language
yonlu/yellowjacket:feat/7-full-tracklist-toggle
yonlu/yellowjacket:fix/16-tagwriter-totals
yonlu/yellowjacket:fix/unclaim-ca-certs
yonlu/yellowjacket:fix/unclaim-shell
yonlu/yellowjacket:ci/unclaim-on-close
yonlu/yellowjacket:docs/closing-keyword
yonlu/yellowjacket:docs/retire-stale-planning-docs
yonlu/yellowjacket:docs/issue-driven-workflow
yonlu/yellowjacket:integration/small-fixes
yonlu/yellowjacket:fix/small-issue-batch
yonlu/yellowjacket:fix/queue-toggle-state
yonlu/yellowjacket:fix/drag-count-badge
yonlu/yellowjacket:fix/album-card-year
yonlu/yellowjacket:fix/album-tracklist-heading
yonlu/yellowjacket:fix/seek-bar-clock-width
yonlu/yellowjacket:fix/explore-art-scanner-requests
yonlu/yellowjacket:chore/workflow-guardrails
yonlu/yellowjacket:v0.7.0
yonlu/yellowjacket:v0.6.0
yonlu/yellowjacket:v0.5.0
yonlu/yellowjacket:v0.4.0
yonlu/yellowjacket:v0.3.1
yonlu/yellowjacket:v0.3.0
yonlu/yellowjacket:v0.2.3
yonlu/yellowjacket:v0.2.2
yonlu/yellowjacket:v0.2.1
yonlu/yellowjacket:v0.2.0
yonlu/yellowjacket:v0.1.0
yonlu/yellowjacket:v0.0.1
yonlu/yellowjacket:v0.0.0
..
compare: yonlu/yellowjacket:88f5524aa21d57261ff0bb8ed326104151cdb1d5
yonlu/yellowjacket:main
yonlu/yellowjacket:batch/248-249
yonlu/yellowjacket:fix/248-artist-metadata-sweep
yonlu/yellowjacket:fix/247-cover-art-orphans
yonlu/yellowjacket:fix/249-unbounded-growth
yonlu/yellowjacket:fix/246-incremental-scan-phantoms
yonlu/yellowjacket:fix/183-phantom-across-retire
yonlu/yellowjacket:fix/243-model-fallback
yonlu/yellowjacket:feat/31-play-all-shuffle-all
yonlu/yellowjacket:fix/240-loop-operational-fixes
yonlu/yellowjacket:docs/220-skill-check-scope
yonlu/yellowjacket:fix/231-setter-rollback
yonlu/yellowjacket:fix/197-duplicate-column-label
yonlu/yellowjacket:fix/175-wizard-follows-the-library
yonlu/yellowjacket:fix/146-stub-etxtbsy
yonlu/yellowjacket:docs/225-fixtures-wav-tags
yonlu/yellowjacket:feat/238-merge-leg-refresh-watch
yonlu/yellowjacket:feat/236-autonomous-backlog-loop
yonlu/yellowjacket:test/217-fixture-names-in-queue-selection
yonlu/yellowjacket:fix/216-riff-parse-allocation
yonlu/yellowjacket:fix/170-queue-header-action-names
yonlu/yellowjacket:fix/210-nav-sheet-scroll-affordance
yonlu/yellowjacket:docs/50-readme-landing-page
yonlu/yellowjacket:feat/65-art-prefetch-ahead
yonlu/yellowjacket:feat/71-more-as-a-bottom-sheet
yonlu/yellowjacket:feat/54-native-touch-feel
yonlu/yellowjacket:feat/67-entity-links-into-menus
yonlu/yellowjacket:test/196-visual-tier-gates
yonlu/yellowjacket:fix/138-ui-test-storage-leak
yonlu/yellowjacket:fix/104-wav-tags-read
yonlu/yellowjacket:fix/207-sheet-scroll-affordance
yonlu/yellowjacket:fix/204-ui-visual-update-filter
yonlu/yellowjacket:pi-agent-backlog-automation
yonlu/yellowjacket:63-touch-model-phase-2
yonlu/yellowjacket:63-android-touch-model
yonlu/yellowjacket:186-touch-targets-settings
yonlu/yellowjacket:186-touch-targets-page-header
yonlu/yellowjacket:187-seek-bar-hit-area
yonlu/yellowjacket:189-190-explore-correctness
yonlu/yellowjacket:135-android-underrun-instrumentation
yonlu/yellowjacket:51-android-small-screens
yonlu/yellowjacket:fix/171-phone-queue-scrim
yonlu/yellowjacket:fix/137-touch-only-affordances
yonlu/yellowjacket:fix/154-nested-css-check
yonlu/yellowjacket:feat/58-mini-player-progress-line
yonlu/yellowjacket:fix/66-album-page-scrolls-as-one
yonlu/yellowjacket:60-context-menu-action-sheet
yonlu/yellowjacket:64-android-system-volume
yonlu/yellowjacket:59-slim-the-mini-player
yonlu/yellowjacket:55-queue-as-a-screen
yonlu/yellowjacket:feat/57-drop-the-android-top-bar
yonlu/yellowjacket:feat/62-jobs-as-a-notification
yonlu/yellowjacket:fix/53-seek-bar-never-moves
yonlu/yellowjacket:fix/159-android-task-app-id
yonlu/yellowjacket:fix/52-android-activity-recreation-restarts-the-process
yonlu/yellowjacket:fix/150-expand-button-under-the-art
yonlu/yellowjacket:feat/42-inline-volume-and-centred-transport
yonlu/yellowjacket:fix/156-queue-selection-fixture-order
yonlu/yellowjacket:fix/151-fuse-the-scroll-guard-and-the-write
yonlu/yellowjacket:fix/43-queue-panel-selection
yonlu/yellowjacket:fix/143-top-bar-fits-its-window
yonlu/yellowjacket:feat/27-jobs-into-settings
yonlu/yellowjacket:feat/25-configurable-sidebar-tabs
yonlu/yellowjacket:feat/6-global-back-forward
yonlu/yellowjacket:fix/72-active-view-broadcast
yonlu/yellowjacket:fix/69-page-header-action-overflow
yonlu/yellowjacket:fix/quick-wins-batch
yonlu/yellowjacket:fix/118-in-library-clear
yonlu/yellowjacket:fix/61-mini-player-plain-text
yonlu/yellowjacket:fix/68-hover-affordances-pointer
yonlu/yellowjacket:fix/119-dev-headless-port
yonlu/yellowjacket:fix/130-issue-claim-user
yonlu/yellowjacket:fix/131-codegen-check-scope
yonlu/yellowjacket:feat/28-autotag-match-on-album
yonlu/yellowjacket:feat/17-demote-version-selector
yonlu/yellowjacket:feat/38-ownership-visibility
yonlu/yellowjacket:ci/115-manual-release
yonlu/yellowjacket:feat/34-icon-language
yonlu/yellowjacket:feat/7-full-tracklist-toggle
yonlu/yellowjacket:fix/16-tagwriter-totals
yonlu/yellowjacket:fix/unclaim-ca-certs
yonlu/yellowjacket:fix/unclaim-shell
yonlu/yellowjacket:ci/unclaim-on-close
yonlu/yellowjacket:docs/closing-keyword
yonlu/yellowjacket:docs/retire-stale-planning-docs
yonlu/yellowjacket:docs/issue-driven-workflow
yonlu/yellowjacket:integration/small-fixes
yonlu/yellowjacket:fix/small-issue-batch
yonlu/yellowjacket:fix/queue-toggle-state
yonlu/yellowjacket:fix/drag-count-badge
yonlu/yellowjacket:fix/album-card-year
yonlu/yellowjacket:fix/album-tracklist-heading
yonlu/yellowjacket:fix/seek-bar-clock-width
yonlu/yellowjacket:fix/explore-art-scanner-requests
yonlu/yellowjacket:chore/workflow-guardrails
yonlu/yellowjacket:v0.7.0
yonlu/yellowjacket:v0.6.0
yonlu/yellowjacket:v0.5.0
yonlu/yellowjacket:v0.4.0
yonlu/yellowjacket:v0.3.1
yonlu/yellowjacket:v0.3.0
yonlu/yellowjacket:v0.2.3
yonlu/yellowjacket:v0.2.2
yonlu/yellowjacket:v0.2.1
yonlu/yellowjacket:v0.2.0
yonlu/yellowjacket:v0.1.0
yonlu/yellowjacket:v0.0.1
yonlu/yellowjacket:v0.0.0
1
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
88f5524aa2 |
fix(maintenance): bound lyrics search and clicks, clear queue source
Three unbounded or stale surfaces, each small on its own: - lyrics_index rows were never pruned on track removal, so the FTS index grew forever. Delete the entry where the library search FTS entry is already deleted, on the orphan and RemoveFromLibrary paths. - search_clicks had no ceiling; age out ranking rows after a retention window via a daily janitor job. - queue.source_* kept a "Playing from X" label after its playlist was deleted. Drop the source when the queue's own playlist goes, wired through a playlist-service hook like Library.SetRemovalHooks. Closes #249 |