Notiz zeigt sich sofort gesetzt, Widgets nach Wunsch des Nutzers

Aus dem Zettel wird die Notiz: Der Text steht immer formatiert da, roh ist nur
die Zeile mit der Schreibmarke. Dazu eine kleine Werkzeugleiste (Aufgabe,
Aufzaehlung, Nummer, Ueberschrift, fett, Linie), Enter fuehrt Listen fort,
Backspace am Zeilenanfang nimmt erst den Vorsatz. Fuer groessere Umbauten
bleibt der Quelltext-Knopf.

Kein contenteditable: Der Quelltext bleibt die Wahrheit und wird nie aus dem
HTML zurueckgerechnet, das der Browser beim Tippen erzeugt.

Reihenfolge und An/Aus der Widgets liegen jetzt je Nutzer auf dem Server, in
einer Einstellung ("benutzer,notiz,-system,wetter,bild"). Der Schalter fuer das
Wetter auf dem Schreibtisch faellt damit weg — es ist ein Widget wie jedes
andere.

Die Einstellungen sind in Abschnitte sortiert (Darstellung, HoneyBar, Widgets,
Wetter, Programme, Konto), Beschriftung links, Schalter rechts.
This commit is contained in:
marc committed 2026-08-31 01:24:50 +02:00
1 parent c0abfbb491
commit 3807ddca24
12 files changed
+806 -220

No files matched your search

+76 -6
View File
@@ -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: () => "<html>",
@@ -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 `<script>`
ausführt, wäre eine Falle für den Tag, an dem man etwas hineinkopiert.
**Die Notiz ist keine zweite Notiz-App.** InkNote gibt es schon: kein Titel,
keine Liste von Notizen, keine Ordner, keine Suche. Genau ein Text für das, was
nicht länger als einen Tag lebt. Gespeichert wird verzögert (und beim Verlassen
der Seite sofort); zwei offene Geräte überschreiben einander, der letzte Stand
gewinnt.
### Das Bild
Genau eines je Nutzer, hochgeladen oder verlinkt; ein neues ersetzt das alte
samt Datei. Erlaubt sind PNG, JPEG, WebP und GIF — der Typ wird aus den
**Bytes** bestimmt, nicht aus dem, was der Browser behauptet. SVG ist bewusst
nicht dabei: Es kann Skripte enthalten. Ausgeliefert wird mit einem
Versionsanteil in der Adresse, sonst bliebe beim Austausch das alte Bild im
Zwischenspeicher hängen.
## Wetter
Ein Pixelsymbol mit der Temperatur — wahlweise auf dem Schreibtisch, in der
HoneyBar, in beidem oder nirgends. Zwei getrennte Schalter unter
*Einstellungen → Wetter*, weil das zwei verschiedene Orte sind: Wer es beim
Arbeiten in einer App sehen will, will es nicht zwangsläufig auch auf einer
Seite, die er selten aufruft.
HoneyBar, in beidem oder nirgends. Zwei Orte, zwei Schalter 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 einen eigenen Schalter unter
*Einstellungen → HoneyBar*. Wer es beim Arbeiten in einer App sehen will, will
es nicht zwangsläufig auch auf einer Seite, die er selten aufruft.
Die Stadt wird dort einmal gesucht und **mit ihren Koordinaten** gespeichert;
Die Stadt wird unter *Einstellungen → Wetter* einmal gesucht und **mit ihren Koordinaten** gespeichert;
sonst müsste jede Abfrage den Ort erneut suchen — zwei Anfragen nach draußen
statt einer. Ohne Stadt bleibt das Wetter aus.