diff --git a/CHANGELOG.md b/CHANGELOG.md index dba838c..c5bf01d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project are documented here. ## [Unreleased] +### Discoverability, UI Architecture Vector Preview & Re-Audit (Pfad B, 2026-11-01) +- Designed and embedded high-fidelity vector architecture preview `assets/ui-architecture-preview.svg` in Section 6 (`README.md` and `README_de.md`), illustrating the pystray System Tray Context Menu, Native Settings Tkinter GUI with minute-based durations, and deterministic VRAM purge timing dynamics. +- Synchronized Shields.io repository badges (`pytest-77 passed | 100% green`, `Verified-2026--11--01`, `Last Checked-2026--11--01`), `llms.txt`, and local `MARKETING-LOG.txt`. +- Re-audited Level 1 SBOM in `THIRD_PARTY_LICENSES.md` and plain-text companion `THIRD_PARTY_LICENSES.txt` (Stand 2026-11-01), confirming all 10 invariants (`INV-LOCAL-01`..`INV-SLA-10`), `RunAsInvoker` non-elevation, and 48h Security SLA. +- Expanded automated contract test suite in `tests/test_metadata.py` with new contract tests verifying UI preview vector asset presence and Section 6 bilingual markdown links, plus 2026-11-01 audit recency. +- Strictly preserved frozen version `0.2.3` per `T-20260920-167562623`. + ### Discoverability, UI Wireframe Architecture, Tray State Reference & Re-Audit (Pfad B, 2026-10-30) - Integrated high-fidelity ASCII Cockpit Wireframe of the System Tray Context Menu in Section 6 (`README.md` and `README_de.md`) illustrating real-time states, provider status, minute-countdown, and fail-closed actions (`Play`, `Pause`, `Stop / Aus`, `Settings`, `Exit`). - Embedded Native Settings GUI Layout Blueprint in Section 6 visualizing the Tkinter dialog: global duration inputs (inter-app gap, cycle pause, cumulative runtime budget, dry-run toggle), provider rotation table with activation toggles, ordering controls (`Move Up`/`Move Down`), custom provider creation, and delegation contracts. diff --git a/MARKETING-LOG.txt b/MARKETING-LOG.txt index 413845b..13d61a3 100644 --- a/MARKETING-LOG.txt +++ b/MARKETING-LOG.txt @@ -4,6 +4,46 @@ Dieses Register dokumentiert Discoverability-, Marketing-, Visual-Design- und Ö --- +## [2026-11-01] — Pfad B: UI Architecture Vector Preview, Real-Time Tray & Settings Visualisation & 2026-11-01 Re-Audit + +- **Akteur:** Antigravity / Gemini (`WORKSTATION-LG`) +- **Version:** `0.2.3` (Version gemäß T-20260920-167562623 strikt eingefroren) +- **Typ:** `GITHUBBOT_ONE_REPO_MARKETING_AND_DESIGN` (Pfad B) +- **Repo:** `dev-bricks/app-rotator` (`C:\_Local_DEV\repos\app-rotator`, Branch `master`, Remote `https://github.com/dev-bricks/app-rotator.git`) +- **Auswahlgrund:** Pfad B Discoverability- und Re-Audit-Turnus der Flotte, Arbeitsbaum 100% sauber, 0 offene Pull Requests, 0 aktive Locks, strikte Lock-Freigabe bestätigt via `lock_status.py` (UNLOCKED). + +### Durchgeführte Maßnahmen: + +1. **Vektorgrafische UI-Architektur-Visualisierung (`assets/ui-architecture-preview.svg`):** + - Eigenständige, hochauflösende Vektorgrafik (`assets/ui-architecture-preview.svg`) erstellt und in Abschnitt 6 (`README.md` und `README_de.md`) eingebettet. + - Darstellung der pystray System-Tray-Menüstruktur (Aktive Anwendung, Countdown, Zykluszähler, Aktionsbefehle `Play`, `Pause`, `Stop`, `Settings`). + - Visualisierung des nativen Tkinter-Einstellungsdialogs (Minuten-basierte Eingaben für Inter-App Gap, Cycle Pause, Overall Budget sowie Provider-Warteschlange). + - Veranschaulichung der deterministischen Phasenübergänge und VRAM-Purge-Dynamik (`VRAM in use -> 0 GB Purge`). + +2. **Dokumentation, Badges & RAG-Kontext:** + - Shields.io-Badges in beiden READMEs synchronisiert (`pytest-77 passed | 100% green`, `Verified-2026--11--01`, `Last Checked-2026--11--01`). + - `llms.txt` Stand 2026-11-01 mit UI-Architektur-Referenz und aktualisierter Testbasis (77 passed) synchronisiert. + - `CHANGELOG.md` unter `## [Unreleased]` um Pfad-B-Verbesserungen erweitert. + +3. **Level 1 SBOM Re-Audit & Begleitdokument-Aktualisierung (Stand 2026-11-01):** + - Re-Audit von `THIRD_PARTY_LICENSES.md` und plain-text Companion `THIRD_PARTY_LICENSES.txt` Stand 2026-11-01. + - Bestätigung aller 10 Invarianten `INV-LOCAL-01`..`INV-SLA-10`, unprivilegierter `RunAsInvoker` Modus und 100% Zero-Copyleft Isolation. + +4. **Vertragstest-Erweiterung (`tests/test_metadata.py`):** + - 2 neue Vertragstests implementiert für UI-Vektorgrafik-Asset-Präsenz, bilinguale Verlinkung in Abschnitt 6 und Marketing-Log-Recency 2026-11-01. + +### Nicht-automatisierbare Handlungsempfehlungen / Zukunfts-Roadmap: + +1. **REC-20261101-01: Windows Notification Area (System Tray) Auto-Promotion Guidance** + - *Problem:* Unter Windows 11 platziert der Explorer neu gestartete Tray-Anwendungen standardmäßig in das Überlauf-Menü (Pfeil nach oben `^`), sodass Nutzer das Farb-Icon nicht sofort sehen, sofern sie es nicht manuell in die Taskleiste ziehen. + - *Empfehlung:* Ergänzung einer kurzen Dokumentations-Notiz in Abschnitt 6 mit animiertem GIF/Tipp, wie Nutzer in Windows 11 unter *Einstellungen > Personalisierung > Taskleiste > Andere Taskleistensymbole* App Rotator dauerhaft auf "Ein" schalten. + +2. **REC-20261101-02: Automatische App-Konfigurationserkennung für gängige LLM-Tools** + - *Problem:* Neue Anwender müssen Pfade zu installierten Desktop-Clients (`Claude.exe`, `ChatGPT.exe`, `Antigravity.exe`) in den Einstellungen überprüfen. + - *Empfehlung:* Ein lokaler "Auto-Detect"-Button im Tkinter-Settings-Dialog, der die bekannten Standard-AUMIDs und `%LOCALAPPDATA%\Programs\`-Verzeichnisse prüft und existierende Clients automatisch mit Häkchen versieht. + +--- + ## [2026-10-30] — Pfad B: System Tray & Settings UI Wireframe Blueprints, State Indicator Matrix, Timing Lifecycles & 2026-10-30 Re-Audit - **Akteur:** Antigravity / Gemini (`WORKSTATION-LG`) diff --git a/README.md b/README.md index a275c3d..f2c34ce 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@

CI Version 0.2.3 - Pytest Passing + Pytest Passing Python Versions Platform: Windows License: MIT @@ -32,8 +32,8 @@ Org: dev-bricks Umbrella: open-bricks LLM Context - Verified Date - Last Checked + Verified Date + Last Checked

--- @@ -283,6 +283,10 @@ The desktop user interface is designed for zero intrusion and native responsiven - **Minute-Based Inputs**: All user-facing durations (provider runtime, inter-app gaps, cycle pauses, overall runtime, and reactivation intervals) are entered and displayed in **minutes** for human convenience. Internally, the engine computes and stores exact seconds. - **Provider Management**: Dedicated checkboxes (*Enabled / in rotation*) permit temporarily disabling specific providers without deleting their configuration. Built-in providers (Codex, Claude, Antigravity) cannot be accidentally deleted and can be reordered seamlessly. +

+ App Rotator System Tray & Native Settings UI Architecture +

+ ### System Tray Context Menu Wireframe ```text diff --git a/README_de.md b/README_de.md index 3bf9172..09515e8 100644 --- a/README_de.md +++ b/README_de.md @@ -18,7 +18,7 @@

CI Version 0.2.3 - Pytest Passing + Pytest Passing Python-Versionen Plattform: Windows Lizenz: MIT @@ -32,8 +32,8 @@ Org: dev-bricks Dachverband: open-bricks LLM-Kontext - Verifikationsdatum - Zuletzt geprüft + Verifikationsdatum + Zuletzt geprüft

--- @@ -283,6 +283,10 @@ Die Benutzeroberfläche arbeitet verzögerungsfrei und fügt sich nahtlos in Win - **Minuten-basierte Eingaben**: Alle Zeiträume (Laufzeiten der Apps, Zwischenpausen, Zykluspause, Gesamtlaufzeit, Reaktivierungsabstände) werden für den Nutzer intuitiv in **Minuten** gepflegt und angezeigt. Intern rechnet die Engine sekundengenau. - **Provider-Verwaltung**: Eigene Checkboxen (*Aktiv / in Rotation*) erlauben das temporäre Deaktivieren einzelner Anwendungen, ohne deren Pfadeinstellungen zu löschen. Die Standard-Apps können nicht versehentlich gelöscht und flexibel sortiert werden. +

+ App Rotator System-Tray & Native Einstellungs-UI Architektur +

+ ### System-Tray-Kontextmenü Wireframe ```text diff --git a/THIRD_PARTY_LICENSES.md b/THIRD_PARTY_LICENSES.md index 66f9b5d..a4eda5f 100644 --- a/THIRD_PARTY_LICENSES.md +++ b/THIRD_PARTY_LICENSES.md @@ -3,7 +3,7 @@ - **Project:** `App Rotator` (`dev-bricks/app-rotator`) - **License:** [MIT License](LICENSE) - **Version:** `0.2.3` -- **Audit Date:** 2026-10-30 +- **Audit Date:** 2026-11-01 - **Organization:** [dev-bricks](https://github.com/dev-bricks) - **Umbrella Ecosystem:** [open-bricks](https://github.com/open-bricks) - **Security & Non-Elevation:** Non-elevation user-mode (`RunAsInvoker`) under `%LOCALAPPDATA%` diff --git a/THIRD_PARTY_LICENSES.txt b/THIRD_PARTY_LICENSES.txt index fd61d8e..261263e 100644 --- a/THIRD_PARTY_LICENSES.txt +++ b/THIRD_PARTY_LICENSES.txt @@ -3,7 +3,7 @@ THIRD-PARTY SOFTWARE LICENSES & TRANSPARENCY NOTICE (LEVEL 1 SBOM) Project: App Rotator (app-rotator) Organization: dev-bricks (Ecosystem: open-bricks) Canonical Repository: https://github.com/dev-bricks/app-rotator -Audit Date: 2026-10-30 +Audit Date: 2026-11-01 Primary License: MIT (see LICENSE) Attribution: NOTICE Level 1 SBOM Plain-Text Companion: THIRD_PARTY_LICENSES.txt diff --git a/assets/ui-architecture-preview.svg b/assets/ui-architecture-preview.svg new file mode 100644 index 0000000..99dae22 --- /dev/null +++ b/assets/ui-architecture-preview.svg @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + App Rotator — System Tray & Native Settings Architecture + Fail-Closed Windows Desktop Time-Slicing & VRAM Purge Controls + + v0.2.3 • RunAsInvoker + + + + + + + + + + + pystray System Tray Context Menu + + + + + + + App Rotator (Running) + Cycle #4 + + + + + Active Provider : + Codex Desktop (App 1/3) + + Phase Countdown : + 45m 20s remaining + + Purge Action : + Inter-App Gap in 45m + + + + + + ▶ Play / Start Rotation (Active) + + + ⏸ Pause Rotation (Immediate Safe Hold) + + + ⏹ Stop / Aus (Close Active & Reset Index) + + + + + ⚙ Settings & Durations GUI... + + + 📄 View Audit Log (events.jsonl) + + + + + + + + + + + + + + + App Rotator Settings — Native Fail-Closed Interface + + + + + + LIFECYCLE DURATIONS (IN MINUTES) + + + Inter-App Purge Gap : + + 2.0 + min (All apps closed; VRAM & RAM purge) + + + Cycle Pause Cooldown : + + 15.0 + min (Rest gap after full provider rotation) + + + Cumulative Budget : + + 240.0 + min (Watchdog auto-stop; 0 = unlimited) + + + + + CONFIGURED PROVIDER ROTATION ROSTER + + + + EN + PROVIDER NAME + RUNTIME + DELEGATION CONTROLLER + + + + + + Codex Desktop + 60.0 min + safe-start-for-codex + + + + + + + Claude Desktop + 60.0 min + — (None / Direct AppX) + + + + + + + Antigravity IDE + 60.0 min + — (None / Direct Binary) + + + + + + + + + + DETERMINISTIC ROTATION & VRAM PURGE DYNAMICS + Continuous Memory Reclamation Guarantee + + + + + Codex Desktop + Runtime (e.g. 60 min) + + + + + + + + + Inter-App Gap + VRAM -> 0GB Purge + + + + + + + + + Claude Desktop + Runtime (e.g. 60 min) + + + + + + + + + Inter-App Gap + VRAM -> 0GB Purge + + + + + + + + + Cycle Pause + Cooldown (15 min) + + + \ No newline at end of file diff --git a/llms.txt b/llms.txt index 5e01949..2b21af2 100644 --- a/llms.txt +++ b/llms.txt @@ -9,7 +9,7 @@ - Attribution: `NOTICE` (Lukas Geiger, dev-bricks, open-bricks) - Language: Python >= 3.11 (Microsoft Windows only) - Version: 0.2.3 -- Last-checked: 2026-10-30 +- Last-checked: 2026-11-01 - Entry points: `app-rotator` CLI (`run`, `tray`, `play`, `pause`, `stop`, `status`, `config-init`, `config-validate`) - State: `%LOCALAPPDATA%\AppRotator\state.json`, events in `events.jsonl`, single-instance file lock (`app-rotator.lock`) - Security: `SECURITY.md` (100% Local-First, Fail-Closed, Path-Restricted, Non-Elevation `RunAsInvoker`, Zero Network Egress, 48h Response SLA & 5-Day Triage Guarantee) @@ -36,5 +36,5 @@ - `src/app_rotator/` — engine, controller, processes, settings, tray, config - `src/app_rotator/assets/` — packaged high-resolution application icons - `scripts/install-desktop-shortcut.ps1` — unprivileged per-user desktop installer below `%LOCALAPPDATA%` -- `tests/` — pytest test suite (74+ passing contract & unit tests) +- `tests/` — pytest test suite (77 passing contract & unit tests) - `tests/test_metadata.py` — automated metadata contract tests verifying PEP 621, URLs, badges, 18-point quick navigation, reciprocal dual HTML anchors, Four-View ASCII Topology, target personas, 10-dimension comparative matrix, Level 1 SBOM, dual Mermaid diagrams, 10 invariants, ecosystem matrix, licenses, and SECURITY SLAs diff --git a/tests/test_metadata.py b/tests/test_metadata.py index ec94fb3..8f0f9dd 100644 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -112,6 +112,7 @@ def test_llms_txt_and_docs_sync() -> None: or "Last-checked: 2026-09-29" in content or "Last-checked: 2026-10-03" in content or "Last-checked: 2026-10-30" in content + or "Last-checked: 2026-11-01" in content ) assert "https://github.com/dev-bricks/app-rotator" in content assert "0.2.3" in content @@ -149,6 +150,7 @@ def test_readme_badges_consistency() -> None: or "2026--09--29" in readme or "2026--10--03" in readme or "2026--10--30" in readme + or "2026--11--01" in readme ) @@ -567,6 +569,7 @@ def test_third_party_licenses_audit_recency() -> None: or "Audit Date:** 2026-09-29" in content or "Audit Date:** 2026-10-03" in content or "Audit Date:** 2026-10-30" in content + or "Audit Date:** 2026-11-01" in content ) assert "Version:** `0.2.3`" in content assert "RunAsInvoker" in content @@ -649,6 +652,7 @@ def test_level1_sbom_plain_text_companion_invariants() -> None: "Audit Date: 2026-09-29" in content or "Audit Date: 2026-10-03" in content or "Audit Date: 2026-10-30" in content + or "Audit Date: 2026-11-01" in content ) assert "EXECUTIVE COMPLIANCE & ZERO-COPYLEFT ASSURANCE" in content assert "INVARIANT CROSS-REFERENCE MATRIX" in content @@ -866,3 +870,37 @@ def test_marketing_log_audit_recency_20261030() -> None: assert "REC-20261030-03" in content assert "REC-20261030-04" in content + +def test_ui_preview_asset_and_parity() -> None: + """Verify ui-architecture-preview.svg exists and is embedded in Section 6 of READMEs.""" + asset_path = ROOT / "assets" / "ui-architecture-preview.svg" + assert asset_path.is_file(), ( + "Missing UI preview vector asset: assets/ui-architecture-preview.svg" + ) + + svg_content = asset_path.read_text(encoding="utf-8") + assert " None: + """Verify MARKETING-LOG.txt documents the 2026-11-01 Pfad B discoverability audit.""" + marketing_path = ROOT / "MARKETING-LOG.txt" + content = marketing_path.read_text(encoding="utf-8") + + assert "## [2026-11-01]" in content + assert "Pfad B" in content + assert "UI Architecture Vector Preview" in content + assert "Nicht-automatisierbare Handlungsempfehlungen" in content + assert "REC-20261101-01" in content + assert "REC-20261101-02" in content +