Die Menueleiste war 34 px hoch, die HoneyBar in den Apps 32 — beim Wechsel sah
man den Sprung. Jetzt beide 32.
Und der Name samt Bild stand rechts in der Menueleiste. Das war das einzige
Stueck, das die HoneyBar in den Apps nicht hat — genau der Unterschied, den man
nicht sehen soll. Er sitzt jetzt als eigenes Widget auf dem Schreibtisch, mit
der Begruessung, die vorher im Systemfenster stand. Beide Leisten tragen damit
ueberall dasselbe.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Anklickbar war es ein Versprechen, das es nicht hielt: Der Klick fuehrte nur
dorthin, wo ohnehin alles eingestellt wird. Jetzt eine Anzeige mit Hinweistext,
in beiden Leisten.
Die Anordnung war seit dem Wetterfenster kaputt. Das Raster verteilt seine
Bereiche der Reihe nach — das dritte landete neben „system" und schob die
Kacheln in die schmale linke Spalte. Links stehen jetzt die Anzeigen
untereinander, rechts die Apps ueber die volle Hoehe.
Keine neue Faehigkeit, also bleibt die Version bei 0.9.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Die Leiste am oberen Rand von HoneyOS ist nicht honeybar.js, sondern die
Menueleiste des Schreibtischs — anderer Code, gleiches Aussehen. Das Wetter
stand deshalb nur in fremden Apps, waehrend der Schalter dort, wo man ihn
umlegt, nichts zu bewirken schien.
Fuer den, der davorsitzt, ist beides dieselbe Leiste. Ein Schalter, der nur
woanders wirkt, ist nicht zu erklaeren.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Zwei Schalter, unabhaengig voneinander: Schreibtisch, Leiste, beides oder
keins. Die Stadt wird einmal gesucht und mit ihren Koordinaten gespeichert,
sonst suchte jede Abfrage den Ort erneut.
Geholt wird serverseitig und zehn Minuten zwischengespeichert. Der Grund ist
nicht Sparsamkeit: Die Leiste steht auf jeder Seite jeder App, und fragte sie
selbst an, ginge bei jedem Seitenaufruf eine Anfrage samt IP an einen Fremden —
und die CSP jeder App muesste ihn erlauben.
Kein Ort eingestellt oder Dienst nicht erreichbar: 204, und das Symbol bleibt
weg. Eine Zahl von gestern waere schlechter als keine.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Aus der statischen Seite wird ein Go-Binary mit eingebetteter Oberfläche.
Grund: Apps über .env zu pflegen wurde unübersichtlich, und kosmetische
Einstellungen sollen auf jedem Gerät gleich sein.
- Anmeldung über den eigenen OIDC-Anbieter (PocketID), mit PKCE. Ohne
Anmeldung gibt es nichts zu sehen – auch keine App-Liste.
- Sitzung als signiertes Cookie ohne Gegenstück im Server; Schreibzugriffe
zusätzlich über ein lesbares CSRF-Cookie abgesichert
- Apps werden in der Oberfläche angelegt und bearbeitet, nicht mehr in der
.env. Der Server prüft jeden Eintrag und meldet zurück, was er behält.
- Einstellungen liegen je Nutzer im Server; localStorage ist nur noch der
Vorschuss, damit die Röhre beim Laden nicht in der falschen Farbe blitzt
- die Leiste holt die App-Liste aus /api/apps – freigegeben sind allein die
Ursprünge, die selbst als App eingetragen sind
- Tests fahren einen echten OIDC-Anbieter hoch und gehen den Anmeldeweg
einmal ganz durch
Ohne HONEYOS_OIDC_ISSUER läuft alles offen – für die Entwicklung, mit
deutlicher Warnung beim Start.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Statische Oberfläche vor Aether und InkNote: kein Backend, kein Build,
nginx liefert web/ aus. Jede App bleibt ihre eigene PWA auf ihrer eigenen
Domain – HoneyOS ist Startpunkt und Umschalter, kein iframe-Rahmen.
- zwei Betriebsarten aus einem Datenstand: Terminal (Kacheln, Tastatur)
und Desktop (Symbole, verschiebbare Fenster, Taskleiste)
- honeybar.js als Drop-in für die Apps, rendert im Shadow DOM, damit
Tailwind und die InkNote-Palette einander nicht in die Quere kommen
- Konfiguration vollständig aus der .env: das Skript in
/docker-entrypoint.d/ schreibt config.json beim Containerstart
- optionaler _ME-Pfad pro App zeigt an, wer angemeldet ist; ohne CORS
bleibt die Anzeige leer, ohne dass etwas kaputtgeht
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>