julian.kiedaischandClaude Opus 5.5 4b33e36580 feat: F5.5 large binary files as blobs on server F
From 16 KB a picture's or binary file's entry names its bytes by their
SHA-256 instead of holding them; the bytes are on F, content-addressed
(GET/POST /blobs with the session's grant, from the editor's origin, at
most 16 MiB). A document's blob side says where they are: the editor's
fetches and uploads, the room thread's asks F's main thread, and a start
waits for the ones asked for; without a side everything stays in the
document. Text stays Y.Text. A blob whose bytes are not there is never
written back empty. A blob F has not got yet is asked for again a few
times, and a running room reads late bytes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 16:46:50 +00:00

mdg-filius

Netzwerksimulation nach FILIUS für den Browser — als App „Filius" im MDG-Dashboard, gemeinsam bearbeitbar.

Based on Filius by Dr. Stefan Freischlad and the Filius project.

Dieses Projekt ist unabhängig. Es wird weder vom ursprünglichen Filius-Projekt (Universität Siegen) noch von filius-project (Filius on iPad) herausgegeben, betrieben oder unterstützt.

Herkunft

Der Simulationskern ist eine Übertragung nach TypeScript aus

Jede übertragene Datei nennt in ihrem Kopf die Quelldatei. CHANGES.md führt die Herkunft je Paket. Lizenz dieses Repos: GPL-3.0 (LICENSE).

Aufbau

Pfad Inhalt
packages/core Simulationskern: Modell, Ereignis-Warteschlange, Protokolle, Anwendungen — ohne DOM, ohne Node
packages/fls .fls lesen, schreiben, Unbekanntes bewahren
packages/doc gemeinsames Dokument (Yjs): Projekt ⇄ Dokument, Schnappschuss des Kerns, Hausmeister, die Änderungen der Werkzeuge und des Geräte-Blatts (mit Javas Eingabeprüfung)
packages/protocol die eine Nachrichtenliste zwischen Editor und Simulationsraum (/sim)
packages/sim Simulationsraum (für Server F und den Web Worker) und LocalSimHost
packages/editor Oberfläche im Iframe des Dashboards (React, Vite), auf einem Projekt von F (?project=<uuid>) oder mit einem Raum in der eigenen Seite (Entwicklung): Fläche, Palette, Werkzeuge des Entwurfs, Geräte-Blatt, Aktionsmodus (Desktops, Anwendungen, Datenaustausch), Dokumentationsmodus (Text, Gliederungsfläche, Bild exportieren, Bericht als PDF); npm run dev -w @mdg-filius/editor öffnet die Entwicklungsseite
packages/server Filius-Dienst auf Server F: gemeinsame Dokumente über Hocuspocus (/sync), gespeichert in Postgres (Stand und Aktualisierungen, verdichtet), Hausmeister; Anmeldung mit der Eintrittskarte des Dashboards (/__auth, Keks, Lese- und Schreibstufe); Dienstweg des Dashboards (/svc/*: Projekte anlegen, löschen, einfrieren, Zugänge widerrufen); Simulationsräume auf /sim in worker_threads, einer je Projekt für alle; /healthz; npm run build -w @mdg-filius/server bündelt ihn nach dist/main.mjs und den Faden der Räume nach dist/simWorker.mjs

Plan und Entscheidungen: knowledge/plans/FILIUS_WEB_PLAN.md im Dashboard.

Entwickeln

npm install
npm run hooks      # Sprachprüfung vor jedem Commit (braucht das Dashboard drumherum)
npm run check      # Typprüfung + Tests (die Server-Tests starten eine Wegwerf-Postgres in Docker, oder nehmen FILIUS_TEST_DATABASE_URL)
npm run test:browser  # Tests im echten Browser (Playwright: Chromium; der Touch-Test auch in WebKit als iPad hoch und quer)

Server F braucht zum Start DATABASE_URL, FILIUS_TICKET_SECRET (mit dem Dashboard geteilt, das die Karten signiert), FILIUS_SERVICE_KEY (der Schlüssel des Dashboards für /svc/*) und FILIUS_ORIGINS (die Herkünfte des Editors, durch Kommas getrennt); FILIUS_PORT ist 8080, wenn nicht gesetzt. Fehlt eine davon, startet er nicht. Ohne HTTPS (Entwicklerrechner) setzt FILIUS_INSECURE_COOKIE=1 den Keks ohne Secure.

Code, Kommentare und Testnamen sind englisch; sichtbare Texte stehen hinter i18n-Schlüsseln (Deutsch/Englisch).

S
Description
No description provided
Readme GPL-3.0
22 MiB
Languages
TypeScript 85%
Java 11.6%
CSS 1.2%
Swift 1.1%
Shell 0.9%
Other 0.1%