Repository navigation
Roadmap
Was gebaut ist, was ansteht, und woran es hängt. Der letzte Teil ist der wichtigste: in Lotse hat jedes verschobene Feature einen Auslöser – ein Ereignis, das eintreten muss, bevor es gebaut wird. Ohne Auslöser ist eine Roadmap eine Wunschliste, und eine Wunschliste wird abgearbeitet, statt dass gefragt wird, ob sie noch stimmt.
Verbindlich sind docs/CONCEPT.md Abschnitt 11 (Phasen), docs/NON_GOALS.md (Auslöser
und Abbruchkriterium) und docs/BUSINESS.md (alles Kommerzielle). Diese Seite führt die
drei zusammen und trägt den Stand nach.
Was in welcher Fassung tatsächlich fertig wurde: Änderungen. Was dauerhaft nicht kommt: Nicht-Ziele.
Datenmodell, Kryptografie, verschlüsselter Speicher, Sync-Umschläge und -Client, die Kommandozeile, das Worker-Skelett, CI.
Das Abschlusskriterium war nicht »es kompiliert«, sondern: ein Tresor-Eintrag der Stufe
nur_desktop ist ohne Desktop-Schlüssel nachweislich nicht entschlüsselbar, und der
Bestand lässt sich mit dem generischen age-Werkzeug außerhalb von Lotse öffnen. Beides
ist als Test da, nicht als Behauptung (Schlüssel und Krypto,
Export und Fluchtweg).
| Soll | Stand |
|---|---|
| Hafen, Projektseite mit Brief, Schnellerfassung | läuft (Oberfläche, Wo-war-ich-Brief) |
| Pausieren mit Übergabe | läuft – die Notiz ist Pflicht (Vorhaben) |
| Ordner-Beobachter, Erkennung mit Massen-Import | läuft (Beobachter und Erkennung) |
| Tresor, beide Stufen | läuft (Tresor) |
| Suche, offene Punkte, Klartext-Spiegel | läuft (Offene Punkte) |
| Abgleich gegen den Worker | läuft, mit Test gegen einen echten Dienst (Abgleich) |
Fünf echte Vorhaben, davon mindestens eines ohne Dateien, vier Wochen aktiv genutzt.
Das lässt sich am Code nicht ablesen – es steht in der eigenen Lotse-Datenbank. Lotse ist
Projekt Nr. 1 in Lotse; sein Logbuch ist laut NON_GOALS.md der Nachweis.
Daran hängen zwei Dinge: der Auslöser für Phase 2 und das Abbruchkriterium.
Werden drei Monate nach Alltagstauglichkeit des Desktop-MVP nicht mindestens fünf echte Projekte aktiv geführt und Lotse nicht wöchentlich freiwillig geöffnet, wird Lotse eingefroren statt weiter ausgebaut.
Das ist kein Ritual. Ein Werkzeug, das seine eigene Erfinderin nicht benutzt, wird durch mehr Features nicht besser – es wird nur größer.
Auslöser: das Erfolgsmaß aus Phase 1.
| Soll | Stand |
|---|---|
| MCP-Server |
läuft – über stdin/stdout und aus der laufenden App auf 127.0.0.1, fünf Werkzeuge, Tresor unsichtbar (Assistenten (MCP)) |
lotse-core als WebAssembly |
läuft – crates/lotse-wasm bindet Krypto, Umschläge, Logikuhr und Brief an. 18 Prüfungen laufen in CI in einem echten Chromium, darunter die Schlüsselableitung mit den Produktionsparametern gegen dieselben Testvektoren wie nativ |
| Web-App im Browser |
fehlt – apps/web läuft dort gegen Beispieldaten. Die Anbindung an den Kern steht, der Datenweg (Anmelden, Abgleich holen) noch nicht |
| Modus »fremder Rechner« ohne Persistenz | fehlt |
Das ist die größte echte Lücke. Die Vorarbeit ist getan – die Oberfläche spricht überall durch eine Schnittstelle, und der Kern ist WASM-tauglich gehalten (App-Schnittstelle). Was fehlt, ist die Brücke dazwischen.
Der Weg dorthin ist geplant: docs/WEB_CLIENT.md, fünf Phasen mit Abschlusskriterien.
Die tragende Entscheidung darin: der Browser braucht store nicht. Er hält versiegelte
Umschläge und baut den Index im Speicher – kein zweites Schema, keine zweite SQL-Schicht.
Ziel ist in einem Satz: auf jedem Gerät mit E-Mail und Master-Passwort anmelden und seine
Vorhaben sehen. Entschieden ist auch die Adresse – app.lotse.sanctora.eu – und dass ein
Konto sich auch im Browser anlegen lässt, mit demselben Abtippschritt für den
Wiederherstellungscode wie bei lotse init.
Für den Tresor ist der Fall schon vorgesehen: die Stufe nur_desktop ist im Browser
konstruktionsbedingt nicht lesbar, weil der Desktop-Schlüssel nie dorthin kommt.
| Soll | Auslöser |
|---|---|
| Bausteine mit Referenzen und Verwendungsliste | derselbe Inhalt dreimal von Hand kopiert |
| Vorlagen aus bestehenden Vorhaben | – |
| Abschluss-Moment | – |
Gemeint sind mit »Bausteinen« projektunabhängige Dinge: eine Checkliste, ein Verfahren, eine Bezugsquelle, ein Kontakt – einmal hinterlegt, in mehreren Vorhaben eingebunden, mit Anzeige, wo sie verwendet werden.
Der Auslöser ist streng gewählt. Zweimal kopieren ist Zufall; dreimal ist ein Muster.
| Soll | Stand | Auslöser |
|---|---|---|
Kalender lesend (.ics) |
läuft | war: »ein terminlastiges Projekt existiert real« – vorgezogen |
| KI-Verdichtung des Briefs | läuft | war: »Brief regelmäßig länger als ein Bildschirm« – vorgezogen |
| Facetten (Stückliste, Kostenaufstellung) als Config | fehlt | dreimal eine Tabelle in Freitext gequetscht |
Projekt-Kanten teilprojekt_von, verwandt_mit
|
fehlt | Unterprojekte treten real mehrfach auf |
| Kanban-Ansicht | fehlt | ein Vorhaben mit dauerhaft mehr als 15 offenen Fäden |
Beide vorgezogenen Punkte sind in NON_GOALS.md unter Vorzeitig aufgenommen mit
Aufnahmetest protokolliert – bewusst überschrieben, nicht übersehen. Das ist der
Unterschied zwischen einer Ausnahme und einem Leck.
Dasselbe gilt für zwei weitere Punkte, die gar nicht in den Phasen standen: der Abruf von Gegenseite (GitHub, GitLab) und Datei deuten.
abgeleitet_von gibt es im Modell (Datenmodell) – das ist eine Spur, keine Kante.
Facetten wären ausdrücklich eine versionierte Konfiguration, kein Schema-Editor zur
Laufzeit; letzterer wäre genau die Pflegearbeit, die Lotse abschaffen will.
Lesend wäre es ab Phase 2 über die Web-App da. Eine native App erst nach sechs Monaten stabiler Desktop- und Web-Nutzung.
Aus BUSINESS.md, Abschnitt 4. Kein Punkt davon ist erledigt.
| Punkt | Warum es nicht wartet |
|---|---|
Erledigt am 2026-09-12: AGPL-3.0-only. Begründung im Entscheidungsprotokoll (CONCEPT.md 12) und in BUSINESS.md 3. Offen bleibt davon nur: ab dem ersten fremden Pull Request ein DCO verlangen. |
|
| Impressum, Datenschutzerklärung, AV-Vertrag mit Cloudflare | Rechtlich zwingend, sobald jemand anderes den Dienst benutzt. |
| Markenrecherche »Lotse« (DPMA, EUIPO) und Domain | Je später, desto teurer eine Umbenennung. |
| Zahlungsabwicklung über einen Merchant of Record | Damit die EU-Umsatzsteuer nicht selbst abzuführen ist. |
| Code-Signierung und Notarisierung (Windows, macOS) | Nicht zu verwechseln mit den Update-Signaturen, die es gibt: die schützen den Austausch, nicht die Erstinstallation. SmartScreen und Gatekeeper warnen weiterhin (Updates, Installation). |
| Externe Prüfung der Krypto-Komposition | Laut BUSINESS.md bevor fremde Geheimnisse damit verwaltet werden. Nicht die Primitive – die sind geprüft –, sondern ihre Zusammensetzung. |
| Cloudflare Workers Paid Plan | Ab dem ersten zahlenden Nutzer, weil die Gratis-Grenzen dann verbindlich überschritten werden dürfen. |
Solange das Abbruchkriterium nicht bestanden ist, wird laut BUSINESS.md bewusst
nichts davon gebaut: kein Bezahl-Code, keine Lizenzschlüssel, keine Kontenpläne mit
Wirkung. Zuerst muss Lotse für eine Person unverzichtbar sein.
| Punkt | Stand |
|---|---|
| Symbol im Infobereich, globales Erfassen-Kürzel | Das Tauri-Feature tray-icon ist in Cargo.toml aktiviert, aber im Code nirgends benutzt – eine Abhängigkeit ohne Funktion. Bis dahin ist die Kommandozeile der schnellste Weg von außen. |
Erledigt: POST /v1/account/delete, als lotse sync konto-loeschen und unter Einstellungen → Abgleich. Verlangt das Master-Passwort, nicht nur die Sitzung; lässt die lokalen Daten unberührt (Einstellungen, Sync-Protokoll). |
|
| Selbst gehostete Git-Instanzen (GitHub Enterprise, eigenes GitLab) | Werden nicht erkannt. Der lokale Git-Log funktioniert dort (Gegenseite). |
| Feldweises Mergen beim Abgleich | Auslöser: ein zweiter realer Datenverlust durch Last-Writer-Wins. Heute schreibt Lotse die unterlegene Fassung als Notiz ins Logbuch, damit nichts stumm verschwindet (Sync-Protokoll). |
| Semantische Suche, Embeddings | Auslöser: die Volltextsuche findet nachweislich nicht mehr. |
| Proton-Pass-Anbindung über dessen CLI | Auslöser: Verweise werden häufig angeklickt und nerven. |
| Rückfluss aus dem Klartext-Spiegel | Auslöser: der Spiegel wird regelmäßig extern bearbeitet. |
| Sync-Dienst als eigenes Rust-Binary | Auslöser: Cloudflare ändert die Bedingungen, oder Selbsthosting wird gewünscht. |
Die Prüfung scripts/wiki_pruefen.sh kann sie nicht prüfen: sie liest ablesbare
Oberfläche aus dem Quelltext, und ein Vorhaben ist nicht ablesbar
(Wiki pflegen).
Diese Seite hängt deshalb an der Hand. Bei jeder Fassung:
- Was fertig wurde, hier auf »läuft« setzen und in Änderungen eintragen.
- Ein eingetretener Auslöser wird hier notiert – auch wenn noch nichts gebaut wird. Ein Auslöser, der eintritt und niemandem auffällt, ist keiner.
- Wurde etwas vor seinem Auslöser gebaut, gehört es in
NON_GOALS.mdunter Vorzeitig aufgenommen, mit Aufnahmetest. Sonst ist die Liste in einem Jahr Zierde.
Der Aufnahmetest für jedes neue Feature steht in Nicht-Ziele und hat drei Fragen. Die zweite ist die, an der die meisten Ideen scheitern: entsteht dadurch laufende Pflegearbeit?
Lotse auf GitHub · Landing Page · Veröffentlichungen
Erzeugt aus docs/wiki/ – Änderungen bitte dort.
Anfangen
Die Bausteine
Benutzen
- Kommandozeile
- Einstellungen
- Abgleich
- Beobachter
- Gegenseite
- Kalender
- KI
- Datei deuten
- Assistenten (MCP)
- Updates
- Export
Nachschlagen
- Kommandozeile-Referenz
- Datenmodell
- Erkennungsregeln
- Datenablage
- Umgebungsvariablen
- Fehlermeldungen
- Sync-Protokoll
- App-Schnittstelle
Verstehen
Mitarbeiten