Repository navigation
Tag Explosion 0.23.15
·
188 commits
to main
since this release
[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.swiftist 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
\udcfcbleibt 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=-1setzt 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 setnennt 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. 33EbookTool-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
AppModelwurde 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.ratingist seit 0.22.2Int?stattInt:nilheißt
„die Datei trägt kein Rating-Tag“, −1 ist der echte Wert „abgelehnt“.
Aufrufer, dieratingalsIntlesen oder-1als 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 nutztsniffXML(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 vergebene
Prozessnummer — also einen fremden Prozess — treffen.