2026-03-03 - 2026-08-31
Overview
13 Releases published by 2 users
Published
v0.7.0
v0.7.0
Published
v0.6.0
v0.6.0
Published
v0.5.0
v0.5.0
Published
v0.4.0
v0.4.0
Published
v0.3.1
v0.3.1
Published
v0.3.0
v0.3.0
Published
v0.2.3
v0.2.3
Published
v0.2.2
v0.2.2
Published
v0.2.1
v0.2.1
Published
v0.2.0
v0.2.0
Published
v0.1.0
v0.1.0
Published
v0.0.1
v0.0.1
Published
v0.0.0
72 Pull requests merged by 2 users
Merged
#221 Split the README into a user-facing landing page and CONTRIBUTING.md
Merged
#222 fix(ui): the phone's nav sheet says when it scrolls
Merged
#223 fix(queue): name the queue header's two older actions
Merged
#226 test(e2e): name the fixture tracks that really have no album
Merged
#224 fix(riff): grow a chunk buffer with what arrives
Merged
#215 feat(ui): warm album art ahead of the scroll
Merged
#211 feat(android): the phone's "More" is a bottom sheet
Merged
#214 feat(android): the tap highlight goes, a press state replaces it
Merged
#208 feat(android): a name is not a link on a phone, the menu carries it
Merged
#209 fix(ui): the phone's context sheet says when it scrolls
Merged
#205 test(ui): refresh two stale baselines and settle whether they gate
Merged
#218 fix(metadata): read a WAV's tags out of its RIFF id3 chunk
Merged
#206 test(ui): make ui-visual-update honour its file filter
Merged
#219 test(ui): clear localStorage between component tests
Merged
#201 Android touch model, phases 2-4: swipe to queue, and the other three lists
Merged
#199 Android touch model, phase 1: tap to play, hold to select
Merged
#198 Android: raise every remaining control to the 44px touch floor
Merged
#195 Android: raise the page header and the phone search button to the touch floor
Merged
#193 Android: a seek bar you can actually hit, and the phone rule that never applied
Merged
#192 Explore: two things that have not worked since plan 013, and the temp directory Android never had
Merged
#191 Android: make the app say what it is doing, then count what the audio path misses
Merged
#188 Android: a Now Playing that survives a 439px screen, and the audit behind it
Merged
#182 fix(queue): draw the scrim only where it can be tapped
Merged
#181 fix(ui): keep a touch-only affordance reachable, or absent
Merged
#180 build(frontend): fail css-check on a nested rule the phone drops
Merged
#178 feat(player): show progress on the phone's bar border
Merged
#179 fix(explore): scroll the album page as one on a phone
Merged
#176 Android: context menus are a bottom sheet, not a popup that gets clipped
Merged
#177 chore(agent): add the scheduled backlog-issue prompt
Merged
#174 Android: leave the volume to the system, and give Now Playing 29px back
Merged
#173 The phone transport: three controls, sized for a thumb (#59, #56)
Merged
#169 The queue is a place while it covers the content (#55)
Merged
#167 Drop the phone's top bar; search becomes a button and a modal
Merged
#166 Show background jobs in the phone's layout, not a popover
Merged
#165 Give the seek bar's interpolation interval one owner
Merged
#163 Android: install and launch the package the APK declares
Merged
#161 Android: run main() once per process, not once per activity
Merged
#158 Put the phone's Now Playing button above the artwork
Merged
#155 Centre the transport, and show the volume inline
Merged
#157 Ask the fixture for a track that can navigate
Merged
#153 Fuse the scroll guard and the write it guards
Merged
#152 Pin the queue panel's mouse model
Merged
#149 The top bar decides what it can afford to show
Merged
#147 Fold the Jobs tab into the places the work is started
Merged
#145 Configurable sidebar destinations, Downloads gated on a client, Autotag off by default
Merged
#144 Global back and forward, and the launch entry that made Back a lie
Merged
#141 Publish the active view from the shell, so both navs survive the back path
Merged
#136 Collapse the page header actions that do not fit, instead of clipping them
Merged
#139 Six quick fixes off the tracker: tooling, a latent index bug, and two touch affordances
Merged
#112 A CI-only change is ci:, not fix(ci):
Merged
#134 Wait for the scroll range the assertion needs
Merged
#132 Decide the supported sizes, and stop the queue taking the page's width
Merged
#129 Fix the player states that report one track's progress against another
Merged
#121 Surface a confident autotag match on the album page
Merged
#120 Demote the album page version selector to a disclosure
Merged
#117 Make it obvious everywhere when you are looking at things you do not own
Merged
#116 Make a release a shipment rather than a merge
Merged
#114 Give the icons one vocabulary and sweep the call sites
Merged
#113 Let the album page be asked for the whole tracklist
Merged
#105 Declare the track and disc totals when tagging
Merged
#110 Give the unclaim step a CA bundle
Merged
#108 Run the unclaim step under bash
Merged
#103 Drop the claim label when an issue closes
Merged
#101 Put the closing keyword where Gitea will actually read it
Merged
#99 Delete four documents that contradict the code
Merged
#93 Make the issue tracker the source of truth
Merged
#83 Small-fix batch: eleven issues from the desktop backlog
Merged
#21 Fix/explore art scanner requests
Merged
#4 docs: record what shipping the release pipeline taught us
Merged
#3 fix(release): seed the version floor on the parent, not on HEAD
Merged
#2 ci(release): cut releases from main automatically
Merged
#1 ci: trigger the catalog job deliberately, pin agent docs to one file
6 Pull requests proposed by 1 user
Proposed
#229 ci(skill-check): scan the docs a contributor reads
Proposed
#230 docs(skill): the WAV fixtures scan tagged, and have since #104
Proposed
#232 fix(settings): stop offering a column the backend rejects
Proposed
#233 fix(config): put the old value back when a setter is rejected
Proposed
#234 fix(shell): dismiss the wizard when a library exists
Proposed
#235 test(download): write the yt-dlp stub under ForkLock
88 Issues closed from 2 users
Closed
#210 The phone's navigation sheet scrolls without saying so
Closed
#170 The queue header's two older actions are named only by title
Closed
#217 queue-selection.spec.ts names two fixture tracks that now have an album
Closed
#216 tagwriter's RIFF parser allocates whatever size a chunk header claims
Closed
#65 Android: album art pops in while scrolling — preload ahead of the viewport
Closed
#71 Android: the "More" navigation should not be a side drawer
Closed
#54 Android: the app feels like a web app — kill tap highlights, add native-feeling motion
Closed
#67 Android: move inline entity links into the item's context menu
Closed
#207 The phone's context sheet is taller than the screen, and its last item is below the fold
Closed
#196 make ui-visual has been failing on main and nothing runs it
Closed
#104 WAV tags are written but never read: metadata.ExtractTags cannot see a WAV's id3 chunk
Closed
#204 make ui-visual-update ignores UI_ARGS and re-records every baseline
Closed
#138 make ui-test: play-in-context flakes ~1 in 3 full-suite runs on main
Closed
#63 Android: touch gestures for track lists — swipe to queue, tap to play, long-press to multi-select, double-tap for the menu
Closed
#186 Android: every control that is not the transport is below the 44px touch floor
Closed
#135 Android: static popping during playback
Closed
#187 Android: the seek bar's drag target is 6px tall
Closed
#190 Android: SQLite has no temp directory, so the champion index never builds
Closed
#189 release-group MBID backfill queries a table renamed away in plan 013
Closed
#160 Android: route slog to logcat, so the app can say why it is exiting
Closed
#51 Android: support small screens (Light Phone 3, 1080x1240) as well as normal ones (Pixel 7)
Closed
#171 Android: the queue's scrim has no reachable pixels, so tap-outside-to-close does not exist
Closed
#137 Hover-only affordances that are the *only* route to their action are unreachable on touch
Closed
#154 Nested CSS rules starting with an element name are silently dropped on the phone
Closed
#58 Android: a non-interactive progress line on the border between the mini player and the nav bar
Closed
#66 Android: the album detail page should scroll as one page, and fit the screen width
Closed
#60 Android: context menus should be a bottom sheet, not a popover that gets clipped
Closed
#172 Android: Now Playing's art collapses to a sliver once the transport is thumb-sized
Closed
#64 Android: no in-app volume control — leave volume to the system
Closed
#56 Android: the transport controls are far too small
Closed
#59 Android: slim the mini player to play/pause, prev/next and favourite; reach the queue from Now Playing only
Closed
#55 Android: make the queue a real screen instead of a pop-open sidebar
Closed
#148 The library filter is unreachable on a phone, and nothing else selects a library
Closed
#57 Android: drop the top bar; make search a button that opens a modal where search applies
Closed
#62 Android: the background-jobs popover is hidden behind other UI — make it a notification instead
Closed
#164 seek-bar's interpolation interval can be stopped and never restarted, on any platform
Closed
#159 wails3 task android:run:device uninstalls the released app (and the user's library) to install a differently-id'd build
Closed
#52 Android: app crashes or restarts when reopened after running in the background
Closed
#150 e2e flake: phone-shell's now-playing click is intercepted by the cover placeholder
Closed
#42 Desktop: show a volume slider in the bottom bar by default instead of a click-to-open popup
Closed
#23 Desktop: explore centering the seek bar and transport controls in the bottom bar
Closed
#156 queue-selection's name-click test depends on the scan's insert order
Closed
#151 album-dropdown 'can be scrolled' still races: the guard and the write are separate round trips
Closed
#43 Desktop: queue panel — single-click select and double-click to play from that spot
Closed
#143 The top bar overflows by 11px at 600x600, the bottom of the Compact band
Closed
#27 Desktop: fold the Jobs tab into Settings — library jobs under Library, metadata jobs elsewhere
Closed
#25 Desktop: let the user choose which sidebar tabs are shown; hide Downloads without a client; Autotag off by default
Closed
#6 Desktop: back/forward navigation should be global, not per-tab
Closed
#142 The launch records two history entries, so the first back press does nothing (and does not exit on Android)
Closed
#72 Android: the bottom-nav item stops being highlighted after backing out of a detail view
Closed
#69 Android: the Playlists page header buttons are unreachable
Closed
#118 Explore: in_library can never be cleared on a row that has no local id
Closed
#68 Android: no hover play button on album cards on touch
Closed
#119 dev-headless silently talks to whatever already holds its port
Closed
#61 Android: drop the tiny album/artist/source links from the mini player
Closed
#130 scripts/issue.sh claim is unusable: it needs read:user for a lookup nothing else needs
Closed
#131 codegen-check fails on any unstaged change, and blames the code generators
Closed
#111 A CI-only change is ci:, not fix(ci): — the scope does not stop a release
Closed
#133 album-dropdown 'can be scrolled' is racy: its guard waits for 40px and it asserts 80
Closed
#24 Desktop: content is obscured or unusable at small window sizes — decide the supported sizes and the modes
Closed
#128 make ui-test flakes: three suites fail to import setup.ts from the Vitest dev server, once in five runs
Closed
#123 onPlaybackFinished emits its state outside the lock, so a stale 'stopped' can overtake a live 'playing'
Closed
#124 p.format is never updated on load: replaying a finished 48 kHz track resamples 44100 to 44100
Closed
#125 p.trackLengthMs is never reset on load, so a track with no database row inherits the previous track's duration
Closed
#126 Queue.OnPlaybackFinished indexes q.tracks[currentIndex] without checking the index, which is -1 after the queue is exhausted
Closed
#127 Data race: the position readers guard the decoder with the speaker lock, which the read-ahead goroutine does not take
Closed
#122 The player can sit in Playing forever with the position frozen: BufferedStreamer streams silence with no end condition
Closed
#28 Desktop: surface a high-confidence autotag match on the album/artist/track page, with a one-click apply
Closed
#17 Desktop: move the release-version selector out of the album detail's primary position
Closed
#38 Desktop: make it obvious everywhere when I am looking at things I do not own
Closed
#115 A release is a shipment, not a merge: make the release workflow manually triggered
Closed
#34 Desktop: unify the icon language for add / download / want across the app
Closed
#7 Desktop: album detail should be able to show the full catalog tracklist, including tracks I do not have
Closed
#16 Desktop: album ownership badge says "in your library" for an album I hold 2 of 10 tracks of
Closed
#102 Drop Status/In Progress automatically when an issue closes
Closed
#100 Put the closing keyword where Gitea will actually read it
Closed
#98 Retire four documents that describe a project that no longer exists
Closed
#92 Make the issue tracker the source of truth for what we are working on
Closed
#37 Desktop: do not schedule wanted-list checks when no download client is configured
Closed
#29 Desktop: the album year is truncated off the end of long album names in the Albums grid
Closed
#19 Desktop: drag image should show a count badge whenever more than one track is dragged
Closed
#26 Desktop: the queue toggle button does not show whether the queue is open
Closed
#13 Desktop: seek bar shifts width as the elapsed/remaining digits change
Closed
#41 Desktop/Linux: KDE shows the previous album's art in the media controls for a track with no art
Closed
#35 Desktop: smart playlists can only AND their rules — no OR
Closed
#14 Desktop: "Playing from" keeps naming a source the queue has outgrown
Closed
#9 Desktop: drop the "Tracklist" heading on the album detail view
Closed
#33 Desktop: "Want track" on an album's tracklist appears to do nothing, and only shows on hover
143 Issues created by 2 users
Opened
#5 Desktop: single-click should select tracks in album/detail track lists, not just the Tracks tab
Opened
#7 Desktop: album detail should be able to show the full catalog tracklist, including tracks I do not have
Opened
#11 Desktop: bring the full-screen Now Playing view to desktop
Opened
#9 Desktop: drop the "Tracklist" heading on the album detail view
Opened
#8 Desktop: drag tracks from the album detail view onto the queue panel
Opened
#6 Desktop: back/forward navigation should be global, not per-tab
Opened
#12 Desktop: mini-player — a small always-on-top window with basic controls
Opened
#10 Desktop: click the mini album art to pin a large album art view
Opened
#18 Desktop: replace the global "Shuffle suggestions" button with a per-shelf refresh
Opened
#17 Desktop: move the release-version selector out of the album detail's primary position
Opened
#13 Desktop: seek bar shifts width as the elapsed/remaining digits change
Opened
#15 Desktop: alphabet quick-jump strip on the Albums, Artists and Tracks views
Opened
#19 Desktop: drag image should show a count badge whenever more than one track is dragged
Opened
#20 Desktop: make the sidebar's Playlists entry expandable, and a drop target
Opened
#16 Desktop: album ownership badge says "in your library" for an album I hold 2 of 10 tracks of
Opened
#14 Desktop: "Playing from" keeps naming a source the queue has outgrown
Opened
#29 Desktop: the album year is truncated off the end of long album names in the Albums grid
Opened
#27 Desktop: fold the Jobs tab into Settings — library jobs under Library, metadata jobs elsewhere
Opened
#28 Desktop: surface a high-confidence autotag match on the album/artist/track page, with a one-click apply
Opened
#23 Desktop: explore centering the seek bar and transport controls in the bottom bar
Opened
#26 Desktop: the queue toggle button does not show whether the queue is open
Opened
#22 Branding: YellowJacket needs a logo/icon used everywhere
Opened
#25 Desktop: let the user choose which sidebar tabs are shown; hide Downloads without a client; Autotag off by default
Opened
#24 Desktop: content is obscured or unusable at small window sizes — decide the supported sizes and the modes
Opened
#33 Desktop: "Want track" on an album's tracklist appears to do nothing, and only shows on hover
Opened
#38 Desktop: make it obvious everywhere when I am looking at things I do not own
Opened
#31 Desktop: "Play all" and "Play all shuffled" on the Tracks tab (and anywhere else missing them)
Opened
#30 Desktop: the Tracks list looks like a spreadsheet, and horizontal scrolling is unusable
Opened
#32 Desktop: the Artists view can only sort by name
Opened
#34 Desktop: unify the icon language for add / download / want across the app
Opened
#35 Desktop: smart playlists can only AND their rules — no OR
Opened
#37 Desktop: do not schedule wanted-list checks when no download client is configured
Opened
#36 Desktop: control where downloaded items land — choose the destination library
Opened
#42 Desktop: show a volume slider in the bottom bar by default instead of a click-to-open popup
Opened
#39 Desktop: track list column configuration should be reachable from the track list, not only from Settings
Opened
#44 Full-screen Now Playing should have a lyrics view
Opened
#40 Desktop: the header search box should search settings while on the Settings page
Opened
#45 Desktop: configurable auto-DJ — keep the queue topped up as it runs out
Opened
#43 Desktop: queue panel — single-click select and double-click to play from that spot
Opened
#46 Add a "date added" sort wherever it makes sense
Opened
#41 Desktop/Linux: KDE shows the previous album's art in the media controls for a track with no art
Opened
#53 Android: the seek bar handle on Now Playing never moves
Opened
#51 Android: support small screens (Light Phone 3, 1080x1240) as well as normal ones (Pixel 7)
Opened
#54 Android: the app feels like a web app — kill tap highlights, add native-feeling motion
Opened
#52 Android: app crashes or restarts when reopened after running in the background
Opened
#48 Desktop: rework the top bar — centre the search, swap the library selector, replace the wordmark with "YJ"
Opened
#50 Docs: rewrite the README as a friendly landing page and move the technical docs elsewhere
Opened
#49 Both: let the user scale album art size and grid spacing
Opened
#47 Add prebuilt colour themes, including a pure-black OLED theme
Opened
#55 Android: make the queue a real screen instead of a pop-open sidebar
Opened
#59 Android: slim the mini player to play/pause, prev/next and favourite; reach the queue from Now Playing only
Opened
#63 Android: touch gestures for track lists — swipe to queue, tap to play, long-press to multi-select, double-tap for the menu
Opened
#60 Android: context menus should be a bottom sheet, not a popover that gets clipped
Opened
#61 Android: drop the tiny album/artist/source links from the mini player
Opened
#56 Android: the transport controls are far too small
Opened
#58 Android: a non-interactive progress line on the border between the mini player and the nav bar
Opened
#57 Android: drop the top bar; make search a button that opens a modal where search applies
Opened
#62 Android: the background-jobs popover is hidden behind other UI — make it a notification instead
Opened
#67 Android: move inline entity links into the item's context menu
Opened
#70 Home shelves should not reshuffle on every visit to the home page
Opened
#69 Android: the Playlists page header buttons are unreachable
Opened
#66 Android: the album detail page should scroll as one page, and fit the screen width
Opened
#65 Android: album art pops in while scrolling — preload ahead of the viewport
Opened
#68 Android: no hover play button on album cards on touch
Opened
#64 Android: no in-app volume control — leave volume to the system
Opened
#72 Android: the bottom-nav item stops being highlighted after backing out of a detail view
Opened
#71 Android: the "More" navigation should not be a side drawer
Opened
#73 Roadmap: suggested order for the desktop + Android backlog (#5–#72)
Opened
#85 Explore: warm the release cache for owned albums that are not known-complete
Opened
#87 Android: writing tags to files on the device has never been run
Opened
#86 Six backend methods are bound to the frontend and called by nothing — wire or remove
Opened
#89 Explore: materialise multi-artist credits locally so they survive an absent catalog
Opened
#88 Explore: run the credit ingest against the real dump and publish an artifact that carries credits
Opened
#90 Autotag: strict auto-accept as a background job, and entry points from the library
Opened
#91 Autotag: a settings panel, and a way back from the dismissed file-write warning
Opened
#92 Make the issue tracker the source of truth for what we are working on
Opened
#95 Let the user arrange the UI — component registry, saved layouts, an editor
Opened
#94 Sync music to a connected device, with optional re-encoding
Opened
#96 Autotag: identify tracks by audio fingerprint (Chromaprint + AcoustID)
Opened
#97 config.Config has a dozen setters and no lock
Opened
#98 Retire four documents that describe a project that no longer exists
Opened
#100 Put the closing keyword where Gitea will actually read it
Opened
#102 Drop Status/In Progress automatically when an issue closes
Opened
#104 WAV tags are written but never read: metadata.ExtractTags cannot see a WAV's id3 chunk
Opened
#111 A CI-only change is ci:, not fix(ci): — the scope does not stop a release
Opened
#115 A release is a shipment, not a merge: make the release workflow manually triggered
Opened
#118 Explore: in_library can never be cleared on a row that has no local id
Opened
#119 dev-headless silently talks to whatever already holds its port
Opened
#122 The player can sit in Playing forever with the position frozen: BufferedStreamer streams silence with no end condition
Opened
#123 onPlaybackFinished emits its state outside the lock, so a stale 'stopped' can overtake a live 'playing'
Opened
#124 p.format is never updated on load: replaying a finished 48 kHz track resamples 44100 to 44100
Opened
#125 p.trackLengthMs is never reset on load, so a track with no database row inherits the previous track's duration
Opened
#126 Queue.OnPlaybackFinished indexes q.tracks[currentIndex] without checking the index, which is -1 after the queue is exhausted
Opened
#127 Data race: the position readers guard the decoder with the speaker lock, which the read-ahead goroutine does not take
Opened
#128 make ui-test flakes: three suites fail to import setup.ts from the Vitest dev server, once in five runs
Opened
#130 scripts/issue.sh claim is unusable: it needs read:user for a lookup nothing else needs
Opened
#131 codegen-check fails on any unstaged change, and blames the code generators
Opened
#133 album-dropdown 'can be scrolled' is racy: its guard waits for 40px and it asserts 80
Opened
#135 Android: static popping during playback
Opened
#137 Hover-only affordances that are the *only* route to their action are unreachable on touch
Opened
#138 make ui-test: play-in-context flakes ~1 in 3 full-suite runs on main
Opened
#140 make ui-test: folder-picker and explore-track-details time out in full-suite runs on main
Opened
#142 The launch records two history entries, so the first back press does nothing (and does not exit on Android)
Opened
#143 The top bar overflows by 11px at 600x600, the bottom of the Compact band
Opened
#146 Flaky: TestYtDlpSearchSkipsUnparseableLines failed once in a full make test run
Opened
#148 The library filter is unreachable on a phone, and nothing else selects a library
Opened
#150 e2e flake: phone-shell's now-playing click is intercepted by the cover placeholder
Opened
#151 album-dropdown 'can be scrolled' still races: the guard and the write are separate round trips
Opened
#154 Nested CSS rules starting with an element name are silently dropped on the phone
Opened
#156 queue-selection's name-click test depends on the scan's insert order
Opened
#159 wails3 task android:run:device uninstalls the released app (and the user's library) to install a differently-id'd build
Opened
#160 Android: route slog to logcat, so the app can say why it is exiting
Opened
#162 make android-emulator's boot wait can be satisfied by an unrelated attached device
Opened
#164 seek-bar's interpolation interval can be stopped and never restarted, on any platform
Opened
#168 e2e state leaks between spec files: a staged job outlives the spec that staged it
Opened
#170 The queue header's two older actions are named only by title
Opened
#171 Android: the queue's scrim has no reachable pixels, so tap-outside-to-close does not exist
Opened
#172 Android: Now Playing's art collapses to a sliver once the transport is thumb-sized
Opened
#175 The first-run wizard does not dismiss when a library appears by another route
Opened
#183 Retiring a stale audio_files empties every playlist, where a rescan would preserve it
Opened
#184 Sort albums by completeness — needs the answer moved out of the per-screenful store
Opened
#185 play_history is written and never read — recency-weighted play stats
Opened
#186 Android: every control that is not the transport is below the 44px touch floor
Opened
#187 Android: the seek bar's drag target is 6px tall
Opened
#189 release-group MBID backfill queries a table renamed away in plan 013
Opened
#190 Android: SQLite has no temp directory, so the champion index never builds
Opened
#194 The speaker opens at 44100 while the device runs at 48000, so everything is resampled twice
Opened
#196 make ui-visual has been failing on main and nothing runs it
Opened
#197 Settings lists two columns both called "Track Name", and one of them may be unselectable
Opened
#200 A dismissible surface should answer the back gesture, and the shell should own that
Opened
#203 Android: popping is still audible on the release build, which carries no underrun counter
Opened
#204 make ui-visual-update ignores UI_ARGS and re-records every baseline
Opened
#207 The phone's context sheet is taller than the screen, and its last item is below the fold
Opened
#210 The phone's navigation sheet scrolls without saying so
Opened
#212 Android: the notification permission dialog is asked from the play button and blocks playback
Opened
#213 Android: the motion half of the native-feel pass, judged on the device
Opened
#216 tagwriter's RIFF parser allocates whatever size a chunk header claims
Opened
#217 queue-selection.spec.ts names two fixture tracks that now have an album
Opened
#220 skill-check does not scan README.md or CONTRIBUTING.md
Opened
#225 Agent docs still say the WAV fixtures scan in untitled, and name a test #104 deleted
Opened
#227 Android: some songs play back sped up
Opened
#228 skill-check misses a make target inside a hard-wrapped inline code span
Opened
#231 An invalid setter argument poisons the in-memory config, so nothing saves until restart