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

+7 -7
View File
@@ -130,10 +130,10 @@ func TestHoneyBarOhneBacktickInKommentaren(t *testing.T) {
}
}
// Der Zettel ist ein Zettel, kein Dokument: Die Grenze muss der Server ziehen,
// Die Notiz ist eine Notiz, kein Dokument: Die Grenze muss der Server ziehen,
// nicht das Formular — sonst schreibt sie jeder Aufruf aus, der das Formular
// umgeht.
func TestZettelHatEineGrenze(t *testing.T) {
func TestNotizHatEineGrenze(t *testing.T) {
s := newTestServer(t, "")
h := s.routes()
@@ -146,10 +146,10 @@ func TestZettelHatEineGrenze(t *testing.T) {
}
if code := put("# Einkauf\n- [ ] Milch"); code != http.StatusNoContent {
t.Fatalf("kurzer Zettel: %d, erwartet 204", code)
t.Fatalf("kurze Notiz: %d, erwartet 204", code)
}
if code := put(strings.Repeat("x", 4001)); code != http.StatusBadRequest {
t.Errorf("zu langer Zettel: %d, erwartet 400", code)
t.Errorf("zu lange Notiz: %d, erwartet 400", code)
}
rec := httptest.NewRecorder()
@@ -157,13 +157,13 @@ func TestZettelHatEineGrenze(t *testing.T) {
var out map[string]string
json.Unmarshal(rec.Body.Bytes(), &out)
if out["text"] != "# Einkauf\n- [ ] Milch" {
t.Errorf("zurück kam %q — der zu lange Zettel darf den guten nicht überschrieben haben", out["text"])
t.Errorf("zurück kam %q — die zu lange Notiz darf die gute nicht überschrieben haben", out["text"])
}
}
// Fremde Zettel gehen niemanden etwas an: Der Schlüssel für die App-Liste darf
// Fremde Notizen gehen niemanden etwas an: Der Schlüssel für die App-Liste darf
// sie nicht öffnen, auch nicht lesend.
func TestZettelNichtUeberDenSchluessel(t *testing.T) {
func TestNotizNichtUeberDenSchluessel(t *testing.T) {
idp := newFakeIdP(t, "honeyos")
s := newTestServer(t, idp.URL)
s.cfg.AppsKey = "geheim123"