Skip to content

Releases: DanielMuellerIR/tag_explosion

Tag Explosion 0.47.2

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 05 Oct 08:33

Tag Explosion 0.47.2 preserves ebook metadata when Calibre reports localized cover status and fixes installer lock cleanup after interrupted installation.

The Quick Look extension now also builds with SwiftPM’s native build system.

This release also includes Finder opening services, an EPUB metadata Quick Look extension, faster EPUB and Calibre operations, and corrections to lyrics, document metadata and multi-disc lookup handling from the intervening releases. macOS may retain its system preview for formats such as MP3.

The DMG contains a signed and notarized macOS application.

Tag Explosion 0.46.95

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 02 Oct 15:53

Tag Explosion 0.46.95 fixes metadata loss and concurrent editing issues.

  • Edits made while shifting subtitles, removing tag layers, or restoring a previous version remain available as unsaved changes.
  • Separate new-window requests retain their own file lists.
  • XML metadata editing preserves unrelated fields from other namespaces. EPUB and Office packages with alternate namespace prefixes remain valid when adding metadata.
  • Lyrics edits preserve LRC metadata, including timing offsets, and the languages of individual ID3 lyrics frames.
  • Invoice fields from unknown XML namespaces no longer receive incorrect business-term mappings. XML namespace resolution also works safely on Linux.
  • Invalid document timestamps are rejected before writing. Complete single-disc lookup results correct stale disc numbers when overwriting tags.
  • Automatic backups handle the Linux error reported by filesystems without hardlink support. Installer lock recovery no longer removes another process's newly acquired helper lock.

For data safety, property edits are rejected when ID3 lyrics frames share a description but use different languages. An abandoned installer takeover helper lock requires manual cleanup after checking for active installations.

Requires macOS 14 or later on Apple silicon. The app and DMG are signed and notarized.

Tag Explosion 0.46.91

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 02 Oct 09:03

Tag Explosion 0.46.91 improves automatic tag backups and export shutdown.

  • Automatic backups work on filesystems without hardlinks. The archive is exclusively created, completely written and synchronized before media changes start.
  • Occupied backup names are skipped without overwriting existing files or media aliases.
  • Backups no longer create empty placeholder files or unnecessary trash journal entries.
  • Closing the app while exports are running prevents additional exports from starting after the final shutdown check.
  • English and German screenshots use neutral sample metadata.

On filesystems without hardlinks, interruption during backup writing can leave a partial archive; media changes have not started at that point. The macOS app and DMG are signed and notarized.

Tag Explosion 0.46.88

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 10 Sep 08:01

Diese Version fasst 15 Zwischenstände zusammen. Der Schwerpunkt liegt auf
Dateisicherheit: mehrere Wege konnten eine vorhandene Datei ersetzen, ohne den
alten Stand vorher in den Papierkorb zu legen, und einige Schreibvorgänge
liefen weiter, während die App bereits beendet wurde.

Nichts geht mehr ohne Sicherung verloren

  • tagx playlist export --force legt eine vorhandene Playlist jetzt wirklich in
    den Papierkorb, bevor sie ersetzt wird. Der Befehl war der einzige ändernde,
    dem der abgesicherte Modus fehlte — die Sicherung in seinem Schreibweg blieb
    dadurch wirkungslos, und --no-backup fehlte in seiner Hilfe.
  • Der JSON-Export von Tags und der Export der Regeldatei ersetzen ein
    vorhandenes Ziel nicht mehr mit einem direkten Schreibzugriff, sondern über
    denselben geprüften Weg wie die übrigen Exporte.
  • tagx apply bricht auch bei E-Books, Dokumenten und NFO-Sidecars ab, wenn
    sich die Datei zwischen Regelplanung und Schreiben geändert hat. Bisher las
    der Schreibweg dieser drei Medienarten die fremde Datei neu ein und schrieb
    die aus dem alten Stand geplanten Werte hinein.
  • Eine Serie für ein PDF wird überall abgelehnt statt still verworfen. In der
    App kamen „Tags aus Dateiname" und Batch-Regeln an dem ausgeblendeten Feld
    vorbei; die Datei wurde ersetzt und das Speichern meldete Erfolg, obwohl der
    Wert nirgends landete.

Beenden und Fenster schließen warten auf laufende Schreibvorgänge

  • Cover-, Kapitel-, LRC-, Playlist- und JSON-Archivexport melden sich jetzt
    einheitlich als laufende Arbeit an. ⌘Q antwortete vorher sofort und beendete
    die App zwischen Papierkorb-Sicherung und atomarem Austausch.
  • Der Zeitversatz für Untertitel respektiert die Sperre für destruktive
    Aktionen. Vorher konnte ⌘W mitten im Umschreiben der Datei durchgehen.
  • ⌘Q antwortet auch dann, wenn ein Fenster verschwunden ist, ohne sich
    abzumelden. Vorher ließ sich die App in diesem Fall nur noch über „Sofort
    beenden" schließen.

Backups lassen sich vollständig zurückspielen

  • Werte, die ältere Werkzeuge hinterlassen haben — etwa ein ReplayGain-Wert
    außerhalb von −60…+60 dB —, sichert der Export längst; der Import lehnte
    genau sie ab, sobald sich die Zieldatei seit dem Export geändert hatte. Für
    Bilder galt die Ausnahme schon, für Audio jetzt auch.
  • Vorschau und echter Lauf stimmen dabei überein: --dry-run meldete vorher
    „WOULD CHANGE" und der echte Lauf danach einen Fehler.
  • tagx cue apply nennt beim Abbruch die Dateien, die schon geschrieben sind.
  • Die Versionshistorie beschriftet Sicherungen aus einem Archiv-Import mit
    „Import" und aus tagx chapters set mit „Kapitel" statt beide mit
    „Speichern".

Tempo und Oberfläche

  • Das Öffnen mehrerer Dateien liest wieder wirklich acht Dateien gleichzeitig.
    Die Leser warten auf TagLib, exiftool und mediainfo und belegten dabei
    Threads, deren Zahl an der Kernzahl hängt; auf Maschinen mit weniger als acht
    Kernen lief der Fächer entsprechend schmaler.
  • Wechselt die Auswahl von einem PDF mit E-Rechnung auf eine andere Datei,
    erscheint dort kein E-Rechnungs-Tab mehr mit den Daten des vorigen Dokuments.
  • Bei zwei fremd geänderten Dateien im selben Speicherlauf erscheint die zweite
    Rückfrage erst, wenn die erste Entscheidung ausgeführt ist. Vorher stand sie
    sofort da, nahm aber keinen Klick an.
  • Die Versionshistorie bleibt nicht mehr bei „Analysiere …" stehen, wenn die
    Auswahl während des Feldvergleichs aufgehoben wird.

Alle Einzelheiten je Version stehen im
CHANGELOG.

Installation: DMG öffnen, Tag Explosion in den Programme-Ordner ziehen. App
und DMG sind signiert und von Apple notarisiert. Eine bereits installierte
Fassung findet diese Version über „Nach Updates suchen …“ selbst.

Tag Explosion 0.46.73

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 08 Sep 07:57

Tag Explosion 0.46.73 verbessert Dateisicherheit, Konflikterkennung und Verarbeitung großer Bestände. Enthalten sind alle Änderungen seit 0.46.2.

  • Schreibwege prüfen den gemeinsamen Lesestand von Medien und Sidecars. Bestätigtes Überschreiben löst auch XMP-Konflikte; CLI-Regeln erkennen fremde XMP-Änderungen zwischen Planung und Schreiben.
  • Cover-, Kapitel- und Liedtextexporte verwenden einen gemeinsamen gesicherten, atomaren Schreibweg. Archivimporte prüfen ZIP-Prüfsummen und bewahren Originaldateien bei Fehlern.
  • Die Online-Suche verwirft veraltete Antworten. Nachträglich gewünschte Cover werden geladen; während einer offenen Detailanfrage bleibt die Übernahme gesperrt.
  • Parser behandeln ungültige Datumswerte, extreme Zahlen und beschädigte Metadaten ohne die zuvor möglichen Abstürze oder stillen Umdeutungen.
  • Bibliotheksberichte, Playlist-/CUE-Verarbeitung, Regeln und Titelzuordnung arbeiten schneller. Große Dokumentarchive benötigen beim Neuaufbau deutlich weniger Arbeitsspeicher.
  • Gemeinsame Testhilfen ersetzen doppelte Prozess- und Fixture-Logik. Zusätzliche Regressionen prüfen Speicherkonflikte und asynchrone Editorzustände.

Blockierende MediaInfo-Leser laufen außerhalb des Swift-Executors, damit Abbruch und weitere Abonnenten auch bei knappen Thread-Ressourcen weiterarbeiten können.

Geprüft mit 509 Core-/CLI-Tests und 130 App-Tests unter macOS. Die vollständigen Core-/CLI- und App-Testläufe bestehen auch auf dem macOS-CI-Runner; der Linux-CI-Lauf ist ebenfalls grün. Messwerte und Prüfgrenzen stehen im QA-Bericht.

Das signierte und notarisierte DMG enthält die App für Apple Silicon ab macOS 14. Die gebündelte TagLib 2.1.1 unterstützt keine MP4-/Matroska-Kapitel; ID3-Kapitel bleiben verfügbar.

Zusätzlich auf einem zweiten Mac geprüft: App gestartet, Titel einer Testdatei bearbeitet und gespeichert, Ergebnis mit exiftool bestätigt; App anschließend beendet, kein neuer Crashbericht.

Tag Explosion 0.46.2

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 05 Sep 14:55

Tag Explosion 0.46.2 verbessert das Öffnen großer Dateimengen, Stapelspeichern und mehrwertige Audio-Tags. Enthalten sind alle Änderungen seit 0.39.0.

  • Dateien erscheinen bereits während des Ladens; Fortschritt und Abbruch stehen unter der Dateiliste.
  • Speicheraufträge zeigen Ergebnis und Fehlerursache je Datei. Fehlgeschlagene Dateien lassen sich gezielt wiederholen. Laufende Aufträge schützen ihre Ziele vor konkurrierenden Aktionen.
  • Suche, Filter nach Medienart, Änderungen und Fehlern sowie stabile Sortierung erleichtern die Auswahl. Die Konsistenzprüfung läuft im Hintergrund.
  • Audio-Regeln erhalten vollständige Wertelisten beim Bereinigen, Ersetzen und Kopieren. App und CLI zeigen die Listen in der Vorschau.
  • MediaInfo liest nur benötigte Ausgaben, teilt identische Anfragen und speichert bis zu acht Berichte zwischen. Abbruch beendet auch untergeordnete Werkzeugprozesse.
  • Lyrics- und NFO-Sidecars erhalten Konfliktschutz, zählen zu ungespeicherten Änderungen und ziehen beim Umbenennen mit. Weitere Korrekturen betreffen Kapitel, Playlists, Untertitel und Datumsprüfungen.

Der MediaInfo-Abbruchtest toleriert in 0.46.2 längere Scheduling-Pausen unter CI-Last.

Geprüft mit 463 Core-/CLI-Tests und dem App-Testlauf (111 Tests, optionaler Lasttest separat). Details und Messgrenzen stehen in docs/analysis-validation.md.

Das signierte und notarisierte DMG enthält die App für Apple Silicon ab macOS 14. Die gebündelte TagLib 2.1.1 unterstützt keine MP4-/Matroska-Kapitel; ID3-Kapitel bleiben verfügbar. Ein neuer GUI-Test auf einem zweiten Mac wurde für dieses Release nicht durchgeführt.

Tag Explosion 0.39.0

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 02 Sep 23:30

Tag Explosion 0.39.0 fasst die Arbeitspakete AP1 bis AP16 der Roadmap zusammen (0.24.0 bis 0.39.0). Vollständige Liste je Version: CHANGELOG.md.

Neue Formate

  • Weitere Audio-/Container-Endungen über TagLib: Tracker-Module (mod, s3m, xm, it), au, aifc, mp2, 3gp/3g2, mka, ogv.
  • Kamera-RAW (cr2, cr3, nef, arw, raf, orf, rw2, pef) lesen; Schreiben ausschließlich in die XMP-Sidecar-Datei. Dazu avif, jxl, bmp, psd, svg.
  • Office (docx, xlsx, pptx), OpenDocument (odt, ods, odp), Comics (cbz mit ComicInfo.xml) und Markdown-Frontmatter als eigene Medienart „Dokument“.
  • Playlists (m3u, m3u8, pls, xspf) und Cue-Sheets anzeigen, bearbeiten und aus einer Auswahl exportieren.
  • Video-Sidecars: Kodi/Jellyfin .nfo bearbeiten, .srt/.vtt anzeigen, Zeitverschiebung.
  • E-Rechnungen: Order-X und Peppol-Bestellung/Gutschrift, Grundvalidierung nach EN 16931 mit Warnhinweisen.

Audio-Tiefe

  • Kapitel für Hörbücher und Podcasts (ID3 CHAP/CTOC; MP4- und Matroska-Kapitel mit TagLib 2.3, siehe Hinweis unten), tagx chapters.
  • ID3v1, ID3v2 und APE getrennt anzeigen und einzeln entfernen; Schreiboption ID3v2.3 für alte Player.
  • Lyrics (auch synchronisiert, LRC-Sidecar), ReplayGain und R128-Lautheit mit Wertebereichsprüfung, Podcast-Felder.

Werkzeuge

  • Umbenennen aus Tags und Tags aus Dateinamen mit Mustern, Vorschau und Kollisionserkennung (tagx rename, tagx parse).
  • Konsistenzprüfung über Ordner: fehlende Cover, abweichende Album-Interpreten, Lücken und Dubletten in der Nummerierung (tagx check).
  • Cover-Werkzeuge: Größe und Format prüfen, verkleinern, nach JPEG wandeln, folder.jpg übernehmen oder exportieren.
  • Batch-Regeln als JSON-Skript mit Regel-Editor (tagx apply).
  • Undo-Historie: Papierkorb-Sicherungen als Versionsliste je Datei, einzeln zurückholbar (tagx history).
  • Online-Lookup über MusicBrainz, Discogs und AcoustID nur auf ausdrückliche Aktion, mit Datenschutzhinweis; ohne Freigabe kein Netzzugriff.

Plattform

  • Core und CLI bauen und testen jetzt auch unter Linux (CI-Job auf Ubuntu 24.04). Der abgesicherte Modus nutzt dort den freedesktop-Papierkorb.
  • Behoben: Release-Build gegen die mitgelieferte TagLib 2.1.1 scheiterte im Shim.

Hinweis

Das DMG bringt TagLib 2.1.1 mit (Mindestversion macOS 14). MP4- und Matroska-Kapitel brauchen TagLib 2.3 und stehen in dieser Fassung nicht zur Verfügung; ID3-Kapitel in MP3 funktionieren.

Tag Explosion 0.23.15

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 30 Aug 11:51

[0.23.15] — 2026-08-30

Geprüft

  • Die CodeQA-Folgekampagne hat die acht durch den Review-Fix veränderten
    Bereiche erneut geprüft: atomare Dateisicherheit, Archivimport,
    TagLib-Roundtripgrenze, Installer-Distribution, E-Book-Schreiben,
    Bildmetadaten sowie CLI- und Prozessausgabe. Alle 14 Bereiche und vier
    Querschnittsthemen stehen damit wieder auf aktuellem Stand.
  • Das Schichtenmodell mit gemeinsamem portablem Core, CLI-Adaptern,
    SwiftUI-Beobachtungsmodell und Fensterkoordinator bleibt passend, aber
    gespannt. Die große AppModel-Zustandsschicht bleibt die begründete spätere
    Teilungsgrenze; ein Paradigmenwechsel lohnt den Migrations- und Testaufwand
    nicht.
  • Der Abschlusslauf bestand mit 176 Root-Tests in 14 Suites, 65 App-Tests in
    8 Suites und der vollständigen Installer-Rollback-Suite. Ein sichtbarer
    GUI-Lauf war für die nichtvisuellen Änderungen nicht erforderlich.

[0.23.14] — 2026-08-30

Behoben

  • Der Archiv-Dry-run schreibt Bildwerte nun auf eine Geschwisterkopie und liest
    sie exakt zurück. Normalisiert exiftool einen Wert, lehnen Dry-run und Import
    ihn vor der Papierkorb-Sicherung ab; der Import setzt andernfalls genau die
    geprüfte Kopie atomar ein.
  • Klartext und Fehlermeldungen behalten wörtliche Surrogate-Schreibweisen auch
    dann, wenn sie mit [ oder { beginnen. JSON- und Klartext-Aufrufer wählen
    ihren Dekodierweg jetzt ausdrücklich.
  • Der Installer-Regressionstest trägt Hintergrundprozesse nach jedem wait
    unabhängig vom Exit-Code aus und vergleicht vor dem Aufräumen zusätzlich
    Eltern-PID und Startzeit. Eine wiederverwendete Prozessnummer kann dadurch
    keinen fremden Prozess treffen.
  • Der echte Bild-CLI-Test hängt nur noch von der getrackten Bild-Fixture und
    exiftool ab; fehlendes ffmpeg überspringt ihn nicht mehr.

Geprüft

  • 66 gezielte Archiv-, Bild-, Dekodier- und CLI-Tests sowie die vollständige
    Installer-Rollback-Suite bestanden.

[0.23.13] — 2026-08-29

Geprüft

  • Die CodeQA-Kampagne ist mit allen 14 Bereichen auf aktuellem Stand und
    allen vier Querschnittsthemen abgeschlossen. In diesem Lauf wurden sechs
    Bereiche verbessert und fünf erneut ohne weiteren Befund geprüft; die drei
    unveränderten Bereiche blieben durch ihren aktuellen Abdeckungsstand belegt.
  • Der Abschlusslauf bestand mit 175 Root-Tests in 14 Suites, 65 App-Tests in
    8 Suites, einem vollständigen Release-Build und allen sechs CI-Shelltests
    für Tempordner, Bundle, Installer, Mindestversion, TagLib und Icons. Die
    sichtbaren GUI-Selbsttests wurden nicht gestartet.
  • Die Schichten aus portablem Core, CLI-Adaptern, SwiftUI-App und
    Fensterkoordinator bleiben passend. AppModel.swift ist mit 1.357 Zeilen
    weiterhin die belegte spätere Teilungsgrenze für Laden, Speichern,
    Konflikte, Archivimport und Fensterlebenszyklus.

[0.23.12] — 2026-08-29

Behoben

  • Der ältere CLI-Mutationsschutztest behandelt Bewertung −1 nicht mehr als
    ungültig. −1 ist der unterstützte XMP-Wert „abgelehnt“; der Test prüft jetzt
    nur noch wirklich ungültige Eingaben gegen den aktuellen Wertebereich und
    passt damit wieder zum separaten −1-Read-back-Test.

Geprüft

  • Die gezielten Export-/Exif-Tests bestanden mit 4 Tests in 2 Suites. Die
    vollständige Root-Suite bestand mit 175 Tests in 14 Suites.

[0.23.11] — 2026-08-29

Behoben

  • Die GUI-Selbsttests finden Speichern und Neues Fenster jetzt in der
    deutschen wie in der englischen Menüleiste. Der Fenstertest belegt außerdem
    den vorgesehenen Shortcut ⌘N; bisher prüfte er nur den deutschen Titel
    und konnte einen fehlenden oder falschen Shortcut nicht erkennen.

Geprüft

  • CodeQA: Prozessbesitz, Start-/Abbruchfristen, Screenshot-Nachweis,
    Accessibility-Grenzen, Icon-Generatoren und die unveränderten Asset- und
    Fixture-Werkzeuge wurden erneut geprüft. Alle zusammengesetzten
    Swift-GUI-Programme, Shellskripte und Generatoren bestanden die Syntax-
    beziehungsweise Typprüfung; der parallele Icon-Regressionstest bestand.
    Ein sichtbarer GUI-Lauf wurde nicht gestartet.

[0.23.10] — 2026-08-29

Behoben

  • Der Bewertungs-Picker übersetzt seine dynamisch erzeugten Einträge nun
    auch in der englischen Oberfläche. „keine“ und „— verschieden —“ blieben
    bisher deutsch; für „abgelehnt“ und sichtbare Fremdwerte fehlten zudem die
    englischen Katalogeinträge.

Geprüft

  • CodeQA: Einzel- und Batch-Bewertung samt fehlendem Tag, −1, 0…5,
    tolerierten Bestandswerten und Bild-Speichergrenzen wurden erneut geprüft.
    34 Editor-, Cover-, Speicher- und Lesepfadtests sowie die Kompilierung des
    deutschen und englischen String-Katalogs bestanden.

[0.23.9] — 2026-08-29

Geprüft

  • CodeQA: Fenster-Registry, Dateiöffnung ohne sichtbares Fenster,
    begrenztes Nachfassen, fensterweise Beenden-Rückfragen, Delegate-Brücke,
    Dokument-URL, Fensterkopf, Seitenleistenregel und Homebrew-Angebot wurden
    erneut geprüft. 28 gezielte App-Tests und der App-Release-Build bestanden.

[0.23.8] — 2026-08-29

Geprüft

  • CodeQA: E-Rechnungs-Erkennung, BT-24-Profilzuordnung, CII-/UBL-Feldmapping,
    PDF-Anhangs- und Dekompressionsgrenzen, XMP-Auswahl, reine CLI-/App-Anzeige
    sowie die neue adaptive BT-/BG-Spalte wurden erneut geprüft. 31 Core-/CLI-
    und 3 App-Layouttests bestanden; der bestehende Parservertrag lädt keine
    externen Entitäten.

[0.23.7] — 2026-08-29

Behoben

  • Wörtlicher Text wie \udcfc bleibt in Klartextausgaben von MediaInfo,
    Calibre und externen Fehlermeldungen unverändert. Die Reparatur solcher
    Byte-Escapes gehört nur zu MediaInfo-JSON; bisher deutete der gemeinsame
    Decoder dieselbe Zeichenfolge in jedem Text fälschlich als „ü“.

Geprüft

  • CodeQA: Der Prozessrahmen wurde samt vollständigem parallelem Leeren von
    stdout/stderr, Timeout-Grenze, JSON-Struktur, UTF-8-Erhalt sowie
    feldbezogener MacRoman-/Windows-1252-Reparatur erneut geprüft. 20 gezielte
    Decoder-, Prozess- und reale MediaInfo-Tests bestanden.

[0.23.6] — 2026-08-29

Behoben

  • tagx exif set --rating=-1 setzt jetzt den gültigen XMP-Wert „abgelehnt“.
    Bisher wies die CLI ihn zurück, obwohl Core, Archiv und App −1 bereits als
    echten Wert behandeln; nur ein explizit leerer Optionswert löscht das Tag.
  • Der Bild-Restore prüft die exakte exiftool-Rückgabe jetzt auf der Temp-Datei
    vor dem atomaren Austausch. Normalisiert oder verwirft exiftool einen
    Archivwert, bleibt das Original bytegleich, statt trotz Fehlermeldung bereits
    durch die abweichende Fassung ersetzt zu sein.

Geprüft

  • CodeQA: Bildfelder, Wertebereichs- und Archivgrenzen, exiftool-Argumente,
    Pfadbehandlung und atomarer Austausch wurden erneut geprüft. 12 gezielte
    Core-/CLI-Tests und 35 Archivtests bestanden.

[0.23.5] — 2026-08-29

Behoben

  • tagx ebook set nennt bei einem abgelehnten Cover jetzt die Formate, die
    das konkrete Ziel tatsächlich schreiben kann. Für EPUB 2 versprach die
    Meldung bisher fälschlich WebP, obwohl dieses Format erst in der aktuellen
    EPUB-3-Spezifikation ohne Fallback zulässig ist.

Geprüft

  • CodeQA: Der transaktionale E-Book-Schreibweg wurde samt EPUB-OPF-Struktur,
    formatabhängigen Serien- und Covergrenzen, Calibre-/exiftool-Adaptern und
    exaktem Read-back erneut geprüft. 33 EbookTool-Tests bestanden.

[0.23.4] — 2026-08-29

Geprüft

  • CodeQA: Build, Signatur-/Notarisierungsgrenzen und der atomare Installer
    wurden seit dem letzten Abdeckungsstand erneut auf Bundle-Prüfung,
    Sperrübernahme, Rollback und sichere Temp-Ziele geprüft. Installer-,
    Property-List-, Mindestversions-, Tempordner- und Ladepfadtests bestanden.

[0.23.3] — 2026-08-29

Geprüft

  • CodeQA: Der TagLib-Shim, seine Swift-Fassade und der ausschließlich atomare
    Schreibzugang wurden nach dem geänderten MediaInfo-Testdelta erneut an ihren
    Speicher-, Cover- und Ladepfadgrenzen geprüft. 13 Roundtrip-/MediaInfo-Tests
    und der TagLib-Ladepfadtest bestanden.

[0.23.2] — 2026-08-29

Geprüft

  • CodeQA: Archivexport und -import wurden seit dem letzten Abdeckungsstand
    erneut gegen Schema-1/2-Kompatibilität, Zielidentität, externe Freigaben,
    zielbezogene Schreibbarkeit und Read-back geprüft. 38 Archiv- und
    Exportkollisionstests bestätigen den unveränderten Vertrag.

[0.23.1] — 2026-08-29

Geprüft

  • CodeQA: Die Save- und Konfliktkoordination in AppModel wurde seit dem
    letzten Abdeckungsstand samt Cover-No-op, konsistentem Datei-Schnappschuss,
    Dialogentscheidungen und aktuellen Fenstergrenzen erneut geprüft. Die 23
    gezielten AppModel-/Lesepfad-Tests bestätigen den unveränderten Vertrag.

[0.23.0] — 2026-08-22

Inkompatibel (Library-Produkte TagExplosionCore, EInvoiceCore)

Zwei Änderungen aus 0.22.2 waren quellinkompatibel und hätten dort keinen
Patch-Sprung verdient; sie werden hier als Minor-Sprung nachgetragen:

  • ImageCoreFields.rating ist seit 0.22.2 Int? statt Int: nil heißt
    „die Datei trägt kein Rating-Tag“, −1 ist der echte Wert „abgelehnt“.
    Aufrufer, die rating als Int lesen oder -1 als Leerwert benutzen,
    müssen auf das Optional umstellen. Die Abwesenheitssemantik bleibt, sie
    ist fachlich richtig (siehe 0.22.2).
  • EInvoiceReader.containsInvoice(url:) war in 0.22.2 entfernt worden und
    ist wieder da — als veralteter Wrapper (@available(*, deprecated)) mit
    dem bisherigen Verhalten. Neuer Code nutzt sniffXML(url:) für XML und
    read(url:) für PDF.

Behoben

  • Der Bewertungs-Picker kennt jetzt „abgelehnt“ (−1). Vorher passte ein
    abgelehntes Bild zu keinem Eintrag im Einzel- und im Batch-Editor, und die
    Auswahl blieb leer, obwohl die Datei einen Wert trug. Andere tolerierte
    Bestandswerte (etwa 7 aus einer fremden Datei) erscheinen als eigener,
    sichtbarer Eintrag statt still zu verschwinden.
  • Der Installer-Regressionstest vergisst jede Hintergrund-PID, sobald er sie
    eingesammelt hat, und beendet beim Abbruch nur noch Kinder, die wirklich
    noch laufen. Vorher konnte das Aufräumen eine inzwischen neu verge...
Read more

Tag Explosion 0.22.2

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 21 Aug 09:31

Tag Explosion 0.22.2 — 2026-08-21

Eine Sammelversion mit Korrekturen aus 0.22.1 und 0.22.2. Sie behebt vor allem
drei Fälle, in denen Tag Explosion Daten falsch gelesen oder beim
Wiederherstellen verloren hat.

Behoben

  • Bewertungen von Bildern gehen beim Wiederherstellen nicht mehr verloren.
    Ein aus dem Backup zurückgeschriebenes Rating landete unter Umständen als
    gelöschtes Tag in der Datei — betroffen waren negative Werte, darunter die
    −1, die Adobe Bridge und Lightroom für „abgelehnt“ vergeben. „Kein Rating“
    heißt jetzt „das Feld fehlt“ und ist damit vom Wert −1 unterscheidbar.
    Ältere Backups werden weiterhin gelesen und dabei richtig gedeutet.
  • Umlaute neben anderen Sonderzeichen bleiben erhalten. Tags, die nicht in
    UTF-8 geschrieben sind, wurden im selben Feld uneinheitlich gedeutet: aus
    „Bäckereistraße“ wurde „Bäckereistra§e“, aus „Café – Bar“ wegen des
    Gedankenstrichs „CafÈ ñ Bar“. Tag Explosion entscheidet die Kodierung jetzt
    je Textfeld nach dem plausibleren Gesamtbild und kennt Windows-1252, die in
    Musikdateien übliche Kodierung. Auch ein Anführungszeichen mitten im Wert
    trennt das Feld nicht mehr und verfälscht damit nicht mehr den Rest.
  • E-Rechnungen werden auch in ungewöhnlich aufgebauten PDFs gefunden. Lag
    vor der Rechnung ein sehr großer anderer Anhang, brach die Suche ab und die
    Datei galt als „keine E-Rechnung“, obwohl andere Programme sie anzeigten.
    Ebenfalls behoben: Eine unkomprimiert eingebettete Rechnung über 256 KiB
    wird jetzt gelesen.
  • Beim Beenden gehen keine Änderungen mehr verloren, die erst während der
    Rückfragen entstehen.
    Solange ein Fenster fragt, bleiben die übrigen
    bedienbar; Tag Explosion fragt in Runden gegen den aktuellen Stand und
    beendet sich erst, wenn kein Fenster mehr etwas zu verlieren hat. Ein
    Fenster kommt dabei nur noch nach vorn, wenn dort auch wirklich eine Frage
    erscheint.
  • Bleibt ein angefordertes Fenster aus, ist die App keine Sackgasse mehr.
    Die Anforderung wird nach kurzer Frist wiederholt und danach wieder
    freigegeben — auch beim zweiten und jedem weiteren Mal.
  • Der Menüpunkt „Neues Fenster“ heißt bei englischer Systemsprache jetzt
    „New Window“.
  • tagx exif show zeigt jedes vorhandene Rating an, auch ein negatives. Die
    Textausgabe verschwieg es, während --json es ausgab.

Geändert

  • Bei präparierten PDFs sind Anzeige und Entpackarbeit getrennt begrenzt: Die
    Summe der angezeigten Anhänge bleibt bei 64 MiB, die insgesamt geleistete
    Entpackarbeit bei 256 MiB. So lässt sich dieselbe Dekompressionsbombe nicht
    beliebig oft entpacken, ohne dass ein einzelner übergroßer Anhang die
    Rechnung dahinter unsichtbar macht.

Installation

DMG laden, öffnen, Tag Explosion nach /Applications ziehen. App und DMG sind mit
Developer ID signiert und von Apple notarisiert. Bereits installierte Versionen
ab 0.21.0 finden das Update über „Nach Updates suchen …“.

Tag Explosion 0.22.0

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 17 Aug 15:32

Tag Explosion 0.22.0 — 2026-08-17

Diese Version bringt die Fensterverwaltung auf das, was unter macOS zu erwarten
ist, und gibt der E-Rechnungs-Ansicht die Breite zurück.

Neu

  • Mehrere Fenster. „Neues Fenster“ (⌘N) im Ablage-Menü; jedes Fenster hat
    seine eigene Dateiliste und Auswahl. Speichern, Alle speichern und Änderungen
    verwerfen wirken immer auf das Fenster, in dem gerade gearbeitet wird, und das
    Beenden fragt jedes Fenster einzeln nach ungespeicherten Änderungen.
  • Dokumentfenster. Der Fenstertitel vertritt die geöffnete Datei: mit
    Datei-Icon und dem gewohnten hierarchischen Pfadmenü bei Command-Klick auf den
    Titel. Weicht der Titel aus den Metadaten vom Dateinamen ab, steht der
    Dateiname daneben im Untertitel.

Behoben

  • Nach dem Schließen des letzten Fensters war die App eine Sackgasse: Es ließ
    sich kein neues Fenster mehr öffnen, und eine im Finder geöffnete Datei
    verschwand kommentarlos. Dateien landen jetzt im vordersten Fenster — und
    wenn keines offen ist, legt das Öffnen eines an.
  • Die E-Rechnungs-Ansicht nutzt die Fensterbreite. Die Spalte mit den
    EN-16931-Bezeichnungen belegte fest 380 Punkte; dem Inhalt blieb bei
    Standard-Fenstergröße so wenig Platz, dass Elementnamen und Werte mitten im
    Wort umbrachen, während rechts Platz frei blieb. Die Spalte wächst jetzt mit
    der verfügbaren Breite, und die Feldliste steht linksbündig unter dem
    Profilkopf.

Geändert

  • Die Seitenleiste mit der Dateiliste ist bei einer einzelnen Datei
    eingeklappt und öffnet sich ab der zweiten Datei. So steht dem Editor die
    volle Fensterbreite zur Verfügung; ein- und ausblenden lässt sie sich
    weiterhin jederzeit selbst.

Installation

DMG laden, öffnen, Tag Explosion nach /Applications ziehen. App und DMG sind mit
Developer ID signiert und von Apple notarisiert. Bereits installierte Versionen
ab 0.21.0 finden das Update über „Nach Updates suchen …“.