App-DrivePlayer

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

Revision history for App::DrivePlayer.

0.2.9 2026-04-30
        - Fix: player IPC no longer drops mpv events when a recv()
          slices an event mid-line.  _drain_events and
          _send_command_sync now share _pending_buf so partial
          events get reassembled across reads.  Symptom: roughly
          every 15-20 tracks playback would stick on a finished
          track because end-file was lost and on_track_end never
          fired.
        - Settings: saving with changed Google credentials now
          tears down rest_api / drive / player and rebuilds them
          against the new config, so a refreshed token takes
          effect without restarting the app.
        - Errors: HTTP 4xx / OAuth-grant failures from Google now
          pop the Settings dialog automatically after the error
          is dismissed, routing the user straight to the
          credentials.  Re-entry from errors fired inside the
          Settings dialog itself (e.g. Find-or-Create) is
          suppressed.
        - Tracklist: Artist, Album and Genre cells are now click
          targets that switch the sidebar to that group; the
          existing cursor-changed signal repopulates the
          tracklist.  A hand cursor on hover indicates the cell
          is clickable.
        - Edit metadata: when an artist / album / genre value
          changes and other tracks share the previous value, a
          single confirmation dialog offers to apply the rename
          across all matching tracks -- so one mojibake fix can
          clean up the lingering sidebar entry instead of leaving
          it stuck behind unrenamed siblings.
        - Edit metadata: small grey help label under the Fetch
          button states that Fetch only fills blank fields, and
          that clearing a populated field lets Fetch replace it.
        - Config: write 'class: OAuth2Client' on the
          google_restapi blob (in addition to under auth) and
          require Google::RestApi >= 2.2.3.
        - Docs: README Files section converted from a GFM pipe
          table to a bulleted list so it renders correctly on
          MetaCPAN (Text::Markdown doesn't support tables).

0.2.8 2026-04-23
        - Fix: Scanner now decodes UTF-8 at the Drive API boundary,
          preventing double-encoded mojibake (e.g. "Nazan Ãncel"
          instead of "Nazan Öncel") from landing in SQLite.  New
          tools/fix_mojibake.pl repairs existing corrupted rows.
        - Edit dialog: context menu "Edit Metadata…" and "Fetch
          Metadata…" consolidated into a single "Edit…" with a Fetch
          button inside the dialog.  Fetch fills only blank fields
          (whitespace-only counts as blank); to refresh a populated
          field, clear it first.
        - Edit dialog: entries force LTR layout with an invisible
          LRM prefix, so RTL content (Arabic, Hebrew) no longer
          flips the dialog to right-justified after a fill.  Text
          strippers remove the marker on read so nothing leaks into
          the DB or queries.
        - Display: tracklist, sidebar, and now-playing label strip
          leading track-number prefixes from titles, leading YYYY-
          from albums, and underscores across title/artist/album.
          Stored values stay raw — DB lookups and sheet sync are
          unaffected.
        - Sheet sync: single-track metadata saves now update just
          the one row on the relevant worksheet (two Sheets API
          calls total — values.get on the drive_id column, then
          values.update on the matching row) instead of rewriting
          every tab.
        - Save: metadata edits refresh the single tracklist row in
          place, preserving sidebar selection and scroll position
          (was a full _load_library that bumped the user back to
          the "All Tracks" view).

0.2.7 2026-04-22
        - Settings dialog: move the Google Sheet Sync section so it
          follows the Google API Credentials section (related Google
          settings grouped together).
        - Settings dialog: add mouseover tooltips on every label and
          input (OAuth Client ID / Secret / Token File, Spreadsheet
          ID, fpcalc row, AcoustID API Key) explaining what each



( run in 0.727 second using v1.01-cache-2.11-cpan-140bd7fdf52 )