Skip to content

Ausführliches Review mit fertigen Fixes im Fork: Notch-Unsichtbarkeit, hartkodierte Pfade, Keychain, Tests/CI, Design — wie möchtest du verfahren? #3

Description

@itsab1989

Hallo Ravaners! 👋

Danke für SolixBar — und Glückwunsch zum 0.4.0-Release mit der portablen SOLIX-Laufzeit! Du hast portable Pfade, den macOS-Schlüsselbund und eine CI unabhängig selbst umgesetzt; damit sind mehrere der ursprünglichen P0-Punkte aus diesem Review bei dir bereits erledigt. 🎉

Dieses Issue war ein vollständiges Review deiner App (Code + laufende Oberfläche, hell/dunkel, MacBook mit Notch). Alles Gefundene ist in einem Fork behoben und mit Tests abgesichert — inzwischen über zwei Feedback-Runden hinaus weitergeführt bis v0.4.3. Weil unsere Zweige nun auseinanderlaufen (du hast eigene Wege für Laufzeit & Keychain gewählt), ist der Fork ab jetzt eher zum Rosinenpicken gedacht als für einen glatten Merge. Du entscheidest, was damit passiert — jeder Bereich steht für sich.


Alles an einem Ort

🔀 Pull Request Ravaners/SolixBar#4 — kompletter Fork-Stand (v0.4.3), thematisch zusammengefasst
⬇️ Fertiger Build SolixBar-macOS.zip (v0.4.3) — läuft sofort, kein Build nötig
🌿 Fork-Branch itsab1989/SolixBar@review-fixes
Tests & CI 80 Tests (Unit, Prozess-/HTTP-Integration, Render-Snapshots hell/dunkel); GitHub Actions baut, prüft und veröffentlicht fertige App-Bundles

Was der Fork bietet — thematisch

🩹 Stabilität & Kernfixes

Notch-sicheres Statusitem (stufenweise Verdichtung statt Ausblenden durch macOS); Anzeige bleibt bei Netzfehlern stehen (letzter Wert, als veraltet markiert); klare HTTP-Fehler; toleranter Decoder; kein Pipe-Deadlock bei großer Helfer-Ausgabe; Fehler-Backoff (Abrufabstand verdoppelt sich bis max. 30 min, Reset bei Erfolg).

🔌 Direkter SOLIX-Modus & Datenwege

Datenquelle „SOLIX-Konto (direkt)" mit gebündelter Python-Laufzeit; Zugangsdaten per stdin-JSON (nicht als via ps sichtbare Umgebungsvariablen), Passwort nur im Schlüsselbund; Tages-/Gesamtstatistik 10/15 min gecacht (atomar, 0600); Zustand & Cache nur im Application-Support-Ordner. Eigenständige Umsetzung neben deiner 0.4.0-Laufzeit — Details wie stdin-Credentials, Caching und Backoff sind evtl. auch für dich interessant.

🎨 Design-System & Dark Mode

Zentrales Theme mit semantischen Rollen statt vier Farbwelten und Farbwahl per Textsuche; korrekte Hell/Dunkel-Darstellung überall. Kernursache vieler Dark-Mode-Fehler behoben: cgColor außerhalb eines Zeichenkontexts löst mit der Prozess-Standard-Appearance auf → jetzt performAsCurrentDrawingAppearance plus explizite Menü-Appearance.

📊 Anzeige & Bedienung

Zweizeilige Kompaktanzeige (notch-sicher, Standard); Menüleiste und abgedockte Leiste unabhängig; Slim-Bar verschiebbar mit wählbarer Fensterebene; sortierbare Werte-Listen (Häkchen wählt, Ziehen ordnet); Leistung je PV-Eingang (Gesamt/Einzeln/beides, je Fläche); Dashboard-Kacheln skalieren auf die Breite und zeigen 3–4 PV-Eingänge als 2×2-Raster.

📈 Verlauf & Graph

Demo/Live getrennt, Datei-Speicher, Aufbewahrung bis 366 Tage; gemeinsame Kopfzeile + Hover-Inspektor; optionale Kurven-Glättung (auf die Plotfläche geklemmt) und je Kurve wählbare Flächenfüllung; CSV-/JSON-Export aus dem Menü.

🔔 Warnungen (standardmäßig aus)

Akku unter Schwelle (Hysterese), PV-Einbruch (nachts still), Zeitfenster, einzelne PV-Eingänge (Nachbar-Vergleich und/oder Einbruch gegen die eigene jüngste Erzeugung) — Mitteilung plus ⚠ im Menü. Datenquelle „Demo (Warnungs-Test)" lässt alle aktivierten Warnungen in Minuten real feuern.

💡 Feinschliff & Unterbau

Update-Hinweis (tägliche Release-Prüfung, abschaltbar); ausführliche Hilfe-Popover an den Fragezeichen-Knöpfen; realistischer Demo-Akku. Darunter: Library-Split (SolixBarKit) mit 80 Tests, CI baut/prüft/veröffentlicht das Bundle (verify_release.sh: Version, Signatur, keine privaten Pfade/Daten, importierbare Module).


Wie möchtest du verfahren?

  • Ausprobierenfertigen Build (v0.4.3) laden (Rechtsklick → „Öffnen"; er teilt die Einstellungen mit einer bereits installierten Version — vorher ggf. exportieren).
  • Rosinen picken — einzelne Ideen/Dateien portieren. Wichtig: kein rohes git cherry-pick — durch den frühen SolixBarKit-Umbau passen die Dateipfade nicht mehr zu deinem main (und deine 0.4.0 hat manches bereits anders gelöst). Diff des jeweiligen Bereichs ansehen und auf deine Struktur übertragen funktioniert zuverlässig.
  • Verwerfen — auch völlig in Ordnung; dann bleibt dies ein dokumentiertes Review.

🤖 Fertiger Prompt für deine Coding-KI

Falls du (wie wir) mit einer Coding-KI arbeitest: Gib ihr den folgenden Prompt, dann verschafft sie dir selbst die Liste aller Übernahme-Optionen — ohne dass schon etwas umgesetzt wird. Du wählst danach aus.

Ich möchte einen fremden Fork meines macOS-Projekts SolixBar auswerten und
einzelne Verbesserungen übernehmen. Setze noch NICHTS um — erstelle mir zuerst
eine Entscheidungsliste.

Fork:   https://github.com/itsab1989/SolixBar   Branch: review-fixes
Mein Stand: main (enthält bereits mein 0.4.0 mit portabler Python-Laufzeit,
macOS-Schlüsselbund und CI-Grundgerüst).
Kontext: Issue #3 und PR #4 in Ravaners/SolixBar beschreiben den Fork.

Aufgabe:
1. Hol dir den Fork-Branch:
   git fetch https://github.com/itsab1989/SolixBar.git review-fixes
   und verschaffe dir einen Überblick über Code, Issue #3 und PR #4.
2. Vergleiche den Fork mit meinem aktuellen main und finde die eigenständigen
   Funktionen und Fehlerbehebungen, die mir noch fehlen. Lass alles weg, was
   mein 0.4.0 bereits abdeckt (portable Pfade, Schlüsselbund, CI).
3. Gib mir eine nummerierte Liste von Übernahme-Optionen. Pro Punkt:
   kurze Beschreibung · betroffene Dateien im Fork · geschätzter Aufwand ·
   Risiko · mögliche Konflikte mit meinem 0.4.0.
4. Frag mich DANN, welche Punkte ich übernehmen will.

Beim späteren Portieren beachten:
- Kein rohes `git cherry-pick` — der Fork hat die Quellen früh nach
  `Sources/SolixBarKit` umgezogen; Dateipfade passen nicht zu meinem main.
  Diffs ansehen und auf meine Struktur übertragen.
- Pro übernommenem Punkt mindestens einen Test schreiben.
- Meinen 0.4.0-Stand respektieren, nichts doppelt oder rückwärts umsetzen.

(Funktioniert genauso auf Englisch — einfach die Anweisungen übersetzen.)

Bei Rückfragen zu einzelnen Punkten gern hier antworten. Danke fürs Bauen der App! 🙂

🇬🇧 Short version: Congrats on the 0.4.0 portable-runtime release — you independently covered several original P0 fixes (portable paths, Keychain, CI). This review has since grown into a full v0.4.3 fork: notch-safe status item, a semantic light/dark design system, a direct SOLIX mode (bundled runtime, stdin credentials, API caching, failure backoff), independent docked/undocked bars, drag-to-reorder lists, per-PV-input display, auto-fitting dashboard tiles, per-source history with 366-day retention, CSV/JSON export, optional graph smoothing and per-curve fills, opt-in warnings plus a warning-test demo mode, update notifications, and extensive settings help — on a SolixBarKit split with 80 tests and a CI that builds, verifies and releases the bundle. Since our branches have diverged, it's now cherry-pick territory rather than a clean merge: try the v0.4.3 build, port individual ideas (no raw git cherry-pick — paths differ), or close this as a documented review. A ready-to-paste prompt for your coding AI is included above — it makes the AI list all adoptable options for you to choose from before touching any code. The only untested path remains the live Anker cloud login (no hardware on our side).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions