Commit Graph

94 Commits

Author SHA1 Message Date
admin 9363e17de3 Statistik: dritte Kachel 'Führungen' und Umbenennung 'Alle Events'
Mittlere Kachel von 'Führungen' in 'Alle Events' umbenannt (zeigt
Gesamtzahl aller Events) und neue Kachel 'Führungen' mit der Summe
aller Führungen ergänzt. Bump auf 1.10.2.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:22:33 +02:00
admin 978ed4e1da chore: feat/objekte-kategorie → main (Version 1.10.1)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 16:14:55 +02:00
admin 7475d4fd37 feat: Objekte-Kategorien (stern/sonne/beide) — Version 1.10.1
- Neue Spalte Kategorie (SET stern/sonne) in objekte-Tabelle
- ObjektSelector zeigt je nach ArtFuehrung nur passende Objekte
- SonnenFührung: Sonne fest vorausgewählt, zusätzliche Sonne-Objekte wählbar
- Bestehende Objekte erhalten Kategorie automatisch beim Speichern
- Admin: Kategorie editierbar (stern / sonne / stern,sonne)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 16:14:52 +02:00
admin 96ba03b909 fix: grafikProxy gibt 404 statt HTML zurück für JS/CSS-Assets bei Upstream-Fehler
Verhindert MIME-Type-Fehler im Browser wenn upstream-Server für
JS/CSS-Dateien eine HTML-Fehlerseite zurückgibt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 18:22:53 +02:00
admin 421b589169 fix: host.docker.internal für PHP-Bridge im Prod-Container
extra_hosts in docker-compose.prod.yml damit der Container
host.docker.internal:8080 (Sternwarte) erreichen kann.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:55:45 +02:00
admin d13e3b0ba9 chore: migrateDatabase → main (Version 1.10.0)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:48:18 +02:00
admin a75303f857 feat: Version 1.10.0 — DB-Zugriff auf PHP-Bridge (DB4js_all.php) umgestellt
- lib/db.ts entfernt, mysql2-Abhängigkeit gestrichen
- lib/phpdb.ts: HTTP-Client für alle DB-Operationen via DB4js_all.php
- Alle API-Routen und Server Actions auf phpdb.ts umgestellt
- compose.yml / docker-compose.prod.yml: MySQL/phpMyAdmin-Container entfernt
- app/api/DB4js_all.php/route.ts: Proxy für Statistik-AJAX-Calls
- Statistik-Grafik liest ab 2026 live aus logbuch statt StatistikJahre
- PHP 7.3-Kompatibilität: str_contains → strpos

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:48:15 +02:00
admin c3f0b8f1e0 chore: Version 1.9.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 18:06:34 +02:00
admin 67dc253cd9 docs: anleitung.html aus ANLEITUNG.md aktualisiert
Führungsbuch statt Logbuch, Statistik-Sektion mit 4 Kacheln und
Grafik-Button, Suchfeld-Beschreibung aktualisiert.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 18:03:51 +02:00
admin 39bb94ebb7 fix: public-Ordner in Docker-Runner-Stage kopieren
Next.js standalone serviert /public nicht automatisch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 17:50:33 +02:00
admin 7571b14422 chore: Version 1.9.0 — SSH-Backup nach Logbuch-Eintrag
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 16:57:37 +02:00
admin d88005d9fe feat: manueller Backup-Button für Admin
POST /api/backup (nur Admin) löst triggerBackup() aus.
Button im Header zeigt /✓/✗ Feedback, verschwindet nach 4s.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 16:52:26 +02:00
admin 00a3f02d80 fix: lokale Dump-Datei immer löschen (try/finally)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 16:23:05 +02:00
admin 43ddbbcf72 feat: lokalen Dump nach erfolgreichem Upload löschen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 16:16:58 +02:00
admin 49563e6bd0 fix: backup — Remote-Verzeichnis per mkdir -p vor scp anlegen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 16:05:38 +02:00
admin 4316670ce4 fix: env_file statt Variablen-Substitution in docker-compose
env_file: .env lädt alle Variablen direkt in den Container,
unabhängig vom CWD beim docker-compose-Aufruf. environment:
überschreibt nur noch die drei Werte die vom .env abweichen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 15:28:54 +02:00
admin a12c62bbdc fix: AUTH_SECRET-Check lazy — wirft erst zur Laufzeit, nicht beim Build
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 15:19:25 +02:00
admin 072ca040bb fix: .env nicht ins Docker-Image — Variablen kommen aus Compose/ENV
.dockerignore schließt .env aus dem Build-Kontext aus. Next.js
standalone hat dadurch keine eingebettete .env mehr und liest
Variablen sauber aus process.env (gesetzt via docker-compose
environment:). NEXT_PUBLIC_FAHRKOSTEN_SATZ bleibt als Build-ARG
verfügbar (Default 15). BACKUP_SSH_KEY_FILE default /dev/null
damit Compose auch ohne Backup-Konfiguration startet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 15:18:15 +02:00
admin 52234132ca fix: Dump via mysql2 statt mariadb-dump
MariaDB-Client kennt caching_sha2_password (MySQL-8-Default) nicht.
Der mysql2-Node.js-Treiber implementiert das Plugin nativ und
verbindet sich problemlos. Der Dump schreibt CREATE TABLE +
INSERT-Batches (200 Zeilen) direkt via gzip in die lokale Datei.
Keine externen Binaries mehr für den Dump-Schritt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 14:54:41 +02:00
admin 93b449412f fix: backup — mysql_native_password für MariaDB-Client gegen MySQL 8
mariadb-dump kennt caching_sha2_password nicht (MySQL-8-Default).
--default-auth=mysql_native_password umgeht das. Außerdem wird
der Exit-Code des Dump-Prozesses jetzt ausgewertet — fehlerhafte
Dumps werden erkannt statt als leere Datei abgelegt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 14:44:22 +02:00
admin c3bac456e7 refactor: backup schreibt Dump zuerst lokal, dann scp
Statt direkter pipe dump→gzip→ssh wird der Dump jetzt in
BACKUP_LOCAL_DIR (default /tmp/logbuch-backup) geschrieben
und danach per scp übertragen. So ist der Dump jederzeit
im Container einsehbar; SSH bleibt optional.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 14:23:59 +02:00
admin fb0b64c36c fix: backup blockiert HTTP-Response nicht mehr
setImmediate() startet Backup außerhalb des Next.js Request-Kontexts,
ConnectTimeout=15 verhindert hängende SSH-Verbindungen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 14:06:17 +02:00
admin 2e875ed1ad fix: backup — mariadb-dump, --skip-ssl, SSH-Key per Volume in Compose
- mariadb-dump statt mysqldump (kein Deprecation-Warning in Alpine)
  via BACKUP_DUMP_CMD konfigurierbar (Fallback für lokale MySQL-Umgebung)
- --skip-ssl unterdrückt MariaDB-SSL-Warnung bei MYSQL_PWD-Nutzung
- docker-compose.prod.yml: BACKUP_SSH_URL + Key-Volume (BACKUP_SSH_KEY_FILE)
  damit SSH-Alias-Auflösung und Key-Zugriff im Container funktionieren

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 13:54:43 +02:00
admin d99a696ef0 fix: backup — MYSQL_PWD statt -p Flag, SSH-Key optional
Passwort via MYSQL_PWD-Env statt -p vermeidet die mysqldump-Warnung
und ist sicherer. BACKUP_SSH_KEY_PATH ist jetzt optional: wenn leer,
wird kein -i übergeben und SSH nutzt seine eigene Konfiguration
(~/.ssh/config, ssh-agent). So funktionieren SSH-Config-Aliases
(z.B. 'strato_1') ohne Key-Override.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 15:46:54 +02:00
admin 10b52d268e fix: backup — error-Events auf spawn abfangen, Tilde in Key-Pfad expandieren
Ohne 'error'-Handler auf den Child-Prozessen führt spawn ENOENT zu
uncaughtException statt zu einem gefangenen Promise-Reject. Außerdem
wird '~' im BACKUP_SSH_KEY_PATH jetzt manuell zu $HOME expandiert,
da spawn keine Shell-Expansion macht.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 15:29:38 +02:00
admin cf95f3027f feat: automatisches SSH-Backup nach jedem Logbuch-Eintrag
Nach jedem POST und PUT im Logbuch wird mysqldump (ohne beos-Tabelle)
via gzip | ssh auf einen externen Server übertragen. Backups älter als
30 Tage werden automatisch gelöscht. BACKUP_SSH_URL und
BACKUP_SSH_KEY_PATH in .env konfigurieren; SSH-Key als Volume mounten.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 15:21:01 +02:00
admin 8c60089325 fix: iOS/iPad text color — text-gray-900 on all inputs, tables, headings
Alle Eingabefelder, Tabellenzellen und Überschriften ohne explizite
Textfarbe wurden mit text-gray-900 versehen. iOS rendert sonst
system-default-Farben, die auf weißem Hintergrund kaum lesbar sind.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 14:07:18 +02:00
admin 3ab4779ee5 chore: Version 1.8.0 — Führungsbuch Umbenennung
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 22:41:57 +02:00
admin 9cb22b1a53 Merge branch 'umbenannt': Logbuch → Führungsbuch (UI-Strings) 2026-06-02 22:41:47 +02:00
admin 50b74c4e92 Umbenennung. Logbuch -> Führungsbuch 2026-06-02 22:40:54 +02:00
admin e73680a70d fix: middleware.ts → proxy.ts (Next.js 16 Konvention)
Next.js 16 erwartet proxy.ts mit export function proxy(),
nicht middleware.ts. Deprecation-Warnung damit beseitigt.
CLAUDE.md mit korrekter Konvention aktualisiert.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 16:12:16 +02:00
admin 1f70940dce fix: Middleware aktiviert — proxy.ts → middleware.ts
proxy.ts wurde nie als Next.js-Middleware erkannt (falscher Dateiname,
falscher Exportname). Die mustChangePassword-Weiterleitung und der
Login-Guard liefen daher nie. Zusätzlich Fallback-Secret entfernt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 16:07:21 +02:00
admin a59afefb07 Merge branch 'backup': backup_db.sh dazu gebaut 2026-05-31 17:44:39 +00:00
admin ce365e3e79 V 1.7.9: backup_db.sh dazu gebaut 2026-05-31 17:42:07 +00:00
admin 69c31637bb Remove CI/CD workflows and docs 2026-05-31 15:57:17 +00:00
admin 1ef4f0d9da CI: add Drone pipeline and clarify Gitea auto-deploy support
Build and Push Docker Image / build-and-push (push) Has been cancelled
2026-05-31 15:55:05 +00:00
admin b4f57be2e7 Test commit
Build and Push Docker Image / build-and-push (push) Has been cancelled
2026-05-31 15:47:58 +00:00
admin 03c65c78ed Docs: add Gitea instructions for CI secrets
Build and Push Docker Image / build-and-push (push) Has been cancelled
2026-05-31 15:41:48 +00:00
admin ac77606475 Docs: add CI/CD secrets instructions to ANLEITUNG.md
Build and Push Docker Image / build-and-push (push) Has been cancelled
2026-05-31 15:38:27 +00:00
admin d718d78210 CI: add GitHub Actions workflow to build and push Docker image
Build and Push Docker Image / build-and-push (push) Has been cancelled
2026-05-31 15:37:17 +00:00
admin 27f2d438e2 Bump version to 1.7.8 2026-05-31 15:34:34 +00:00
admin d94de334d7 V1.7.7 Version updatet 2026-05-31 13:32:54 +00:00
admin d5bd359802 feat: Statistik komplett neu gestaltet — kuppelunabhängig, feste Spalten
- Statistik gilt jetzt für alle Kuppeln gemeinsam (kein Kuppel-Filter mehr)
- Neue Tabellenstruktur: Besucher (RF/SF/SonF/PrF/ToT/Gesamt) | Anzahl (Führ./Beob./TD/Sonst./BEOS/ToT/Gesamt)
- Anzahl zählt Einträge (COUNT(*)) statt distinkte Tage
- Zusammenfassungskacheln auf 2 reduziert (Besucher + Führungen gesamt)
- Fix: Besucher-State wird zurückgesetzt wenn ArtFuehrung auf TD/BEOS wechselt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 17:29:08 +02:00
admin 102bc441c6 erster Versuch mit Fahrkosten 2026-05-27 22:33:41 +02:00
admin aad25109da 'Keine Einträge vorhanden bei der List angepasst 2026-05-27 18:05:04 +02:00
admin 10c6554276 v1.7.6: Bearbeiten/Löschen auf BEO-Mitglieder beschränkt
Ändern und Löschen eines Eintrags ist nur noch für angemeldete BEOs des Eintrags möglich (Admins dürfen immer). Serverseitige Prüfung via logbuch_beos-Tabelle; clientseitig werden die Aktions-Buttons nur eingeblendet, wenn der User in der BEO-Liste steht.

Außerdem: setState-in-Effect-Linterfehler in LogbuchList behoben (abgeleiteter Loading-State, abgeleitetes Page-Reset via filterKey).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 19:17:00 +02:00
admin d56ebb229d feat: Anleitung-Button im Footer + Statistik-Effect-Fix
- Footer: 3-Spalten-Layout mit 'Anleitung'-Button in der Mitte (Link auf /anleitung.html)
- anleitung.html: 'Zurück zum Logbuch'-Button oben (beim Drucken ausgeblendet)
- Statistik: synchrones setState im Effect durch abgeleiteten loading/error-State ersetzt; Fetch-Abbruch mit cancelled-Flag; as any durch ArtFuehrung-Cast ersetzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 16:46:38 +02:00
admin 42a2651f8e docs: Anleitung aktualisiert und als HTML-Datei ergänzt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 22:56:51 +02:00
admin b588a70ecd v1.7.5: UI-Verbesserungen Listenansicht und Zeiteingabe
- Listview: Toolbar-Rahmen #407BFF, Fokus 2px ring-inset #235CC8
- Listview: Pfeil-Buttons Monatsauswahl in #85B7D7
- Listview: Klimawerte werden bei allen-0 ausgeblendet
- Zeiteingabe: nur Stunden + Tab setzt Minuten automatisch auf :00

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 22:21:05 +02:00
admin 9e2f430d4a v1.7.4: Suche in Listenansicht (Bemerkungen, Objekte, BEOs)
Suchfeld in der Toolbar der Listenansicht: Suche über alle Einträge
der Kuppel in Bemerkungen, Objekte und BEOs. Monatsauswahl, Suchfeld
und Drucken-Button in einer Zeile; Monatsauswahl wird bei aktiver
Suche unsichtbar aber platzhaltend ausgeblendet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 21:45:09 +02:00