## [1.5.0] — 12.03.2026
### Neu: Server-Tool (/server)
- Dashboard mit CPU, RAM, Temperatur, Disk-Auslastung (Live-Polling)
- Aktionen: Server Reboot, Shutdown, nop.tools Neustarten (mit Bestätigungs-Modal)
- Wake-on-LAN: Magic Packet per MAC-Adresse senden
- Service-Steuerung: Restart für noptools, Plex, Nginx, Tautulli, SABnzbd, cloudflared
- Wartungs-Buttons: DNS Cache leeren, APT Cache leeren, USB Standby deaktivieren
- System Log (Live-Terminal-Optik)
- Uptime-Anzeige (90-Tage-Blöcke)
- Link auf Home-Page (Position 00, vor allen anderen Modulen)
### Geändert
- index.html: Server-Tool als Modul 00, Cleaning als Modul 04 ergänzt
- Versionsnummern auf Home-Page aktualisiert (Kalender auf v1.4.0)
### Infrastruktur
- server_routes.py: Flask Blueprint mit allen /api/server/* Endpunkten
- /etc/sudoers.d/noptools-server: passwordlose systemctl/shutdown Befehle
## [1.5.0] — 12.03.2026
### Neu: Server-Tool (/server)
- Dashboard mit CPU, RAM, Temperatur, Disk-Auslastung (Live-Polling)
- Aktionen: Server Reboot, Shutdown, nop.tools Neustarten (mit Bestätigungs-Modal)
- Wake-on-LAN: Magic Packet per MAC-Adresse senden
- Service-Steuerung: Restart für noptools, Plex, Nginx, Tautulli, SABnzbd, cloudflared
- Wartungs-Buttons: DNS Cache leeren, APT Cache leeren, USB Standby deaktivieren
- System Log (Live-Terminal-Optik)
- Uptime-Anzeige (90-Tage-Blöcke)
- Link auf Home-Page (Position 00, vor allen anderen Modulen)
### Geändert
- index.html: Server-Tool als Modul 00, Cleaning als Modul 04 ergänzt
- Versionsnummern auf Home-Page aktualisiert (Kalender auf v1.4.0)
### Infrastruktur
- server_routes.py: Flask Blueprint mit allen /api/server/* Endpunkten
- /etc/sudoers.d/noptools-server: passwordlose systemctl/shutdown Befehle
## [1.5.0] — 12.03.2026
### Neu: Server-Tool (/server)
- Dashboard mit CPU, RAM, Temperatur, Disk-Auslastung (Live-Polling)
- Aktionen: Server Reboot, Shutdown, nop.tools Neustarten (mit Bestätigungs-Modal)
- Wake-on-LAN: Magic Packet per MAC-Adresse senden
- Service-Steuerung: Restart für noptools, Plex, Nginx, Tautulli, SABnzbd, cloudflared
- Wartungs-Buttons: DNS Cache leeren, APT Cache leeren, USB Standby deaktivieren
- System Log (Live-Terminal-Optik)
- Uptime-Anzeige (90-Tage-Blöcke)
- Link auf Home-Page (Position 00, vor allen anderen Modulen)
### Geändert
- index.html: Server-Tool als Modul 00, Cleaning als Modul 04 ergänzt
- Versionsnummern auf Home-Page aktualisiert (Kalender auf v1.4.0)
### Infrastruktur
- server_routes.py: Flask Blueprint mit allen /api/server/* Endpunkten
- /etc/sudoers.d/noptools-server: passwordlose systemctl/shutdown Befehle
# nop.tools/web — CHANGELOG
## [1.5.0] — 2026-03-19
### Neu
- **Marco-Scheduler** (/marco) — PIN-geschuetzter Wochenplan mit Ampel-System
- **Tasks** (/tasks) — Multi-User Aufgaben-Manager mit Rollen + AI Prioritaets-Coach
## [1.4.2] — 2026-03-18
### Fix
- **Timezone-Normalisierung** — Alle Calendar-Events werden vor dem Sortieren auf Europe/Berlin normalisiert. Behebt `can't compare offset-naive and offset-aware datetimes` Crash der `/api/kalender` Route
## [1.4.1] — 2026-03-18
### Fix
- **Kalender API Crash-Schutz** — `/api/kalender` Route hat jetzt try/except, gibt bei Fehlern gültiges JSON zurück statt HTML-Fehlerseite
- **Frontend Error Handling** — `loadEntries()` prüft `r.ok` vor JSON-Parse, zeigt gelbes Warning-Banner bei Kalender-Fehlern (z.B. 404-URLs)
## [1.2.0] — 2026-03-10
### Hinzugefuegt
- 15 CalDAV-URLs fuer alle Artists in config.json (PIERCING, RAMIRO, ANDREW, KONSTANTIN, NATALIIA, OLEG, VIO, JOHN, WOJTEK, TIMOFEY, YAUHENABU, ANDERE GAESTE, MIHAILS, BIANCA, ANGELA)
- Tattoo Booking nutzt jetzt Artist-spezifische CalDAV-URLs statt public ICS
### Behoben
- Tattoo Booking CalDAV 400 Error (gleicher Fix wie Piercing - CalDAV statt ICS URL)
## [1.1.1] — 2026-03-10
### Behoben
- Piercing Booking: CalDAV PUT nutzt jetzt `config.json` CalDAV-URL statt public ICS-URL (war read-only → 400 Error)
## [1.1.0] — 2026-03-10
### Hinzugefügt
- Claude API als Primary-Replier (Anthropic, claude-sonnet-4)
- Automatischer Fallback: Claude → OpenAI und umgekehrt
- Model-Auswahl per API-Parameter (`"model": "claude"` oder `"model": "openai"`)
- Vollständiges Style-Profil aus 973 echten WhatsApp-Verläufen
- Artist-Roster mit 12 Artists (Name, Styles, Instagram)
- 8 Inquiry-Kategorien (Termin, Preis, Beratung, Piercing, Walk-In, Cover-Up, Nachstechen, Gutschein)
- Studio-Regeln im System-Prompt (Shop-Minimum 100€, Nachstechen kostenlos, keine Fixpreise)
- `/api/info` Endpoint (API-Status, Artists, Kategorien, Version)
- 3 Antwort-Varianten (kurz/standard/ausführlich)
### Geändert
- System-Prompt komplett überarbeitet (generisch → Matze-Stil mit echten Phrasen und Emojis)
- Replier gibt jetzt `model`-Feld in Response zurück
## [1.0.0] — 2026-03-08
### Initial Release (Sonnet Session)
- Flask Web-App auf Port 8765
- Kalender-Modul: ICS Feed Aggregation für 14 Kalender
- Booking Piercing: CalDAV Integration mit Kollisionsprüfung
- Booking Tattoo: 6 Artists, 7 Dauer-Optionen
- WhatsApp Replier: OpenAI GPT-4o mit Basic-Prompt
- Landing Page (index.html)
---
# Server-Infrastruktur — CHANGELOG
## [2026-03-10] Session mit Opus 4.6
### Cloudflare Tunnel
- Route für `nop-tools.matzes-server.net` → localhost:8765 hinzugefügt
- Route für `code.matzes-server.net` → localhost:8443 hinzugefügt
- DNS-Eintrag für `code` gelöscht und via Tunnel-Route neu erstellt
- Alle 8 Routes verifiziert (seerr, netdata, glances, home, sabnzbd, tautulli, nop-tools, code)
### Cloudflare Access
- 6 Subdomains unter `matzes-server-home` App geschützt (home, netdata, glances, sabnzbd, code, nop-tools)
- Separate App `matzes-server-tautulli` für tautulli (6er Limit pro App)
- Seerr bewusst ohne Access (öffentlich)
- code-server Auth auf `none` gesetzt (Cloudflare Access übernimmt)
- Tippfehler `sabnzdb` → `sabnzbd` korrigiert
### Netzwerk
- Server Dual-IP: 192.168.68.82 (DSL) + 192.168.88.82 (Kabel)
- Default-Gateway auf FritzBox 192.168.88.1 (Kabel, 1000mbit)
- Netplan: `/etc/netplan/01-netcfg.yaml` — statisch, kein DHCP
- PC Kabel-NIC: 192.168.88.51 (statisch, kein Gateway)
### Server-Tuning
- vm.swappiness=10 (permanent in /etc/sysctl.conf)
- SABnzbd: host_whitelist = sabnzbd.matzes-server.net,
- Plex GPG Key nach /etc/apt/trusted.gpg.d/plex.gpg migriert
### Landing Page
- CODE-SERVER als #08 hinzugefügt (IDE Tag)
- Service-Counter auf 8/8 aktualisiert
### .env
- ANTHROPIC_API_KEY und OPENAI_API_KEY mit korrekten Variablennamen eingetragen (waren vorher ohne Prefix)