Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
4d5c441
docs(mla): add isolated GTK scaffold and coding-agent master plan
Toqsick Sep 29, 2026
ba048d3
docs(mla): add scaffold setup, IPC contract and verification gates
Toqsick Sep 29, 2026
052ef9a
docs(mla): add SDD execution plan (gate 0, baseline, la_core spike + …
Toqsick Sep 29, 2026
3f9ab3f
docs(mla): gate 0 automated verification on zorin (wayland + x11)
Toqsick Sep 29, 2026
d5265f0
docs(mla): complete gate 0 wayland evidence chain (review fix)
Toqsick Sep 29, 2026
b6a75ab
docs(mla): add A0 baseline and evidence map
Toqsick Sep 29, 2026
0513b28
feat(la_core): minimal headless spike per issue #59 (probe contract, …
Toqsick Sep 29, 2026
64ff62a
feat(la_core): module descriptor + registry validation per issue #60
Toqsick Sep 29, 2026
7ada911
feat(la_core): registry lifecycle - single-flight activation, reverse…
Toqsick Sep 29, 2026
e41304c
docs(mla): check off gate 1 spike + registry portions with evidence
Toqsick Sep 29, 2026
ac84be8
docs(mla): true up gate evidence (final review fix)
Toqsick Sep 29, 2026
1367d3c
chore(analyze): adopt analyzer excludes auto-written by flutter tool
Toqsick Sep 29, 2026
bf4942b
fix(la_core): align sdk bound with committed lockfile (^3.11.0)
Toqsick Sep 29, 2026
ddcafa4
style(la_core): apply dart format to registry and tests
Toqsick Sep 29, 2026
ec6f591
ci(mla): run la_core gates and headless compile in Dart workflow
Toqsick Sep 29, 2026
4aaf608
fix(analyze): exclude nested packages from root analyzer (monorepo)
Toqsick Sep 29, 2026
513def1
docs(mla): mirror MLA-Next milestones/issues and elaborated roadmap b…
Toqsick Sep 29, 2026
94b5ef8
refactor(la_core): reine Parser aus der App in den Kern verschieben (…
Toqsick Sep 30, 2026
755665c
refactor(linux): Parser-Aufrufe an la_core delegieren (#93)
Toqsick Sep 30, 2026
080becf
docs(mla): Gate-1-Nachweis für #93 Schnitt 1 (Parser-Umzug)
Toqsick Sep 30, 2026
70ddd05
docs(mla): Push-Status im #93-Handoff nachziehen
Toqsick Sep 30, 2026
b85f130
feat(mla): Modul-Registry und HubModule-Adapter ersetzen acht Navigat…
Toqsick Sep 30, 2026
bad3d5a
docs(mla): Abnahme-Abschnitt für #60 in VERIFY.md
Toqsick Sep 30, 2026
8b1b187
docs: Nutzernamen aus Handoff-Auszügen entfernen (öffentliches Repo)
Toqsick Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,26 @@ jobs:
- name: Root runner tests
run: python3 -m unittest discover -s tests -t .
working-directory: additional/python
# MLA-Next: the pure-Dart core package (#59/#60) runs its own gates with
# plain `dart` from the same SDK — no Flutter, no GTK toolchain, no
# display (issue #59 requires the compiled probe to run headless in CI).
- name: la_core pub get
run: dart pub get
working-directory: packages/la_core
- name: la_core static analysis
run: dart analyze
working-directory: packages/la_core
- name: la_core formatting
run: dart format --output=none --set-exit-if-changed .
working-directory: packages/la_core
- name: la_core tests
run: dart test
working-directory: packages/la_core
- name: la_core headless binary
run: |
dart compile exe bin/la_probe.dart -o /tmp/la_probe
/tmp/la_probe --version
working-directory: packages/la_core
- run: sudo apt-get update -y
- run: sudo apt-get install -y ninja-build libgtk-3-dev libkeybinder-3.0-0 libkeybinder-3.0-dev mesa-utils
- run: flutter config --enable-linux-desktop
Expand Down
12 changes: 12 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@

# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
#
# The excludes below are what `flutter analyze`/`flutter test` auto-write on
# every run since Flutter 3.47 ("Upgrading analysis_options.yaml"); adopted
# 2026-09-30 so automated gate runs leave a clean tree. `packages/**` is a
# deliberate monorepo addition: nested packages (la_core) own their
# analysis_options and run their own `dart analyze` gate — from the root
# context their imports (package:test, package:la_core) do not resolve.
analyzer:
exclude:
- build/**
- linux/**
- packages/**
include: package:flutter_lints/flutter.yaml

linter:
Expand Down
2 changes: 1 addition & 1 deletion docs/handoff/00-PLAN.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Plan: Linux-Assistant V0.7.1 → V0.8.0 — Handoff, UI/UX-Analyse, Admin-Hub-Roadmap, Release

**Datum:** 2026-09-10 · **Freigegeben von:** Basti (Toqsick) · **Ausführung:** ZCode/GLM, superpowers-SDD
**Repo:** `/home/bratan/10-Projekte/10-active/linux-assistant` (Flutter/Linux, Fork `Toqsick/linux-assistant`, 44 ahead / 0 behind Upstream; Upstream dormat bei 0.6.2)
**Repo:** `$HOME/10-Projekte/10-active/linux-assistant` (Flutter/Linux, Fork `Toqsick/linux-assistant`, 44 ahead / 0 behind Upstream; Upstream dormat bei 0.6.2)

## Ausgangslage (5-Agenten-Recon, 2026-09-10)

Expand Down
10 changes: 5 additions & 5 deletions docs/handoff/analysis/verification-2026-09-11.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ Journal-Evidence (`journalctl`, User in `adm`):

```
Sep 11 10:13:26 polkitd[1290]: Operator of unix-session:3 successfully authenticated as
unix-user:bratan to gain ONE-SHOT authorization for action
unix-user:<user> to gain ONE-SHOT authorization for action
org.linux-assistant.read-security-report for unix-process:43860:154605
[/usr/lib/linux-assistant/linux-assistant] (owned by unix-user:bratan)
[/usr/lib/linux-assistant/linux-assistant] (owned by unix-user:<user>)
Sep 11 10:13:26 pkexec[44569]: pam_unix(polkit-1:session): session opened for user
root(uid=0) by bratan(uid=1000)
Sep 11 10:13:26 pkexec[44569]: bratan: Executing command [USER=root] [TTY=unknown]
root(uid=0) by <user>(uid=1000)
Sep 11 10:13:26 pkexec[44569]: <user>: Executing command [USER=root] [TTY=unknown]
[CWD=/tmp] [COMMAND=/usr/lib/linux-assistant/additional/python/read_security_report.py
--family=debian --home=/home/bratan]
--family=debian --home=/home/<user>]
```

Das bestätigt drei Fix-Ebenen auf einmal: die dedizierte One-Shot-Polkit-Action
Expand Down
2 changes: 1 addition & 1 deletion docs/handoff/screenshots/v0.7.1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Laufende Instanz danach im Normalzustand (Wayland) wiederhergestellt.
## Der dokumentierte Bug (Kern-Evidence)

`04b` zeigt den Zustand **nach erfolgreicher Passwort-Eingabe**: polkit-Auth
erfolgreich (journal 21:53:19: „successfully authenticated as unix-user:bratan"),
erfolgreich (journal 21:53:19: „successfully authenticated as unix-user:<user>"),
`check_security.py` lief als Root, crashte ~1 s später mit `IndexError` an der
deb822-Datei `/etc/apt/sources.list.d/graphics-drivers-ubuntu-ppa-noble.sources`,
und die UI zeigt danach falsch:
Expand Down
40 changes: 40 additions & 0 deletions docs/mla-next/AGENT_PLAN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# MLA Next: GTK4-Prototyp und Coding-Agenten-Masterplan

Stand 2026-09-25. Isolierter Prototyp-Track für Master Linux Assistant auf Zorin OS 18.1 GNOME. Ausgangspunkt main 92bef600; vor jeder Aufgabe neu prüfen. Kein Release, kein Flutter-Ersatzbeschluss. Paket/Binär/Policy/Datenpfade bleiben vorerst linux-assistant. Bestehende v0.8.x–v1.0-Roadmap bleibt gültig; MLA-Next 0.0.1–0.4.x ist ein getrenntes Experiment. 0.5 bleibt offen.

## Grenzen

- GTK-UI, Flutter-UI und Dart-Host nie als Root. Keine generische Root-IPC, Shell-Strings, Agenten-Ausführung oder Secrets in Logs/Screenshots/Commits. Vorhandene polkit-Grenze nicht umgehen.
- Dieser Commit enthält ausschließlich neue Dateien unter prototype/gtk und docs/mla-next. Demo-Daten, keine Systemänderung, keine Behauptung ausgeführter Tests. Keine Integration mit install.sh, deb oder main.
- Issue #59 ist der Headless-Spike für packages/la_core; #60 betrifft die Registry; #63 das Backup-Cockpit aus Units, Timern und Journal. Agenten müssen aktuelle Issue-Bodies lesen, bevor sie implementieren. Der rsync-Ordnerkopier-Prototyp ist ausdrücklich nicht Teil von #63.

## Architektur

GTK4/libadwaita ist ein unprivilegierter UI-Adapter; bestehendes Flutter bleibt Vergleichsbasis. Reiner Dart-Kern packages/la_core enthält Probe-/Parsermodelle, Registry, DI und Event-Vertrag ohne Flutter-/GTK-Typen. Deskriptor: id, titleKey, viewId, kind, capabilities, requires, probeIds, actionIds und subscribedTopics. View-Factories gehören in UI-Adapter. Registry prüft doppelte IDs/Zyklen, aktiviert Abhängigkeiten Single-Flight und stoppt rückwärts. Kein dynamisches Fremdcode-Plugin.

Fenster: AdwApplicationWindow → AdwNavigationSplitView → Sidebar und AdwToolbarView mit HeaderBar; Hauptbereich GtkStack und kontextuelle rechte Leiste. Golden/Cream/Navy über semantische Tokens; keine Polls in unsichtbaren Ansichten. Diagramme zeigen Einheiten, Messzeit und Quelle.

IPC erst nach isoliertem Spike: JSON-RPC 2.0 über privaten Unix-Socket im XDG_RUNTIME_DIR, hello/Capabilities, 64-KiB-Framelimit vor Parsing, Peer-UID, begrenzte Queues, Timeout, Reconnect, Snapshot nach Event-Lücke; Same-UID ist keine Sandbox. Schreibende Aktionen benötigen serverseitige Allowlist und bestätigte Nutzerauswahl. Keine Backups über Repo-Tokens oder Restic-Passwörter.

Backup nach #63: User-/System-Units, letzter Lauf, Result/Journal-Evidenz, nächster Timer, Heartbeat. Zustände unknown/stale/failed/running/ok unterscheiden. `systemctl --user start` nur für erneut validierte User-Unit nach Bestätigung. System-Unit bleibt lesend. Erfolgreicher Unit-Exit ist kein Restore-Nachweis; Prozent nur bei echter Datenquelle.

## Versionen und Gates

- 0.0.1: isolierte GTK-Shell mit Fixture-Dashboard, Backup und Security; Syntaxcheck, Wayland/X11, Hell/Dunkel, Resize, Tastatur; keine schreibende Funktion.
- 0.0.2: #59 Dart-Headless-Probe und #60 Registry-Vertrag; `dart test`, `dart compile exe`, Lauf ohne DISPLAY/WAYLAND_DISPLAY und bestehende Flutter-Tests.
- 0.0.3: gemeinsame Fixtures, Fehler-/Stale-Modelle, CPU-/RAM-/Startzeit-Baseline gegen Flutter-Release-Build auf demselben Zorin-Rechner.
- 0.1.0–0.1.x: lesender Monitor, Drill-down, Ringpuffer, Pausieren im Hintergrund, Langlauf und Accessibility; Werte gegen /proc plausibilisieren.
- 0.2.0–0.2.x: Notes, Dateiansicht, sicherer Dokument-Reviewer, Suchpalette, kontextuelle Browser-/Terminal-Aktionen; keine stillen Fremdclients.
- 0.3.0–0.3.x: Security-/Operations-Lagebild, Dienste/Timer und #63 Backup; Agent-Gateway nur für Diagnose und einzeln genehmigte Aktionen mit Audit.
- 0.4.0–0.4.x: Computer-Use-Evaluation, Wayland-Freigaben, Stop-Schalter, Sicherheits-/Performance-Regressionsmatrix, Packaging-/Upgrade-Probe und dokumentierte Flutter-vs-GTK-Entscheidung samt Rückfallplan.
- 0.5: offen; erst anhand 0.4.x-Evidenz definieren.

## Agenten-Arbeitspakete

A0 Baseline: aktuellen SHA, Issues/PRs, Flutter-Gates, Zorin-Matrix und Evidence-Map erfassen. A1 Tokens/UI-Design: Semantik, Accessibility, Fokus, Screenshots. A2 GTK-Fixture-Shell mit Test-Fakes und sauberem Lifecycle. A3 la_core: Parser/Probe, DI, Registry, Flutter-Adapter. A4 IPC: Schema, Peer- und Framing-Tests, kein Root-Execute. A5 Monitoring/Diagramme mit Zeit-/Einheiten-Validierung. A6 Backup gemäß #63 mit Unit-/Timer-/Journal-Fixtures. A7 optionale Tools mit Dateisicherheitsgrenzen. A8 Agenten-Gateway mit Audit und Nutzerfreigaben. A9 Benchmarks, Sicherheitsreview, Zorin-E2E, Merge-Entscheidung.

Je Task: Scope/Dateien/Fixture/Failing-Test zuerst, minimaler Implementierungsschritt, Reviewer 1 für Funktion/UX/Races, Reviewer 2 für Privilegien/Secrets/argv/IPC. Handoff enthält Commit-SHA, tatsächlich ausgeführte Gates, rote/übersprungene Gates und Rückfallplan. Keine Behauptung 'fertig' ohne Test. Bei wiederholten Fehlschlägen Root Cause statt blindem Patchen.

## Start und Nicht-Ziele

`python3 -m py_compile prototype/gtk/mla_app.py`; danach auf Zorin mit PyGObject, GTK4 und libadwaita `python3 prototype/gtk/mla_app.py`. Diese Befehle sind Vorschläge, nicht hier ausgeführt. Keine Änderungen an bestehenden Flutter-, Python-, Policy-, Packaging- oder Release-Dateien. Kein Push auf Upstream; kein Merge in main ohne separate Freigabe.
Loading
Loading