Alle wesentlichen Änderungen an diesem Projekt werden hier dokumentiert. Format basiert auf Keep a Changelog.
Versions-Hinweis (2026-08-17, T-20260816-296785081):
pyproject.tomlsteht auf3.1.0, das für die Store-Submission maßgeblichestore_package.jsonweiterhin auf2.3.0.0— das ist der Stand, mit dem die App im Partner Center freigegeben wurde (Store-ID9NT273Z50BJR, sieheDesktop/STORE-RESUBMIT/MORGENBERICHT_2026-08-14.md). Alle Einträge unten unter „Unreleased" liegen NACH dieser Freigabe und sind damit noch nicht Teil eines Store-Releases. Vor einer neuen Einreichung auf3.1.0.0:store_package.json-Version anheben, frisches MSIX bauen, WACK laufen lassen (siehe offener Punkt „Erhöhter WACK-Paketlauf" inWINDOWS_STORE_PIPELINE.md) — beides bewusst NICHT in diesem Durchgang gemacht, da das eine reale Store-Submission vorbereiten würde.
- Erweiterung der Lokalisierung auf 6 Sprachen (Tier-2 / P-006: DE, EN, ES, ZH, JA, RU):
locales/translations.json: Vollständiger Ausbau aller 105 UI- und Dialogschlüssel auf Deutsch, Englisch, Spanisch, Chinesisch (vereinfacht), Japanisch und Russisch mit 100% Abdeckung (0 fehlende Übersetzungen).translator.py: Upgrade auf Version 2.0.0 mit Unterstützung für 6 Sprachen, erweiterter Systemsprachenerkennung via Windows UI-Language ID (0x07, 0x09, 0x0A, 0x04, 0x11, 0x19) und robuster 4-stufiger Fallback-Kette (aktuelle Sprache -> en -> de -> key).WindowsStorePublisher_3.py: Menü „Sprache / Language“ um Radiobuttons für Deutsch, English, Español, 简体中文, 日本語 und Русский erweitert; Live-UI-Umschaltung und lokalisierte Bestätigungsdialoge.- Staging & i18n Injection Template: Generiertes
translator.pyund Basiskatalog für paketierte Apps auf Tier-2-Mehrsprachigkeit und Fallback-Kette harmonisiert. manage_translations.py: CLI-Scanner aktualisiert zur Validierung aller 6 Zielsprachen.tests/test_i18n.py: Testsuite erweitert auf 6-Sprachen-Parität, Fallback-Ketten und dynamische Menüumschaltung (82 passed, 5 skipped, 100% grün).
- Technische Hygiene & Linter-Standardisierung (Pfad A).
[tool.ruff]und[tool.ruff.lint]-Konfiguration inpyproject.tomlintegriert (line-length = 120,target-version = "py310", E402/E501 ignore). Ungenutzte Imports inlinux_preflight.py,tests/test_bug_regressions.pyundtests/test_wack_and_signing.pybereinigt. Whitespace in eingebetteter Translator-Klasse inWindowsStorePublisher_3.pybehoben.ruff check .undpython -m compileall .passieren zu 100% fehlerfrei. Test-Badges inREADME.mdundREADME_de.mdsowie Verifikationsangaben inllms.txtauf aktuellen Stand synchronisiert (85 Tests: 81 passed, 4 skipped).
- Vollständige zweisprachige GUI-Lokalisierung (Deutsch / English):
- Integration von
TranslationSysteminWindowsStorePublisher_3.pymit_t()-Hilfsfunktion und dynamischer Widget-Registrierung (_register_translatable()). - Neues Menü „Sprache / Language“ zur Laufzeit-Umschaltung zwischen Deutsch und Englisch.
- Automatische Systemsprachenerkennung via
detect_system_language()(Windows UI-Locale & System-Locale) mit Fallback auf Deutsch. - Persistierung der Sprachpräferenz in den Anwendungseinstellungen (
SETTINGS_FILE). - Neues Testmodul
tests/test_i18n.pymit Unit- und Integrations-Tests für Umschaltung und UI-Aktualisierung. - Härtung von
translator.pymitauto_register=FalseStandardmodus zur Vermeidung von Translation-File-Verschmutzung bei unvollständigen Lookups.
- Integration von
- Dogfooding-Testsuite gegen alle 4 Live Store-Apps (
tests/test_dogfood_real_apps.py). Verifiziert die korrekte MSIX- und AppxManifest-Erzeugung gegen die real im Microsoft Store eingereichten Anwendungen (MethodenAnalyser 9PD6GNMCZBLF, SQLite Viewer Pro 9P6H501XB8JT, CleanMarkdown 9MW9QN49WQG2, PromptBoard 9N1FNJL2FHLC). Prüft Identity, Publisher, PublisherDisplayName, Version, Namensraum-Zuweisung von Capabilities (Capabilityvsrescap:Capability), Generierung aller Store-Tile-Icons (44x44, 50x50, 150x150, 310x310, 310x150) und Payload-Staging.
Application/@Idkonnte schema-ungültig werden. Die Id entstand als{{APPNAME}}App, also direkt aus dem Anzeigenamen. Enthielt der ein Leerzeichen oder einen Bindestrich, ergab das Ids wieSQLite Viewer ProApp.ST_ApplicationId(überST_AsciiWindowsId) lässt nur([A-Za-z][A-Za-z0-9]*)(\.[A-Za-z][A-Za-z0-9]*)*mit höchstens 64 Zeichen zu —makeappxweist ein solches Manifest ab, was erst beim Paketbau auffiel. Neue Funktionsanitize_application_id()leitet die Id regelkonform ab. DasApp-Suffix entfällt dabei, weil die bereits eingereichten Pakete (MethodenAnalyser, SQLite Viewer Pro, PromptBoard) durchgängig den bereinigten Namen ohne Suffix als Id führen und Microsoft ausdrücklich davon abrät, die Id nach der Veröffentlichung zu ändern. Gefunden beim Dogfooding gegen die real eingereichten Store-Pakete; Regressionstesttests/test_application_id_schema.py.- Subprozess-Cleanup in
run_screenshots()vor UI-Fehlerdialog vorgezogen. Behebt eine Race Condition im Fehlerpfad, indemproc.terminate()undproc.wait()vollständig ausgeführt werden, bevorself.after()den Fehlerdialog aufruft.
Vier Fehler in der MSIX-Erzeugung, die allesamt still defekte Pakete
erzeugten — sie fallen erst beim Store-Upload oder beim Endnutzer auf. Gefunden
bei der Store-Einreichung von ProfiPrompt und PromptBoard, wo dieselben Muster
im CLI-Zwilling _STORE/store_packager.py auftraten.
- Ordner-Builds verloren ihre Laufzeit. Kopiert wurde nur die gewählte
Datei. Bei PyInstaller-
--onedirliegen Python-Laufzeit und Bibliotheken daneben in_internal/; ohne sie installiert sich die App, startet aber nicht. Neue Methodestage_payload()nimmt in diesem Fall den ganzen Ordner. - Dem Manifest fehlte die
<Resources>-Sektion. Ohne deklarierte Sprache löst der StoreDisplayName,PublisherDisplayNameund die Logos nicht auf und meldet sie als leer bzw. „not found" — obwohl sie im Manifest stehen. Das erzeugt mehrere irreführende Folgefehler. Sprache überDEFAULT_LANGUAGES(Vorgabeen-us) bzw. eine optionalelanguages-Variable. - Eingeschränkte Fähigkeiten standen im falschen Namensraum.
runFullTrustals schlichtes<Capability>lässtmakeappxdas gesamte Manifest ablehnen. Fähigkeiten werden jetzt nach Namensraum getrennt (Capability,uap:Capability,rescap:Capability). - Das Paket packte sich selbst ein. Das MSIX entsteht in dem Verzeichnis, das verpackt wird; beim zweiten Build wanderte das Paket des Vorlaufs hinein und die Größe verdoppelte sich (im CLI-Zwilling gemessen: 46 → 92 MB). Eine vorhandene gleichnamige Datei wird jetzt vor dem Packen entfernt.
- Vier Regressionstests in
tests/test_bugsweep_resweep_20260622.pyzu den obigen Punkten (Sprach-Ressourcen,rescap-Namensraum, Ordner- und Einzeldatei-Staging).
- UX-/Accessibility-Review: Der Changelog-Formatierungsfluss im Store-Tab nutzt jetzt echte deutsche Umlaute (
Format für Store,für Store-Listing) statt der Umschreibungfuer.
- Discoverability, README-Design & SEO Check (Pfad B): Ecosystem (
file-bricks) & Umbrella (open-bricks) Shields.io-Badges inREADME.mdergänzt. llms.txtHeader aufLast-checked: 2026-08-01aktualisiert.- Repository Hygiene Zeitstempel in
README.mdauf 2026-08-01 nachgeführt.
- Frischer Readback von Task 1431: Der fokussierte Profil-/Preflight-/Source-Smoke-/
Release-Contract-Lauf besteht mit 22 Tests; ein optionaler WACK-Test bleibt wegen
des absichtlich nicht versionierten lokalen Protokolls übersprungen. Der SDK-freie
Preflight meldet bei 12 geprüften Artefakten „Keine Befunde“,
compileallist erfolgreich. - Die Vollsuite besteht aktuell mit 62 Tests und 4 erwartbaren lokalen Skips (MSIX-,
Store-Dogfood- und WACK-Artefakte).
web_companion/ist nicht vorhanden; Commit05705f9hat ihn entfernt und es gibt keinen autorisierten Web-Client. Es wurde kein Ersatz-Client angelegt; Task 1431 bleibt offen.
- Readback für Task 1431 gegen den aktuellen lokalen Checkout: Der fokussierte
Profil-/Preflight-/Source-Smoke-/Release-Contract-Lauf besteht mit 22 Tests;
ein Test wird ausschließlich wegen des absichtlich nicht versionierten lokalen
WACK-Protokolls übersprungen.
python unix_preflight.py --project-root . --profile-path winstorepackager-project-v1.jsonmeldet weiterhin „Keine Befunde“ bei 12 geprüften Artefakten; der Compile-Check war erfolgreich. - Der vollständige lokale Lauf besteht mit 58 Tests und überspringt 8 Tests wegen
fehlender lokaler Store-/MSIX-Artefakte, des fehlenden WACK-Protokolls und des
nicht verfügbaren Tk-Displays. Der Checkout ist sauber; es gibt keine
LOCK*-Datei. - Der direkte Desktop↔Web-Import/Export-Test bleibt unprüfbar:
web_companion/ist in diesem Checkout nicht vorhanden und wurde mit Commit05705f9entfernt; ein autorisierter Web-Client existiert nicht. Es wurde kein Ersatz-Client erfunden oder angelegt; Task 1431 bleibt offen.
- Der aktuelle Projektprofilvertrag wurde erneut gegen den Desktop-/SDK-freien Pfad gelesen: 19 fokussierte Profil-/Preflight-/Source-Smoke-Tests bestanden, ein optionaler WACK-Test mangels lokalem Protokoll übersprungen.
- Der vollständige lokale Lauf besteht mit 60 Tests; sechs Tests bleiben wegen
bewusst lokaler Store-/WACK-Artefakte bzw. fehlendem Tk-Display übersprungen.
python unix_preflight.py --project-root . --profile-path winstorepackager-project-v1.jsonmeldet „Keine Befunde“ und 12 geprüfte Artefakte. - Der direkte Desktop↔Web-Import/Export-Test bleibt offen:
web_companion/wurde in Commit05705f9entfernt und im aktuellen Checkout existiert kein autorisierter Web-Client. Es wurde kein Ersatz-Client erfunden oder angelegt; Task 1431 bleibt offen.
- Der Profilvertrag wird jetzt mit einem vollständigen
write -> read -> serialize-Roundtrip getestet. Windows-Laufwerkspfade aus exportierten Profilen bleiben beim Import auf POSIX-Systemen opaque, statt fälschlich unter dem Profilverzeichnis rebased zu werden. unix_preflight.pyist nativ und in WSL Ubuntu mit dem Self-Dogfood-Profil fehler- und warnungsfrei gelaufen; der Linux-Kompatibilitätswrapper meldet ebenfallsok: true. Der WSL-Compile-Check war erfolgreich.- Der lokale Pytest-Lauf bestand mit 59 Tests; 7 Tests wurden wegen fehlender
lokaler Store-/MSIX-/WACK-/Tk-Artefakte übersprungen. Der frühere
web_companion/ist seit05705f9entfernt; die Profildokumentation macht diesen aktuellen Desktop-/Offline-Scope nun ausdrücklich sichtbar.
- Der lokale Pytest-Lauf bestand mit 59 Tests und übersprang 4 Tests wegen
fehlender lokaler Store-/MSIX-/WACK-Artefakte.
unix_preflight.pyfand über 12 Artefakte keine Befunde; der deprecated Linux-Wrapper über 11 ebenfalls. - Ruff meldet 18 bestehende Befunde; im MAINTAINER-Lauf wurde kein Code geändert.
- Lokaler Pytest-Lauf: 55 Tests bestanden, 8 wegen absichtlich lokaler Store-/WACK-
Artefaktgrenzen und fehlender Tk-Dateien übersprungen.
unix_preflight.pyfand über 12 Artefakte keine Befunde; der deprecated Linux-Wrapper über 11 ebenfalls.
- Discoverability, README-Design & SEO Audit (Pfad B):
llms.txtHeader aufLast-checked: 2026-07-30und Testsuite-Status (56 passed, 7 skipped) aktualisiert. README.md&README_de.mdBadges und Sichtbarkeits-Timestamps auf 2026-07-30 synchronisiert; bilinguale Badge-Reihe inREADME_de.mdzur optischen Nutzerführung ergänzt.
- TASKPLAN #890 / TW-WSP-03: Runtime-Dependency-Checks installieren keine Pakete mehr beim GUI-Start. Der standardbibliotheksbasierte Release-Contract prüft Requirements, Lizenzprovenienz, Store-Claims, Projektprofil und Store-Metadaten reproduzierbar; die öffentliche Store-Version folgt jetzt
pyproject.toml(3.1.0.0).
TW-WSP-02: Maschinenspezifische Einstellungen und rotierende UTF-8-Laufzeitlogs liegen nun außerhalb des Quell-Checkouts in den nativen Host-Datenpfaden. Gültige altesettings_store_packager.json-Dateien werden atomar und ohne Überschreiben bestehender Runtime-Einstellungen migriert; Zertifikatspasswörter bleiben ausschließlich im Keyring.
- Veraltete Verweise auf den entfernten
web_companion/ausREADME.mdundllms.txtentfernt; die öffentliche Dokumentation beschreibt nur die vorhandenen Desktop- und SDK-freien Preflight-Workflows. - Regressionstest ergänzt, damit öffentliche Einstiegsdokumente nicht erneut auf den entfernten lokalen Web-Helfer verweisen.
- CI überspringt absichtlich nicht versionierte WACK-Protokolle und Tkinter-UI-Tests ohne verfügbares Display, statt dadurch die plattformübergreifende Quellprüfung fälschlich fehlschlagen zu lassen.
- Technische Hygiene & Doku-Wartung:
llms.txtHeader aufLast-checked: 2026-07-26und Testsuite-Status (33 Tests) aktualisiert. README.mdundREADME_de.mdaktualisiert: Shields.io Badges, GFM LLM Integrations-Hinweis (> [!NOTE]) & Mermaid Architektur-/Paketierungs-Pipeline Diagramm eingebunden.
- Standardisiertes PEP 621
pyproject.tomlmit Paket-Metadaten und Pytest-Konfiguration (pythonpath = ["."]) angelegt. - GitHub Actions CI-Workflow (
.github/workflows/ci.yml) für Python 3.10–3.12 auf Windows & Linux hinzugefügt. - Testsuite-Resilienz in
tests/test_store_dogfood_readiness.pyundtests/test_threading_bugs.pygehärtet (30 passed, 3 skipped). - README.md und README_de.md aktualisiert (Shields.io Badges, GFM LLM Integrations-Hinweis
> [!NOTE]hinzugefügt, veraltete web_companion-Referenzen bereinigt). llms.txtHeader aufLast-checked: 2026-07-25aktualisiert, veraltete web_companion-Dateireferenzen entfernt, Testsuite-Verifikation (33 Tests) ergänzt.
tests/test_windows_source_smoke.pyund Windows-Matrix-Ziel in.github/workflows/source-platform-smoke.ymlfür Windows-Source-Smoke CI-Parität ergänzt (TASKPLAN #894 / TW-WSP-07).winstorepackager-project-v1.jsonals eigenes Self-Dogfooding-Profil ergänzt; es enthält Store-Metadaten, Projektpfade und Listing-Kontext ohne Publisher-DN, SDK-Pfade oder Zertifikatsdaten.tests/test_self_dogfood_profile.pyvalidiert das eigene Projektprofil gegenstore_package.json, prüft sensible Felder und führt den SDK-freien Preflight mit dem Profil aus.generate_store_screenshots.pyerzeugt ein kuratiertes Microsoft-Store-Screenshot-Set mit vier 1920x1080-PNGs ohne Publisher-, Zertifikats- oder Privatpfad-Daten.tests/test_store_screenshots.pyprüft Dateinamen, PNG-Format, Abmessungen und Nicht-Leerheit des generierten Store-Screenshot-Sets.unix_preflight.pyergänzt: SDK-freier Unix-Preflight (für Linux und macOS) prüft Projektstruktur,store_package.json, README, Privacy Policy, Store-Listing, Screenshot-/Icon-Artefakte und optional exportierte Projektprofile.tests/test_unix_preflight.pydeckt gültige Unix-Preflights, fehlende Artefakte, Drift zwischen Projektprofil und Store-Metadaten sowie den Abwärtskompatibilitäts-Wrapper ab.llms.txtals maschinenlesbarer Projektkontext für Crawler, LLMs und Repo-Navigation ergänzt.PORTIERUNGSPLAN.mdergänzt: Windows Store bleibt Hauptkanal,web_companion/bleibt lokaler Hilfsweg für Projektprofile; Android/iOS sind Nicht-Ziele, macOS/Linux bleiben SDK-freier Preflight.- Projektaufgaben um P0-P3-Portierungsschritte für Dogfooding, Austauschformat
winstorepackager-project-v1.json, lokalen Helper-Scope und Preflight ergänzt. PROJECT_PROFILE_FORMAT.mddokumentiert jetzt das gemeinsame Austauschformatwinstorepackager-project-v1.json.- Desktop-App kann Projektprofile jetzt sicher importieren und exportieren, ohne Publisher-ID, SDK-Pfade oder Zertifikatsdaten mitzuschreiben.
web_companion/als lokaler Projektprofil-Helfer für Manifest-Vorschau, Icon-Check und JSON-Import/Export ergänzt.web_companion/hat jetzt eine optionale installierbare Offline-Hülle:service-worker.js,offline.html,icon.svgundserve_companion.pyergänzen lokalen Cache, Install-Flow und localhost-Start für denselben lokalen Helper.tests/test_project_profile.pydeckt Profil-Serialisierung und Pfadauflösung ab.- Repo-Hygiene-Check vom 2026-05-17 in README und Projektlog dokumentiert.
.gitattributesergänzt, damit Text- und Binärdateien konsistent behandelt werden.- README bindet jetzt den vorhandenen GUI-Screenshot aus
README/screenshots/main.pngdirekt ein. - Lokales EXE-Bundle wird in
releases/v2.3.0/aus dem aktuellendist/WinStorePackager.exegepflegt. RELEASES.mddokumentiert den lokalen Release-Artefakt-Workflow.
- README und README_de dokumentieren den Self-Dogfooding-Einstieg über
winstorepackager-project-v1.json. .gitignoreerlaubt nur die kuratierten Demo-Store-Screenshots unterreleases/windowsstore/screenshots/*.png; andere Release-, Paket-, Signier- und WACK-Artefakte bleiben ignoriert.- README.md verlinkt jetzt die neue deutsche README_de.md; README_de.md ergänzt eine deutschsprachige Nutzerführung für Microsoft-Store-/MSIX-Vorbereitung.
llms.txtverweist auf README_de.md und trägtLast-checked: 2026-06-12.PORTIERUNGSPLAN.md,AUFGABEN.txtund README führen den Linux- und macOS-Preflight jetzt als erledigte P3-Desktop-Schritte; der macOS-Preflight wurde mit dem Linux-Preflight inunix_preflight.pyzusammengeführt (mitlinux_preflight.pyals Abwärtskompatibilitäts-Wrapper).- README-Einstieg, Suchphrasen und Discoverability-Kontext für Python-Microsoft-Store-/MSIX-Packaging geschärft.
- Deutsche Endnutzertexte nutzen echte Umlaute statt Umschreibungen.
.gitignoredeckt zusätzliche Store-, Signier- und WACK-Artefakte ab.START.batbevorzugt jetzt die lokal gebautedist\WinStorePackager.exe;build_exe.batundWinStorePackager.specdokumentieren den reproduzierbaren lokalen PyInstaller-Build.- Lokale Release-Artefakte werden inklusive Source-ZIP und SHA256-Datei versioniert abgelegt.
- README, SECURITY und CONTRIBUTING verweisen jetzt auf
file-bricks/WinStorePackager. START.batsetzt UTF-8 und nutzt bevorzugtpy -3.
web_companion: Icon-Uploads werden für die Vorschau nur noch als PNG/JPG/WebP akzeptiert und übercreateImageBitmapplus Canvas gerendert, statt einen Datei-Object-URL direkt animg.srczu übergeben.- Projektprofil-Export bricht bei absoluten Pfaden auf unterschiedlichen Windows-Laufwerken nicht mehr mit
ValueErrorab; in diesem Fall bleiben die Pfade bewusst absolut. .gitignoreist wieder UTF-8 ohne BOM und entfernt interne Planungsdateien aus dem öffentlichen Git-Tracking.- Persönliche Kontaktadresse aus dem Code of Conduct entfernt.
_WARTUNG/und lokale Build-/Staging-Artefakte werden nicht mehr im Git-Index geführt.web_companion: 6 PWA-Bugs behoben —exportProfilehängt Link vor Click in den DOM ein und entfernt ihn danach (iOS-Safari/Firefox-Kompatibilität),persistToStoragefängtlocalStorage.setItem-Fehler im Safari-Private-Mode ab,installAppnulltdeferredInstallPromptvorprompt()(Doppel-Trigger verhindert),service-worker.jsschließt alle 4 Icons inAPP_SHELLein,apple-touch-iconzeigt aufIcon-192.png(non-maskable),manifest.webmanifestsetztpurpose: anyfür nicht-maskierbare Icons; 13/13 Regressionstests grün.unix_preflight._validate_store_package: Fehlendes oder leeresexecutable-Feld wurde fälschlicherweise als „muss auf.exeenden" gemeldet statt als „fehlt"; Prüfung konsistent mit den anderen Pflichtfeldern gemacht (leeres Feld → „fehlt", nicht-leeres ohne .exe → „muss auf .exe enden").
test_project_profile.pynutzt für den relativen Projektpfad-Test jetzt einen plattformneutralen temporären Projektroot, damit derselbe Test unter Windows, Linux und macOS gültig ist.source-platform-smokesetzt jetztPYTHONPATHauf das Repo-Root, damit die Root-Modulelinux_preflight.pyundproject_profile.pyauf Ubuntu- und macOS-Runnern importierbar sind.source-platform-smokeWorkflow ergänzt: führttest_unix_preflight.pyundtest_project_profile.py(8 Tests, stdlib-only) aufubuntu-latestundmacos-latestmit Python 3.11 aus und validiert so die SDK-freie Unix-Projektstruktur und Profil-Roundtrips.
Datum rekonstruiert aus dem lokalen Plan-D-Klon (
git log --reverse, Commit „Initial release v1.0.0", 2026-08-17) — der frühere Eintrag trug den unausgefüllten PlatzhalterYYYY-MM-DD.
- Erstveröffentlichung / Initial release