Ä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>
- 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>
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>
- Startzeit startet leer (manuelle Eingabe erforderlich)
- Endzeit startet mit aktueller Uhrzeit auf 5 Minuten aufgerundet
- Endzeit erhält Autofokus beim Laden des Formulars
- Startzeit synct Endzeit nicht mehr automatisch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Mehrere Objekte können ohne Schließen des Dropdowns ausgewählt werden.
Fokus kehrt nach jeder Auswahl ins Suchfeld zurück.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Beim Drucken wird die Tabellenschrift auf 0.72rem verkleinert.
Der Drucken-Button lädt vorab alle Einträge des Monats in
aufsteigender Reihenfolge (älteste zuerst) und ruft dann
window.print() auf. API unterstützt jetzt order=asc.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kein separater „+ Neu"-Button mehr. Im Dropdown erscheint stattdessen
„+ ‚[Name]' hinzufügen", sobald der eingegebene Text nicht bekannt ist.
Enter-Taste: bei einem Treffer auswählen, bei keinem Treffer neu anlegen.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Der BEO, der einen Eintrag erstellt hat (created_by), wird in der
BEOs-Spalte fett hervorgehoben und immer als erster angezeigt.
API liefert created_by_kuerzel via JOIN auf beos-Tabelle.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Sonderführung: neues Feld 'Name/Gruppe' (DB-Spalte SonderName), in Liste sichtbar
- Wetter: Race-Condition behoben (API überschreibt DB-Werte beim Bearbeiten nicht mehr)
- Zeiterfassung: TimePicker5 ersetzt durch freie Texteingabe (TimeInput) mit Validierung
- Enter-Taste: navigiert zum nächsten Feld statt die Form abzuschicken; Luftdruck → zurück zu Art; Bemerkungen bleibt normal
- Objektsuche: Freitext-Suche im ObjektSelector, filtert nach Präfix (case-insensitive)
- UI-Anpassungen: kompakteres Layout (space-y-2, kleinere Abstände)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Vollständige Liste: Start- und Endzeit in einer Spalte untereinander
- Vollständige Liste: neue Wetter-Spalte (Temp/Feuchte/Druck) ganz rechts
- Kompakte Vorschau bleibt unverändert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Eingabe: alle 5 Felder (Führung, Datum, Start, Ende, Besucher) in einer Zeile
- Eingabe: Datum einmalig, Start- und Endzeit getrennt
- Führungsarten: Kürzel werden nur in DB gespeichert, Anzeige als Klartext
- Liste: Datum und Zeit getrennt in eigenen Spalten
- Hintergrundfarbe #EEF4FF auf Login- und Passwort-Seite übertragen
- Alle Inputfelder gleich hoch (text-sm durchgehend)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Drucklayout: kein innerer Rahmen, volle DIN-A4-Breite, @page-Regel
- Besucher-Spalte: zeigt keine 0 an wenn kein Wert eingetragen
- Beginn-Zeit synchronisiert automatisch die Ende-Zeit
- Hintergrundfarbe auf helles Blau (#EEF4FF)
- Listen-Tab und kompakte Vorschau mit weißem Rahmen
- Besucher-Spalte schmaler, Header als "Bes." abgekürzt
- Drucken-Button im Listen-Tab, Navigation bei Druck ausgeblendet
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix mustChangePassword session flag for users with pw=NULL
- Add PrF (Private Führung) as new ArtFuehrung type
- Split datetime-local into separate date + TimePicker5 (5-min steps, auto-repeat)
- Responsive Beginn/Ende layout: stacked on mobile, inline on desktop
- Sort BEOs alphabetically by Kürzel in selector
- Title shows active kuppel; hide user display in header
- Selected BEOs show Kürzel only (name stays in dropdown)
- Session timeout reduced to 1 hour
- Add CLAUDE.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dropdown shows 'RF — Reguläre Führung' etc., list displays abbreviation only.
Includes migrate_art.sql for existing data and updated create_table.sql.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Eingabe tab shows last 5 entries below form on lg+ screens (compact mode
hides Objekte and Bemerkungen columns); Liste tab shows full 20 entries
- Beginn, Ende, Besucher fields moved into a single flex row
- LogbuchList accepts limit and compact props
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CustomSelect gains keepOpen prop: dropdown stays open after each
selection, closes via Fertig button or tap outside. ObjektSelector
separates Neu into its own button to keep the dropdown flow clean.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Native <select> popups ignore CSS on iOS/Android. CustomSelect renders
a styled div-based dropdown with full-width touch-friendly option buttons
(py-3, text-base). Used in BeoSelector and ObjektSelector.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Sonnenführung: fixes Sonne as sole object, no selector shown
- BEO-Sitzung / Technischer Dienst: object field hidden, DB stays empty
- Kuppel field removed from form (determined by active tab)
- Responsive layout: single-column on mobile, side-by-side on sm+
- Touch-friendly input sizes (py-3, text-base)
- Compact header and tab labels on small screens
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Vollständige Next.js 16 Webanwendung als Logbuch für die Sternwarte Welzheim.
4 Kuppeln (West/Ost/Süd/Pluto), BEO-basierte Authentifizierung mit erzwungenem
Passwort-Wechsel beim Erstlogin, MySQL-Backend, Docker-Deployment.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>