sdfsdf
All checks were successful
Deploy / deploy-staging (push) Successful in 24s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-06-21 01:15:38 +02:00
parent 0d7f0681c2
commit dc9cf350d6
7 changed files with 48 additions and 1 deletions

View File

@@ -38,6 +38,17 @@ Das Startmenue ist in drei Bereiche gegliedert:
- Fenster koennen verschoben, minimiert, maximiert und geschlossen werden.
- Programme koennen sowohl globale System-Apps als auch klassische Module sein.
## API
Die API der Anwendung liegt aktuell bewusst auf demselben Host wie der Desktop.
Das Zielbild ist:
- `desktop.kusche.berlin/api/v1/...`
- `staging.desktop.kusche.berlin/api/v1/...`
Eine getrennte API-Domain wie `api.desktop.kusche.berlin` ist derzeit nicht der Standard.
## Einstellungen oeffnen
Die Einstellungen werden aktuell ueber die App `User Self Management` bereitgestellt.

View File

@@ -58,6 +58,9 @@ Diese Benennungen gelten projektweit und sollen in UI, Doku und Weiterentwicklun
- `App`
Ein bereitgestelltes System-Tool oder Modul. Eine App kann als Desktop-App, Menue-App, Systembar-Eintrag oder Quelle fuer Widgets/Funktionen auftreten.
- `API`
Die serverseitige Programmschnittstelle der Desktop-Anwendung. Sie wird im aktuellen Projekt auf demselben Host wie die Desktop-Shell unter `/api/v1/...` bereitgestellt.
- `Widget`
Eine kleine Funktion oder Mini-Anzeige. Widgets sind nicht automatisch identisch mit Apps. Eine App kann Widgets bereitstellen, muss es aber nicht.
@@ -82,6 +85,7 @@ Stand dieser Datei:
- `User Self Management` als Setup-App
- erster echter Modulpfad fuer klassische Module mit Modul-Discovery aus `modules/<modul>/`
- `Mining-Checker` als erstes angebundenes klassisches Modul
- versionierte API auf demselben Host unter `(staging.)desktop.kusche.berlin/api/v1/...`
- Benutzereinstellungen fuer Desktop-Skin, App-Auswahl, Infobereich und Profildaten in einer eigenen Datenbanktabelle mit `_user_data`-Suffix
- vorhandene JSON-Dateien dienen nur noch als Fallback oder Uebergang fuer lokale Entwicklung und Altbestaende
- LDAP-Synchronisierung fuer Standardfelder wie Name, E-Mail, Telefon, Titel und Ort
@@ -96,6 +100,7 @@ Aus [README.md](/home/lars/Schreibtisch/Projekte/desktop.kusche.berlin/docs/READ
- `public/` ist der Web-Root fuer die Desktop-Shell
- `src/Desktop/` enthaelt zentrale Desktop-Mechaniken
- die API bleibt auf demselben Host wie die Desktop-Shell und wird unter `/api/v1/...` versioniert
- `partials/desktop/` enthaelt Shell-Templates
- `modules/` bleibt Zielort fuer klassische Module
- `temp/nexus-module-import/` ist Rohbasis fuer importierte Nexus-Module
@@ -136,6 +141,7 @@ Fuer einen spaeteren Hilfebereich sollen Inhalte aus dieser Datei in Themenblcke
- `Infobereich konfigurieren`
- `Apps und Desktop Type verwalten`
- `Module verstehen und starten`
- `API-Pfade und Versionen verstehen`
- `Benutzerdaten und Synchronisierung`
Die Inhalte sollen spaeter moeglichst nicht neu erfunden, sondern aus den zentral gepflegten Dateien abgeleitet werden.

View File

@@ -33,6 +33,7 @@ Zentraler Dokumentationsindex fuer das Projekt.
- `Old-Nexus/` wird nicht technisch eingebunden.
- Skins `Windows`, `Apple`, `Linux` laufen auf einer gemeinsamen Shell.
- Keycloak bleibt das Auth-System.
- API und Desktop laufen auf demselben Host. Zielpfad ist `(staging.)desktop.kusche.berlin/api/v1/...`.
- der Theme-Handoff ist in [keycloak-theme-handoff.md](/home/lars/Schreibtisch/Projekte/desktop.kusche.berlin/docs/keycloak-theme-handoff.md) beschrieben.
## Dokumentationsregel
@@ -49,3 +50,4 @@ Aktuell wichtig:
- der Mining-Checker ist das erste als echtes Desktop-Modul angebundene Modul unter `modules/mining-checker/`
- Modul-Assets koennen ueber einen gemeinsamen Auslieferungsweg aus dem Modul selbst geladen werden
- die API bleibt vorerst auf demselben Host und wird nicht auf `api.desktop.kusche.berlin` ausgelagert

View File

@@ -25,6 +25,7 @@ Aktuell ist das Projekt auf einem V1-Scaffold-Stand:
- App-Registry, Widget-Registry und Import-Basis sind angelegt
- erster echter Modulmechanismus fuer klassische Module ist vorhanden
- `Mining-Checker` ist als erstes klassisches Modul angebunden
- API soll im Zielbild auf demselben Host unter `(staging.)desktop.kusche.berlin/api/v1/...` liegen
- Keycloak ist nur konzeptionell vorbereitet, nicht integriert
- Admin-Bereiche und persistente User-Desktops sind noch offen
@@ -34,6 +35,7 @@ Aktuell ist das Projekt auf einem V1-Scaffold-Stand:
- keine Includes, Imports, Asset-Pfade oder Laufzeitkopplung auf Altbestand
- klassische Module bleiben strukturell unter `modules/<modul>/`
- die Desktop-Shell ist eine eigene Anwendungsschicht und kein Theme-Umbau des alten Systems
- API und Desktop teilen sich im aktuellen Zielbild denselben Host; Standardpfad ist `/api/v1/...`
## Status Nach Datei

View File

@@ -33,6 +33,7 @@ Verbindlich ist:
- Nutzerdaten und Desktop-Preferences bevorzugt datenbankbasiert speichern, nicht dateibasiert
- `README.md`-Dateien in Teilbereichen aktuell halten
- zentrale Doku bei jeder relevanten Struktur- oder Begriffsanpassung mitpflegen
- API-Pfade versioniert und host-konsistent unter `(staging.)desktop.kusche.berlin/api/v1/...` halten
## NoGo's
@@ -43,12 +44,14 @@ Verbindlich ist:
- keine nur lokalen README-Informationen ohne zentrale Uebernahme der wichtigen Punkte
- keine Hilfeinhalte nur in Chatverlaeufen oder Ad-hoc-Notizen belassen
- keine produktive Architekturabhaengigkeit zu `Old-Nexus/` oder vergleichbaren Altbestaenden
- keine neue Standard-API-Domain wie `api.desktop.kusche.berlin`, solange keine ausdrueckliche Architekturentscheidung dafuer getroffen wurde
## Architekturregeln
- `modules/<modul>/` bleibt Ort fuer klassische Module
- globale Desktop-Mechaniken liegen im gemeinsamen Kern
- globale Modul-Helfer duerfen im gemeinsamen Kern liegen, Fachlogik aber nicht
- API und Desktop teilen sich im aktuellen Zielbild denselben Host; offizielle Basis ist `/api/v1/...`
- Skins definieren Darstellung und Interaktionsdetails, nicht die Fachlogik
- Hilfe- und Inhaltsdateien sollen spaeter maschinenlesbar oder zumindest klar strukturierbar in einen Hilfebereich ueberfuehrt werden koennen
@@ -67,6 +70,7 @@ Bei jeder groesseren Aenderung ist zu pruefen:
- `docs/UMSETZUNGSSTATUS.md` nur dann als erledigt markieren, wenn es ausdruecklich freigegeben wurde
- Fokus liegt aktuell auf Desktop-UI und Apps
- Login und Keycloak sind vorerst akzeptiert und nicht der aktuelle Hauptschwerpunkt
- API-Zielpfade sollen auf `(staging.)desktop.kusche.berlin/api/v1/...` vereinheitlicht werden
- Desktop-Icons sind frei verschiebbar und werden pro Benutzer und Skin lokal gespeichert
- die Schriftfarbe von Desktop-Icons passt sich automatisch an den Hintergrund an
- Benutzerdaten sollen spaeter sauber in LDAP oder Keycloak geschrieben werden

View File

@@ -276,6 +276,27 @@
return formatDateByParts(value, true);
}
function normalizeApiUrl(rawUrl) {
const url = String(rawUrl || '');
if (!url || !apiBase.includes('?path=')) {
return url;
}
if (!url.startsWith(apiBase)) {
return url;
}
const [baseRoot, basePath = ''] = apiBase.split('?path=');
const suffix = url.slice(apiBase.length);
const [routeSuffix, extraQuery = ''] = suffix.split('?');
const normalizedPath = [basePath, routeSuffix]
.map((part) => String(part || '').replace(/^\/+|\/+$/g, ''))
.filter(Boolean)
.join('/');
return `${baseRoot}?path=${encodeURIComponent(normalizedPath)}${extraQuery ? `&${extraQuery}` : ''}`;
}
async function request(path, options) {
const requestOptions = options && typeof options === 'object' ? { ...options } : {};
const debugEnabled = !!debugBus.enabled;
@@ -287,7 +308,7 @@
const controller = new AbortController();
const timeoutId = window.setTimeout(() => controller.abort(), timeoutMs);
const requestUrl = path;
const requestUrl = normalizeApiUrl(path);
const headers = { ...(requestOptions.headers || {}) };
if (debugEnabled) {
headers['X-Mining-Debug'] = '1';

View File

@@ -44,6 +44,7 @@ Danach bei Bedarf die fachlichen Projektanweisungen lesen:
- `README.md`-Dateien in Teilbereichen pflegen
- wichtige Informationen aus dezentralen `README.md`-Dateien auch zentral in `docs/` halten
- `Old-Nexus/` oder Altbestand nie technisch zur Laufzeit einbinden
- API-Pfade im aktuellen Projektziel unter `(staging.)desktop.kusche.berlin/api/v1/...` halten und keine separate Standard-API-Domain annehmen
## Wichtige Dokumente