docs: durchgaengig ID statt Kennung

In der Oberflaeche hiess das Feld Kennung, in der Konfiguration id, in der
README beides. Drei Namen fuer dieselbe Sache, und man muss sie beim Eintragen
zusammenbringen — jetzt ueberall ID.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-08-29 15:41:05 +02:00
1 parent 7c8a4b8c9a
commit 3b7367944b
6 files changed
+12 -12

No files matched your search

+3 -3
View File
@@ -104,7 +104,7 @@ entfällt der Schlüssel und alles funktioniert ohne Einschränkung.
| Feld | wofür |
|---|---|
| Kennung | klein, ohne Leerzeichen — muss zu `data-app` der Leiste passen |
| ID | klein, ohne Leerzeichen — muss zu `data-app` der Leiste passen |
| Name, Untertitel | Beschriftung auf Kachel und Symbol |
| Adresse | wohin der Start springt |
| Symbol | cloud · note · box · chip · folder · gear · globe · disk |
@@ -191,7 +191,7 @@ HTML geschrieben wird, lässt sich hinterher nicht mehr ändern. Und der Service
Worker einer PWA hebt ganze Antworten auf, samt Kopfzeilen; eine ins HTML
eingefrorene Adresse überlebt dort jede Konfigurationsänderung.
`data-app` ist die Kennung aus der App-Liste. Die Liste holt sich die Leiste selbst von
`data-app` ist die ID aus der App-Liste. Die Liste holt sich die Leiste selbst von
`/api/apps` — mit deiner HoneyOS-Sitzung, weil alle Adressen unter derselben Domain liegen.
**Freigegeben sind nur die Ursprünge, die selbst als App eingetragen sind**: die App-Liste
ist zugleich ihre eigene CORS-Freigabe.
@@ -346,7 +346,7 @@ Nicht viel, aber nicht nichts:
Einsetzer für beliebig viele Dienste in einem Stapel.** Zwei Tabellen oben in
der Datei sagen, welcher Name zu welchem Behälter gehört und welche App das
für HoneyOS ist; eine neue App sind zwei Zeilen. Die Leiste hebt die aktuelle
App hervor, sobald `$appid` der `id` in der App-Liste entspricht — genau wie
App hervor, sobald `$appid` der `ID` in der App-Liste entspricht — genau wie
in Aether und InkNote. Am Host erkennt nginx, welcher
Dienst gemeint ist; eine neue App sind zwei Zeilen in den Tabellen oben in
`leiste.conf`. Das ist der Aufbau, den man haben will, sobald es mehr als ein
+2 -2
View File
@@ -283,8 +283,8 @@ func TestAppsAnlegenUndPrüfen(t *testing.T) {
{"leere Adresse", `[{"id":"x","url":""}]`},
{"Adresse ohne Schema", `[{"id":"x","url":"cloud.example.test"}]`},
{"javascript:", `[{"id":"x","url":"javascript:alert(1)"}]`},
{"Kennung mit Leerzeichen", `[{"id":"mein app","url":"https://a.test"}]`},
{"Kennung doppelt", `[{"id":"a","url":"https://a.test"},{"id":"a","url":"https://b.test"}]`},
{"ID mit Leerzeichen", `[{"id":"mein app","url":"https://a.test"}]`},
{"ID doppelt", `[{"id":"a","url":"https://a.test"},{"id":"a","url":"https://b.test"}]`},
}
for _, c := range schlecht {
if rec := put(c.body); rec.Code != http.StatusBadRequest {
+1 -1
View File
@@ -17,7 +17,7 @@
#
# docker compose up -d
# → in Pangolin die Ressource auf leiste:80 zeigen lassen,
# und in HoneyOS BentoPDF als App eintragen (id: bentopdf, URL: die
# und in HoneyOS BentoPDF als App eintragen (ID: bentopdf, URL: die
# öffentliche Adresse, exakt so, wie du sie im Browser aufrufst).
# ─────────────────────────────────────────────────────────────────────────────
services:
+2 -2
View File
@@ -17,7 +17,7 @@
# docker compose up -d
#
# Danach in Pangolin: honeyos.… → honeyos:8080, jede App → leiste:80.
# Und in HoneyOS jede App eintragen — die `id` dort muss dem `$appid` hier
# Und in HoneyOS jede App eintragen — die `ID` dort muss dem `$appid` hier
# entsprechen, sonst weiß die Leiste nicht, in welcher App man gerade ist.
# ─────────────────────────────────────────────────────────────────────────────
@@ -74,7 +74,7 @@ configs:
}
# ── Und welche App das für HoneyOS ist ────────────────────────────────
# Muss der `id` in der App-Liste entsprechen. Daran erkennt die Leiste,
# Muss der `ID` in der App-Liste entsprechen. Daran erkennt die Leiste,
# wo man gerade ist, und hebt den Eintrag hervor — wie in Aether.
map $$host $$appid {
default "";
+2 -2
View File
@@ -121,10 +121,10 @@ func (s *Store) SetApps(apps []App) error {
a.TokenKey = strings.TrimSpace(a.TokenKey)
if !idPattern.MatchString(a.ID) {
return fmt.Errorf("App %d: Kennung muss klein geschrieben sein und mit Buchstabe oder Ziffer beginnen", i+1)
return fmt.Errorf("App %d: ID muss klein geschrieben sein und mit Buchstabe oder Ziffer beginnen", i+1)
}
if seen[a.ID] {
return fmt.Errorf("Kennung %q kommt doppelt vor", a.ID)
return fmt.Errorf("ID %q kommt doppelt vor", a.ID)
}
seen[a.ID] = true
+2 -2
View File
@@ -1167,7 +1167,7 @@ function openApps() {
<span class="ae-url">${escapeHtml(a.url || "")}</span>
</summary>
<div class="ae-body">
<label class="ae-field"><span>Kennung</span>
<label class="ae-field"><span>ID</span>
<input data-i="${i}" data-f="id" value="${escapeAttr(a.id || "")}" placeholder="aether" spellcheck="false" /></label>
<p class="ae-hint">klein, ohne Leerzeichen — muss zu <code>data-app</code> der Leiste passen</p>
<label class="ae-field"><span>Name</span>
@@ -1355,7 +1355,7 @@ const LOGIN_ERRORS = {
abgelaufen: "Der Versuch hat zu lange gedauert. Noch einmal.",
state: "Die Antwort passte nicht zur Anfrage. Noch einmal.",
kein_code: "Der Anbieter hat keinen Code geschickt.",
tausch: "Der Code ließ sich nicht einlösen — Client-Kennung oder Geheimnis prüfen.",
tausch: "Der Code ließ sich nicht einlösen — Client-ID oder Geheimnis prüfen.",
kein_id_token: "Der Anbieter hat kein ID-Token geschickt.",
token: "Das ID-Token war ungültig.",
claims: "Das ID-Token nannte keinen Nutzer.",