Mac-App
Der Editor für Famulus-Notebooks
Ein Doppelklick auf eine .fam-Datei öffnet ihr Projekt in Famulus Notebook: links das Projekt, in der Mitte der Text zum Schreiben und die gesetzte Seite, rechts der Famulus-Assistent.
Die App ist eine Oberfläche über dem einen Notebook-Dienst auf Port 5118. Sie startet keinen eigenen Server. Antwortet der Dienst nicht, bittet sie launchd, den Job com.ai-platform.famulus-notebook neu zu starten. Alles, was der Viewer im Browser kann, kann sie auch: ausführen, aktualisieren, Neue Frage, Lernen, Diagnose, Dateien und Artefakte ansehen.
1 Installieren
mac/build.shDas Skript erzeugt das Xcode-Projekt, baut die App und kopiert sie nach /Applications/FamulusNotebook.app. Danach meldet es die App bei den Launch Services an und setzt sie als Standard für .fam. Die App braucht macOS 27. Das Mikrofon fragt sie erst beim ersten Diktat an.
2 Das Fenster
Jedes Projekt hat ein eigenes Fenster. Die Mitte hat vier Formen, umschaltbar oben rechts:
| Form | Inhalt |
|---|---|
| Schreiben | nur der Quelltext |
| Ansicht | nur die gesetzte Seite mit Ergebnissen, Urteilen und Lektor |
| Geteilt | beides nebeneinander; eine Auswahl links rollt die Seite rechts mit |
| Werkbank | links der Editor als Textspur, rechts die Artefaktspur: Ergebnisse und der Validitätsbaum der gewählten Aussage |
In der Werkbank folgt die rechte Spur dem Cursor: Wer im Editor einen Block wählt, sieht rechts sein Ergebnis; ein Klick auf das Siegel oder der Eintrag Ansicht → Validitätsbaum des Blocks (⌥⌘V) öffnet den Baum im Reiter Validität. Ein Klick auf einen Knoten meldet die App dem Editor, ein Dokument öffnet sein Faksimile in einem eigenen Fenster. Der Baum und seine Zeichen stehen im Kapitel Viewer; es läuft derselbe Dienst auf Port 5118, die App startet keinen zweiten.
Die Symbolleiste führt den gewählten Block aus (⌘R), alle Blöcke (⇧⌘R) oder nur die veralteten. Unten steht in einem Satz, was gerade läuft oder wie der Text gesichert ist. Technisches liegt unter Diagnose: Dienst, Speicherstand, Analysefehler, Lauf-Protokoll und ein Knopf, der den Dienst neu startet.
3 Schreiben
Der Quelltext wird beim Tippen gesichert, eine Sekunde nach der letzten Änderung. Wurde die Datei inzwischen außen geändert, fragt die App, welche Fassung gilt. Ist der gesicherte Text kein lesbares Notebook mehr, zeigt ein roter Balken die Zeile.
Abschnitte, Blöcke und der Kopf des Dokuments lassen sich einklappen. Ein eingeklappter Abschnitt zeigt, wie viele Blöcke er hat, ihr Urteil als Punkt und die offenen Verweise. Ein Block ist anfangs bis auf seine Frage eingeklappt: seine Partitur steht als eine Zeile darüber.
3.1 Auswählen
Ein Klick in den Rand wählt den ganzen Abschnitt daneben: Absatz, Tabelle, Formel, Abbildung oder Block. ⇧-Klick in den Rand nimmt den Abschnitt zur Auswahl hinzu. ⌥-Klick wählt einen Satz. ⌘⌥↑ erweitert die Auswahl vom Wort zum Satz, zum Absatz, zum Abschnitt und zum ganzen Text; ⌘⌥↓ geht zurück. ⌘⌥⇧↑ und ⌘⌥⇧↓ verschieben den gewählten Abschnitt.
Beim Tippen springt ⇥ zum nächsten Abschnitt und ⇧⇥ zum vorigen; in einem Block landet die Schreibmarke auf seiner Frage. ↩︎ am Ende eines Absatzes oder einer Überschrift beginnt einen neuen Absatz, ⇧↩︎ nur eine neue Zeile. ⌘↩︎ in einem Block führt ihn aus.
Über der Auswahl erscheint eine Leiste mit den Handlungen, die zu ihr passen:
| Auswahl | Handlungen |
|---|---|
| Absatz | Neu fassen, Kürzen, Belegen, Als Frage, Diktieren |
| Block | Ausführen, Neu fassen (die Frage), Partitur, Erklären, Duplizieren, Oracle vorschlagen |
| Tabelle | Zeile, Spalte, Neu fassen; unter „Tabelle“ Zeile oder Spalte löschen, Ausrichten, als Gitter- oder Pipe-Tabelle |
| Formel | Nummerieren, Bearbeiten, Neu fassen |
| Abbildung | Beschriftung, Ersetzen |
Unter „…“ stehen Verschieben und Löschen. Eine gewählte Formel zeigt unter der Leiste ihr Satzbild; MathJax liegt in der App, die Vorschau braucht also weder Netz noch Dienst. Ein Fehler im TeX steht rot darunter. Eine gewählte Abbildung zeigt ihr Bild mit Größe; fehlt die Datei, sagt die Vorschau es. Eine Bilddatei, auf die Abbildungszeile gezogen, ersetzt den Pfad.
3.2 Neu fassen
Neu fassen schreibt den gewählten Abschnitt nach einer Partitur-Karte um. Die Karte steht neben dem Knopf und wird je Art des Abschnitts behalten. Die Standardkarte ist Sprache (LWgrammar): sie ändert nur die Formulierung und prüft das Ergebnis gegen die LWgrammar-Regeln. Die übrigen Karten kürzen, präzisieren, erklären für Laien, schärfen die Frage eines Blocks oder rufen einen Lektor aus ai-lektorat auf.
Der Vorschlag erscheint über dem Text mit Übernehmen, Verwerfen und Noch einmal. Eine kleine Korrektur zeigt er als Streichung und Einfügung; eine Neufassung zeigt er als sauberen Text, das Original liegt hinter einem Chip. Darunter stehen die Prüfungen: Verweise, Zitate, Zahlen, Formeln und Satzende sind erhalten, und die LWgrammar-Regeln sind eingehalten. Übernehmen schreibt den Text in die Datei; ⌘Z nimmt es zurück.
3.3 Diktieren
Diktieren schreibt Gesprochenes an die Schreibmarke. Die Erkennung läuft auf dem Gerät (Apple Speech, de-DE); nichts verlässt den Rechner. Solange die App zuhört, steht der vorläufige Text grau unter der Leiste.
4 Verweise auf Artefakte
Jedes Artefakt eines Projekts hat einen Namen, zum Beispiel fam:pirckheimer-briefwechsel/briefpartner-1520-1530/briefpartner-zahl.bericht. Die Seitenleiste listet die Artefakte mit ihrer Version. Ein Artefakt wird in den Text gezogen oder mit dem Knopf daneben kopiert. Die App setzt die passende Form ein: im Fließtext den Namen, in einem Block {ref:…}, mit ⌥ beim Ziehen die Einbettung Verweis … ist nicht aufgelöst (famulus-notebook build).. Ein @ im Text öffnet dieselbe Liste als Menü.
Im Text trägt jeder Verweis ein Kästchen in der Farbe seines Zustands:
| Farbe | Zustand |
|---|---|
| Gold | aufgelöst |
| Bernstein | veraltet: der erzeugende Block ist seit dem letzten Lauf geändert |
| Grau, gestrichelt | noch nicht erzeugt |
| Rot mit „?“ | nicht auflösbar: kein Block erzeugt dieses Artefakt |
Unten in der Seitenleiste steht die Zahl der offenen Verweise; ein Klick springt zum nächsten. Wer mit der Maus auf einem Verweis verweilt, liest seinen Zustand, den Grund und den erzeugenden Block. ⌘-Klick springt zu diesem Block. Ein Rechtsklick führt ebenfalls dorthin oder wählt eine bestimmte Version.
5 Partituren und Karte
Partitur öffnen zeigt, wie ein Block seine Antwort erzeugt. Oben steht die Kette des Blocks von der Frage bis zum Artefakt. Darunter liegen zwei Ansichten derselben Partitur:
- Hierarchie: die Stufen in ihrer Ordnung, Gruppen mit „alle“ oder „eine von“, Bedingungen als „wenn …“. Nach einem Lauf zeigt ein Balken unter jeder Stufe ihre Dauer; graue Stufen liefen nicht.
- Fluss: jede Stufe mit den Daten, die sie liest und die sie erzeugt. Ein Klick auf eine Stufe hebt hervor, was in sie einfließt und was aus ihr hervorgeht; ein Klick auf ein Datum hebt seinen Erzeuger und seine Leser hervor.
Unter dem Fluss steht die gewählte Stufe mit Ziel, Laufzeit, Prüfungen und Instruktion. In der Ansicht öffnet ein Klick auf eine Zeile der Lauf-Spur (unter „Diagnose“ eines Blocks) die Partitur an genau dieser Stufe; ein Klick auf den Kopf eines Blocks zeigt ihn im Text.
Die Karte zeigt das Projekt von den Eingaben über die Blöcke zu den Artefakten. Ein Klick hebt den Weg eines Knotens hervor, ein Doppelklick öffnet den Block im Text.
6 Der Assistent
Der Assistent rechts schreibt mit. Er hat fünf Aufgaben: einen neuen Block zu einer Frage entwerfen, den gewählten Abschnitt umformulieren, einen Lauf erklären, die offenen Verweise prüfen und eine freie Frage zum Projekt beantworten. Er kennt die Artefakte des Projekts und setzt nur Verweise, die es gibt. Jeder Vorschlag kommt als Karte mit Übernehmen und Verwerfen; ein übernommener Block wird geprüft, bevor er gilt.
Das Modell ist gemini-3.8-flash; gemini-3.5-flash-lite lässt sich oben im Assistenten wählen.
7 Prüfen
mac/scripts/selftest.sh <datei.fam> [block] öffnet ein Projekt in der installierten App und geht Auswahl, Falten, Verweise, Partitur, Karte, einen Lauf, Tippen, Neu fassen und einen Block des Assistenten durch. Nach jedem Schritt entsteht ein Bildschirmfoto unter /tmp/fn-app/selftest/<notebook>/, das Urteil jedes Schritts steht in report.json. Am Ende ist das Manuskript wieder byte-gleich.
SELFTEST_PHASE=editor mac/scripts/selftest.sh <datei.fam> prüft ohne Sprachmodell die Bedienung: ⇥ und ↩︎, ⇧-Klick in den Rand, Tooltip und ⌘-Klick eines Verweises, die Tabellen-Handlungen, die Formel- und Bildvorschau, das Ersetzen eines Bildes durch Ziehen, ein Diktat aus einer gesprochenen Datei, die Lauf-Spur, die zur Partitur-Stufe führt, und das Tippen in der Ansicht. Die Ereignisse gehen durch dieselben Tasten-, Maus- und Ablage-Methoden wie bei der Bedienung von Hand.
SELFTEST_PHASE=werkbank mac/scripts/selftest.sh <datei.fam> prüft nur die Werkbank: ob der Baum eines Blocks mit seinen Knoten erscheint, ob ein Klick auf einen Knoten bei der App ankommt und wie breit die Artefaktspur ist.





