Tankstellen-Nadel, doppeltes Tanken-Symbol, Tankstellenname, packageClassList

Fuenf Meldungen des Eigentuemers, vier davon behoben:

1. Tankstellen-Nadel war bei 32 px ein dunkler Fleck (poi zeichnet nur
   einen Ring). Gefuellter Punkt in currentColor zwischen Silhouette und
   Symbol - die Geometrie stand im Pfad. Rot wurde ausdruecklich
   abgelehnt, die Umsetzung aendert keine Farbe.

2. Tanken-Symbol im Standort-Blatt wurde gefuellt UND umrandet, weil das
   CI-Symbol zusaetzlich stroke-Attribute mitbekam. Jetzt ueber ciSVG
   wie das Parkplatz-Symbol daneben; in der App dafuer imRaster an
   SymbolTanken (der 0,84-Faktor gilt nur in der Reiterleiste).

3. Tankstellenname: der Bestand hat zwei Bauformen - aeltere Belege
   tragen den Betreiber in station_name und die Anschrift daneben.
   Neu tankstelleTeile() liest beide Felder, entfernt Firmierungen,
   kuerzt Strassen und trennt die Hausnummer auch ohne Leerzeichen.
   Uebersicht: Marke, Strasse, Ort. Einzelbeleg: zwei Zeilen.
   adresseTeilen() hat keinen Aufrufer mehr und ist entfernt.

4. Zwischenablage und Kalendereintrag hatten denselben Grund: Capacitor 8
   registriert nur, was in packageClassList steht, und cap sync traegt
   dort ausschliesslich npm-Pakete ein. Beide app-eigenen Plugins lagen
   im Programm und wurden nie registriert. ios-teilen-einrichten.mjs
   traegt sie jetzt nach, ios-signieren.sh bricht ab, wenn sie im
   fertigen .ipa fehlen.

5. Geteilter Beleg nur mit Datum und Uhrzeit bleibt offen - der Weg
   nutzt denselben belegLesen()-Pfad wie eine gewaehlte Datei, es fehlt
   der konkrete Beleg oder die Protokollzeile.

tsc sauber, 246 Tests, vite build sauber, Panel als Modul geparst,
audi_ha_test auf 2026.9.4.20 ohne Traceback. Panel und App liefern fuer
die Tankstelle byteweise dasselbe.
This commit is contained in:
2026-09-04 16:34:46 +02:00
parent cefb235f6d
commit a99ae432fc
14 changed files with 543 additions and 78 deletions
@@ -97,6 +97,44 @@ for (const datei of PLUGIN_DATEIEN) {
}
melden(`Quellen nach ios/App/${ZIEL_NAME}/ kopiert`)
/* ------------------------------------------ Eigene Plugins registrieren */
/* Capacitor 8 sucht Plugin-Klassen NICHT im Programm. `registerPlugins()`
in CapacitorBridge.swift liest ausschliesslich `packageClassList` aus der
capacitor.config.json des Buendels und loest jeden Eintrag ueber
NSClassFromString auf - was dort nicht steht, existiert fuer die Bruecke
nicht, auch wenn die Klasse einkompiliert ist.
Genau daran sind beide eigenen Plugins gescheitert: `cap sync` erzeugt die
Liste aus den installierten npm-Paketen, und unsere Plugins sind keine.
In der ausgelieferten .ipa vom 04.09.2026 standen dort nur die sechs
Fremd-Plugins - die Zwischenablage meldete deshalb 'diese App-Fassung
enthaelt den nativen Teil noch nicht' (Nutzerbefund), obwohl
BelegZwischenablagePlugin nachweislich im Programm lag, und der
Kalendertermin fiel still auf das Teilen-Blatt zurueck, das den Kalender
gar nicht erreichen kann (siehe AGENTS.md Abschnitt BS).
Die Klassennamen kommen aus den Swift-Dateien selbst (@objc(...)), damit
sie nicht an zwei Stellen gepflegt werden muessen. */
const konfigPfad = join(iosApp, "App", "capacitor.config.json")
if (!existsSync(konfigPfad)) {
abbruch(`${konfigPfad} nicht gefunden - erst 'npx cap sync ios' laufen lassen.`)
}
const eigeneKlassen = PLUGIN_DATEIEN.map((datei) => {
const quelle = readFileSync(join(APP, "native", datei), "utf8")
const treffer = /@objc\(([A-Za-z0-9_]+)\)/.exec(quelle)
if (!treffer) abbruch(`${datei}: kein @objc(...)-Name gefunden`)
return treffer[1]
})
const konfig = JSON.parse(readFileSync(konfigPfad, "utf8"))
konfig.packageClassList = konfig.packageClassList ?? []
const fehlten = eigeneKlassen.filter((k) => !konfig.packageClassList.includes(k))
if (fehlten.length) {
konfig.packageClassList.push(...fehlten)
writeFileSync(konfigPfad, JSON.stringify(konfig, null, 2) + String.fromCharCode(10))
}
melden(`packageClassList: ${eigeneKlassen.join(", ")} eingetragen`)
/* ------------------------------------------------------------- URL-Schema */
/* Ohne dieses Schema kann die Erweiterung die App nicht holen - sie legt den