Release Notes
Recent updates to ShadowTag.
New features
-
Per-direction fade tapers — Fade-in and fade-out now have independent taper shapes. The fade editor adds taper handles at the midpoint of each fade region — drag up or down to sweep between reverse-audio, linear, and default audio curves. The new taper picker is wired into the Fade with Options dialog, including a Custom slot that persists across sessions.
-
Render audio edits during export — The Convert Files and Export Soundpack dialogs now offer a Render Audio Edits option that applies any pending non-destructive audio edits (trim, fade, normalize) to the exported files. Selectable between Render and Ignore; remembered across exports.
Improvements
-
Escape dismisses popovers — Press Escape to close any popover (UCS editor, channel names, etc.) without clicking outside.
Bug fixes
-
Sidebar order for system playlists — Fixed system group entries (Search Results, Favorites, Edited, Rated, Colored) not always restoring in their original order on launch.
New features
-
Data storage migration (Per-playlist) — Internal playlist storage moves from one big file per group to one file per playlist, so small edits no longer rewrite everything and crashes are less likely to corrupt the whole group. Migration runs once on first launch of 1.5 and progress is reported on the splash.
-
Import Library Folder — A new File → Import → Library Folder… command imports an entire folder hierarchy at once. Choose between Single Playlist (all audio under the root flattened into one playlist) or Folders → Playlists (each direct subfolder becomes its own playlist in a new group), with a preview of the mapping before you commit.
-
Smart Playlists — A built-in set of dynamic playlists — Edited, Rated, and Colored — appears in the sidebar and automatically lists every file matching that condition across all groups. Each smart playlist shows its relevant columns (Rating, Colors) pinned at the front, and drops are rejected so the list stays defined by the rule.
-
Cross-type metadata paste — Copied values from the Tags, BEXT, or iXML editor can now be pasted into a different editor type. A confirmation dialog shows the cross-type mapping before applying the paste.
-
Spring-load sidebar navigation — Hover over a playlist in the sidebar during a drag and the table switches to that playlist after a short pause — the standard macOS spring-load gesture, useful for moving files between playlists in one motion.
-
Audio Unit validation report — A Validate Audio Units button in Settings runs validation across the installed AU plug-ins and surfaces a report dialog listing any that failed, with a Copy Report action for sharing.
-
Playlist size limit setting — A new Playlist Size Limit preference caps how many elements a single playlist can hold. The Import Library Folder planner and append paths honor the limit and skip beyond-cap files instead of growing playlists past it.
Improvements
-
Expanded dirty column — The dirty status column now shows clean, pending metadata edit, pending audio edit, and unplayable files as distinct states instead of lumping every dirty state into one icon. Sorting by the column groups files by state.
-
Faster startup — The splash window appears right away while playlists load in the background, with status messages ("Loading playlists…", migration progress) shown until the main window is ready. Cache cleanup now happens after launch instead of during it.
Bug fixes
-
Audio Unit validation could stall without results — Fixed a case where a plug-in that timed out during the first validation step was then handed to a second validator that would also hang, leaving the scan without final results. The timeout is now reported right away.
-
Drag and drop overhaul — Sidebar drops without spring-load now use the right undo path and actually move files; cross-playlist drags undo as a single step; spring-load drops move files rather than copying them; drops land on the right row when a filter is active; same-playlist drops no longer always force a move; phantom playlist creation, a lost source view, and a duplicate-URL crash are fixed; cross-playlist drops detect duplicate URLs and show a notice instead of crashing.
-
Search crash on duplicate URLs — Fixed a crash when the current playlist contained duplicate URLs.
-
Legacy playlist deduplication — Duplicate files (by URL) in older playlists are now removed when the playlist is loaded, cleaning up old data without any manual steps.
-
False-positive temp file events — The folder watcher no longer reports short-lived temporary files as new files in watched folders.
-
File properties color clear crash — Fixed an error when clearing a file's color tag from the File Properties view.
New features
-
Shuffle command — A new Shuffle action (⌘⇧P) randomly reorders the current playlist. The currently playing track is pinned to the top of the shuffled list, sort descriptors and filters clear, and the change is undoable.
-
Star rating support — Read and write 0–5 star ratings across all supported formats (POPM for ID3v2/AIFF, RATING/FMPS_RATING for FLAC/OGG, rate atom for M4A/MP4/AAC).
-
Audio section in Settings — A new Audio section in Settings includes an Open Audio MIDI Setup button to launch macOS's Audio MIDI Setup utility directly. ShadowTag uses the default output device.
Bug fixes
-
UCS filename catID parsing — Fixed the catID parser to accept identifiers longer than 8 characters (e.g. "CREAMnstr"), and fixed the title / iXML FX Name fallback path to preserve trailing filename blocks like source IDs and project codes. This fixes cases where it doubled the catID prefix for some already correctly named files.
-
Folder drop didn't refresh playlist info — Dragging a folder into the sidebar to auto-create a playlist now updates the playlist info view immediately, instead of waiting for a click or refresh.
-
More flexible handling of Tag based search terms — "rating: 4" (with the space) previously wouldn't of matched "rating:4" searches.
New features
-
Export Soundpack — A new Tools action packages a selection of files into a self-contained soundpack with Copy, Move, and Convert modes. The destination can be a flat folder or a one- or two-level subfolder hierarchy grouped by tag values, and last-used settings are remembered between exports.
-
Multi-level Group By Tag — The Convert Files and Export Soundpack dialogs now accept two tag keys for nested output subfolders (e.g. Category/Subcategory/file.wav). Tag values containing "/" are split into nested folders automatically, so a single value like "Music/Classical" produces a Music/Classical/ hierarchy. Existing single-key selections still work.
-
Rename in place from UCS filename dialog — The UCS filename tool now offers Copy and Rename modes. Rename renames files in place and updates the new paths across every playlist that referenced them.
-
Clear Audio Edits — A new Tools action (⌥⇧⌫) clears pending audio edits without saving, reverting playback to the file's original state.
-
Missing-file handling — Playlist files whose bookmarks can't be resolved (disconnected volumes, deleted files) are now kept in the playlist with a missing-file flag instead of being silently dropped. The sidebar and file status column show warning indicators so the affected files are easy to spot.
Improvements
-
Wider artwork format support — Artwork decoding now uses the system image pipeline, accepting JPEG, PNG, WebP, HEIC, TIFF, and GIF. Also fixes reading and writing legacy FLAC artwork that was stored in Vorbis Comments instead of native PICTURE blocks.
Bug fixes
-
Audio Units now restore reliably on launch — Fixed a timing conflict between Audio Unit cache validation and chain restoration that caused crashes and prevented saved Audio Units from being loaded at startup.
New features
-
Non-destructive audio editing — A new suite of audio editing tools applies edits to playback in real time and only writes them to disk when you save. The Editor's dirty column now shows a waveform icon for files with pending audio edits, distinct from metadata-only changes.
-
Fade editor — Draw fade-in and fade-out regions directly on the waveform with adjustable taper shapes. Also available as Fade Selection and Fade with Options actions under Tools.
-
Trim and crop — Trim handles in the audio editor define playback in/out points. Set In Point and Set Out Point (I key) snap them to the playhead. Crop Selection under Tools bounds playback to the current selection.
-
Auto-detect Trim Points — A new Tools action scans for silence at the start and end of each file and proposes trim boundaries.
-
Normalize — A new Tools action measures Peak or LUFS loudness and applies the corresponding gain non-destructively via the fade automation system. Configurable mode and target level.
-
Save Metadata Only — A new Save Metadata Only command saves tag edits without applying pending audio edits. A confirmation prompt appears when a normal save would commit both.
-
Consolidated transport options menu — A new options button on the transport bar groups all audio-related Tools actions in one place. The separate BPM stepper menu has been merged in.
Improvements
-
UCS detection redesign — Scoring rewritten to use word-start prefix matching, with vocabulary-order tie-breaking and a default MISC subcategory fallback when only a category match is found. Includes database fixes for Bird (false BIRD OF PREY positives), Whoosh/Swoosh, Match (limited to FIREIgn), Stable (added to ANMLFarm), and more.
-
UCS auto-sync to iXML — After running UCS category detection, the chosen category and subcategory are also written to the iXML USER fields, keeping Soundminer compatibility automatic.
-
Title-cased UCS display — UCS category and subcategory names now display in title case in popups and columns instead of the all-caps source form.
-
BPM octave correction — Tempo detection accepts a preferred range as a hint for octave correction, helping resolve double-time / half-time ambiguity.
-
Tooltips throughout transport and editor controls — Added localized tooltips across the transport bar, waveform area, and editor controls.
-
Volume slider range extended to +12 dB — The transport volume slider now goes up to +12 dB, doubling the previous +6 dB of boost headroom for quieter files.
-
Light-mode polish — Fixed table row selection color and notification appearance to respect light/dark mode.
Bug fixes
-
Loop state on workspace load — Loop mode now restores correctly when reloading a workspace.
-
Dirty-flag glitches — Centralized dirty-flag handling to fix undo and edit-state glitches across the metadata panels.
-
BPM stepper focus hang — Fixed a focus hang in the BPM stepper's number field.
-
Image columns on reused cells — Fixed image cells failing to show their image after scrolling reused the cell.
Improvements
-
Better UCS detection — Major redesign of the UCS detector with separate category and subcategory synonym scoring, hand-curated synonym lists replacing the previous rule-of-thumb approach, expanded coverage, and tighter tuning. Also fixes false positives from over-broad vocalization terms, spelling errors, missing synonyms, and incorrect associations.
-
BEXT fields available as columns — BEXT metadata (description, originator, loudness fields, etc.) can now be displayed as columns in the file table, alongside the existing tag and iXML columns.
-
Save Selected Edits — A new Save Selected Edits action (⌘⌥⌃S, also in the file list contextual menu) writes pending edits for just the selected files instead of the whole modified set.
Bug fixes
-
Auto-advance triggered by selection end — In playlist mode, playback was auto-advancing to the next file whenever a loop or selection finished, not just at the end of the file. Now auto-advance only triggers when a file plays through to its actual end.
-
Hide-empty-columns kept populated BEXT/iXML columns — Fixed Hide Empty Columns to correctly retain BEXT and iXML columns that contain data.
Improvements
-
More accurate UCS detection — Tighter category filtering, better matching for footstep and surface-named files, fixes for tram/train and explosion categories, and a stricter 6-character minimum CatID requirement for the fast matcher to reduce false positives.
New features
-
Reset button in UCS editor — A Reset button in the UCS properties view clears all UCS fields for the selected files in one step.
-
UCS sync across tabs — The UCS editor now reads category and subcategory from iXML USER fields when no ID3 UCS tags are present, so Soundminer-tagged files display correctly without manual conversion.
-
Inherit column layout for new playlists — Creating a new playlist now starts with the column layout of the currently active playlist instead of the default.
-
Playlist history navigation — View > Playlist History submenu with Back and Forward (⌘[ / ⌘]) lets you step through recently-viewed playlists.
Bug fixes
-
UCS editor missing BEXT in corpus — Fixed in-editor UCS detection to include BEXT fields and respect the corpus fallback policy.
-
UTF-8 encoding in tag values — Fixed a long-standing issue that defaulted to Latin-1 encoding when reading and writing tags, causing Mojibake for non-ASCII characters in FLAC, MP3, OGG, M4A, and WAV files.
-
Multi-line tags couldn't be deleted — Fixed an issue that prevented removing Keywords and other multi-line tags with the Delete key.
-
Playhead height on vertical resize — Fixed the playhead not resizing correctly when the audio editor's height changed.
Improvements
-
Smoother audio editor rendering — Reduced repeated layout work and per-frame memory allocation in the audio editor.
-
Tagging library updated — Updated the underlying metadata library to its latest release, picking up upstream improvements and fixes for tag reading and writing.
Bug fixes
-
Playback reliability — Fixed several transport bugs, including an infinite error loop that could occur when a scheduled playback ran out, a wrong early exit when reloading the same file, and a loop scheduling boundary issue.
-
UCS rename fallback — When using Title or iXML FX Name as the FX Name source and the field is empty, the fallback now uses the entire filename stem rather than truncating at the first underscore.
-
Spurious horizontal scroll — Fixed a one-pixel rounding error in the playhead visibility check that caused a scroll when the playhead landed exactly at the visible left edge.
-
Stability — Fixed memory leaks, dangling references, and task cancellation bugs in the audio workspace.
-
Playlist persistence on shutdown and deletion — Playlist deletions are now immediately written to disk, and any pending playlist group changes are saved on app shutdown. Prevents deleted or modified playlists from reverting to an older state on the next launch.
-
Deleting a group together with its playlists — Fixed an error when selecting both a group and playlists inside it for deletion at the same time. The nested playlists are now removed cleanly with the group.
New features
-
FX Name Source picker for UCS rename — When renaming files to UCS convention, the UCS Copy dialog now lets you choose whether the FX Name portion comes from the original filename, the Title tag, or the iXML FX Name field. The preview updates as you switch sources.
-
More accurate UCS category detection — Multiple accuracy and performance improvements, including expanded metadata sources and a fix for a parsing bug in comma-separated fields.
-
Higher keyword detection confidence — The default Minimum Confidence for Detect Keywords has been raised from 0.3 to 0.6, reducing false-positive keyword tags.
Bug fixes
-
UCS search case-sensitivity — Fixed a case-sensitivity issue in the near-match search used by UCS detection that could cause some matches to be missed.
-
Popover header clipping — Fixed the popover header being clipped when its content view was resized before the popover was shown.
-
Faster startup — App launch is now noticeably quicker: playlist restore happens in parallel with audio engine initialization, and AU cache loading no longer holds up the rest of the app.
-
Smoother resize — Reduced layout overhead during window and panel resize.
-
Scroll position preserved on refresh — The playlist sidebar and file list no longer jump to the top when their data refreshes.
-
User Presets button in Organize Columns — Quick access to the user presets menu directly from the Organize Columns view.
-
Commit edits by leaving the field — Text field edits now save when you tab to another field or click elsewhere; pressing Enter is no longer required to confirm.
-
Column presets — Save, name, load, and delete custom column layouts for the file list. Useful for switching between different metadata-editing contexts.
-
AudioUnit presets use standard location — AU presets now save to and load from ~/Library/Audio/Presets/ — the macOS-standard location shared across audio applications, so presets you save in ShadowTag are visible in other AU hosts and vice versa.
-
ForkLift drag-and-drop — Fixed an incompatibility that prevented dragging files from third-party file managers like ForkLift into ShadowTag.
-
Organize Columns close button — The close button in the Organize Columns view is now always visible.
-
Selection snap-to-grid — A new Editor > Snap submenu lets you snap selection in/out points to bar, beat, eighth-note, or sixteenth-note divisions based on the file's BPM. The chosen snap value is saved with the workspace.
-
Selection sizing with bar numbers — Fixed the selection rectangle being sized incorrectly when bar numbers were enabled in the ruler.
-
Playlist drag-and-drop — Reordering playlists and groups in the sidebar now lands them at the intended position. Fixes positioning errors when moving items down within the same parent and prevents adjacent groups from spring-loading during a group drag.
-
Dark/light mode appearance — Marker colors and channel track headers now redraw correctly when switching between light and dark mode, without requiring a relaunch.
New features
-
Structured iXML editor — The Editor's iXML tab now provides a form editor with fields organized by section (Core, Project, Recorder, etc.) replacing the raw XML view. A header button toggles between the form editor and raw XML; XML is validated when switching modes, with confirmation before replacing manually-edited content.
-
iXML in the file list — iXML metadata fields can now be displayed as columns in the file list, with inline editing support via double-click.
-
Multichannel track headers — Multichannel files with iXML track names display per-channel labels in a static header column next to the waveform. Track names can be edited in a popover.
-
Video timecode — Video files now detect their frame rate, and the ruler automatically displays SMPTE timecode for video files with embedded timecode information.
-
Label alignment preference — A new preference controls label alignment in the metadata panel and properties dialogs.
-
File path column and properties — File path is now an optional column in the file list and is shown in the Properties view. Revealing many files in Finder confirms before opening multiple windows.
-
Pencil-button multi-line editor — A pencil button in Tags, BEXT, and iXML editors opens a popover for editing multi-line values.
-
Empty-state info views — Tag and marker panels now show informative empty-state messages when no file is loaded.
Bug fixes
-
iXML/BEXT encoding — Fixed an encoding issue when writing iXML and BEXT data.
-
Coding history editable — The BEXT coding history field is now properly editable.
-
Group sort positions — Fixed an issue where playlist group sort positions weren't always saved when they didn't match their actual order.
-
Spring-load drag selection — Fixed wrong row being selected during spring-loaded drags in the file list.
-
Column drag updates organizer — The Organize Columns view now updates correctly when columns are dragged to new positions in the file list.
New features
-
Organize Columns — Show, hide, and reorder columns in the file list (⌘⇧\). Adds Channels, Sample Rate, and Bit Depth as new optional columns.
-
Ruler — Audio files display real time; video files automatically switch to SMPTE timecode when timecode information is present. Optional bar and beat overlay based on the file's BPM (Show Bar Numbers).
-
FLAC support for BEXT and iXML — FLAC files can now read and write BEXT and iXML metadata via APPLICATION blocks. The Editor's BEXT and iXML sections appear when a FLAC file is selected.
-
Inline tag editing — Double-click any metadata cell in the file list to edit it in place, without switching focus to the Editor panel.
-
Marker name labels — Markers display their name as a label that clamps to a maximum width to prevent overlap on closely-spaced markers.
-
Multi-line BEXT fields — The BEXT description and coding history fields now accept multi-line values.
-
Expanded localization coverage — Many newly-added menu items, dialogs, and labels are now fully localized across all supported languages.
Bug fixes
-
Loudness writes BEXT data — Detecting loudness on a BEXT-capable file (WAV or FLAC) now creates a BEXT block if one isn't present.
-
Bit depth for compressed formats — Bit depth now reports correctly for FLAC and other compressed formats. Previously zero.
-
Audio engine startup reliability — Fixes startup failures on Macs without an input device (such as a Mac Mini with no microphone, or output-only audio interfaces) and a related timing issue that could cause the audio engine to fail to initialize during app launch.
-
Drag-and-drop preserves unsaved metadata — Dragging files between playlists no longer discards any unsaved metadata edits on those files.
-
What's New menu item — A new What's New item under the Help menu opens the latest release notes in your browser.
-
Multi-marker delete — Selecting and deleting multiple markers at once now correctly removes all of them. Previously only one was actually removed.
-
Pre-processing options dialogs — Detect Keywords, Tempo, Musical Key, and UCS Category now show options before running, with settings remembered for next time. Detect Keywords adds a new choice to either merge with or replace existing keywords.
-
Better batch error reporting — When a batch process hits errors, a summary of failed files appears at the end instead of being silently skipped.
-
More accurate UCS category detection — Tighter matching, cleaner handling of underscores and hyphens in filenames, fewer noisy tags polluting the results, and a new minimum-quality threshold.
-
MP4 chapter editing rebuilt — More reliable reading and writing of MP4 chapter metadata, supporting both QuickTime and Nero formats. Includes a fix for an issue affecting some MP4 files.
-
Smarter menu state — Menu commands stay disabled while the app is launching, and Editor menu items disable when no file is loaded.