Release Notes
Recent updates to ShadowTag.
Improvements
-
Better UCS detection — Major redesign of the UCS detector with two-dimensional synonym scoring (separate category and subcategory dimensions combined via union), hand-curated synonym lists replacing the previous heuristic approach, expanded coverage, and tighter calibration. 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 — Improved category gate selectivity, 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-path 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 — Eliminated double layout passes and reduced per-frame buffer allocation in the audio editor.
-
TagLib 2.3 upstream sync — Updated the underlying TagLib library to version 2.3, picking up upstream metadata-handling improvements and fixes.
Bug fixes
-
Playback reliability — Fixed several transport bugs, including an infinite error loop that could occur when a scheduled playback ran out, incorrect short-circuiting on 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 an off-by-one in the playhead visibility check that caused a scroll when the playhead landed exactly at the visible left edge.
-
Stability — Fixed retain cycles, zombie references, and task cancellation bugs in the audio workspace.
-
Playlist persistence on shutdown and deletion — Playlist deletions are now immediately written to disk, and dirty playlist groups are flushed 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 comma-mode parsing bug.
-
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 blocks the main thread.
-
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 off-by-one 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 persisted when their indexes drifted from 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 race condition 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.