update
This commit is contained in:
40
README.md
40
README.md
@@ -28,7 +28,9 @@ unter allen Fenstern, über dem Wallpaper.
|
||||
- `notes.js` – Ordnerbaum, Markdown-Anzeige, Inline-Editor, Kontextmenü
|
||||
- `widgets.js` – Popover (Grab, Esc, Tab, Klick daneben), Kontextmenü, Datums- und Zeitauswahl
|
||||
- `markdown.js`, `dates.js` – reine Logik, ohne Shell testbar
|
||||
- `store.js` – Ablage
|
||||
- `store.js` – Ablage, Tombstones, Übernahme vom Server
|
||||
- `sync.js` – Abgleich mit dem Server (Soup, Timer)
|
||||
- `backend/` – Sync-Server (FastAPI, SQLite), `Dockerfile`, `docker-compose.yml`
|
||||
- `dev/` – Test-Werkzeuge
|
||||
|
||||
## Daten
|
||||
@@ -38,6 +40,41 @@ unter allen Fenstern, über dem Wallpaper.
|
||||
- `events.json` – Termine
|
||||
- `todos.json` – Todos
|
||||
- `notes/` – Notizen als `.md`, Ordner beliebig verschachtelt (Obsidian kann den Ordner öffnen)
|
||||
- `deleted-notes.json` – gelöschte Notizen mit Zeitpunkt, damit der Sync sie auch woanders löscht
|
||||
- `sync.json` – Server-Zugang, siehe Sync
|
||||
- `sync-state.json` – letzter Server-Stand
|
||||
|
||||
Gelöschte Termine und Todos bleiben mit `deleted: true` in der Datei und werden nur ausgeblendet.
|
||||
|
||||
## Sync
|
||||
|
||||
Der Server (`backend/`, FastAPI + SQLite) hält den Kern. Jedes Gerät gleicht alle paar Sekunden ab:
|
||||
eigene Änderungen hoch, fremde Änderungen runter. Bei Konflikten gewinnt der Eintrag mit dem
|
||||
neueren `updated` (Notizen: Änderungszeit der Datei, ganze Datei). Offline geht weiter, beim
|
||||
Wiederverbinden wird nachgeliefert. Eine gerade offene Notiz wird nicht von außen überschrieben.
|
||||
|
||||
Zugang auf jedem Gerät in `~/.local/share/desktop-app/sync.json`:
|
||||
|
||||
```
|
||||
{"url": "https://planer.marha.de", "token": "<SYNC_TOKEN aus .env>", "interval": 5}
|
||||
```
|
||||
|
||||
Ohne diese Datei läuft die Extension rein lokal.
|
||||
|
||||
Server-API (alle Aufrufe mit `Authorization: Bearer <SYNC_TOKEN>`):
|
||||
|
||||
- `POST /api/sync` – `{"since": <cursor>, "events": [...], "todos": [...], "notes": [...]}`; Antwort: Änderungen seit `since` plus neuer `cursor`
|
||||
- `GET /api/events`, `/api/todos`, `/api/notes` – aktueller Stand ohne Gelöschte, für andere Anwendungen
|
||||
|
||||
### Server starten
|
||||
|
||||
```
|
||||
cp .env.example .env # SYNC_TOKEN setzen
|
||||
make dev # lokal, http://localhost:8040 (anderer Port: make dev PORT=8050)
|
||||
make prod # auf dem Server: Docker Compose hinter Traefik, https://planer.marha.de
|
||||
make stop | make logs | make down
|
||||
make test # Server-Tests
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -56,6 +93,7 @@ gjs -m dev/tests/run.js # Unit-Tests für dates.js und markdown.js
|
||||
dev/restart.sh # Test-Shell als Fenster starten (zum Selbst-Ausprobieren)
|
||||
dev/restart.sh headless # Test-Shell unsichtbar, für simulierte Eingaben
|
||||
dev/tests/input.sh # Ablauf-Tests mit echter Maus und Tastatur (headless)
|
||||
dev/tests/sync.sh # Sync-Test: lokaler Server plus headless Shell, beide Richtungen
|
||||
dev/eval.sh dev/seed.js # Testdaten einspielen
|
||||
dev/eval.sh 'js' # JavaScript in der Test-Shell ausführen (oder Dateipfad)
|
||||
dev/shot.sh [datei.png] # Screenshot der Test-Shell
|
||||
|
||||
Reference in New Issue
Block a user