Improve Tibi docs coverage and screenshot placement

This commit is contained in:
apairon committed 2026-10-18 09:36:37 +00:00
1 parent 7409bc2406
commit 15c1976c60
23 files changed
+417 -351

No files matched your search

+5 -58
View File
@@ -1,5 +1,5 @@
{
"generatedAt": "2026-10-17T14:20:17.865Z",
"generatedAt": "2026-10-17T19:58:49.510Z",
"stats": {
"files": 70,
"byDir": {
@@ -35,15 +35,7 @@
"src/content/docs/projekt/ssr-website.mdx",
"src/content/docs/reference/schema-properties.md"
],
"hollowMarkers": [
"src/content/docs/admin/exporte.mdx:37 Platzhalter",
"src/content/docs/anwender/seiten-bauen.mdx:45 Platzhalter",
"src/content/docs/einstieg/neues-projekt.mdx:26 Platzhalter",
"src/content/docs/einstieg/schnellstart.mdx:48 noch nicht",
"src/content/docs/einstieg/schnellstart.mdx:21 Platzhalter",
"src/content/docs/einstieg/was-ist-tibi.mdx:11 Platzhalter",
"src/content/docs/projekt/deploy.mdx:26 Platzhalter"
],
"hollowMarkers": [],
"t1Refs": [
"src/content/docs/adr/0003-selbstlaeufer.md"
],
@@ -90,54 +82,9 @@
"notInSidebar": [],
"sidebarMissing": []
},
"findings": [
{
"file": "src/content/docs/admin/exporte.mdx",
"kind": "hollow",
"msg": "Marker \"Platzhalter\": Stehen im Export-Dialog eigene Reiter **vor** dem Standard-Tab, hat das Projekt fertige Berichte in `collectio",
"line": 37
},
{
"file": "src/content/docs/anwender/seiten-bauen.mdx",
"kind": "hollow",
"msg": "Marker \"Platzhalter\": Die kleine Vorschau benötigt nach der Bildauswahl einen Moment. Ein Platzhalterbild ist in dieser Phase normal",
"line": 45
},
{
"file": "src/content/docs/einstieg/neues-projekt.mdx",
"kind": "hollow",
"msg": "Marker \"Platzhalter\": ## 2. Platzhalter und Starter-Reste",
"line": 26
},
{
"file": "src/content/docs/einstieg/schnellstart.mdx",
"kind": "hollow",
"msg": "Marker \"noch nicht\": - `project not found` → Projektdateien liegen da, aber das Projekt ist im laufenden tibi-server noch nicht reg",
"line": 48
},
{
"file": "src/content/docs/einstieg/schnellstart.mdx",
"kind": "hollow",
"msg": "Marker \"Platzhalter\": ## 2. Platzhalter ersetzen",
"line": 21
},
{
"file": "src/content/docs/einstieg/was-ist-tibi.mdx",
"kind": "hollow",
"msg": "Marker \"Platzhalter\": - **Projekt-Website (aus `tibi-svelte-starter` geklont):** eigenständige Website auf Tibi-Basis — normale klei",
"line": 11
},
{
"file": "src/content/docs/projekt/deploy.mdx",
"kind": "hollow",
"msg": "Marker \"Platzhalter\": Im Starter stehen Platzhalter (`__PROJECT_NAME__`, `_CUSTOMER_ID_`, `LIVE_URL=https://www`).",
"line": 26
}
],
"findings": [],
"summary": {
"total": 7,
"byKind": {
"hollow": 7
}
"total": 0,
"byKind": {}
}
}
+17
View File
@@ -14,6 +14,22 @@
"/mcp": "projekt/mcp-nutzen",
"/token/_scopes": "projekt/rechte-tokens",
"/version": "server/schnittstellen",
"/user": "reference/rest-system",
"/user/:id": "reference/rest-system",
"/project": "reference/rest-system",
"/project/:id": "reference/rest-system",
"/org": "reference/rest-system",
"/org/:id": "reference/rest-system",
"/team": "reference/rest-system",
"/team/:id": "reference/rest-system",
"/token": "reference/rest-system",
"/token/:id": "reference/rest-system",
"/_meta": "reference/rest-system",
"/_meta/user": "reference/rest-system",
"/_meta/project": "reference/rest-system",
"/_meta/org": "reference/rest-system",
"/_meta/team": "reference/rest-system",
"/_meta/token": "reference/rest-system",
"_/:project/_/admin/backup": "projekt/audit-backup",
"_/:project/_/admin/snapshots": "projekt/audit-backup",
"/_/:project/:collection/:id/:field": "projekt/abfragen-lesen",
@@ -158,6 +174,7 @@
"field-list.schema.json": "reference/schemas",
"field-meta.schema.json": "reference/schemas",
"image-filter.schema.json": "reference/schemas",
"embedding.schema.json": "server/konfiguration",
"openapi.schema.json": "reference/schemas",
"projections.schema.json": "reference/schemas",
"snapshot.schema.json": "reference/schemas"
+243 -238
View File
@@ -1,9 +1,9 @@
{
"generatedAt": "2026-10-17T02:32:47.546Z",
"generatedAt": "2026-10-17T19:48:49.848Z",
"categories": {
"routes": {
"total": 36,
"mapped": 36,
"total": 52,
"mapped": 52,
"openCount": 0,
"openItems": []
},
@@ -13,6 +13,195 @@
"openCount": 0,
"openItems": [],
"symbols": [
{
"symbol": "cache.clear",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.count",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.delete",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.get",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.has",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.set",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "db.count",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.create",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.delete",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.deleteMany",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.find",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.update",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.updateMany",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "fs.configDir",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": false
},
{
"symbol": "fs.copy",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.mkDir",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.readDir",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.readFile",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.remove",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.stat",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.writeFile",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "request",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_request.go",
"hasArgs": false
},
{
"symbol": "response.flush",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_response.go",
"hasArgs": false
},
{
"symbol": "response.header",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_response.go",
"hasArgs": false
},
{
"symbol": "response.write",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "response.writeHeader",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "response.writeSSE",
"page": "reference/hooks-daten",
"stufe": 1,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "base64.decode",
"page": "reference/hooks-meta",
@@ -41,48 +230,6 @@
"goFile": "context_bcrypt.go",
"hasArgs": true
},
{
"symbol": "cache.clear",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.count",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.delete",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.get",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.has",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "cache.set",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_cache.go",
"hasArgs": true
},
{
"symbol": "channel.send",
"page": "reference/hooks-netze",
@@ -160,55 +307,6 @@
"goFile": "context_crypto.go",
"hasArgs": true
},
{
"symbol": "db.count",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.create",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.delete",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.deleteMany",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.find",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.update",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "db.updateMany",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_db.go",
"hasArgs": true
},
{
"symbol": "debug.dump",
"page": "reference/hooks-meta",
@@ -237,62 +335,6 @@
"goFile": "context_exec.go",
"hasArgs": true
},
{
"symbol": "fs.configDir",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": false
},
{
"symbol": "fs.copy",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.mkDir",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.readDir",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.readFile",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.remove",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.stat",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "fs.writeFile",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_fs.go",
"hasArgs": true
},
{
"symbol": "http.fetch",
"page": "reference/hooks-netze",
@@ -398,48 +440,6 @@
"goFile": "context_ratelimit.go",
"hasArgs": true
},
{
"symbol": "request",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_request.go",
"hasArgs": false
},
{
"symbol": "response.flush",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": false
},
{
"symbol": "response.header",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": false
},
{
"symbol": "response.write",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "response.writeHeader",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "response.writeSSE",
"page": "reference/hooks-daten",
"stufe": 4,
"goFile": "context_response.go",
"hasArgs": true
},
{
"symbol": "smtp.sendMail",
"page": "reference/hooks-netze",
@@ -486,188 +486,188 @@
{
"symbol": "action_call",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "action_describe",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "actions_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "agent_guide_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "asset_read",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "assets_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "audit_query",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "backup_create",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "collection_describe",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "collections_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "document_create",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "document_delete",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "document_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "document_update",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "documents_count",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "documents_facet",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "documents_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "file_read",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "jobs_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "openapi_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "org_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "orgs_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "project_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "project_reload",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "projects_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "queue_status",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "regenerate_search",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "snapshots_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "system_meta_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "team_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "teams_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "user_create",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "user_delete",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "user_get",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "user_update",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
},
{
"symbol": "users_list",
"page": "projekt/mcp-nutzen",
"stufe": 2
"stufe": 1
}
]
},
"schemas": {
"total": 16,
"mapped": 16,
"total": 17,
"mapped": 17,
"openCount": 0,
"openItems": []
},
@@ -686,31 +686,31 @@
},
"depth": {
"routes": {
"total": 36,
"total": 52,
"stufe4": 0,
"stufe3": 0,
"stufe2": 36,
"stufe2": 52,
"stufe1": 0
},
"contexts": {
"total": 66,
"stufe4": 66,
"stufe4": 39,
"stufe3": 0,
"stufe2": 0,
"stufe1": 0
"stufe1": 27
},
"tools": {
"total": 36,
"stufe4": 0,
"stufe3": 0,
"stufe2": 36,
"stufe1": 0
"stufe2": 0,
"stufe1": 36
},
"schemas": {
"total": 16,
"total": 17,
"stufe4": 0,
"stufe3": 0,
"stufe2": 16,
"stufe2": 17,
"stufe1": 0
},
"components": {
@@ -784,6 +784,11 @@
"uploadPath"
],
"defs.schema.json": [],
"embedding.schema.json": [
"goldenPath",
"groups",
"providers"
],
"field-list.schema.json": [],
"field-meta.schema.json": [
"addElementLabel",
+15 -18
View File
@@ -1,6 +1,6 @@
# Doku-Ausbau: Plan und Status
Lebendes Dokument. Der Orga-Agent (Agent Warpfuchs) aktualisiert Status, Sessions und Second-Opinion-Ergebnisse nach jedem Schritt. Stand: 2026-10-16.
Lebendes Dokument. Der Orga-Agent aktualisiert Status, Sessions und Second-Opinion-Ergebnisse nach jedem Schritt. Stand: 2026-10-17.
## Regeln (kurz)
@@ -23,22 +23,21 @@ Lebendes Dokument. Der Orga-Agent (Agent Warpfuchs) aktualisiert Status, Session
| T-ADMIN-B Admin II | aktionen, benutzer-rechte, ki-funktionen, setup, customizing | general ses_ebad2bf8affeZ9uV0HzJf2k357 | ✅ fertig | ✅ SO eingearbeitet (Test-Pläne 40/42 verlinkt, Widget-Enum klargestellt, toter Anker gefixt) | Build + Links ✅ |
| T-ANW-A Anwender I | anmelden, orientierung, lesen-suchen-filtern, eintrag-bearbeiten, medien | general ses_ebad2bf77ffeQm3uhj279Qrc09 | ✅ fertig | ✅ SO eingearbeitet (/ statt Strg+K, „Dateien hinzufügen", Tabelle statt Zeilen, Duplikat-Aside) | Build + Links ✅ |
| T-ANW-B Anwender II | seiten-bauen, benutzer-teams, exportieren, sichern, hilfe | general ses_ebad2bf75ffezS1KTRTQDO5GT5 | ✅ fertig | ✅ SO eingearbeitet (Snapshot-Reiter, „Exportieren", Benutzerverwaltung, echte Fehltexte) | Build + Links ✅ |
| T-ADMIN-B Admin II | aktionen, benutzer-rechte, ki-funktionen, setup, customizing | – | ⏳ offen | ⏳ | Build + Links |
| T-ANW-A Anwender I | anmelden, orientierung, lesen-suchen-filtern, eintrag-bearbeiten, medien | – | ⏳ offen | ⏳ | Build + Links |
| T-ANW-B Anwender II | seiten-bauen, benutzer-teams, exportieren, sichern, hilfe | – | ⏳ offen | ⏳ | Build + Links |
| T-SHOTS Screenshots | `src/assets/anwender/*` NUR aus Mock-Projekt `corporate` (nie `t1`!), Auftrag: `plans/t-shots-arbeitsauftrag.md` | general ses_ebac0c7feffed3DYtWznC2bqzJ | ✅ fertig — Stand 17.10.: 49 webp (40 Anwender, 9 Admin), <200 KB | ✅ Text-Abweichungen eingearbeitet (Live-Schalter, OK-Button, Reiter, Corporate-Blöcke) | Build + Links ✅ |
| T-SHOTS Screenshots | `src/assets/{anwender,admin}/*` NUR aus Mock-Projekt `corporate` (nie `t1`!), Auftrag: `plans/t-shots-arbeitsauftrag.md` | general ses_ebac0c7feffed3DYtWznC2bqzJ | ✅ fertig — Stand 17.10.: 66 WebP (49 Anwender, 17 Admin), <200 KB; 2 nicht darstellbare Motive kommentiert | ✅ Text-Abweichungen eingearbeitet (Live-Schalter, OK-Button, Reiter, Corporate-Blöcke) | Build + Links ✅ |
| T-PROJ-D Vollständigkeit | pagebuilder-dev, mcp-nutzen (36 Tools), llm-nutzen | general ses_ebac0c804ffe9vElWvaKTju4H9 | ✅ fertig | ✅ SO eingearbeitet (REST-only: sieben statt fünf) | Build + Links ✅ |
| T-FINISH Finish | index-Karten, uebersicht/konzept-Stempel, Voll-Linkcheck, AGENTS-Spiegelung | Orga (direkt) | ✅ fertig (v1) | — (Linkcheck: alle ok, 0 Hüllen, ADR-0003 angelegt) | Build 71 Seiten ✅ (Stand 17.10.) |
| T-PB Pagebuilder komplett | pagebuilder-dev + seiten-bauen: Overlay-Editor, Modi, Viewport, Overview/inline, drillDown | general ses_eb9584bafffekRtyPPBn7ORTeA | ✅ fertig | ✅ SO eingearbeitet (OK/blur-Pfad, <768-px-Hinweis) | Build + Links ✅ |
| T-TON Ton-Rewrite | alle 10 anwender-Seiten: professionell-per-du, UI-Namen aus de.json | general ses_eb95443a5ffe8IrJVmt1DcAReX | ✅ fertig | ✅ SO eingearbeitet („Bild hochladen", Sitzungs-Hinweis, Live-Qualifier, KI-Beschreibung, Browser-Zurück) | Build + Links ✅ |
| T-SHOTS-2 Pagebuilder-Shots | Overlay + Viewport (corporate), Einbau in seiten-bauen | general ses_eb9503e20ffetq8gZU0Ff5U06T | ✅ fertig (3 webp, Icon-Tooltip korrigiert) | ✅ Abweichung eingearbeitet | Build ✅ |
| T-COV Coverage-Inventar | Skript + Map: Routen, Kontexte, Tools, Schemas, Komponenten, Test-Pläne | general ses_eb9584ba6ffeUrQq7fowAHlPXO | ✅ fertig (282/282 gemappt, 0 OFFEN) | ⏳ Map v1 = Topic-Level bei ui/*, Verifikation folgt | `npm run coverage` grün |
| T-COV Coverage-Inventar | Skript + Map: Controller- und System-Routen, Kontexte, Tools, Schemas, Komponenten, Test-Pläne | general ses_eb9584ba6ffeUrQq7fowAHlPXO | ✅ 341/341 zugeordnet (Zuordnung ist kein Tiefennachweis) | ✅ Map v1; Tiefe siehe `plans/coverage-report.json` | `npm run coverage` grün |
Legende: ⏳ offen · 🔄 läuft (Session-ID) · 👀 Review/SO läuft · ✅ fertig.
## Vollständigkeit: Was ist wo abgedeckt (100-%-Ziel)
Der T-REF-Eintrag hält den damaligen Second-Opinion-Stand fest (16 Schemas). Das nachträglich ergänzte `embedding.schema.json` ist inzwischen in der aktuellen Fähigkeitsmatrix enthalten; Gesamtbestand: 17 Schemas.
Jede Fähigkeit von tibi-server / tibi-admin braucht genau eine Dokustelle. Der Orga-Agent prüft diese Tabelle vor T-FINISH Zeile für Zeile.
## Fähigkeitszuordnung: Was ist wo abgedeckt
Jede Fähigkeit von tibi-server / tibi-admin braucht genau eine Dokustelle. Die Zuordnung zeigt den passenden Ort, beweist aber nicht, dass jedes Verhalten in voller Tiefe beschrieben ist. Dafür sind Coverage-Tiefenstufen und fachliche Reviews getrennt zu betrachten.
### tibi-server (`internal/*`)
@@ -87,7 +86,7 @@ Jede Fähigkeit von tibi-server / tibi-admin braucht genau eine Dokustelle. Der
| Baustein | Dokustelle | Status |
|---|---|---|
| 16 Schemas (project, collection, field, hooks, permissions, job, action, snapshot, ...) | reference/schemas + je Projekt-Seite | ✅ |
| 17 Schemas (project, collection, field, hooks, permissions, job, action, snapshot, embedding, ...) | reference/schemas + je Projekt-Seite | ✅ |
| Starter-Skill (Platzhalter, Registrierung, Pfad A/B) | einstieg/schnellstart + einstieg/neues-projekt | ✅ |
| Mock-Projekte (corporate/shop/blog/intranet/events/t1) | plans/t-shots-arbeitsauftrag.md (corporate für Shots) | ✅ |
@@ -143,7 +142,7 @@ Kontrollen: Depth-Gate im Skript (gemapptes Item < Stufe Signatur = Fail), Blind
- [x] Abschlussmeldung an User
- [x] Stil-Guide professionell-per-du in AGENTS.md (§1)
- [x] T-PB Ergebnis + Build + Second Opinion
- [x] T-COV Inventar + Map, Lückenzahl steht (282/282, 0 OFFEN — Map v1 Topic-Level bei ui/*)
- [x] T-COV Inventar + Map v1 erstellt; UI-Einträge waren zunächst Topic-Level, Tiefenstufen wurden danach ergänzt
- [x] T-TON gestartet (alle 10 Anwender-Seiten)
- [x] T-TON Ergebnis + Build + Second Opinion
- [x] T-SHOTS-2 gestartet (Overlay + Viewport, corporate)
@@ -157,14 +156,12 @@ Kontrollen: Depth-Gate im Skript (gemapptes Item < Stufe Signatur = Fail), Blind
- [x] P-HOOKS-1 gestartet (Muster-Los Daten)
- [x] P-HOOKS-1 Ergebnis + Blind-Read + SO (27 Symbole Stufe 4, Scanner per-###, Zitat-Regel)
- [x] P-HOOKS-2 bis 5 parallel gestartet (nur Kapitel-Dateien, Shared-Edits beim Orga)
- [ ] Lose 2-5 eingetroffen: Sidebar + Index-Links + Map-Umtrag (Orga), Build, SO-Spotcheck
- [ ] Blind-Read-Test über alle 5 Kapitel (Mini-Hook nur aus Doku)
- [x] Lose 2-5 eingetroffen: Sidebar + Index-Links + Map-Umtrag (Orga), Build, SO-Spotcheck
- [x] Blind-Read-Test über alle 5 Kapitel (Mini-Hook nur aus Doku)
- [x] P-MCP-D + P-LLM-D + P-UI-D starten
- [x] Abschlussmeldung Runde 3 an User
- [ ] Abschlussmeldung Runde 3 an User
- [ ] Offen an tibi-server: Typo `reponse.header` im Server-Code (`context_response.go`, von Doku wörtlich zitiert) → Issue
- [ ] Offen an tibi-admin-nova: totes `u`-Kürzel (`toggleUsers`-Key fehlt in `de.json`, nur Akkord `g → u` funktioniert) → Issue
- [ ] Abschlussmeldung Runde 3 an User
- [x] Issue zu `reponse.header` im Server-Code angelegt: tibi-server #44
- [x] Issue zum `toggleUsers`-Kürzel angelegt: tibi-admin-nova #5
## Runde 4 — Audit und Umsetzung (2026-10-17)
@@ -178,7 +175,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) |
| G | Screenshot-Nachtrag: restliche UI-Bereiche (8 Anwender + 9 Admin + Befehlspalette) | ✅ (66 Bilder gesamt) |
| F | P8 Meta (AGENTS.md, Werkzeuge, Issues) | ✅ |
| — | P9 Repo-Hygiene: 5 Alt-Kopien gelöscht (~6,1 GB), 6 mit unpushed Commits behalten | ✅ |
| H | Ton: Fehlerabschnitte auf Handbuch-Sprache (Regel in AGENTS.md §1, 12 Anwender-Seiten + 5 Stellen) | ✅ |
@@ -189,6 +186,6 @@ Vollständige Prüfung von Code und Doku, dann Abarbeitung in Wellen. Übersicht
`scripts/gen-schema-matrix.mjs` (`npm run gen:schemas` → `reference/schema-properties.md`).
**Neue Seiten:** `projekt/feld-rechte`, `reference/rest-system`, `reference/schema-properties`,
`projekt/tests`, `anwender/{verlauf-wiederherstellen,massenbearbeitung,aktionen,backup-einspielen,tastenkombinationen}`.
**Stand:** 70 Inhaltsseiten, 49 Screenshots, Build grün, Audit: 0 tote Links, 0 kaputte Tabellen.
**Stand:** 70 Inhaltsseiten, 66 Screenshots (49 Anwender, 17 Admin), Build grün, Audit: 0 tote Links, 0 kaputte Tabellen.
**Offen:** Issues für die Nachbar-Repos (`plans/offene-issues.md`), Löschkandidaten `tibi-docs-legacy`,
`tibi-docs-kaputt`, `tibi-admin.bak*`, `tibi-server.bak` (Freigabe), Coverage v2 (Funktionskörnung).
+62
View File
@@ -0,0 +1,62 @@
# Aktuelle Doku-Prüfung: tibi-server und tibi-admin
**Stand:** 2026-10-17
**Umfang:** `tibi-server`, `tibi-admin-nova` und die dazugehörigen Seiten, Screenshots und Prüfpläne in `tibi-docs`.
**Ziel:** Restlücken, Darstellungsfehler und konkrete Verbesserungen nachvollziehbar prüfen und abarbeiten.
## Ergebnis in Kürze
Die Dokumentation ist umfangreich und deckt die zentralen Entwickler-, Betreiber-, Admin- und Anwenderabläufe ab. Die alten Auditlisten sind aber nicht überall auf dem aktuellen Stand: die Server-Systemrouten, Meta-Routen, Upload-Allowlist, Suchaggregate, Token-Scopes und Embedding-Gruppen sind inzwischen dokumentiert. Die Screenshots liegen überwiegend an der passenden Stelle. Zwei UI-Motive bleiben bewusst offen, weil sie sich mit dem erlaubten Mock-Projekt nicht erzeugen lassen.
„Alles erfasst“ lässt sich aus dem Coverage-Inventar allein nicht ableiten: Das Inventar ordnet 341 Elemente einer Doku-Seite zu, misst aber keine vollständige Verhaltenstiefe. Im aktuellen Report erreichen die Hook-Funktionen Stufe 4; Routen, MCP-Werkzeuge, Schemas, Komponenten und Test-Pläne stehen auf Zuordnungsstufe 2.
## Befunde und Abarbeitung
### Sprache und UI-Bezeichnungen
- [x] **Startseite verwendete die unpersönliche „man“-Form.** `src/content/docs/index.mdx` sagt jetzt „wie du damit baust“.
- [x] **„Schnellsuche“ als UI-Name entfernt.** Seitentitel, Überschrift und Querverweis heißen jetzt „Befehlspalette“. Der Suchbegriff bleibt nur als Alias in der Referenz.
### Struktur und Prüfbarkeit
- [x] **Lebenden Ausbauplan aktualisiert.** Veraltete Screenshot-/Coverage-Zahlen, doppelte offene Pakete und alte Abschluss-Checkboxen wurden bereinigt; Umfang und Tiefenhinweis sind aktualisiert.
- [x] **Struktur-Auditor präzisiert.** Er sucht jetzt nach konkreten redaktionellen Markern, nicht nach legitimen Begriffen wie „Platzhalter“ oder „noch nicht“.
- [x] **Coverage-Zuordnung als Zuordnung gekennzeichnet.** `plans/doku-ausbau.md` trennt Mapping von vollständiger Verhaltenstiefe.
- [x] **Embedding-Schema ergänzt.** `embedding.schema.json` ist im Coverage-Inventar zugeordnet, in die generierte Property-Referenz aufgenommen und in der Schema-Liste als Serverkonfiguration eingetragen.
- [x] **Schema-Zähler berichtigt.** Der Generator und die ausgegebene Referenz nannten noch 16 statt 17 Schemas; beide Angaben sind nun konsistent.
- [x] **Schema-Zähler in der Fähigkeitsmatrix berichtigt.** Die aktuelle Liste nennt 17 Schemas einschließlich `embedding`; die historische Prüfnachricht vermerkt den alten Stand 16.
- [x] **Stand des Ausbauplans aktualisiert.** Die Kopfzeile nennt jetzt den aktuellen Prüftag.
### Screenshots und Oberflächen
- [x] **Bestand geprüft:** Bilder unter `assets/admin/` und `assets/anwender/` liegen in den passenden Ordnern, haben Alt-Texte und sind kleiner als 200 KB. Keine UI-Aufnahme ist verwaist; Branding-Dateien sind keine Screenshots.
- [x] **Platzierung korrigiert:** Sieben Admin-Screenshots standen erst nach Fehlerabschnitten oder am Seitenende. Die sieben unterschiedlichen Dateien stehen jetzt bei ihren Themen: `admin-filter-voice` (Listenfilter/Mikrofon), `admin-medien` (Bildeditor), `admin-exporte` (Export-Dialog), `admin-eintrags-editor` (Pagebuilder-Editor), `admin-ki-funktionen` (Mikrofon im Chat), `admin-benutzer-rechte` (Benutzerverwaltung) und `admin-customizing` (eigene Exporte).
- [x] **Offene Motive bewertet:** Sitzungshinweis und Suchindex-Hinweisbanner bleiben als redaktionelle Notiz stehen, weil sie im erlaubten Mock-Projekt `corporate` nicht erzeugbar sind. Es gibt keinen Ersatz durch `t1` oder erfundene UI-Zustände.
- [x] **Mock-Änderungen berücksichtigt:** Die Referenzseiten für Aktionen und Custom-Exporte nennen den `corporate`-Mock-Commit `bff84be6`. Die uncommittete Änderung an der Suchindex-Anzeige blieb unangetastet.
### Abgleich mit den Quell-Repositories
- [x] **Veraltete Audit-Befunde gegen den aktuellen Seitenbestand geprüft.** REST-Systemrouten, `_meta`, Upload-MIME-Allowlist, Aggregation, Token-Scopes und Embedding-Gruppen haben aktuelle Dokustellen.
- [x] **Aktuelle Arbeitskopie des Admin-Repos beachtet.** `SearchIndexBuildNotice.svelte` ist lokal geändert. Die Änderung betrifft das Polling bei nicht verfügbaren Sammlungen; sie ist nicht Teil des Commits und wurde nicht überschrieben.
## Arbeitsprotokoll
| Punkt | Ergebnis / Beleg |
|---|---|
| Quellstände | `tibi-server` HEAD `88118b8e`; `tibi-admin-nova` HEAD `bff84be6`. Admin-Arbeitskopie hat zusätzlich eine uncommittete Änderung an `SearchIndexBuildNotice.svelte`. |
| Coverage | Inventar um die 16 unterschiedlichen System-CRUD- und Meta-Pfadformen erweitert; das bisherige `setup.go`-Inventar ließ die DB-API-Routen aus. |
| Coverage-Schema | `embedding.schema.json` war das einzige nicht zugeordnete Schema; es ist nun `server/konfiguration` zugeordnet. |
| Abschlusstests | Coverage 341/341, Schema-Generator 17 Schemas/167 Properties und idempotent, Build 71 Seiten, Doku-Audit 0 Findings. |
| Review | Erstreview fand einen kosmetischen P2 zum Schema-Zähler; Generator und Ausgabe wurden korrigiert. Finalreview bestätigte danach keine offenen P1-/P2-Befunde sowie Screenshot-, Quellen- und Coverage-Angaben. |
| Server-Lücken gegengeprüft | System-CRUD und `_meta`: `reference/rest-system.mdx`; Upload-MIME-Regeln: `server/konfiguration.mdx`; Aggregation: `projekt/abfragen-lesen.mdx`; Token-Scopes: `projekt/rechte-tokens.mdx`; Embedding-Gruppen: `server/konfiguration.mdx` und `server/betrieb.mdx`. |
| Screenshot-Bestand | 67 Bildplatzierungen, 66 eindeutige WebP-Dateien: 17 Admin- und 49 Anwender-Bilder. Alle liegen im passenden Unterordner, haben Alt-Text und sind kleiner als 200 KB. `favicon.svg` und `admin-nova.png` sind keine UI-Screenshots. `seiten-bloecke.webp` wird in zwei passenden Abschnitten derselben Anwender-Seite wiederverwendet. |
| Screenshot-Platzierung | Sieben unterschiedliche Admin-Bilder an die thematisch passenden Abschnitte verschoben. Listen-Mikrofon (`admin-filter-voice`) und Chat-Mikrofon (`admin-ki-funktionen`) sind getrennte Screenshots; Anwender-Bilder standen bereits neben den zugehörigen Schritten. |
| Offene Screenshot-Motive | `anwender/anmelden.mdx`: Inaktivitätsdialog im Mock deaktiviert. `anwender/lesen-suchen-filtern.mdx`: Corporate-Mock hat keine Suchkonfiguration, die das Queue-Banner auslösen könnte. Beides bleibt als Kommentar markiert. |
## Abschluss
- [x] `npm run coverage` weist alle 341 inventarisierten Elemente zu.
- [x] `npm run gen:schemas` erzeugt 17 Schemas mit 167 Properties idempotent.
- [x] `npm run build` ist erfolgreich (71 Seiten).
- [x] `node scripts/audit-docs.mjs` meldet 0 Findings, keine defekten Links, Anker, Bilder, Tabellen oder MDX-Komponenten.
- [x] Änderungen wurden von einem unabhängigen Reviewer geprüft; keine P1-/P2-Befunde.
+1 -1
View File
@@ -41,7 +41,7 @@ Verbindlich für den Agenten, der T-SHOTS ausführt. Stand: 2026-10-16.
## Bewusst offene Motive (Hinweise für spätere Runden)
Stand 2026-10-17: Alle Anwender- und Admin-Seiten haben mindestens ein Bild (66 Bilder, alle aus
`corporate`). Zwei Motive sind **im Mock nicht darstellbar** und bleiben als Kommentar-Hinweis in der
`corporate`; Aktionen/Exporte im Mock seit `tibi-admin-nova` bff84be6). Zwei Motive sind **im Mock nicht darstellbar** und bleiben als Kommentar-Hinweis in der
jeweiligen Seite stehen — bitte nicht „irgendwie" aus `t1` oder einem anderen Projekt erzeugen:
| Seite | Motiv | Grund (am Code belegt) |
+13 -6
View File
@@ -234,7 +234,8 @@ for (const f of files) {
stats.asciiUmlauts.push(rel(f));
if (/(?:waehl|einstell(?:ung)?en?|benutz(?:er)?|sc(?:h)luessel)/i.test('') ) {} // noop
// Hüllen-Reste (nur Fließtext — in Codeblöcken sind „Platzhalter"/„TODO" legitime Beispieltexte)
// Hüllen-Reste (nur konkrete Redaktionsmarker; Fachbegriffe wie „Platzhalter"
// und gültige Zustandsbeschreibungen wie „noch nicht registriert" sind kein Befund.)
const proseText = (() => {
const out = [];
let f = false;
@@ -244,14 +245,20 @@ for (const f of files) {
}
return out.join('\n');
})();
['Für spätere Agenten', 'TODO', 'FIXME', 'noch nicht', 'Hülle', 'Platzhalter', 'TBD', 'WIP']
.forEach((k) => {
const idx = proseText.indexOf(k);
[
{ label: 'Für spätere Agenten', pattern: /Für spätere Agenten/i },
{ label: 'TODO/FIXME/TBD/WIP', pattern: /\b(?:TODO|FIXME|TBD|WIP)\b/i },
{ label: 'Hülle', pattern: /\bHülle\b/i },
{ label: 'unersetzter Platzhalter-Vermerk', pattern: /\bStand\s*:\s*Platzhalter\b/i },
].forEach(({ label, pattern }) => {
const match = pattern.exec(proseText);
if (!match) return;
const idx = match.index;
if (idx < 0) return;
const line = proseText.slice(0, idx).split(/\r?\n/).length;
const ctx = proseText.split(/\r?\n/)[line - 1]?.trim().slice(0, 110) ?? '';
add(f, 'hollow', `Marker "${k}": ${ctx}`, line);
stats.hollowMarkers.push(`${rel(f)}:${line} ${k}`);
add(f, 'hollow', `Marker "${label}": ${ctx}`, line);
stats.hollowMarkers.push(`${rel(f)}:${line} ${label}`);
});
// Verbotene Namen
+13 -1
View File
@@ -43,7 +43,7 @@ function warn(msg) {
console.error(`WARN: ${msg}`);
}
/** 1. Routen: apiGroup.GET/POST/PUT/DELETE("pfad") + adm.* + OPTIONS aus setup.go, Duplikate raus. */
/** 1. Routen: Controller-Routen aus setup.go plus System-CRUD/Meta-Routen aus dbapi/register.go. */
function collectRoutes() {
const file = path.join(SERVER_ROOT, "internal", "controller", "setup.go");
if (!existsSync(file)) {
@@ -60,6 +60,18 @@ function collectRoutes() {
let m;
while ((m = re.exec(src)) !== null) found.add(m[m.length - 1]);
}
// RegisterModel erzeugt für diese Modelle GET/POST auf der Collection-Route
// sowie GET/PUT/DELETE auf der :id-Route. AddMetaRoute erzeugt _meta und
// eine /_meta/<modell>-Route je registriertem Modell. Diese Routen liegen
// in dbapi/register.go und waren im bisherigen setup.go-only-Inventar weg.
const models = ['user', 'project', 'org', 'team', 'token'];
for (const model of models) {
found.add(`/${model}`);
found.add(`/${model}/:id`);
}
found.add('/_meta');
for (const model of models) found.add(`/_meta/${model}`);
return [...found].sort();
}
+4 -3
View File
@@ -36,13 +36,14 @@ function sourceStamp() {
}
}
// Feste Liste: genau diese 16 Schemas erwartet der Generator.
// Feste Liste: genau diese 17 Schemas erwartet der Generator.
const SCHEMAS = [
'action.schema.json',
'asset.schema.json',
'collection-meta.schema.json',
'collection.schema.json',
'defs.schema.json',
'embedding.schema.json',
'field-list.schema.json',
'field-meta.schema.json',
'field.schema.json',
@@ -239,10 +240,10 @@ function effectiveSchema(file, schema) {
const out = [];
out.push('---');
out.push("title: 'Schema-Properties (generiert)'");
out.push("description: 'Alle Properties aller 16 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'");
out.push("description: 'Alle Properties aller 17 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'");
out.push('---');
out.push('');
out.push('Diese Seite listet die Properties aller 16 Config-Schemas aus `tibi-types/schemas/config/`.');
out.push('Diese Seite listet die Properties aller 17 Config-Schemas aus `tibi-types/schemas/config/`.');
out.push('');
out.push('> Generiert, nicht von Hand editieren — neu erzeugen mit `npm run gen:schemas`.');
out.push('');
+1 -1
View File
@@ -120,4 +120,4 @@ Klick-Abläufe dazu stehen im Test-Plan `docs/test-plans/40-actions.md` (Methode
Anwender-Sicht zum Starten einer Aktion: [Aktionen ausführen](/anwender/aktionen/).
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); `execution`-Abschnitt verifiziert am 4c55f82 (tibi-types: action.schema.json:274-288, 401-403), am 2b091d8 (ActionView.svelte:260-295, 350-382)
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); `execution`-Abschnitt verifiziert am 4c55f82 (tibi-types: action.schema.json:274-288, 401-403), am 2b091d8 (ActionView.svelte:260-295, 350-382); Screenshot-Mock verifiziert am bff84be6 2026-10-17 (tibi-admin-nova: corporate/actions/reindex-search.yml)
+2 -2
View File
@@ -67,6 +67,8 @@ Manche Sammlungen haben Reiter über der Liste (`meta.subNavigation`, z. B. `?su
</TabItem>
</Tabs>
![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)
## Mehrfachauswahl und Tastatur
- Auswahl per Checkbox, `Leertaste` oder `a` (alle umschalten). Pfeiltasten bewegen den Fokus, `Enter` öffnet den Eintrag.
@@ -101,8 +103,6 @@ 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: 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/).
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova)
+2 -2
View File
@@ -51,6 +51,8 @@ Der Org-Drawer zeigt **Einstellungen** (**Name**, **Branche**, **Ort**, **Websit
</Steps>
![Benutzerverwaltung im tibi-admin: Benutzerliste mit Rollen-Badges und Team-Chips, rechts der geöffnete Detail-Drawer mit Rollenauswahl und Organisations-Zuordnung](../../../assets/admin/admin-benutzer-rechte.webp)
## Rollen und Chips
<Badge text="role: 0" variant="tip" /> <Badge text="role: 1" variant="note" />
@@ -151,8 +153,6 @@ Stellvertretung nur mit Freigabe nutzen — du handelst mit den Rechten der vert
| Token-Bereich leer | Server ohne Token-Feature (`404`) | Normal — kein Fehler, Bereich bleibt verborgen |
| `permission denied` | Kopf oder Recht falsch | [Token-Köpfe](/reference/token-koepfe/) und Chips prüfen |
![Benutzerverwaltung im tibi-admin: Benutzerliste mit Rollen-Badges und Team-Chips, rechts der geöffnete Detail-Drawer mit Rollenauswahl und Organisations-Zuordnung](../../../assets/admin/admin-benutzer-rechte.webp)
Klick-Abläufe zur Stellvertretung stehen im Test-Plan `docs/test-plans/42-impersonation.md` (Auslöser, Bestätigungsdialog, Banner, Rückkehr zur Admin-Sitzung — nur im Mock-Modus testen).
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); Projekt-Admin-Token verifiziert am 4c55f82 (tibi-types: project.schema.json:227-261), am 68b4278 (tibi-server: models/project.go:116-120)
+3 -3
View File
@@ -71,11 +71,11 @@ Volle Kontext-Tabelle in der Repo-Doku `custom-export-script.md`; Bedienung unte
</TabItem>
</Tabs>
![Angepasste Listenansicht im tibi-admin: Seitenliste mit Filter-Reitern und geöffnetem Export-Dialog mit den eigenen Export-Reitern Seiten-Report und Seiten-CSV](../../../assets/admin/admin-customizing.webp)
<Aside type="caution">
Anpassungen an Sammlungs-Config und Skripten erst im lokalen Stack ([einrichten](/admin/setup/)) testen — falsche `meta`-Einträge blenden Ansichten oder Export-Reiter ersatzlos aus.
</Aside>
![Angepasste Listenansicht im tibi-admin: Seitenliste mit Filter-Reitern und geöffnetem Export-Dialog mit den eigenen Export-Reitern Seiten-Report und Seiten-CSV](../../../assets/admin/admin-customizing.webp)
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); Widerspruchsprüfung am 2026-10-17: veraltete `meta.views`-Zeile parallel zu `meta.viewHint` korrigiert, kein Custom-Views-Widerspruch mehr.
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); Screenshot-Mock verifiziert am bff84be6 2026-10-17 (tibi-admin-nova: corporate/collections/pages.yml); Widerspruchsprüfung am 2026-10-17: veraltete `meta.views`-Zeile parallel zu `meta.viewHint` korrigiert, kein Custom-Views-Widerspruch mehr.
+2 -2
View File
@@ -75,6 +75,8 @@ Sprachwechsel-Tastenkürzel: `Strg + L` (zyklisch durch die Inhaltssprachen).
Seitenfelder (`pagebuilder`) rendert `PagebuilderWidget` als Stapel aus Block-Karten mit Block-Label und Farbpunkt. Ein Klick öffnet den Overlay-Editor (`PagebuilderOverlay`): links das Formular, rechts die Live-Vorschau, oben der Modus-Umschalter (**Nur Formular**, **Formular und Vorschau**, **Nur Vorschau**) und **OK** (oder `Esc`) zum Schließen. Das Übersichts-Overlay (`PagebuilderOverviewOverlay`, Knopf **Pagebuilder-Overlay öffnen**) listet alle Blöcke als Blueprint-Karten (`BlueprintCard`: Typ, Bilder, Kind-Elemente, weitere Felder) zum Anspringen und Umsortieren. Unter der Vorschau steuert `PagebuilderViewportControl` die simulierte Breite: **Desktop** (1280), **Tablet** (768), **Mobil** (375), per Slider frei von 320 bis 1920 px. Blöcke anlegen und füllen steht unter [Seiten bauen](/anwender/seiten-bauen/).
![Eintrags-Editor im tibi-admin: Pagebuilder-Blöcke im Formular, Übersetzungsleiste mit DE- und EN-Reitern und Seitenleiste mit Einstellungen und Metadaten](../../../assets/admin/admin-eintrags-editor.webp)
## Tastatur
| Kürzel | Wirkung |
@@ -101,6 +103,4 @@ Drücke `?` im Editor — die Hilfe listet alle Kürzel inklusive Listen-Kürzel
| Übersetzung fehlt in der Leiste | Kein Gruppenschlüssel oder Sprache nicht konfiguriert | `translationKey`/`lang` prüfen, fehlende Sprache per `+` anlegen |
| Änderung „verschwunden“ | Drawer geschlossen ohne Speichern | Auf Änderungs-Warnung achten, erst Drawer-, dann Haupt-Speichern |
![Eintrags-Editor im tibi-admin: Pagebuilder-Blöcke im Formular, Übersetzungsleiste mit DE- und EN-Reitern und Seitenleiste mit Einstellungen und Metadaten](../../../assets/admin/admin-eintrags-editor.webp)
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova)
+2 -2
View File
@@ -19,6 +19,8 @@ Du exportierst Einträge einer Sammlung im **tibi-admin** (Verwaltungs-Backend,
</Steps>
![Export-Dialog im tibi-admin: Formatwahl zwischen JSON, CSV und XLSX sowie Spaltenliste mit vorausgewählten Feldern](../../../assets/admin/admin-exporte.webp)
| Format | Technik | Wofür |
|---|---|---|
| `JSON` | Rohdatensätze als Datei | Weiterverarbeitung, Sicherung, Import anderswo |
@@ -107,6 +109,4 @@ Details für Entwickler (Styling per `cell.s`, Spaltenbreiten, Autofilter) stehe
| Skript-Fehler im Dialog | Modul ohne Standard-Export oder Laufzeitfehler | Browser-Konsole lesen, Modul-Export und Rückgabeformat prüfen |
| Leere Datei trotz Treffern | Leserecht auf Zielfelder fehlt | Rechte unter [Rechte und Tokens](/projekt/rechte-tokens/) klären |
![Export-Dialog im tibi-admin: Formatwahl zwischen JSON, CSV und XLSX sowie Spaltenliste mit vorausgewählten Feldern](../../../assets/admin/admin-exporte.webp)
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); `ctx`-Tabelle und Beispiel verifiziert am 2b091d8 (custom-export.types.ts:17-102, custom-export-script.md, custom-export-result.ts:14-18)
+2 -2
View File
@@ -89,6 +89,8 @@ Verhalten: Quelle zuerst Browser-**„Systemstimme auf diesem Gerät“** (passe
</TabItem>
</Tabs>
![Geöffneter Nova-Chat im tibi-admin: Begrüßungsnachricht, Eingabefeld mit Mikrofon-Knopf und Sammlungsübersicht des Corporate-Projekts dahinter](../../../assets/admin/admin-ki-funktionen.webp)
Zusatz: **Vision** (`/api/ai/vision`) beschreibt Bilder für CMS-Felder („erfinde keine nicht sichtbaren Fakten“); **Übersetzung** (`/api/ai/chat` mit System-Prompt) hält das angeforderte Ausgabeformat exakt ein.
## Werkzeuge
@@ -143,6 +145,4 @@ Wichtig zur Einordnung: Der Admin-Chat läuft über den Proxy (`/api/ai/chat`, `
| **„Transkription fehlgeschlagen: \{error\}“** | Rate-Limit, Netz oder Proxy-Fehler | Kürzeren Abschnitt sprechen, erneut versuchen |
| Stimme klingt falsch | Andere Stimme aktiv | Stimme in den KI-Einstellungen zurück auf `eva-de` setzen |
![Geöffneter Nova-Chat im tibi-admin: Begrüßungsnachricht, Eingabefeld mit Mikrofon-Knopf und Sammlungsübersicht des Corporate-Projekts dahinter](../../../assets/admin/admin-ki-funktionen.webp)
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova: AiChat/AiButton/AiConversationList/AiToolStatus/AiToolInspector/AiDebugContext, aiChatHistory/aiController/aiTools/aiTokenEstimator/aiVoiceInput/aiSummarizer/aiTTS/aiModelCatalog, config/ai-proxy.config.json, frontend/assets/system.config.json, de.json admin.ai + Befehle)
+2 -2
View File
@@ -11,9 +11,9 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
- 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
## Befehlspalette 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/)).
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 Befehlspalette](/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)
+2 -2
View File
@@ -47,6 +47,8 @@ Den Editor öffnest du aus der Kachel oder aus Datei-Feldern (`Bild bearbeiten`)
Welche Werkzeuge verfügbar sind, steuert die Projekt-Konfiguration (`crop`, `rotate`, `flip`, `scale`, `focalPoint`, `adjust`, `palette`).
![Bildeditor im tibi-admin als Vollbild-Dialog: Werkzeugleiste mit Zuschnitt, Anpassung und Skalierung über dem geöffneten Foto, dahinter das abgedunkelte Medienraster](../../../assets/admin/admin-medien.webp)
## Einbetten
Aus Redakteurs-Sicht gibt es drei Wege, eine Datei in Inhalte zu bringen:
@@ -78,6 +80,4 @@ Bilder im Fließtext verwaltet das `richtext`-Widget des Editors (siehe [Eintrag
| Bild-Einbettung bleibt leer | Verweis ohne `lookup` gelesen oder Eintrag nicht öffentlich | `lookup` auf `medialib` prüfen, `active`-Status und Rechte unter [Rechte und Tokens](/projekt/rechte-tokens/) klären |
| Editor-Änderung weg | Dialog ohne Übernehmen geschlossen | Erst im Bildeditor übernehmen, dann den Eintrag speichern |
![Bildeditor im tibi-admin als Vollbild-Dialog: Werkzeugleiste mit Zuschnitt, Anpassung und Skalierung über dem geöffneten Foto, dahinter das abgedunkelte Medienraster](../../../assets/admin/admin-medien.webp)
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova)
+1 -1
View File
@@ -54,4 +54,4 @@ Ein gestarteter Lauf lässt sich nicht abbrechen.
Ein gestarteter Lauf lässt sich nicht abbrechen; ein zweiter Lauf löst Versand und Berechnung erneut aus.
</Aside>
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova)
Verifiziert am 2b091d8 2026-10-17 (tibi-admin-nova); Screenshot-Mock verifiziert am bff84be6 2026-10-17 (tibi-admin-nova: corporate/actions/reindex-search.yml)
+1 -1
View File
@@ -3,7 +3,7 @@ title: Tibi Doku
description: Entwickler- und Anwender-Dokumentation für Tibi-Server und Tibi-Admin.
template: splash
hero:
tagline: Headless-CMS mit Go-Backend und Svelte-Frontends — hier steht, wie man damit baut.
tagline: Headless-CMS mit Go-Backend und Svelte-Frontends — hier steht, wie du damit baust.
actions:
- text: Schnellstart
link: /einstieg/schnellstart/
@@ -1,9 +1,9 @@
---
title: 'Schema-Properties (generiert)'
description: 'Alle Properties aller 16 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'
description: 'Alle Properties aller 17 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'
---
Diese Seite listet die Properties aller 16 Config-Schemas aus `tibi-types/schemas/config/`.
Diese Seite listet die Properties aller 17 Config-Schemas aus `tibi-types/schemas/config/`.
> Generiert, nicht von Hand editieren — neu erzeugen mit `npm run gen:schemas`.
@@ -142,6 +142,23 @@ Dieses Schema definiert nur **`$ref`-Bausteine** (kein eigenes Config-Ziel):
| `methodPermissionGet` | boolean oder object | — | — |
| `methodPermissionWrite` | boolean oder object | — | — |
## embedding
*Tibi server config — embedding section (server-level, not project config)* — `embedding.schema.json`
| Property | Typ | Pflicht | Vorgabe/Default | Beschreibung |
| --- | --- | --- | --- | --- |
| `providers` | Liste von `provider` — object | nein | — | — |
| `groups` | Liste von `group` — object | nein | — | — |
| `goldenPath` | string | nein | — | Verzeichnis der Gold-Dateien für die Mitglieds-Prüfung (Vorgabe: testdata/embedding-golden relativ zum Arbeitsverzeichnis). Erzeugen mit cmd/embed-probe-golden. Ohne verankerte Gold-Datei prüft die Gruppe nur gegen ihre Referenz. |
### Bausteine in embedding
| Baustein | Felder | Pflicht |
| --- | --- | --- |
| `provider` | `name`, `type`, `model`, `modelPath`, `dimensions`, `baseURL`, `apiKey`, `documentPrefix`, `queryPrefix`, `timeoutPerAttempt`, `slowThreshold`, `revision`, `sparse` | `name` |
| `group` | `name`, `description`, `members`, `onSingleQuery`, `onBulkWrite`, `health` | `name`, `members` |
## field-list
*Tibi field list config* — `field-list.schema.json`
@@ -383,4 +400,4 @@ Pflicht: `name`.
| `permissions` | Liste von string | nein | — | Bare permission names for team-based access (Phase 2). Empty = admin-only in Phase 1. |
| `enabled` | boolean | nein | `false` | Whether this snapshot profile is active. Disabled profiles are skipped by the scheduler but can still be triggered manually. |
Generiert aus `tibi-types 4c55f82` (Stand 2026-10-12) — Änderungen an den Schemas dort erfordern `npm run gen:schemas`.
Generiert aus `tibi-types 3bf8055` (Stand 2026-10-17) — Änderungen an den Schemas dort erfordern `npm run gen:schemas`.
+3 -2
View File
@@ -9,7 +9,7 @@ Deine `api/*.yml`-Dateien sind durch JSON-Schemas geprüft. Die Schemas liegen i
## Schema-Liste
Das Verzeichnis enthält 16 Dateien (nicht 15, wie ältere Docs behaupten):
Das Verzeichnis enthält 17 Dateien:
| Schema | Gilt für | Pflichtfelder |
| --- | --- | --- |
@@ -29,6 +29,7 @@ Das Verzeichnis enthält 16 Dateien (nicht 15, wie ältere Docs behaupten):
| `snapshot.schema.json` | Snapshots in `config.yml` | `name` |
| `openapi.schema.json` | OpenAPI-Metadaten je Collection | keine |
| `defs.schema.json` | nur `$ref`-Bausteine, kein eigenes Ziel | — |
| `embedding.schema.json` | `embedding:` in der Server-`config.yml` | keine (Provider und Gruppen sind optional) |
## Vollständige Property-Matrix
@@ -91,4 +92,4 @@ tibi-server beim Reload (Bedeutung)
- Schlage einen Hook-Kontext nach: Hook-Kontexte.
- Verstehe Fehlermeldungen: Fehlerbilder.
Verifiziert am 4c55f82 2026-10-12 (tibi-types)
Verifiziert am 3bf8055 2026-10-17 (tibi-types, 17 JSON-Schemas einschließlich embedding.schema.json)
@@ -1,5 +1,5 @@
---
title: 'Tastatur und Schnellsuche'
title: 'Tastatur und Befehlspalette'
description: 'Alle Tastenkürzel, die Befehlspalette und die Breadcrumb-Navigation im tibi-admin.'
---