diff --git a/plans/audit-report.json b/plans/audit-report.json index e1a45ac..8da2d92 100644 --- a/plans/audit-report.json +++ b/plans/audit-report.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-10-17T01:48:54.973Z", + "generatedAt": "2026-10-17T02:28:29.469Z", "stats": { "files": 70, "byDir": { @@ -46,21 +46,19 @@ "src/content/docs/reference/openapi.md:6 Platzhalter" ], "t1Refs": [ - "src/content/docs/admin/konzept.md", - "src/content/docs/admin/setup.md", "src/content/docs/adr/0003-selbstlaeufer.md" ], "tibiAdminRefs": [ "src/content/docs/admin/aktionen.md (2×)", "src/content/docs/admin/ansichten-listen.md (2×)", - "src/content/docs/admin/benutzer-rechte.md (2×)", + "src/content/docs/admin/benutzer-rechte.md (7×)", "src/content/docs/admin/customizing.md (2×)", "src/content/docs/admin/eintrags-editor.md (2×)", "src/content/docs/admin/exporte.md (2×)", - "src/content/docs/admin/ki-funktionen.md (2×)", - "src/content/docs/admin/konzept.md (3×)", + "src/content/docs/admin/ki-funktionen.md (3×)", + "src/content/docs/admin/konzept.md (4×)", "src/content/docs/admin/medien.md (2×)", - "src/content/docs/admin/setup.md (4×)", + "src/content/docs/admin/setup.md (5×)", "src/content/docs/adr/0001-starlight.md (1×)", "src/content/docs/adr/0002-code-schlaegt-doku.md (2×)", "src/content/docs/adr/0003-selbstlaeufer.md (1×)", @@ -68,6 +66,7 @@ "src/content/docs/anwender/benutzer-teams.md (1×)", "src/content/docs/anwender/exportieren.md (3×)", "src/content/docs/anwender/ki-nutzen.md (1×)", + "src/content/docs/anwender/lesen-suchen-filtern.md (1×)", "src/content/docs/anwender/medien.md (1×)", "src/content/docs/anwender/orientierung.md (2×)", "src/content/docs/anwender/seiten-bauen.md (1×)", diff --git a/plans/doku-audit.md b/plans/doku-audit.md index 5599d7d..71816ae 100644 --- a/plans/doku-audit.md +++ b/plans/doku-audit.md @@ -5,8 +5,8 @@ **Stand:** 2026-10-16, umgesetzt am 2026-10-17. > **Zahlen in §1 sind der Audit-Stand vom 16.10.** (61 Seiten, 30 Screenshots) — bewusst als Schnappschuss stehen gelassen. -> **Ist-Stand nach der Umsetzung (17.10.):** 70 Inhaltsseiten / 8.264 Zeilen, 49 Screenshots (40 Anwender, 9 Admin), 71 Build-Seiten, -> 0 tote Links, 8 legitime „Platzhalter"-Marker, `npm run build` grün. Fortschritt siehe §18. +> **Ist-Stand nach der Umsetzung (17.10.):** 70 Inhaltsseiten, **65 Screenshots** (48 Anwender, 17 Admin), 71 Build-Seiten, +> 0 tote Links/Anker/Bildpfade, 8 legitime „Platzhalter"-Marker, `npm run build` grün. Fortschritt siehe §18. Noch ohne Bild: Suchindex-Banner, Session-Timeout, Drill-Down/Sprungziele, Inline-Anlage/Rückverweise, KI-Vision-/Werkzeug-Ansicht (alle im Mock nicht darstellbar), `anwender/hilfe.md`. **Rahmen (aus der Zielsetzung):** Die Doku **soll** beschreiben: (a) alle Funktionen des tibi-server für Entwickler und Administratoren beim Aufsetzen und Betreiben von Projekten, (b) alle tibi-admin-nova-Funktionen, die Entwickler zum korrekten Konfigurieren brauchen, (c) alle tibi-admin-nova-Funktionen aus Anwendersicht anhand von Screenshots (Mock-Projekt `corporate`, nie `t1`). @@ -751,6 +751,18 @@ Statuslegende: ✅ erledigt und reviewed · 🔄 läuft · ⬜ offen · 🔴 blo | Issues für die Nachbar-Repos | ✅ | `plans/offene-issues.md`: 7× tibi-server, 4× tibi-admin-nova, 2× tibi-types (mit Beleg) | | P9 Repo-Hygiene (Löschungen) | ⬜ | **bewusst nicht ausgeführt** — Löschen in fremden Repos braucht Freigabe; Kandidatenliste steht in §12.1 | +### Welle G — Screenshot-Nachtrag (restliche UI-Bereiche) · Stand 2026-10-17 ✅ + +| Punkt | Status | Ergebnis | +|---|---|---| +| Anwender-Motive (G1) | ✅ | 8 neue Bilder: FK-Drawer, Sprachleiste/Übersetzen, Feldsuche, JSON-Overlay, Medien-Lightbox, Upload-Warteschlange, Fremddatei, Stellvertretungs-Banner; 3 neue Kurzabschnitte, 3 Abschnitte erweitert | +| Admin-Motive (G2) | ✅ | 9 neue Bilder: Token-Liste, Token-Anlage (Profil), Projekt-Admin-Drawer, Team- und Org-Drawer, Theme-Umschalter, Chat-Verlauf, Voice im Filter | +| Befehlspalette im Admin | ✅ | neuer Abschnitt + Bild in `admin/konzept.md`; `keep`-Hinweis entfernt, Mock-Aussage `t1` → Demo-Projekte korrigiert | +| Nicht darstellbare Motive | ⚠️ | Session-Timeout (Mock schaltet den Inaktivitäts-Tracker ab), Suchindex-Banner (Mock-Queue immer 0), KI-Werkzeugstatus/Vision (kein KI-Backend), Drill-Down/Sprungziele, Inline-Anlage/Rückverweise → als `` markiert, Grund dokumentiert | +| Textkorrekturen aus dem UI-Abgleich | ✅ | „Token anlegen nur im Profil" (Token-Admin ist name-only/edit), `allowReload/-Backup/-Snapshots` sind reine `config.yml`-Flags (0 Treffer im Frontend), „**Serververwaltete Felder**", „**Ausgewählte Medien**" | +| Welle-G-Review | ✅ | 17 Bilder geprüft: keine verwaisten Dateien, keine toten Pfade, alle Alt-Texte spezifisch, alle ≤ 200 KB; 3 Muss-Fixes umgesetzt; Urteil „abnehmbar" | +| Build/Audit | ✅ | 71 Seiten grün, 0 tote Links/Anker/Bildpfade, 0 kaputte Tabellen | + ### Abschluss-Review (general Subagent) und Nacharbeit · 2026-10-17 ✅ | Befund des Abschluss-Reviews | Nacharbeit | diff --git a/plans/doku-ausbau.md b/plans/doku-ausbau.md index e40705a..426f86f 100644 --- a/plans/doku-ausbau.md +++ b/plans/doku-ausbau.md @@ -178,6 +178,7 @@ Vollständige Prüfung von Code und Doku, dann Abarbeitung in Wellen. Übersicht | C | P5 `reference/schema-properties.md` (generiert) + Starter-Kapitel + 5 neue Anwender-Seiten | ✅ | | D | P7 Stil, Starlight, Struktur, UI-Text-Treue, Kontrast | ✅ | | E | P6b Screenshots: 9 Admin- + 10 Anwender-Bilder aus `corporate` | ✅ | +| G | Screenshot-Nachtrag: restliche UI-Bereiche (8 Anwender + 9 Admin + Befehlspalette) | ✅ (65 Bilder gesamt) | | F | P8 Meta (AGENTS.md, Werkzeuge, Issues) | ✅ | | — | P9 Repo-Hygiene (Löschungen in Nachbar-Repos) | ⬜ Freigabe nötig | diff --git a/src/assets/admin/admin-ansichten-listen.webp b/src/assets/admin/admin-ansichten-listen.webp deleted file mode 100644 index cc6bcf4..0000000 Binary files a/src/assets/admin/admin-ansichten-listen.webp and /dev/null differ diff --git a/src/assets/admin/admin-befehlspalette.webp b/src/assets/admin/admin-befehlspalette.webp new file mode 100644 index 0000000..c651b13 Binary files /dev/null and b/src/assets/admin/admin-befehlspalette.webp differ diff --git a/src/assets/admin/admin-filter-voice.webp b/src/assets/admin/admin-filter-voice.webp new file mode 100644 index 0000000..97e849b Binary files /dev/null and b/src/assets/admin/admin-filter-voice.webp differ diff --git a/src/assets/admin/admin-ki-verlauf.webp b/src/assets/admin/admin-ki-verlauf.webp new file mode 100644 index 0000000..7c6628f Binary files /dev/null and b/src/assets/admin/admin-ki-verlauf.webp differ diff --git a/src/assets/admin/admin-org-drawer.webp b/src/assets/admin/admin-org-drawer.webp new file mode 100644 index 0000000..7853862 Binary files /dev/null and b/src/assets/admin/admin-org-drawer.webp differ diff --git a/src/assets/admin/admin-projekt-rechte.webp b/src/assets/admin/admin-projekt-rechte.webp new file mode 100644 index 0000000..f0e566a Binary files /dev/null and b/src/assets/admin/admin-projekt-rechte.webp differ diff --git a/src/assets/admin/admin-team-drawer.webp b/src/assets/admin/admin-team-drawer.webp new file mode 100644 index 0000000..149fa5b Binary files /dev/null and b/src/assets/admin/admin-team-drawer.webp differ diff --git a/src/assets/admin/admin-theme.webp b/src/assets/admin/admin-theme.webp new file mode 100644 index 0000000..3b39898 Binary files /dev/null and b/src/assets/admin/admin-theme.webp differ diff --git a/src/assets/admin/admin-token-anlegen.webp b/src/assets/admin/admin-token-anlegen.webp new file mode 100644 index 0000000..160f0c8 Binary files /dev/null and b/src/assets/admin/admin-token-anlegen.webp differ diff --git a/src/assets/admin/admin-token-liste.webp b/src/assets/admin/admin-token-liste.webp new file mode 100644 index 0000000..13645c2 Binary files /dev/null and b/src/assets/admin/admin-token-liste.webp differ diff --git a/src/assets/anwender/benutzer-stellvertretung.webp b/src/assets/anwender/benutzer-stellvertretung.webp new file mode 100644 index 0000000..8f1fa44 Binary files /dev/null and b/src/assets/anwender/benutzer-stellvertretung.webp differ diff --git a/src/assets/anwender/eintrag-feldsuche.webp b/src/assets/anwender/eintrag-feldsuche.webp new file mode 100644 index 0000000..35328fe Binary files /dev/null and b/src/assets/anwender/eintrag-feldsuche.webp differ diff --git a/src/assets/anwender/eintrag-fremdschluessel.webp b/src/assets/anwender/eintrag-fremdschluessel.webp new file mode 100644 index 0000000..014c6fd Binary files /dev/null and b/src/assets/anwender/eintrag-fremdschluessel.webp differ diff --git a/src/assets/anwender/eintrag-json.webp b/src/assets/anwender/eintrag-json.webp new file mode 100644 index 0000000..69df3e5 Binary files /dev/null and b/src/assets/anwender/eintrag-json.webp differ diff --git a/src/assets/anwender/eintrag-sprachen.webp b/src/assets/anwender/eintrag-sprachen.webp new file mode 100644 index 0000000..06f1b64 Binary files /dev/null and b/src/assets/anwender/eintrag-sprachen.webp differ diff --git a/src/assets/anwender/medien-fremddatei.webp b/src/assets/anwender/medien-fremddatei.webp new file mode 100644 index 0000000..9862238 Binary files /dev/null and b/src/assets/anwender/medien-fremddatei.webp differ diff --git a/src/assets/anwender/medien-lightbox.webp b/src/assets/anwender/medien-lightbox.webp new file mode 100644 index 0000000..84150cf Binary files /dev/null and b/src/assets/anwender/medien-lightbox.webp differ diff --git a/src/assets/anwender/medien-warteschlange.webp b/src/assets/anwender/medien-warteschlange.webp new file mode 100644 index 0000000..9ff61c5 Binary files /dev/null and b/src/assets/anwender/medien-warteschlange.webp differ diff --git a/src/content/docs/admin/ansichten-listen.md b/src/content/docs/admin/ansichten-listen.md index 6fe51e5..b2d097c 100644 --- a/src/content/docs/admin/ansichten-listen.md +++ b/src/content/docs/admin/ansichten-listen.md @@ -55,6 +55,7 @@ Manche Sammlungen haben Reiter über der Liste (`meta.subNavigation`, z. B. `?su - Ausgeschlossen sind standardmäßig: Fremd-Medien-Widgets (`foreignMedia`, `foreignFile` u. ä.), native Datei-Felder und reine Objekt-Kästen ohne angemeldete Unterfelder. - Fremdschlüssel-Felder bieten eine Auswahl mit Suche statt Freitext. - Die Vorschläge für Auswahlwerte (`_facet`-Route) liefern je Wert die Trefferzahl mit. +- Textfelder (z. B. **Seitentitel**) zeigen bei Fokus ein Mikrofon-Symbol: Antippen diktiert den Filterwert statt Tippen (`ui/VoiceFilterTextInput.svelte`, nur im fokussierten Feld sichtbar). Ohne Mikrofon-Unterstützung im Browser bleibt das Feld ein reines Textfeld. @@ -100,7 +101,7 @@ Teile eine gefilterte Liste per URL — Empfänger sehen exakt dieselbe Auswahl, | Gesamtzahl fehlt oder lädt lange | `/_count` auf altem Server nicht verfügbar | Direkt laden lassen (Fallback) oder Server aktualisieren | | Ansicht startet „falsch“ | `viewHint` der Sammlung schlägt die Startansicht vor | Ansicht einmal wechseln — `view=…` in der URL gewinnt | -![Seitenliste im tibi-admin: Suchfeld mit Suchbegriff, geöffnetes Filter-Popover mit Feld-Filtern und Paginierung in der Fußzeile](../../../assets/admin/admin-ansichten-listen.webp) +![Seitenliste im tibi-admin: geöffneter Filter mit Feld-Filtern, Mikrofon-Symbol im fokussierten Seitentitel-Feld und Paginierung in der Fußzeile](../../../assets/admin/admin-filter-voice.webp) Anwender-Sicht zum Ändern vieler Einträge auf einmal: [Massenbearbeitung](/anwender/massenbearbeitung/). diff --git a/src/content/docs/admin/benutzer-rechte.md b/src/content/docs/admin/benutzer-rechte.md index 5b0b858..771d9d2 100644 --- a/src/content/docs/admin/benutzer-rechte.md +++ b/src/content/docs/admin/benutzer-rechte.md @@ -32,9 +32,16 @@ Die Kette lautet **Org → Team → Benutzer → Projekt**. Du pflegst sie im Ad |---|---|---| | Benutzer | `UserTab` (Liste mit Suche, Filter, Sortierung, Paginierung), `UserCreateDrawer`, `UserDetailDrawer` | Name, Login, Rolle, Org-/Team-Mitgliedschaften | | Teams | `TeamTab`, `TeamCreateDrawer`, `TeamDetailDrawer` | Name, Farbe, Org-Zugehörigkeit, Mitglieder, Berechtigungen | -| Orgs | `OrgTab`, `OrgCreateDrawer`, `OrgDetailDrawer` | Name, Mitglieder (`OrgAssignmentSection`), Projekte | | Projekte | `ProjectAdminView`, `ProjectDetailDrawer`, `ProjectCreateDrawer` | Name, Status (online/offline), Org-Zuordnung, Rechte-Matrix | +Der Team-Drawer zeigt **Einstellungen** mit **Name**, **Organisation**, **Beschreibung** und **Farbe**, darunter die **Berechtigungen** als Chips (Eingabehilfe `z.B. pages, media, admin`, Knopf **Berechtigung hinzufügen**) und die **Teammitglieder** mit **Benutzer anlegen**. + +![Team-Drawer im tibi-admin: Einstellungen mit Name, Organisation, Beschreibung und Farbe, Berechtigungs-Chips und Teammitglieder mit Benutzer-Anlegen-Knopf](../../../assets/admin/admin-team-drawer.webp) + +Der Org-Drawer zeigt **Einstellungen** (**Name**, **Branche**, **Ort**, **Website**, **Logo ersetzen** / **Logo entfernen**), darunter **Zugeordnete Teams** (**Team anlegen**), **Zugeordnete Benutzer** (**Benutzer anlegen**) und **Zugeordnete Projekte** mit **Metadaten** (Erstellt, Aktualisiert). + +![Organisations-Drawer im tibi-admin: Einstellungen mit Name, Branche, Ort und Website, zugeordnete Teams, Benutzer und Projekte](../../../assets/admin/admin-org-drawer.webp) + 1. Org anlegen (`OrgCreateDrawer`). @@ -60,6 +67,14 @@ Die Kette lautet **Org → Team → Benutzer → Projekt**. Du pflegst sie im Ad Persönliche Token (PATs) pflegst du auf zwei Wegen: im eigenen **Profil** (`TokenSettings.svelte`) oder als Admin im **Token-Reiter** (`TokenAdminTab.svelte`). +Als Admin siehst du unter **Tokens** die Liste **API-Tokens** mit dem Untertitel **Alle Tokens aller Benutzer.** Je Zeile stehen **Name**, **Besitzer**, **Prefix**, **Berechtigungen** und **Zuletzt benutzt**. Über **Aktualisieren** lädst du die Liste neu; je Zeile änderst du den Namen (**Bearbeiten**) oder entziehst den Zugriff (**Widerrufen**). Anlegen geht nur im eigenen Profil. + +![Token-Liste im tibi-admin: API-Tokens aller Benutzer mit Name, Besitzer, Prefix, Berechtigungen und Zuletzt-benutzt-Spalte](../../../assets/admin/admin-token-liste.webp) + +Im Profil legst du über **Neues Token** einen Drawer mit **Name** (Beispiel `z. B. CI Deploy`) und **Berechtigungen** an. Die Scopes wählst du per Checkbox oder über **Alles auswählen**; dazu kommen **Eigene Scopes (Wildcards)** mit **Hinzufügen**. Ein Ablaufdatum gibt es in der Oberfläche nicht — das Feld existiert nur serverseitig und wird bewusst weder angezeigt noch gesetzt. + +![Token anlegen im tibi-admin: Drawer Neues Token mit Namensfeld, Berechtigungs-Checkboxen und eigenen Scopes](../../../assets/admin/admin-token-anlegen.webp) + @@ -80,6 +95,10 @@ Persönliche Token (PATs) pflegst du auf zwei Wegen: im eigenen **Profil** (`Tok ## Projekt-Admin-Token +Die **Projektverwaltung** (`/admin/projects`, `ProjectAdminView.svelte`) listet alle Projekte mit Organisation, Status und Kollektionen. Ein Klick öffnet den Detail-Drawer mit **Einstellungen** (**Name**, **Organisation**, **Beschreibung**, **Namespace**, **Config-Datei**), **Team-Zuordnungen** (**Team zuordnen**) und **Zugehörige Benutzer**. Die vier Token-Flags unten stehen nicht in der Oberfläche — sie kommen ausschließlich aus `api/config.yml`. + +![Projektverwaltung im tibi-admin: Projektliste mit Detail-Drawer zu Einstellungen, Team-Zuordnungen und zugehörigen Benutzern](../../../assets/admin/admin-projekt-rechte.webp) + Der Admin ruft Reload, Suchindex-Aufbau, Backup und Snapshots mit einem **Projekt-Token** auf. Welche dieser vier Operationen das Token darf, steuern vier Flags in `api/config.yml` (`admin.tokens[]`): diff --git a/src/content/docs/admin/ki-funktionen.md b/src/content/docs/admin/ki-funktionen.md index bb80623..cc1dce0 100644 --- a/src/content/docs/admin/ki-funktionen.md +++ b/src/content/docs/admin/ki-funktionen.md @@ -20,6 +20,10 @@ Die KI im **tibi-admin** (Verwaltungs-Backend, Release Nova) hilft dir beim Redi Was die KI dabei sieht (`aiController.ts`, `AiChat.svelte`): Neben dem UI-Snapshot hängt der Chat deine Aktionen außerhalb des Chats an die nächste Nachricht an (`[User actions performed outside of chat] … [User message] …`) und markiert die erste Nachricht mit `[lang=de]` (bzw. deiner Sprache). Manche Provider verlangen die Systemnachricht genau einmal vorn — deshalb wandern Aktionen in die Benutzer-Nachricht, nicht in eine zweite Systemnachricht. +Über das Menü neben **Nova** verwaltest du den **Chat-Verlauf**: **Neuer Chat** beginnt ein leeres Gespräch, darunter listet der Admin gespeicherte Konversationen. Der Verlauf liegt nur lokal im Browser (`localStorage`); ohne gespeicherte Gespräche steht dort **Noch keine Konversationen**. + +![Chat-Verlauf im tibi-admin: geöffneter Nova-Chat mit Verlaufsmenü, Neuer-Chat-Eintrag und Hinweis auf leere Konversationsliste](../../../assets/admin/admin-ki-verlauf.webp) + | Baustein | Datei | Aufgabe | |---|---|---| | Verlauf | `lib/aiChatHistory.ts` | Gespräche in `localStorage` (`tibi-ai-conversations`, weiches Limit ~4 MB, älteste zuerst raus) | diff --git a/src/content/docs/admin/konzept.md b/src/content/docs/admin/konzept.md index a83bfcd..4a2310d 100644 --- a/src/content/docs/admin/konzept.md +++ b/src/content/docs/admin/konzept.md @@ -5,14 +5,18 @@ description: Was tibi-admin ist, wie es läuft und wie es zum Server passt. import { Card, CardGrid } from '@astrojs/starlight/components'; -> **Handseite.** Wird vom Sync nie überschrieben (`keep`). - **tibi-admin** ist das Verwaltungs-Backend — die Bedienoberfläche zum Tibi-Server (aktuelles Release **Nova**). Code-Repo: `tibi-admin-nova` — das ist das einzig gültige Repo, alte `tibi-admin`-Repos werden ignoriert. Projekt-Websites (kleine Websites, Shops, Intranet-Anwendungen aus `tibi-svelte-starter`) sind eigenständig und laufen getrennt davon. -- Svelte-SPA als statisches Bundle, läuft lokal im Mock-Modus (Projekt `t1`) und in Staging/Live hinter Reverse Proxy gegen den echten tibi-server. +- Svelte-SPA als statisches Bundle, läuft lokal im Mock-Modus (Demo-Projekte wie `corporate`) und in Staging/Live hinter Reverse Proxy gegen den echten tibi-server. - Laufzeitwerte in `frontend/assets/system.config.json`, Proxy-Ziele/Modelle in `config/ai-proxy.config.json`. - Screens: `frontend/src/lib/components/admin/` (Hub, Orgs, Teams, User, Projekte) und `components/entry/` (Editor, Widgets, Drawers, Preview). +## Schnellsuche und Tastatur + +Die **Befehlspalette** öffnest du mit `/` (oder `Strg`/`Cmd` + `K`) — sie springt zu Sammlungen, Einträgen, Aktionen und Verwaltungsseiten, ohne dass du dich durch die Navigation klickst. `?` zeigt alle Tastenkürzel (Vollreferenz: [Tastatur und Schnellsuche](/reference/tastatur-kurzbefehle/)). + +![Befehlspalette im tibi-admin über Corporate Website: Suchfeld mit dem Hinweis „Befehl eingeben…", Trefferliste mit Navigation, Sammlungen und Aktionen](../../../assets/admin/admin-befehlspalette.webp) + ## Wo finde ich was? @@ -33,4 +37,4 @@ import { Card, CardGrid } from '@astrojs/starlight/components'; -Verifiziert am 2b091d8 2026-10-13 (tibi-admin-nova) +Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/admin/setup.md b/src/content/docs/admin/setup.md index 21339ca..055769e 100644 --- a/src/content/docs/admin/setup.md +++ b/src/content/docs/admin/setup.md @@ -65,7 +65,7 @@ Nützliche Ziele: `make docker-ps`, `make docker-logs`, `make docker-down`, `mak | Modus | Erkennen | Verhalten | |---|---|---| | Echter Server | `API_BASE` zeigt auf laufenden tibi-server | Alle Daten live; Login per Benutzername/Passwort | -| Mock-Modus | Kein Server erreichbar / Mock-Flag (`isMockMode()`) | Lokale Demo-Daten, Demo-Projekt `t1`; Actions simulieren Fortschritt (`simulateMockProgress`) | +| Mock-Modus | Kein Server erreichbar / Mock-Flag (`isMockMode()`) | Lokale Demo-Daten aus `frontend/assets/mock/` mit den Demo-Projekten (`corporate`, `blog`, `shop`, `events`, `intranet`); Actions simulieren Fortschritt (`simulateMockProgress`) | - Laufzeitwerte liegen in `frontend/assets/system.config.json` (KI-Endpunkte, TTS-Stimmen); Proxy-Ziele und Modelle in `config/ai-proxy.config.json` — siehe [KI-Funktionen](/admin/ki-funktionen/). - Fehlerbilder bei falscher Verbindung: Login-Fehlerbox, Netzwerkfehler bei Listen/Actions — dann `API_BASE`, Server-Container (`make docker-ps`) und [Token-Köpfe](/reference/token-koepfe/) prüfen. @@ -88,6 +88,12 @@ Stimmen (Schema-Enum): `eva-de` (Standard), `kerstin-de`, `ramona-de`; Tempo-Def Fehlt die Datei oder ist sie ungültig, fällt der Admin still auf die eingebauten Defaults zurück (`console.warn`, `runtime-system-config.ts:219-222`) — die Werte entsprechen der ausgelieferten `system.config.json`. Eigene Werte werden tief mit den Defaults verschmolzen (`deepMerge`) und danach sanitiert (unbekannte Engine → `auto`, leere Stimmenliste → Defaults, TTS-Tempo auf `min`/`max` geklemmt). +## Darstellung (Hell/Dunkel) + +Den Theme-Umschalter findest du rechts oben in der Kopfzeile (`ui/ThemeToggle.svelte`). Er zeigt als Tooltip **Hell** oder **Dunkel** — je nachdem, in welchen Modus du wechselst. Deine Wahl landet in `localStorage` (`tibi-theme`) und gilt schon vor dem ersten Zeichnen, damit nichts flackert. + +![Theme-Umschalter im tibi-admin: Kopfzeile mit Tooltip Dunkel zum Wechsel in den dunklen Modus](../../../assets/admin/admin-theme.webp) + ## Prüfen ```sh title="Build und Tests" diff --git a/src/content/docs/adr/0003-selbstlaeufer.md b/src/content/docs/adr/0003-selbstlaeufer.md index 7aef1e8..ada83da 100644 --- a/src/content/docs/adr/0003-selbstlaeufer.md +++ b/src/content/docs/adr/0003-selbstlaeufer.md @@ -4,6 +4,6 @@ description: Wie weiterentwickelnde Agenten die Doku automatisch mitpflegen. --- - **Datum:** 2026-10-16 -- **Kontext:** Tibi-Server, tibi-admin und Starter entwickeln sich weiter. Die Doku (57 Seiten, Stand 2026-10-16) soll nicht veralten. -- **Entscheidung:** Definition of Done für jede Änderung an API, Hooks, Collections, Permissions, Jobs, Realtime, LLM, MCP, Suche, Deploy oder Admin-UX: passende Doku-Seite aktualisieren + `Verifiziert am ` erneuern + `npm run sync && npm run build` grün. Screenshots nur aus Mock-Projekt `corporate` (nie `t1`), Auftrag unter `plans/t-shots-arbeitsauftrag.md`. Vollständigkeits-Tabelle in `plans/doku-ausbau.md` bei neuen Fähigkeiten erweitern (1 Fähigkeit = 1 Dokustelle). -- **Folgen:** Diese Regel in die Agenten-Regeln von `tibi-server`, `tibi-admin-nova` und `tibi-svelte-starter` spiegeln (jeweils `AGENTS.md`-Ergänzung, noch offen). CI in tibi-docs prüft Drift (Docs neuer als Sync, Schema-Feld ohne Widget-Doku). +- **Kontext:** Tibi-Server, tibi-admin und Starter entwickeln sich weiter. Die Doku (70 Seiten, Stand 2026-10-17) soll nicht veralten. +- **Entscheidung:** Definition of Done für jede Änderung an API, Hooks, Collections, Permissions, Jobs, Realtime, LLM, MCP, Suche, Deploy oder Admin-UX: passende Doku-Seite aktualisieren + `Verifiziert am <7-stelliger-hash> ()` erneuern + `node scripts/audit-docs.mjs && npm run build` grün (der frühere Server-Sync ist stillgelegt, siehe `AGENTS.md` §4). Screenshots nur aus Mock-Projekt `corporate` (nie `t1`), Auftrag unter `plans/t-shots-arbeitsauftrag.md`. Vollständigkeits-Tabelle in `plans/doku-ausbau.md` bei neuen Fähigkeiten erweitern (1 Fähigkeit = 1 Dokustelle). Für Schemas: `npm run gen:schemas` laufen lassen statt Werte abzuschreiben. +- **Folgen:** Diese Regel in die Agenten-Regeln von `tibi-server`, `tibi-admin-nova` und `tibi-svelte-starter` spiegeln (jeweils `AGENTS.md`-Ergänzung, noch offen). CI in tibi-docs prüft Drift: `scripts/audit-docs.mjs` (Links, Anker, Bilder, Tabellen, Stempel) und `npm run gen:schemas` müssen ohne Änderung durchlaufen. diff --git a/src/content/docs/anwender/anmelden.md b/src/content/docs/anwender/anmelden.md index 36517dc..6ff8b59 100644 --- a/src/content/docs/anwender/anmelden.md +++ b/src/content/docs/anwender/anmelden.md @@ -54,7 +54,9 @@ Führe höchstens drei Versuche durch und bitte danach deine Betreuung um ein ne ## Automatisches Sitzungsende -Bei längerer Inaktivität meldet dich tibi-admin automatisch ab. Es erscheint der Hinweis **Sitzung abgelaufen – bitte neu anmelden**. +Kurz vor dem automatischen Abmelden erscheint der Hinweis **Sitzung läuft ab** mit der Meldung „Du wirst wegen Inaktivität gleich automatisch abgemeldet.". Wähle **Angemeldet bleiben**, um weiterzuarbeiten, oder **Jetzt abmelden**, um die Sitzung sofort zu beenden. Reagierst du nicht, meldet dich tibi-admin automatisch ab und es erscheint der Hinweis **Sitzung abgelaufen – bitte neu anmelden**. + + diff --git a/src/content/docs/anwender/benutzer-teams.md b/src/content/docs/anwender/benutzer-teams.md index 874bb69..d944fe1 100644 --- a/src/content/docs/anwender/benutzer-teams.md +++ b/src/content/docs/anwender/benutzer-teams.md @@ -63,6 +63,10 @@ Gib keine Zugänge auf Zuruf frei und ändere keine Rechte eigenmächtig. Falsch Meldet sich der Support mit deinem Konto an, um dir zu helfen (Stellvertretung über **Als dieser Benutzer einloggen**), geschieht das ausschließlich nach Absprache mit dir oder deiner Teamleitung. Sprich ihn an, wenn du unsicher bist. Du musst dafür nichts einrichten. +Während der Stellvertretung zeigt ein Banner über der Seite **Eingeloggt als @Benutzername** mit dem Hinweis **Impersonation** und rechts die Schaltfläche **Zurück zur Administration**. Alles, was du in dieser Zeit tust, geschieht im Namen des vertretenen Kontos. Zum Beenden klickst du auf **Zurück zur Administration** (**Beenden**) und landest wieder in deiner eigenen Sitzung. + +![Stellvertretungsbanner Eingeloggt als mit Zurück zur Administration auf der Corporate Website](../../../assets/anwender/benutzer-stellvertretung.webp) + Was du über das Verwaltungs-Backend wissen musst, steht unter [Admin-Konzept](/admin/konzept/). Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova) diff --git a/src/content/docs/anwender/eintrag-bearbeiten.md b/src/content/docs/anwender/eintrag-bearbeiten.md index e54e63b..5470d74 100644 --- a/src/content/docs/anwender/eintrag-bearbeiten.md +++ b/src/content/docs/anwender/eintrag-bearbeiten.md @@ -49,6 +49,24 @@ Links steht das Formular, rechts stehen Zusatzinformationen. Arbeite die Felder Ein Verweis verbindet zwei Inhalte, beispielsweise eine Nachricht mit einem Bild aus [Bilder und Dateien](/anwender/medien/). Du wählst ihn im Fenster **Durchsuchen** und übernimmst ihn mit **Auswählen**. +Das Fenster **Einträge durchsuchen** listet alle Einträge der verknüpften Sammlung mit dem Suchfeld **Suche in Kollektion…**, Filter und der Umschaltung zwischen **Tabelle** und **Karten**. Bereits verknüpfte Einträge erscheinen als Chips und lassen sich über das Kreuz wieder **Entfernen**. + +![Auswahlfenster Einträge durchsuchen mit Journal-Liste, Autor-Chips und Trefferzähler](../../../assets/anwender/eintrag-fremdschluessel.webp) + +## Sprachen und Übersetzungen + +Arbeitet deine Sammlung mehrsprachig, wechselst du oben im Editor mit **DE** und **EN** (Tastenkürzel Strg + L) die Bearbeitungssprache. Jedes übersetzbare Feld zeigt daneben seinen Sprachstand an; über **Übersetzen** am Feld überträgst du den Text in die andere Sprache und prüfst ihn danach Zeichen für Zeichen. + +![Eintrag-Editor mit Sprachleiste DE EN und Übersetzen-Schaltflächen an den Feldern](../../../assets/anwender/eintrag-sprachen.webp) + +## Feldsuche und JSON-Ansicht + +In langen Formularen drückst du Strg + F (am Mac Cmd + F) und suchst im Fenster **Feld oder Wert suchen…** nach Feldnamen oder Inhalten; Enter springt zum Treffer. Über die Befehlspalette öffnest du **Eintrag als JSON bearbeiten**: Oben stehen die **Serververwaltete Felder** (nur lesbar), darunter der JSON-Text. Mit **Übernehmen** speicherst du, mit **Abbrechen** verwirfst du die Ansicht ohne Änderung. + +![Feldsuche mit Trefferliste nach Feldern und Sprachen](../../../assets/anwender/eintrag-feldsuche.webp) + +![Dialog Eintrag als JSON bearbeiten mit serververwalteten Feldern und JSON-Text](../../../assets/anwender/eintrag-json.webp) + ## Speichern und prüfen diff --git a/src/content/docs/anwender/lesen-suchen-filtern.md b/src/content/docs/anwender/lesen-suchen-filtern.md index 925c3ae..c8b22dd 100644 --- a/src/content/docs/anwender/lesen-suchen-filtern.md +++ b/src/content/docs/anwender/lesen-suchen-filtern.md @@ -53,6 +53,12 @@ Liefert die Suche keine Treffer, gehe wie folgt vor: ![Suche nach Operations mit einem Treffer in der Journal-Liste](../../../assets/anwender/lesen-suche.webp) +## Hinweis zum Suchindex + +Arbeitet deine Sammlung mit Hintergrundsuche, baut tibi-admin den **Suchindex** im Hintergrund auf. Solange Einträge offen sind, zeigt ein Hinweisbanner über der Liste „wird im Hintergrund aktualisiert" mit der Zahl der offenen Einträge. Du kannst normal weiterarbeiten; sobald der Zähler auf null steht, verschwindet das Banner von selbst. Über **Details ein-/ausblenden** siehst du den Stand je Sammlung, bei Problemen stößt **Neu aufbauen** den Aufbau erneut an. + + + ## Filtern und sortieren Filtern bedeutet: Du zeigst nur Einträge mit einer bestimmten Eigenschaft, beispielsweise einer Sprache. Sortieren bedeutet: Du änderst die Reihenfolge. diff --git a/src/content/docs/anwender/medien.md b/src/content/docs/anwender/medien.md index 6fdd37a..6482ce8 100644 --- a/src/content/docs/anwender/medien.md +++ b/src/content/docs/anwender/medien.md @@ -23,6 +23,10 @@ Bilder und Dateien liegen in einer eigenen Sammlung, meist Mediathek genannt. Vo In der **Medienvorschau** blätterst du mit **Vorheriges** und **Nächstes**. Schließe sie mit **Schließen**, um zum Raster zurückzukehren. +![Geöffnete Medienvorschau mit Dateiname, Zoom- und Navigationsschaltflächen](../../../assets/anwender/medien-lightbox.webp) + +Oben in der Vorschau stehen Position, Dateiname und Größe. Daneben findest du **Hereinzoomen** und **Herauszoomen** sowie **Bearbeiten**, **Herunterladen** und **In neuem Tab öffnen**. + ## Datei hochladen @@ -40,6 +44,10 @@ Titel und Beschreibung werden aus dem Dateinamen vorbefüllt. Prüfe sie und kor ![Hochladen einer Datei mit Fortschrittsanzeige in der Mediathek](../../../assets/anwender/medien-upload.webp) +Sobald du Dateien ablegst, gleitet unten die Warteschlange ein („0 von 1 hochgeladen") mit Dateiname und Größe. **Schnell-Upload** lädt sofort hoch, **Bearbeiten & hochladen** öffnet vorher den Dialog **Medieneintrag bearbeiten**. Über **Zurück zur Warteschlange** kehrst du jederzeit zur Übersicht zurück. + +![Upload-Warteschlange mit einer Datei, Schnell-Upload und Bearbeiten und hochladen](../../../assets/anwender/medien-warteschlange.webp) + Wird ein Upload abgelehnt, gehe wie folgt vor: @@ -80,6 +88,10 @@ Fehlt die Bildbeschreibung, erstellt die KI sie selbst („KI beschreibt das Bil ## Bild in einen Eintrag einbinden +Ist das Bild bereits verknüpft, zeigt das Feld die **Ausgewählte Medien** mit Vorschau, Titel und Beschreibung. Über das Stiftsymbol tauschst du das Bild aus (**Verknüpftes Medium bearbeiten**), über das Kreuz entfernst du die Verknüpfung (**Entfernen**). Noch ohne Bild wählst du über **Vorhandene durchsuchen** aus der Mediathek oder ziehst die Datei direkt auf das Feld (**Dateien hierher ziehen oder klicken**). + +![Titelbild-Feld mit Bildvorschau, Beschreibung sowie Bearbeiten- und Entfernen-Schaltflächen](../../../assets/anwender/medien-fremddatei.webp) + 1. Öffne den Eintrag, der das Bild benötigt.