From 6d75ce78c2d1d83235c99b8bb90713c18c63187c Mon Sep 17 00:00:00 2001 From: marc Date: Sat, 29 Aug 2026 21:51:00 +0200 Subject: [PATCH] Abmelden nur noch in den Einstellungen, App-Menue statt Zahnrad MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Marcs Entscheidung: In der HoneyBar fremder Apps steht kein Abmelden mehr — es war dort ohnehin nur ein Link auf den Schreibtisch. Als einzige Schaltflaeche, die eine Sitzung beendet, steht es jetzt an genau einer Stelle: unten in den Einstellungen, sichtbar nur bei eigener Anmeldung. Damit faellt auch der ?abmelden=1-Pfad wieder weg und /api/apps braucht das oidc-Feld nicht mehr. Das Zahnrad rechts in der Menueleiste ist durch den Pfeil mit der App-Liste ersetzt — derselbe wie in der HoneyBar. Beide Leisten tragen damit dieselben vier Dinge: Logo, Apps, Wetter/Uhr, Aufklappmenue. --- IDEAS.md | 12 +++++- README.md | 31 ++++++++------ main.go | 3 -- web/css/style.css | 19 +++++++++ web/honeybar/honeybar.js | 39 ++++++----------- web/index.html | 5 ++- web/js/os.js | 92 +++++++++++++++++++++++++++++++--------- 7 files changed, 136 insertions(+), 65 deletions(-) diff --git a/IDEAS.md b/IDEAS.md index b7dfd1a..c79ff8f 100644 --- a/IDEAS.md +++ b/IDEAS.md @@ -41,8 +41,16 @@ Eine Annahme von damals hat sich nicht gehalten: „ohne sie zu verlassen" schreibt, und die HoneyBar darf in einer fremden App nicht schreiben — die Sitzung kommt über die Site-Grenze nicht mit, und selbst unter einer Domain liegt das CSRF-Prüfwort in einem Cookie, das nur HoneyOS' eigene Seiten lesen. -Also reicht die HoneyBar die Frage als `?einstellungen=1` / `?abmelden=1` an den -Schreibtisch weiter. Ein Klick, ein Seitenwechsel — dort, wo man angemeldet ist. +Also reicht die HoneyBar die Frage als `?einstellungen=1` an den Schreibtisch +weiter. Ein Klick, ein Seitenwechsel — dort, wo man angemeldet ist. + +**Abmelden ist ganz aus den Leisten verschwunden** und steht unten in den +Einstellungen (Marcs Entscheidung, 29.08.2026). Aus fremden Apps war es ohnehin +nur ein Link auf den Schreibtisch gewesen; als einzige Schaltfläche, die eine +Sitzung beendet, gehört es an eine Stelle statt an drei. Im selben Zug ist das +Zahnrad aus der Menüleiste des Schreibtischs gefallen und durch den Pfeil mit +der App-Liste ersetzt worden — damit tragen beide Leisten wirklich dieselben +vier Dinge: Logo, Apps, Wetter/Uhr, Aufklappmenü. **Was ohne Seitenwechsel ginge, wenn es je stört:** die reinen Aussehensschalter (Röhre, Leuchten, Scanlines) direkt im Menü. Sie kämen ohne Prüfwort aus, wenn diff --git a/README.md b/README.md index e6d72c7..564e74b 100644 --- a/README.md +++ b/README.md @@ -395,25 +395,28 @@ Das `■ HONEYOS` links ist ein Menü — auf dem Schreibtisch wie in jeder App: | Schreibtisch | Über HoneyOS | | Einstellungen … | Einstellungen | | HoneyBar einklappen | Terminal-/Desktop-Modus | -| Abmelden | Abmelden | -Rechts daneben bleibt der Pfeil mit den Apps. Eines auf heißt anderes zu. +Rechts daneben klappt ein Pfeil die App-Liste auf — in beiden Leisten gleich. +Das Zahnrad, das dort früher stand, ist weg: Einstellungen stehen jetzt links +im Systemmenü, wo sie in jeder App auch stehen. -**In den Apps sind es Links auf den Schreibtisch, keine Handlungen** — und das -ist eine Grenze, keine Bequemlichkeit. Einstellungen und Abmelden schreiben, und +**In den Apps sind die Punkte Links auf den Schreibtisch, keine Handlungen** — +und das ist eine Grenze, keine Bequemlichkeit. Einstellungen schreiben, und dafür braucht der Server die HoneyOS-Sitzung: Aus einer fremden Site schickt der Browser sie nicht mit, und selbst unter einer Domain liegt das CSRF-Prüfwort in -einem Cookie, das nur HoneyOS' eigene Seiten lesen dürfen. Ein Abmelden, das ein -einfacher Aufruf erledigt, könnte außerdem jede beliebige Seite auslösen. +einem Cookie, das nur HoneyOS' eigene Seiten lesen dürfen. Also stellt die +HoneyBar die Frage in der Adresse (`?einstellungen=1`), und der Schreibtisch +beantwortet sie: Er macht dasselbe Feld auf, das auch `[S]` öffnet, und nimmt +den Anhang danach wieder aus der Adresse. -Also stellt die HoneyBar die Frage in der Adresse (`?einstellungen=1`, -`?abmelden=1`), und der Schreibtisch beantwortet sie: Er macht dasselbe -Einstellungsfeld auf, das auch `[S]` öffnet, und meldet mit einem echten POST -ab. Danach nimmt er den Anhang aus der Adresse wieder heraus. - -`Abmelden` steht nur da, wenn HoneyOS überhaupt anmeldet — im offenen Betrieb -oder hinter einem Proxy fehlt der Punkt. Deshalb gibt `/api/apps` neben Liste -und Aussehen auch `oidc` heraus. +**Abmelden steht in den Einstellungen, ganz unten — und sonst nirgends.** Nicht +in der HoneyBar fremder Apps, nicht im Systemmenü, nicht im Startmenü. Es ist +die einzige Schaltfläche, die eine Sitzung beendet statt etwas einzustellen, und +sie gehört dorthin, wo man sich angemeldet hat. Wer es aus einer App heraus +braucht, geht über „Einstellungen …" — ein Klick mehr, dafür kann kein +eingebettetes Bild einer fremden Seite eine Abmeldung auslösen. Der Punkt +erscheint nur, wenn HoneyOS selbst anmeldet; hinter einem Proxy oder im offenen +Betrieb fehlt er. ## Wer angemeldet ist diff --git a/main.go b/main.go index f1eef9c..615c0e0 100644 --- a/main.go +++ b/main.go @@ -316,9 +316,6 @@ func (s *Server) handleApps(w http.ResponseWriter, r *http.Request, sub string) writeJSON(w, http.StatusOK, map[string]any{ "apps": s.store.Apps(), "settings": s.store.SettingsFor(sub), - // Fuer das Systemmenue der HoneyBar: ohne Anbieter gibt es nichts - // abzumelden, dann steht der Punkt dort auch nicht. - "oidc": s.auth.Enabled(), }) } diff --git a/web/css/style.css b/web/css/style.css index 1a8c0d8..d32ca6f 100644 --- a/web/css/style.css +++ b/web/css/style.css @@ -777,6 +777,25 @@ body { box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6); } .mb-logo[aria-expanded="true"] { background: var(--p-faint); } +/* Das App-Menü hängt am Pfeil rechts — sonst dasselbe Feld. */ +.appmenu { + top: calc(32px + env(safe-area-inset-top) + 2px); + bottom: auto; + left: auto; + right: 6px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6); +} + +/* Abmelden steht unten in den Einstellungen, abgesetzt vom Rest: Es ist die + einzige Schaltfläche dort, die nicht etwas einstellt, sondern etwas beendet. */ +.field-out { + border-top: 1px solid var(--p-faint); + padding-top: 12px; + margin-top: 4px; + margin-bottom: 0; +} +.btn-out { width: 100%; color: var(--p-mid); } +.btn-out:hover { color: var(--bg); background: var(--p); } .startmenu .sm-head { padding: 4px 8px; font-size: 10px; diff --git a/web/honeybar/honeybar.js b/web/honeybar/honeybar.js index ca2617c..88749b3 100644 --- a/web/honeybar/honeybar.js +++ b/web/honeybar/honeybar.js @@ -56,8 +56,6 @@ let apps = DEFAULT_APPS; let settings = null; - // Ob HoneyOS ueberhaupt anmeldet — ohne Anbieter gaebe es nichts abzumelden. - let oidc = false; // Was die Seite oben schon hatte, bevor die HoneyBar sie heruntergeschoben hat. let urspruenglichesPolster = null; @@ -222,8 +220,6 @@ Einstellungen …
- -