Zentrale Stelle fuer den aktuellen Stand: OFFEN.md und /stand

Ansage des Eigentuemers: ueber eine zentrale Datei bzw. einen zentralen Aufruf
muss immer klar sein, was aktuell zu tun ist.

OFFEN.md ist diese Datei. Sie nennt den Zustand, nicht die Geschichte, und
teilt sich die Arbeit mit den vorhandenen: AGENTS.md beantwortet WARUM etwas so
ist, APPLE_DEV_BACKLOG.md was davon Xcode oder das Portal braucht, OFFEN.md WAS
JETZT zu tun ist. Jeder Punkt sagt auch, was konkret zu tun ist - nicht nur,
dass etwas offen ist.

Gegliedert nach Zustaendigkeit statt nach Thema: was auf den Eigentuemer wartet
(Xcode-Lauf, Gitea-Token DM180, steuer.faellig), was eine Entscheidung braucht
(Uebersicht-Box Versicherung), was eine Sitzung bauen kann (PDF-Ablage,
Notizfeld, Dokumentendrift), was gemeldet aber nicht reproduzierbar ist, und
was bewusst so bleibt - letzteres, damit bekannte Grenzen nicht als Fehler
wiederkommen.

/stand (.claude/commands/stand.md) ist der zentrale Aufruf. Er misst den
mechanischen Teil selbst - Repo-Gleichstand, Manifest gegen OTA-Buendel samt
sha256, Fassung der ausgelieferten .ipa, ob die eigenen Plugins darin
registriert sind, und welche nativen Commits sich seit ihr angesammelt haben -
und liest OFFEN.md dazu. Dieser Teil kann deshalb nicht veralten. Probelauf
ausgefuehrt: er meldet korrekt 2026.9.6.5, Buendel passend, .ipa auf
2026.9.4.17 ohne die beiden eigenen Plugins, zwei native Commits wartend.

Verankert in CLAUDE.md (wird beim Sitzungsstart geladen) und als Punkt 0 der
Leseordnung in AGENTS.md.
This commit is contained in:
2026-09-07 12:04:48 +02:00
parent 979ea92ce7
commit 2bf1691fb8
4 changed files with 210 additions and 2 deletions
+70
View File
@@ -0,0 +1,70 @@
---
description: Zeigt den aktuellen Stand von DM360 - was zu tun ist, und ob Repo, Versionen und ausgelieferte App zusammenpassen.
---
Zeige den aktuellen Stand dieses Projekts. Zwei Teile: den **gemessenen**
(unten selbst nachrechnen, nie aus dem Gedächtnis) und den **gepflegten** (aus
`OFFEN.md`).
## 1. Messen
Führe genau diesen Block aus:
```bash
R=$(git rev-parse --show-toplevel) && cd "$R"
echo "== Repository =="
echo " Zweig $(git branch --show-current) | HEAD $(git rev-parse --short HEAD) | origin $(git rev-parse --short @{u} 2>/dev/null || echo '?')"
printf " Arbeitsbaum: "; [ -z "$(git status --porcelain)" ] && echo sauber || git status --short
echo "== Versionen =="
python - <<'PY'
import json, hashlib, pathlib, zipfile, plistlib, re
b = "custom_components/audi_dashboard/"
m = json.load(open(b + "manifest.json"))["version"]
print(f" Integration {m}")
try:
j = json.load(open(b + "frontend/app/bundle.json"))
z = pathlib.Path(b + "frontend/app/bundle.zip").read_bytes()
ok = j["version"] == m and hashlib.sha256(z).hexdigest() == j["sha256"] and len(z) == j["bytes"]
print(f" OTA-Buendel {j['version']} {'passt' if ok else 'PASST NICHT - npm run ota faellig'}")
except Exception as e:
print(" OTA-Buendel nicht lesbar:", e)
try:
zf = zipfile.ZipFile("companion-app/auslieferung/App.ipa")
n = zf.namelist()
p = plistlib.loads(zf.read([x for x in n if re.match(r"Payload/[^/]+\.app/Info\.plist$", x)][0]))
print(f" .ipa auf dem Telefon {p.get('CFBundleShortVersionString')}")
c = [x for x in n if re.match(r"Payload/[^/]+\.app/capacitor\.config\.json$", x)]
if c:
L = json.loads(zf.read(c[0])).get("packageClassList", [])
fehlt = [k for k in ("BelegZwischenablagePlugin", "KalenderTerminPlugin") if k not in L]
print(" eigene Plugins registriert:", "ja" if not fehlt else "NEIN - " + ", ".join(fehlt))
except Exception as e:
print(" .ipa nicht lesbar:", e)
PY
echo "== Wartet auf einen Xcode-Lauf =="
B=$(git log --format=%H -1 -- companion-app/auslieferung/App.ipa)
N=$(git log --oneline "$B..HEAD" -- companion-app/native/ companion-app/scripts/ios-*.sh companion-app/scripts/ios-*.mjs companion-app/capacitor.config.ts)
[ -z "$N" ] && echo " keine nativen Aenderungen seit der ausgelieferten .ipa" || echo "$N" | sed 's/^/ /'
```
## 2. Lesen
Lies danach `OFFEN.md`. Steht dort etwas unter „Wartet auf einen Xcode-Lauf",
oder meldet die Messung nicht registrierte Plugins, lies zusaetzlich
`APPLE_DEV_BACKLOG.md`.
## 3. Berichten
Kurz und in dieser Reihenfolge:
1. **Stimmt der mechanische Stand?** Nur melden, was *nicht* passt - Repo nicht
synchron, Buendel-Version abweichend, Pluginliste unvollstaendig, native
Aenderungen aufgelaufen. Passt alles, genuegt ein Satz.
2. **Was wartet auf den Eigentuemer** (Abschnitt 1 und 2 von `OFFEN.md`).
3. **Was eine Sitzung bauen koennte** (Abschnitt 3), mit einer Empfehlung.
Nenne die Punkte aus `OFFEN.md`, statt sie neu herzuleiten - und wenn dir beim
Messen etwas auffaellt, das dort fehlt, sag es und trage es nach.
**Starte nichts von selbst.** Ein Xcode-Lauf ist immer die Handlung des
Eigentuemers (Apple-Regel in `AGENTS.md`).