diff --git a/IDEAS.md b/IDEAS.md index 5089210..b7a64e6 100644 --- a/IDEAS.md +++ b/IDEAS.md @@ -43,8 +43,11 @@ 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` an den Schreibtisch -weiter. Ein Klick, ein Seitenwechsel — dort, wo man angemeldet ist. +Die HoneyBar hat die Frage deshalb als `?einstellungen=1` an den Schreibtisch +weitergereicht. **Auch das ist seit dem 01.09.2026 weg** (Marcs Einwand): Wenn +der Punkt ohnehin nur weiterleitet, ist er neben „Schreibtisch" keine zweite +Möglichkeit, sondern dieselbe mit einem Zwischenschritt weniger. Das Bar-Menü +trägt jetzt Schreibtisch und Einklappen, sonst nichts. **Abmelden ist ganz aus den Leisten verschwunden** und steht unten in den Einstellungen (Marcs Entscheidung, 29.08.2026). Aus fremden Apps war es ohnehin diff --git a/README.md b/README.md index f78bfce..33ce2e9 100644 --- a/README.md +++ b/README.md @@ -554,21 +554,25 @@ Das `■ HONEYOS` links ist ein Menü — auf dem Schreibtisch wie in jeder App: | in der HoneyBar (fremde App) | auf dem Schreibtisch | |---|---| | Schreibtisch | Über HoneyOS | -| Einstellungen … | Einstellungen | -| HoneyBar einklappen | Terminal-/Desktop-Modus | +| HoneyBar einklappen | Einstellungen | +| — | Terminal-/Desktop-Modus | 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. +Das Zahnrad, das dort früher stand, ist weg: Auf dem Schreibtisch stehen die +Einstellungen links im Systemmenü; in einer fremden App gibt es sie nicht, +sondern nur den Weg dorthin. -**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. 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. +**In den Apps ist „Schreibtisch" ein Link, keine Handlung** — 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. + +Deshalb stand dort lange ein zweiter Punkt „Einstellungen …", der auf dieselbe +Seite führte, nur mit geöffnetem Feld. **Er ist weg** (01.09.2026): Zwei Türen +in denselben Raum sind keine zwei Wege. Wer etwas einstellen will, ist damit +ohnehin auf dem Schreibtisch, und dort steht das Feld einen Klick — oder `[S]` — +entfernt. **Abmelden steht in den Einstellungen, ganz unten — und sonst nirgends.** Nicht in der HoneyBar fremder Apps, nicht im Systemmenü, nicht im Startmenü. Es ist diff --git a/web/honeybar/honeybar.js b/web/honeybar/honeybar.js index 85bfddf..0973673 100644 --- a/web/honeybar/honeybar.js +++ b/web/honeybar/honeybar.js @@ -259,7 +259,6 @@
@@ -469,25 +468,25 @@ } /** - * Die zwei Wege ins System. Beides sind Links auf den Schreibtisch, keine - * Aktionen hier — und das ist keine Bequemlichkeit, sondern die Grenze: + * Der eine Weg ins System: ein Link auf den Schreibtisch, keine Aktion hier. * - * Einstellungen **schreiben**. Dafuer braucht der Server die HoneyOS-Sitzung, - * und die schickt der Browser aus einer fremden App nicht mit; liegt alles - * unter einer Domain, kommt sie zwar mit, aber das CSRF-Prüfwort steht in - * einem Cookie der HoneyOS-Adresse, das dieses Skript von hier aus nicht - * lesen darf. + * Das ist keine Bequemlichkeit, sondern die Grenze: Einstellungen + * **schreiben**. Dafuer braucht der Server die HoneyOS-Sitzung, und die + * schickt der Browser aus einer fremden App nicht mit; liegt alles unter + * einer Domain, kommt sie zwar mit, aber das CSRF-Prüfwort steht in einem + * Cookie der HoneyOS-Adresse, das dieses Skript von hier aus nicht lesen darf. + * + * Hier stand deshalb lange ein zweiter Punkt „Einstellungen …", der auf + * dieselbe Seite fuehrte, nur mit geoeffnetem Feld. **Weg damit** (Marcs + * Einwand, 01.09.2026): Zwei Tueren in denselben Raum sind keine zwei Wege. + * Wer eine Einstellung aendern will, ist ohnehin auf dem Schreibtisch, und + * dort steht sie einen Klick oder ein [S] entfernt. * * Abmelden steht hier bewusst gar nicht: Es gehoert dorthin, wo man sich - * angemeldet hat. Wer es aus einer App heraus braucht, geht ueber - * „Einstellungen …" — dort unten steht der Knopf. + * angemeldet hat — unten in den Einstellungen. */ function systemZiele() { - const heim = new URL(homeUrl, location.href); - root.getElementById("mHome").href = heim.href; - const einst = new URL(homeUrl, location.href); - einst.search = "einstellungen=1"; - root.getElementById("mSettings").href = einst.href; + root.getElementById("mHome").href = new URL(homeUrl, location.href).href; } /** diff --git a/web/js/os.js b/web/js/os.js index 67a392c..d8e882e 100644 --- a/web/js/os.js +++ b/web/js/os.js @@ -1208,15 +1208,6 @@ async function main() { if (e.target === $("modal")) closeModal(); }); - // Was die HoneyBar aus einer fremden App herüberreicht: Sie darf selbst - // nichts schreiben (siehe honeybar.js), also stellt sie die Frage in der - // Adresse und der Schreibtisch beantwortet sie. Danach kommt die Adresse - // weg — ein Neuladen soll die Einstellungen nicht wieder aufreißen. - if (new URLSearchParams(location.search).get("einstellungen") === "1") { - history.replaceState(null, "", location.pathname); - openSettings(); - } - window.addEventListener("keydown", (e) => { if (e.metaKey || e.ctrlKey || e.altKey) return; const typing = /^(INPUT|TEXTAREA|SELECT)$/.test(e.target.tagName);