Alle wesentlichen Änderungen an diesem Projekt werden hier dokumentiert. Format basiert auf Keep a Changelog.
- Erster Design-Refresh-Slice für die Desktop-Oberfläche:
DokuReader.pyrendert jetzt einen klareren Kopfbereich mit Untertitel, ein ruhigeres Farbsystem, konsistentere Karten-/Toolbar-Stile sowie aufgeräumtere Such-, Themen-, Dokument- und Exportflächen, ohne das bestehende Bedienmodell zu ändern. - Windows-Store-Readiness-Gate
_WARTUNG/check_store_readiness.pyergänzt. Es prüft Store-Metadaten, öffentliche Privacy-/Support-URLs, Pflichtdokumente, Store-Assets, Screenshots, EXE, MSIX, WACK-Runner und geparste WACK-JSON-Zusammenfassungen und kann erwartete externe Store-Blocker per--allow-blockerstransparent ausgeben. - WACK-Runner
_WARTUNG/run_windows_wack.pyergänzt. Er bietet Dry-Run-Pfade, kontrollierteappcert.exe-Ausführung, Admin-/Tool-Blocker und--parse-reportfür XML-zu-JSON-Zusammenfassungen. - Desktop-Dokumentliste hat jetzt einen sichtbaren Einstieg
Aktionen…fürAls gelesen markieren,Gelesen-Markierung entfernenundAus Bibliothek entfernen. Derselbe Menüpfad ist zusätzlich perShift+F10und Kontextmenü-Taste tastaturfreundlich erreichbar.
- Der Bereich
Sammel-PDFspiegelt seine Verfügbarkeit jetzt direkt im UI: Ohne aktuelles Thema oder ohne passende Dokumente bleibt die Exportaktion deaktiviert und erklärt den Zustand mit einer kurzen Statuszeile, statt erst nach dem Klick einen Hinweisdialog zu zeigen. - Regressionstest für den macOS-/Linux-Dateiöffner prüft jetzt die kanonische
DokuReader.pystatt einer privaten Workstation-Kopie, damit die öffentliche Testsuite ohne lokale Zusatzdateien lauffähig bleibt. - BUG-D4:
_split_dnd_paths—{in Dateinamen (z.B.bericht{2026}.txt) wurde fälschlicherweise als DnD-Klammer-Öffner gewertet; alles davor Akkumulierte ging verloren. Fix:{wird nur als DnD-Trennzeichen gewertet, wenn der aktuelle Token noch leer ist. - BUG-D5:
_split_dnd_paths—}ohne vorherige öffnende Klammer spaltete den Token in zwei Teile. Fix:}schließt nur dann eine Klammer, wennin_brace=True. - BUG-W1 (web_companion):
sw.jsfetch-Handler hatte keinen.catch()-Fallback — bei Netzwerkfehler warf der Service Worker unbehandelt, statt eine 503-Antwort zu liefern. Fix:.catch()gibtnew Response("Offline", { status: 503 })zurück; CACHE-Version aufv5gebumpt. manage_translations.py: Fehler beim Lesen vontranslations.json(korrupte Datei / OS-Fehler) wurde nicht abgefangen —json.JSONDecodeErrorundOSErrorwerden jetzt behandelt; Fallback auf leeres Dict.
State.save(): JSON-Serialisierung (json.dumps) läuft jetzt vollständig innerhalb des_lock, so dass kein anderer Threadself.topicsmutieren kann, während der State geschrieben wird.State.rename_topic(old, new)undState.remove_topic(topic)als neue atomare, Lock-geschützte Methoden hinzugefügt.App.rename_topic()undApp.delete_topic()nutzen diese Methoden statt direkterdict-Mutation aufstate_model.topics.
- Lesestatus-Toggle + Export (PORTIERUNGSPLAN Schritt 2):
library.js:setRead(library, path, value)schaltet den Gelesen-Status eines Dokuments anhand seines Pfads um (Pfad als stabiler Join-Key zum Desktop-Export).library.js:serializeLibrary(library)serialisiert eine geparste Library zurück insdokureader-library-v1JSON-Format (Feldnamen-Rückmapping:sizeBytes→size_bytesetc.). Das Desktop-Format wird ohne neue Schema-Version wiederverwendet — der Desktop kann es direkt reimportieren.app.js: Dok-Karten sind jetzt klickbar und per Tastatur (Enter/Space) bedienbar; Klick schaltet Gelesen/Ungelesen um und re-rendert die Karte sofort.app.js: Schaltfläche „Status exportieren" erscheint nach dem Laden einer Bibliothek; löst einen Browser-Download vondokureader-library-v1.jsonmit aktuellem Lesestatus aus.app.js:innerHTMLinrenderDocs/renderTopicsdurchreplaceChildren()undtextContent-basierte DOM-Methoden ersetzt (kein XSS-Risiko durch statische Strings mehr).style.css:cursor: pointerund:hover/:focus-visible-Border-Hervorhebung für Dok-Karten.index.html: Schaltfläche#export-btn(initialhidden, wird nach Bibliotheksladung eingeblendet).
- 16 neue Regressions- und Härtungstests für Desktop (Gesamt: 24 Python-Tests grün).
TestD4SplitDndOeffnendeKlammer: 3 Tests für BUG-D4TestD5SplitDndSchliessendekKlammer: 2 Tests für BUG-D5TestThreadSafetyHaertung: 6 Vertragstests fürrename_topic,remove_topic,save()
- GUI-Regression erweitert:
tests/test_ui_accessibility.pyprüft jetzt zusätzlich den sichtbarenAktionen…-Button und den Tastaturzugang zum Dokument-Kontextmenü. tests/test_ui_accessibility.pydeckt jetzt auch den direkt erklärten Verfügbarkeitszustand des Sammel-PDF-Exports für leere, passende und filterleere Themen ab.- 1 neuer Regressionstest (web_companion):
BUG-W1 regression: sw.js fetch hat .catch() für Offline-Fallback. - 7 neue Tests (web_companion) für
setReadundserializeLibrary(Round-Trip-Verifikation):setReadtoggle/false-return,serializeLibraryFeldmapping, Round-Trip, Status-Erhalt. (Gesamt web_companion: 32 Node-Tests grün).
- README und README_de um Workflow-Fit und Abgrenzung innerhalb der doc-bricks-Familie ergänzt;
llms.txtauf den Sichtbarkeitscheck vom 2026-07-10 mit aktuellen Suchphrasen und External-Discovery-Notes synchronisiert. - README, README_de und
llms.txtum Einstiegstabelle, Suchphrasen, Zielgruppen und Abgrenzung für bessere GitHub-/Web-Auffindbarkeit ergänzt.
- PDF-Merge von
PdfMergeraufPdfWritermigriert (pypdf 4.x/5.x-kompatibel).PdfMergerwurde in pypdf 4.0.0 entfernt. Versions-Pinpypdf<4.0.0aufgehoben →pypdf>=4.0.0. - Suchleiste im Desktop-Fenster für kompakte, aber klarere Bedienung nachgeschärft: statt eines uneindeutigen
×-Symbols gibt es jetzt die beschriftete SchaltflächeLeeren, die nur bei aktiver Suche aktiv ist;Escleert die Suche direkt aus dem Suchfeld.
- EXE neu gebaut 2026-06-01 (PyInstaller,
DokuReader.spec→C:\_Local_DEV\codex_build\dokureader); 5/5 Tests grün, Smoke-Test bestanden. Vorherige EXE: 2026-05-22, Anlass: DokuReader.py 2026-05-26.
- GitHub Actions CI-Workflow
source-platform-smoke.yml: führttests/source_platform_smoke.pyaufubuntu-latest(mit Xvfb) undmacos-latestbei jedem Push/PR auf main aus. - GUI-Regressionstest
tests/test_ui_accessibility.pyfür die Suchleiste: prüft die beschrifteteLeeren-Schaltfläche, den deaktivierten Leerzustand und das Tastatur-Zurücksetzen perEsc.
- Windows-App-Icon und PyInstaller-Spec für lokale Windows-Builds.
PORTIERUNGSPLAN.mdmit Plattformentscheidung für Windows Store, macOS/Linux-Smokes und Web/PWA-Companion auf Basis vondokureader-library-v1.json.EXPORTFORMAT.mdfür das stabile Austauschformatdokureader-library-v1.json.- GUI-Export
Bibliothek (JSON)für Themen, Dokumentpfade, Dateimetadaten und Lesestatus ohne Dokumentinhalte. - Windows-Store-Unterlagen mit
STORE_LISTING.md,PRIVACY_POLICY.md,SUPPORT.mdundstore_package.json; Screenshots werden lokal unter dem ungetracktenreleases/windowsstore/erzeugt. - Reproduzierbare Store-Medien via
_WARTUNG/generate_store_media.pyfür Screenshots und Basis-Store-Assets. tests/source_platform_smoke.pyals reproduzierbarer macOS/Linux-Desktop-Smoke für Start, Dateiaufruf, Vorschau, LibreOffice-Fallback und Sammel-PDF.README_de.mdals deutsche Root-Dokumentation undllms.txtals maschinenlesbarer Projektkontext.web_companion/package.json,web_companion/README.mdundweb_companion/tests/pwa_mobile_smoke.test.mjsfür einen reproduzierbaren Android-/iOS-nahen PWA-Smoke.- Mobile PWA-Icons und Manifest-Metadaten für installierbare Add-to-Home-Screen-Läufe.
- README um die Plattformstrategie und den Verweis auf den Portierungsplan ergänzt.
- README um den JSON-Export und die Exportformat-Dokumentation ergänzt.
- README auf English-first GitHub-Dokumentation ausgerichtet; die deutsche Fassung bleibt separat erhalten.
PORTIERUNGSPLAN.mdauf den neuen Store-Readiness-Stand synchronisiert.- README und README_de dokumentieren jetzt den neuen Desktop-Source-Smoke für macOS/Linux.
web_companion/index.html,manifest.webmanifest,style.cssundsw.jsfür mobile Safe-Areas, PWA-Install-Metadaten und Offline-Shell-Caching nachgezogen.- Öffentliche README-Verweise auf den lokal gehaltenen, nicht getrackten Portierungsplan entfernt.
- Windows-Build über
build_exe.batauf lokalen Arbeitsordner außerhalb von OneDrive umgestellt;START.batstartet bevorzugt die gebaute EXE mit Python-Fallback. - README-Screenshotpfad auf
README/screenshots/main.pngvereinheitlicht. - README um Encoding-Fallback und Drittanbieter-Lizenzübersicht ergänzt.
.gitignoreum lokale Build-Artefakte, Secrets und interne Steuerungsdateien erweitert..gitattributesfür stabile Zeilenenden und Binärdateien ergänzt.- README, Security Policy und Beitragsrichtlinie auf aktuellen Repository-Hygiene-Stand gebracht.
- Welcome-Workflow um Hinweis auf nicht öffentliche Sicherheits- und Privatdaten ergänzt.
- Text-Fallback für Vorschau und TXT->PDF-Export korrigiert, damit Latin-1-Dateien nicht als Ersatzzeichen angezeigt werden.
- Veraltete Beitrags- und Startanweisungen in
CONTRIBUTING.mdkorrigiert. - Direkte Kontakt-E-Mail aus dem Code of Conduct entfernt; GitHub-Kanäle werden genutzt.
- Fehlende Store-Beschreibung, Screenshot-Basis und AGPL-/PyMuPDF-Hinweise für den geplanten kostenlosen Windows-Store-Release ergänzt.
- Erstveröffentlichung / Initial release