diff --git a/Makefile b/Makefile index e637c78..b2ca5be 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,9 @@ -.PHONY: install build run dev auth prod stop logs push pull +.PHONY: install build run dev auth prod stop logs push pull loeschen PY := .venv/bin/python COMPOSE = docker compose SERVER ?= root@178.104.67.87 +URL ?= https://buchwerk.marha.de REMOTE ?= /var/www/buchwerk # Themen zwischen lokal und Server abgleichen; TOPIC= beschränkt auf ein Thema. # Ausgeschlossen: Arbeitsdateien der Agenten (arbeit/) und Logs. Ohne --delete: nichts wird entfernt. @@ -47,3 +48,12 @@ push: pull: rsync -az --progress --mkpath $(SYNC_AUS) "$(SERVER):$(REMOTE)/$(SYNC_QUELLE)" "$(SYNC_QUELLE)" @echo "Geholt: $(SERVER):$(REMOTE)/$(SYNC_QUELLE) → $(SYNC_QUELLE)" + +# Fertige Bücher lassen sich in der Oberfläche nicht löschen. Nur hier, mit Rückfrage: +# make loeschen TOPIC="Godot 4" – entfernt das Thema auf dem Server (über die API) und lokal. +loeschen: + @[ -n "$(TOPIC)" ] || { echo "TOPIC= angeben"; exit 1; } + @printf 'Thema „%s“ samt Buch auf dem Server und lokal unwiderruflich löschen? [j/N] ' "$(TOPIC)"; read a; [ "$$a" = "j" ] + curl -fsS -X DELETE "$(URL)/api/topics/$$(python3 -c 'import sys,urllib.parse; print(urllib.parse.quote(sys.argv[1]))' "$(TOPIC)")" && echo + rm -rf "storage/$(TOPIC)" + @echo "Gelöscht: $(TOPIC)" diff --git a/frontend/src/App.vue b/frontend/src/App.vue index b2a5495..5a0bf38 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -110,7 +110,7 @@ function tokens(n) { return n >= 1e6 ? (n / 1e6).toFixed(1) + 'M' : n >= 1e3 ? M @click="topic = t.name; navAuf = false"> {{ t.titel }} - +
Noch kein Thema.
diff --git a/frontend/src/components/Guide.vue b/frontend/src/components/Guide.vue index 329905c..f3699a9 100644 --- a/frontend/src/components/Guide.vue +++ b/frontend/src/components/Guide.vue @@ -7,6 +7,15 @@ import Lesemodus from './Lesemodus.vue' const props = defineProps({ topic: String, laeuft: Boolean, fortschritt: Number }) const daten = ref(null) const lesemodus = ref(false) +// Vollbild nur aus der Klickgeste heraus (Browser-Vorgabe); iOS-Safari kennt die API nicht. +function lesemodusStart() { + lesemodus.value = true + document.documentElement.requestFullscreen?.().catch(() => {}) +} +function lesemodusEnde() { + lesemodus.value = false + if (document.fullscreenElement) document.exitFullscreen().catch(() => {}) +} const navAuf = ref(false) // Wischgeste (nur Buchansicht, nicht im Lesemodus): nach rechts öffnet das Inhaltsverzeichnis, nach links schließt es let wisch = null @@ -100,7 +109,7 @@ onUnmounted(() => window.removeEventListener('keydown', taste))