Skip to content

Upcoming changes

Cyberdelia edited this page Oct 20, 2026 · 38 revisions

Upcoming changes (unreleased)

Documentation home

The changes below are available in current source/test builds, ahead of the next desktop release. The latest published version is Tagcast 0.70.2.

Public playlist URLs

Playlists → Playlist URL accepts public Deezer playlists and public ListenBrainz playlists as an experimental test source. Paste a full playlist link and choose Fetch playlist. Deezer short links are also supported. No provider login or API key is required. Deezer must be enabled in Settings. Opening the dialog or Help does not contact either service; only Fetch requests playlist metadata, never audio or artwork.

Fetched lists enter the existing column mapping, matching, copy preferences, manual choices and final private-playlist review. Title, performing artist and duration are mapped by default; Album stays available without making matching stricter unless selected. Artist credits are kept as supplied; collaborations may need manual choices. The playlist name is prefilled and editable. Order and repeated source positions are retained; repeated selected library IDs still collapse once at their first position. Missing source metadata remains visible for review rather than dropping the track.

Pause import saves the fetched snapshot with the same ten-import/account limits. Resuming refreshes iBroadcast for matching, without fetching the provider again. Manual choices, skips, copy preference and source identity survive restart. A new final review is still required. Unresolved rows can also be exported as CSV.

Only complete, nonempty playlists of up to 10,000 tracks are accepted. Requests have bounded duration, size and pagination; malformed, private, changed or incomplete lists produce an error without preparing a partial import. Browser checks and rate limits are reported with a CSV fallback. ListenBrainz currently returns a browser check in our live test environment: its adapter is covered against the official JSPF schema and mocks, but a live successful fetch is not confirmed here. Deezer was verified against a complete public 60-track playlist. There is no Spotify, Apple Music or TIDAL URL input. CSV cells containing links remain plain text and are never fetched.

Choose between matching CSV copies

In Link columns, When multiple tracks match defaults to Choose manually. You can instead choose Prefer FLAC, Prefer oldest year, Choose first match, or FLAC first, then oldest year. These options select only among active tracks that already match every mapped field, including title/version, performing artist and any mapped album, year, track number or duration (within three seconds). Invalid CSV fields and different versions still require attention.

FLAC is preferred when available. Oldest year uses the stored track year, falling back to album year, with unknown years last; this may be a compilation or reissue year. First match and remaining ties use the lowest native track ID for a stable choice. The explanation identifies preference selections and Change match lets you choose another copy. The final review and explicit creation remain required. Paused imports retain the preference and reapply it on resume; older saved imports keep manual selection. Changing the preference and matching again resets choices.

The Album title field now explains that mapping it makes matching stricter: a nonempty album value must match for automatic selection. Choose do not use to allow matching copies on other albums or compilations.

Pause and resume CSV imports

After reading a CSV, choose Pause import in its heading to save your work locally for the current account. Playlists → Paused imports keeps up to 10 imports / 64 MB per account, including after restarting Tagcast. No playlist is created by pausing, listing or resuming. Saved copies do not expire after one hour; ordinary unsaved active drafts still do.

Upload missing tracks to iBroadcast, then choose Refresh library & resume. Tagcast refreshes the shared library and matches the original CSV again. Unchanged manual choices and skipped records are retained, along with the playlist name, description, filter and matching page. If a chosen track changed or disappeared, its row returns to unresolved with an explanation. New or ambiguous copies use the same conservative matching rules. Changing column mappings resets previous choices.

Resuming returns to matching (or unfinished column mapping), requiring a new final review before creation. Closing a resumed draft leaves its last saved checkpoint; choose Pause again to replace that checkpoint with your latest choices. Remove… separately reviews deletion of the local saved copy, without changing existing playlists or music. Full storage and write errors leave the open draft intact.

Creation consumes a saved import before its request is sent. A confirmed read-back removes its checkpoint. An uncertain request remains visible for checking Playlists and cannot be resumed or sent again, including after restart.

Protect CSV import progress

Local HTML, JavaScript and CSS are now served fresh rather than reused from the browser cache. This prevents an updated Close button from calling older import code. If a tab was already open during a source update, restart the source server and hard-reload that tab once (Command–Shift–R on macOS). Reloading discards its current temporary import. Library/reference-data caching and music files are unchanged.

After choosing/pasting CSV input or starting a draft, Close, Cancel and Escape ask before discarding the import. Choose Keep importing, close that confirmation, or press Escape in it to continue with the same column mapping, matches, manual choices, text, filter, page and scroll position. Discard import closes the draft. While playlist creation is running, the confirmation explains that closing does not cancel the accepted request. Empty and finished imports close directly. Account/library replacement still clears an invalid draft automatically; successful creation and single-use save protection are unchanged.

Playlist list view and text-only edits

The playlist catalogue and folders offer Cards and List view buttons. This browser remembers the choice independently of album layout. List rows show a small cover, name, active track count and total duration. Folder rows count playlist references instead of tracks. Unavailable tracks and missing duration are labelled. Switching uses the current page; the totals come from the already-loaded library. It adds no iBroadcast requests and preserves playback, search and pagination.

Opening, searching and paging playlists or folders now use the loaded account library, without a remote status check on each visit. Destination choices share the same copy. Reload library retrieves changes made in another app; Tagcast's existing save read-backs also refresh this copy. An older cache without playlists is upgraded on first use. Write preconditions and verification still check fresh iBroadcast data, so caching does not bypass stale-review checks.

When editing a playlist, leave all track choices checked to change only its name or description. The review shows Before and After for changed text only. Saving sends only those fields, without a track list; repeated, missing or trashed stored positions and the cover remain intact. Empty descriptions are supported. No changes means no write. Returning to Edit review preserves typed text and choices.

Unchecking a track still prepares the existing full replacement, with its ordered track review and 10,000-track limit. Both routes check the current playlist first and read back afterwards. Name and description are verified explicitly; uncertain writes are not automatically repeated. This does not establish a cause for the separately reported iBroadcast artwork/sharing errors.

Playlist duration and image controls

Playlist details show the duration of the whole active playlist beside its track count, including repeated positions and tracks on other pages. The total uses the already-loaded library and adds no iBroadcast requests. Missing durations are reported separately; a partial known time is labelled known.

Hover the playlist cover or focus it with the keyboard to choose Change cover. This replaces the separate toolbar button and opens the same comparison and explicit save. The action remains visible on touch devices, including when there is no cover yet. Playlist folders keep their existing folder display.

Album artist cards and the artist-page photo now use squares with slightly rounded corners. Overview cards retain their size and spacing and only open the artist's albums; they have no image-editing overlay. The artist-page photo is larger (160 pixels on desktop, 96 on narrow screens). Hover/focus that photo to choose Change image or Add image; touch devices show the action persistently. The repeated album/track counts beside the photo have been removed; the album count stays above the album list. The same artwork comparison still explains that an artist image changes everywhere in iBroadcast; nothing saves just by hovering.

Consistent dialog controls

Playlist-cover Help sits beside Close in the top-right action group. Playlist reviews and Devices use the same heading and circular Close control as other dialogs. Close crosses are drawn with centered strokes rather than a font glyph, so their alignment is independent of the browser's font rendering. Long headings can wrap while Help and Close stay together. Keyboard labels and dismissal remain unchanged.

Remove individual play queue entries

In Now playing → Play queue, hover a row or focus it with the keyboard to replace its number with ×. On touch devices the remove button is always visible. Its tooltip is Remove from play queue; Tab to the button and press Enter or Space to remove that one queue position. The title/artist part of the row remains a separate Play button.

Removing a track before or after the current one keeps the current audio and listening position intact. Removing the current entry selects the following track, preserving a paused state. If no track follows, playback pauses on the preceding retained entry so the player and queue remain reachable without starting audio again. Removing the only entry stops the player. Repeated track IDs are separate positions: only the chosen occurrence is removed, including an entry in Up next. Focus moves to the next available remove button and the queue stays at the same scroll position.

This changes only the play queue, never a saved playlist, library metadata or music files. It uses already-loaded queue metadata; no extra library requests are needed. An optional queue-sync player publishes the changed queue through its existing bridge. Remote controllers keep their existing device controls.

Play next already adds tracks or albums to a separate FIFO Up next block before returning to the ordinary queue. This update adds no extra row menu or shortcut for moving an existing queue position to that block.

The features under the following headings were released in 0.70.2 or earlier; their links preserve existing bookmarks.

Subtle activity feedback

See Subtle activity feedback.

Choose online sources

See Choose online sources.

Clear search fields

See Clear search fields.

Shuffle playlist

See Shuffle playlist.

Playlist playback marker

See Playlist playback marker.

Connection reliability

See Connection reliability.

Complete library metadata exports

See Complete library metadata exports.

Library loading feedback

See Library loading feedback.

Import playlists from CSV

See Import playlists from CSV.

Playlist covers and folders

See Playlist covers and folders.

Choose existing artists while editing

See Choose existing artists while editing.

Artist favourites

See Artist favourites.

One Favourites page

See One Favourites page.

Artist stars and sorting

See Artist stars and sorting.

Optional album information

See Optional album information.

Optional artist biographies

See Optional artist biographies.

Multiple album artists and track credits

See Multiple album artists and track credits.

Split combined album artists in Cleanup

See Split combined album artists in Cleanup.

Track thumbs-down

See Track thumbs-down.

Genre validation

See Genre validation.

Large playlists

See Large playlists.

Settings and Help

See Settings and Help.

Combined browse menus

See Combined browse menus.

Appearance refinements

See Appearance refinements.

Clone this wiki locally