diff --git a/IDEAS.md b/IDEAS.md index e18dbf9..040b198 100644 --- a/IDEAS.md +++ b/IDEAS.md @@ -206,8 +206,10 @@ nicht geplant"). Was bleibt, ist alles, was für sich allein steht: Wetter ### Wetter in der HoneyBar, neben der Uhr — ✅ gebaut (25.08.2026) -**Steht.** Zwei Schalter in den Einstellungen, unabhängig voneinander: auf dem -Schreibtisch, in der HoneyBar, beides oder keins. Die Stadt wird einmal gesucht +**Steht.** Zwei Orte, unabhängig voneinander: auf dem Schreibtisch, in der +HoneyBar, beides oder keins. Seit dem 31.08.2026 an zwei Stellen — auf dem +Schreibtisch ist das Wetter ein Widget wie jedes andere und steht in der +Widget-Liste, für die Leiste gibt es den eigenen Schalter. Die Stadt wird einmal gesucht und mit ihren Koordinaten gespeichert; der Server holt das Wetter und legt es zehn Minuten beiseite, die Oberflächen zeigen nur, was er hergibt. @@ -299,7 +301,7 @@ Zu prüfen ist dabei, was sonst noch inline gesetzt wird: die Lage der HoneyBar selbst und der Innenabstand, den sie der Seite verpasst. Über die CSSOM gesetzte Stile (`el.style.x = …`) fallen nicht unter die CSP — was im Markup steht, schon. -### Bild-Widget — Marcs Idee (29.08.2026) +### Bild-Widget — ✅ gebaut (30.08.2026) Ein Widget, das ein Bild zeigt: hochgeladen oder als Adresse eingetragen. Genau **eines je Nutzer**; ein neues ersetzt das alte, ohne Verwaltung und ohne Liste. @@ -324,11 +326,19 @@ Zu klären, wenn es soweit ist: - Passt zum Aufnehmen eigener App-Logos (1.3): dieselbe Ablage, dasselbe Ausliefern. Zusammen bauen spart die Hälfte. -### Notizzettel-Widget — Marcs Idee (29.08.2026) +### Notiz-Widget — ✅ gebaut (30.08.2026), Sofort-Ansicht (31.08.2026) Ein Zettel auf dem Schreibtisch: hineintippen, fertig. Serverseitig je Nutzer, also auf jedem Gerät derselbe Text. +**Nachtrag 31.08.2026 — was daraus wurde.** Aus dem „Zettel" ist die *Notiz* +geworden, mit kleinem Markdown, einer Werkzeugleiste und **Sofort-Ansicht**: Der +Text ist immer gesetzt zu sehen, roh ist nur die Zeile, in der die Schreibmarke +steht. Der Weg über `contenteditable` wurde verworfen — man müsste aus dem HTML, +das der Browser beim Tippen erzeugt, den Quelltext zurückraten, und ein Fehler +dabei kostet Text. Die Grenze zu InkNote steht trotz Formatierung: ein Text, +keine Liste von Notizen, keine Ordner, keine Suche. + **Die Abgrenzung ist hier wichtiger als die Technik:** InkNote gibt es schon. Der Zettel darf **keine zweite Notiz-App** werden — kein Titel, keine Liste, keine Ordner, keine Suche, keine Formatierung. Genau *ein* Textfeld, das man @@ -387,7 +397,7 @@ wenige Farben reduziert, hart gerastert) oder bunt bleiben? Ein Original-Logo mit Farbverlauf neben Pixelglyphen sieht schnell nach Fremdkörper aus. Ein Filter in der HoneyBar wäre billig zu haben und ließe sich abschalten. -### Widgets verschieben, Reihenfolge im Server — Marcs Idee (29.08.2026) +### Widgets verschieben, Reihenfolge im Server — ✅ gebaut (31.08.2026) Widgets per Ziehen umsortieren, die Reihenfolge liegt beim Nutzer auf dem Server — also auf jedem Gerät gleich. @@ -412,6 +422,20 @@ Voraussetzung ist ein Widget-Verzeichnis — heute stehen Benutzer und Wetter fest im HTML. Sinnvoll zusammen mit dem Widget-Rahmen (1.4) zu bauen, nicht davor. +**Gebaut (31.08.2026), wie vorgeschlagen: eine Liste, beide Ansichten folgen +ihr.** Dazu ein Schalter je Widget — wer den Systemzustand nicht sehen will, +soll ihn abschalten können, ohne ihn nach unten zu schieben. + +Beides steht in **einer** Einstellung: `widgets = "benutzer,notiz,-system,…"`, +das Minus heißt aus. Ein Feld statt zwei, weil beides zusammengehört: Ein +ausgeschaltetes Widget behält seinen Platz. Damit brauchte es weder einen neuen +Endpunkt noch eine neue Tabelle — die Einstellungen liegen ohnehin je Nutzer auf +dem Server. + +Ziehen ist es nicht geworden, sondern **Pfeile** — aus demselben Grund wie bei +den Apps (1.3b): Am Handy löst HTML5-Drag per Berührung nicht aus, und die Liste +ist kurz. Freie Plätze auf dem Schreibtisch bleiben offen, falls sie je fehlen. + ### Widgets in der HoneyBar selbst Bisher sind Widgets als Fenster auf dem Schreibtisch gedacht. Der Schreibtisch diff --git a/README.md b/README.md index d2d09b6..c1d2896 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ Ein Widget ist eine **Beschreibung**, kein Kasten in der `index.html`: widgetAnmelden({ id: "wetter", titel: "wetter", wo: ["terminal", "desktop"], // wo es erscheinen darf - sichtbar: () => state.settings.weatherDesk === "on", + sichtbar: () => true, // eigene Bedingung, optional laden: async () => …, // false = es gibt nichts zu zeigen leer: "verbergen", // oder ein Satz, der dann dasteht inhalt: () => "", @@ -214,15 +214,85 @@ wegbleiben — so macht es das Wetter ohne eingestellten Ort. Eine neue Anzeige ist damit eine Datei in `web/js/widgets/` und ein Import in `os.js`. Weder das Raster noch die Seite werden dafür angefasst. +### Reihenfolge und An/Aus liegen beim Nutzer + +Unter *Einstellungen → Widgets* steht jedes Widget mit einem Schalter und zwei +Pfeilen. Beides zusammen steht in **einer** Einstellung, und die liegt wie alle +anderen beim Konto auf dem Server — also auf jedem Gerät gleich: + +``` +widgets = "benutzer,notiz,-system,wetter,bild" +``` + +Das Minus heißt aus. Ein Feld statt zwei, weil beides zusammengehört: Wer ein +Widget ausschaltet, soll seinen Platz behalten, wenn er es wieder einschaltet. +Die Liste ist ein Wunsch, kein Gesetz — unbekannte Namen fallen weg, neue +Widgets hängen sich hinten an und sind an. Ein Widget, das erst später +eingeschaltet wird, holt seine Daten dann nach. + +Pfeile statt Ziehen: Ziehen wäre hübscher, löst am Handy per Berührung aber +nicht aus (dieselbe Entscheidung wie bei der Reihenfolge der Apps). + +## Notiz und Bild + +Zwei Widgets, die nichts abfragen, sondern etwas *sind*. Beides liegt **je +Nutzer auf dem Server** — die Notiz als Text in `honeyos.json`, das Bild als +Datei in `bilder/` daneben (oder als fremde Adresse, nie beides). + +### Die Notiz zeigt sich sofort gesetzt + +Der Text ist **immer** formatiert zu sehen; roh ist nur die eine Zeile, in der +die Schreibmarke steht. Man tippt also in einer Aufzählung und sieht ringsum +schon Überschriften, Häkchen und Punkte — statt `- [ ] Milch` zu schreiben und +sich vorzustellen, wie das gleich aussieht. + +Die Werkzeugleiste (Aufgabe · Aufzählung · Nummer · Überschrift · fett · Linie) +wirkt auf genau diese Zeile. Enter führt eine Liste fort und nummeriert weiter; +Enter auf einer leeren Aufzählungszeile beendet sie. Backspace am Zeilenanfang +nimmt erst den Aufzählungspunkt, dann erst die Zeile. Häkchen lassen sich +anklicken, ohne in den Text zu springen — das ist der häufigste Griff an einer +Liste. Für größere Umbauten gibt es den Knopf **quelltext**: dann doch das ganze +Feld, roh. + +**Warum nicht `contenteditable`?** Weil man aus dem, was der Browser beim Tippen +und Einfügen an HTML erzeugt, den Quelltext *zurückraten* müsste — und ein +Fehler dabei kostet Text. Hier bleibt der Quelltext die Wahrheit und wird nie +zurückgerechnet: Die Anzeige entsteht aus ihm, geändert wird immer nur eine +Zeile. Der Preis ist, dass man nicht über mehrere Zeilen hinweg markieren kann; +dafür ist der Quelltext-Knopf da. + +Das kleine Markdown ist von Hand geschrieben und absichtlich klein: +Überschriften (`#`, `##`, `###`), Häkchen (`- [ ]`, `- [x]`), Aufzählungen, +nummerierte Listen, `---`, `**fett**`, `*kursiv*`, `` `code` ``. Keine +Bibliothek — HoneyOS hat keinen Bauschritt, und für sechs Regeln lohnt kein +Nachladen. Escapt wird **vor** dem Formatieren: Eine Notiz, die `