Creator Workspace zieht auf eine eigene Adresse um

Der Workspace laeuft ab sofort auf workspace.dogfather-universe.com. Die
alte Adresse dogfather-universe.com/workspace/ leitet dorthin weiter.

Grund: Chrome laesst neben der Hauptseite, deren Bereich "/" die ganze
Domain umfasst, keine zweite App auf derselben Adresse zu. Unter dem alten
Pfad liess sich der Workspace nur als Verknuepfung ablegen, nie als
richtige App installieren - im Menue stand "Oeffnen in DOGFATHER
UNIVERSE" statt "Seite als App installieren". Das ist kein Fehler,
sondern Absicht (w3c/manifest Nr. 1180: verschachtelte Bereiche auf einem
Ursprung sind "strongly not recommended"). Auf der neuen Adresse hat
Filipe die App erfolgreich installiert.

Der PFAD /workspace/ bleibt erhalten. An ihm haengen 150 Server-Routen,
107 API-Aufrufe und 26 Server-Dateien - ihn wegzuschneiden waere ein
grosser Umbau ohne Gewinn, denn der Konflikt entsteht durch die
gemeinsame ADRESSE, nicht durch den Pfad. Dadurch musste am Code nichts
weiter geaendert werden.

Die Entscheidung steht in einer eigenen Datei (workspace-umzug.js), weil
sie zwei Stellen hat, an denen ein Denkfehler teuer waere und die man
einer Bedingung nicht ansieht:

  1. ENDLOSSCHLEIFE - derselbe Dienst bedient beide Adressen. Ohne
     Hostpruefung leitet die neue Adresse auf sich selbst, und der
     Workspace waere sofort nach dem Neustart fuer alle unerreichbar.
  2. PRAEFIX-IRRTUM - "faengt an mit /workspace" trifft auch
     /workspaceXYZ und /workspace-alt.

Als eigene Funktion ist beides pruefbar, ohne den Server zu starten:
pruef-workspace-umzug.mjs deckt 21 Faelle ab (alte/neue Adresse, mit und
ohne www, Gross-/Kleinschreibung, Portangabe, lokale Testadressen, beide
Praefix-Fallen). Alle gruen. Gegenprobe gemacht: Baut man die
Endlosschleife absichtlich ein, meldet die Pruefung 3 Fehler; baut man den
Praefix-Irrtum ein, meldet sie 2. Sie kann also auch "nein" sagen.

Bewusst 302 und nicht 301: Ein 301 wird vom Browser dauerhaft gemerkt und
laesst sich praktisch nicht zurueckholen - waere an der Umleitung etwas
falsch, waere die alte Adresse fuer jeden, der sie einmal aufgerufen hat,
dauerhaft unbrauchbar.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-06 16:23:32 +02:00
co-authored by Claude Opus 5
parent e0d8e6d55d
commit 58b8ef233a
3 changed files with 165 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
/* =====================================================================
Umzug des Creator Workspace auf eine eigene Adresse (06.09.2026)
Der Workspace liegt seit diesem Tag auf
workspace.dogfather-universe.com
und ist unter der alten Adresse dogfather-universe.com/workspace/ nur
noch als Weiterleitung erreichbar.
WARUM: Chrome laesst neben der Hauptseite, deren Bereich "/" die ganze
Domain umfasst, keine zweite App auf derselben Adresse zu. Unter dem
alten Pfad liess sich der Workspace deshalb nur als Verknuepfung
ablegen, nie als richtige App installieren -- im Menue stand "Oeffnen
in DOGFATHER UNIVERSE" statt "Seite als App installieren". Das ist kein
Fehler, sondern Absicht (w3c/manifest Nr. 1180: verschachtelte Bereiche
auf einem Ursprung sind "strongly not recommended"). Eine eigene
Adresse ist der einzige Weg.
Der PFAD /workspace/ bleibt erhalten. An ihm haengen 150 Server-Routen,
107 API-Aufrufe und 26 Server-Dateien -- ihn wegzuschneiden waere ein
grosser Umbau ohne Gewinn, denn der Konflikt entsteht durch die
gemeinsame ADRESSE, nicht durch den Pfad.
WARUM DIESE ENTSCHEIDUNG IN EINER EIGENEN DATEI STEHT: Sie hat zwei
Stellen, an denen ein Denkfehler teuer waere, und beide sieht man einer
Bedingung nicht an:
1. Derselbe Dienst bedient BEIDE Adressen. Wer nicht auf den Host
prueft, baut eine Endlosschleife -- die neue Adresse wuerde sich
immer wieder auf sich selbst weiterleiten, und der Workspace waere
fuer alle unerreichbar.
2. "faengt an mit /workspace" trifft auch /workspaceXYZ. Ein solcher
Pfad gehoert nicht zum Workspace und darf nicht umgeleitet werden.
Als eigene Funktion laesst sich beides pruefen, ohne den ganzen Server
zu starten -- siehe pruef-workspace-umzug.mjs.
===================================================================== */
export const NEUE_ADRESSE = "https://workspace.dogfather-universe.com";
/** Die alten Adressen, von denen weitergeleitet wird. Bewusst eine feste
* Liste und kein Muster: Ein Muster wie /dogfather-universe\.com$/ wuerde
* auch auf workspace.dogfather-universe.com passen -- und damit genau die
* Endlosschleife bauen, die es zu vermeiden gilt. */
const ALTE_HOSTS = new Set(["dogfather-universe.com", "www.dogfather-universe.com"]);
/**
* Soll diese Anfrage auf die neue Adresse umgeleitet werden?
* @param {string} hostKopfzeile Inhalt des Host-Kopffeldes, ggf. mit Port
* @param {string} pfad req.path, also ohne Abfrageteil
*/
export function sollUmgeleitetWerden(hostKopfzeile, pfad) {
const host = String(hostKopfzeile || "").toLowerCase().split(":")[0];
if (!ALTE_HOSTS.has(host)) return false;
/* Genau "/workspace" oder alles darunter -- aber NICHT /workspaceXYZ. */
return pfad === "/workspace" || pfad.startsWith("/workspace/");
}
/** Express-Zwischenschritt. Bewusst 302 (voruebergehend) statt 301:
* Ein 301 wird vom Browser dauerhaft gemerkt und laesst sich praktisch
* nicht zurueckholen -- waere an der Umleitung etwas falsch, waere die
* alte Adresse fuer jeden, der sie einmal aufgerufen hat, dauerhaft
* unbrauchbar, auch nach einer Korrektur. */
export function workspaceUmzug(req, res, next) {
if (sollUmgeleitetWerden(req.get("host"), req.path)) {
return res.redirect(302, NEUE_ADRESSE + req.originalUrl);
}
next();
}