Neuer Router /admin/tls (SUPER_ADMIN only, AuditLog, Rate-Limit 5/hour): - GET /admin/tls/status – erkennt proxy/certbot/internal-Modus, liest Ablaufdatum via openssl x509 -enddate - POST /admin/tls/renew/certbot – ruft setup-tls.sh <domain> auf - POST /admin/tls/renew/internal – ruft setup-tls-internal.sh <hostname> [ip] auf, reloaded nginx danach Läuft mit den Root-Rechten des bestehenden timemaster.service (User=root, unverändert) - Angriffsfläche dadurch begrenzt auf SUPER_ADMIN-Auth + Domain/Hostname-Validierung (Regex, kein Shell-Interpolieren, subprocess mit Argument-Liste statt shell=True). Frontend: neuer Tab "Server / TLS" in TenantsPage – Status-Anzeige + zwei Formulare (öffentlich/intern). 3 neue Tests in test_tls_admin.py (Rollen-Gate, Status im Testcontext, Input-Validierung). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LTxkZEUdfgMxZvHPiZJ8bV
2807 lines
90 KiB
Markdown
2807 lines
90 KiB
Markdown
# TimeMaster – Dev Log
|
||
|
||
## 2026-03-28 21:59 – 22:02 (3m)
|
||
**Beschreibung:** Projekte-Feature entfernen, Timetrack einbauen
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 21:59 – 22:02 (3m)
|
||
**Beschreibung:** Projekte-Feature entfernen, Timetrack einbauen
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 21:59 – 22:02 (3m)
|
||
**Beschreibung:** Projekte-Feature entfernen, Timetrack einbauen
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 22:22 – 22:22 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 22:24 – 22:25 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 14:31 – 19:45 (5h 14m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** archivmail
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:46 – 19:47 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:49 – 19:49 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:52 – 19:52 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:54 – 19:56 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:58 – 20:00 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:06 – 20:06 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:06 – 20:08 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:11 – 20:11 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:12 – 20:12 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:12 – 20:12 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:14 – 20:14 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:15 – 20:15 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:17 – 20:17 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:19 – 20:22 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:38 – 20:38 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:39 – 20:39 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:46 – 20:50 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:05 – 21:08 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:09 – 21:13 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:17 – 21:18 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:27 – 21:31 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:06 – 17:07 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:10 – 17:11 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:20 – 17:20 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:27 – 17:27 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:31 – 17:32 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:39 – 17:40 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:41 – 17:44 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:47 – 17:49 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:57 – 17:58 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 18:18 – 18:19 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 18:27 – 18:32 (5m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 19:50 – 19:52 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 19:52 – 19:53 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 22:43 – 10:21 (11h 37m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 17:20 – 17:34 (14m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 17:34 – 17:35 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 22:47 – 22:51 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 22:54 – 22:55 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 23:00 – 23:00 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 23:00 – 23:10 (9m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 19:20 – 19:21 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 20:02 – 20:03 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- 1fedd68 Initial commit – TimeMaster Zeiterfassung & HR-Tool
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 20:08 – 20:09 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 20:11 – 20:12 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 39a0e37 .gitignore und DEVLOG aktualisieren
|
||
|
||
### Geänderte Dateien
|
||
- .gitignore | 4 ++++
|
||
- DEVLOG.md | 22 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-23 20:33 – 21:07 (34m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- fbc04bc agent-07 phase 2: fix test isolation + CSV import UI
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++
|
||
- backend/app/services/user_import_service.py | 6 +-
|
||
- backend/tests/conftest.py | 10 +-
|
||
- backend/tests/test_personnel_number.py | 27 ++--
|
||
- frontend/src/pages/UsersPage.tsx | 186 +++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-23 21:07 – 21:08 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++
|
||
- backend/app/services/user_import_service.py | 6 +-
|
||
- backend/tests/conftest.py | 10 +-
|
||
- backend/tests/test_personnel_number.py | 27 ++--
|
||
- frontend/src/pages/UsersPage.tsx | 186 +++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-23 21:08 – 21:08 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++
|
||
- backend/app/services/user_import_service.py | 6 +-
|
||
- backend/tests/conftest.py | 10 +-
|
||
- backend/tests/test_personnel_number.py | 27 ++--
|
||
- frontend/src/pages/UsersPage.tsx | 186 +++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-23 21:09 – 21:16 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 8e5e76d add deployment updater scripts
|
||
|
||
### Geänderte Dateien
|
||
- scripts/check_migrations.sh | 344 +++++++++++++++
|
||
- update.sh | 1007 ++++++++++++++++++++-----------------------
|
||
|
||
---
|
||
## 2026-05-23 21:23 – 21:31 (8m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 3dfcff3 update.sh: switch backend sync to git pull instead of rsync
|
||
|
||
### Geänderte Dateien
|
||
- update.sh | 53 +++++++++++++++++++++++------------------------------
|
||
|
||
---
|
||
## 2026-05-23 21:47 – 21:48 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- update.sh | 53 +++++++++++++++++++++++------------------------------
|
||
|
||
---
|
||
## 2026-05-23 21:51 – 21:58 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 6d4b8a9 agent-rls: PostgreSQL Row Level Security für Mandanten-Isolation
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 79 ++++++++
|
||
- backend/app/core/database.py | 6 +
|
||
- backend/app/core/dependencies.py | 18 ++
|
||
- backend/migrations/env.py | 4 +
|
||
- .../migrations/versions/0024_row_level_security.py | 208 +++++++++++++++++++++
|
||
- backend/tests/conftest.py | 4 +
|
||
|
||
---
|
||
## 2026-05-23 22:00 – 22:35 (34m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- dd3e069 fix: router db.refresh() nach commit bricht RLS-Kontext
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 16 ++
|
||
- backend/app/routers/absences.py | 10 -
|
||
- backend/app/routers/caldav.py | 2 -
|
||
- backend/app/routers/kiosk.py | 3 -
|
||
- backend/app/routers/ldap.py | 2 -
|
||
- backend/app/routers/projects.py | 2 -
|
||
- backend/app/routers/smtp.py | 1 -
|
||
- backend/app/routers/time_entries.py | 10 -
|
||
- backend/migrations/env.py | 4 -
|
||
- .../migrations/versions/0024_row_level_security.py | 223 +++++----------------
|
||
- backend/tests/conftest.py | 48 +++++
|
||
- backend/tests/test_rls.py | 190 ++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-23 22:43 – 22:52 (9m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- eb12280 fix: 8 pre-existing Test-Fehler behoben
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 3 ++-
|
||
- backend/tests/test_absences.py | 30 +++++++++++++++++++++++++-----
|
||
- backend/tests/test_reports.py | 2 +-
|
||
- backend/tests/test_time.py | 25 ++++++++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-23 23:08 – 23:08 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 3 ++-
|
||
- backend/tests/test_absences.py | 30 +++++++++++++++++++++++++-----
|
||
- backend/tests/test_reports.py | 2 +-
|
||
- backend/tests/test_time.py | 25 ++++++++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-23 23:12 – 10:21 (11h 09m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 3 ++-
|
||
- backend/tests/test_absences.py | 30 +++++++++++++++++++++++++-----
|
||
- backend/tests/test_reports.py | 2 +-
|
||
- backend/tests/test_time.py | 25 ++++++++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-24 10:26 – 11:29 (1h 03m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- ada1b51 docs: vollständige Projektdokumentation hinzugefügt
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:43 – 11:43 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:46 – 11:47 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:48 – 11:49 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:51 – 11:51 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:54 – 11:55 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:55 – 11:56 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:57 – 11:57 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 12:03 – 12:03 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 128 +++++++
|
||
- backend/app/routers/absence.py | 159 +++++++++
|
||
- backend/app/routers/absence_service.py | 615 ++++++++++++++++++++++++++++++++
|
||
- backend/requirements.txt | 1 +
|
||
- backend/tests/test_reports.py | 44 +++
|
||
- frontend/src/pages/TimeTrackingPage.tsx | 521 +++++++++++++++++++--------
|
||
|
||
---
|
||
## 2026-05-24 12:04 – 12:08 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 981bde3 feat(kiosk): Migration 0021 – Ed25519-Auth, Status-Enum, Heartbeat, IP-Whitelist
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/company.py | 5 +
|
||
- backend/app/models/kiosk_device.py | 47 ++++++-
|
||
- backend/migrations/versions/0021_kiosk_security.py | 143 +++++++++++++++++++++
|
||
- .../migrations/versions/0022_sick_note_config.py | 2 +-
|
||
|
||
---
|
||
## 2026-05-24 12:09 – 12:11 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/company.py | 5 +
|
||
- backend/app/models/kiosk_device.py | 47 ++++++-
|
||
- backend/migrations/versions/0021_kiosk_security.py | 143 +++++++++++++++++++++
|
||
- .../migrations/versions/0022_sick_note_config.py | 2 +-
|
||
|
||
---
|
||
## 2026-05-24 12:13 – 12:13 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/company.py | 5 +
|
||
- backend/app/models/kiosk_device.py | 47 ++++++-
|
||
- backend/migrations/versions/0021_kiosk_security.py | 143 +++++++++++++++++++++
|
||
- .../migrations/versions/0022_sick_note_config.py | 2 +-
|
||
|
||
---
|
||
## 2026-05-24 12:17 – 12:19 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 58 ++++
|
||
- backend/app/core/kiosk_security.py | 233 ++++++++++++++
|
||
- backend/app/routers/kiosk.py | 119 +++++--
|
||
- backend/app/schemas/kiosk.py | 70 ++++-
|
||
- backend/app/services/kiosk_service.py | 138 ++++++---
|
||
- backend/cli.py | 529 ++++++++++++++++++++++++++++++++
|
||
- backend/requirements.txt | 2 +
|
||
- frontend/DEVLOG.md | 16 +
|
||
- frontend/src/components/Layout.tsx | 71 ++++-
|
||
- frontend/src/pages/KioskDevicesPage.tsx | 412 +++++++++++++++++--------
|
||
|
||
---
|
||
## 2026-05-24 12:37 – 12:47 (10m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- 094863f feat: agent-02-kiosk Phase 1 - NFC UID migration + session service
|
||
- 1db7164 fix(security): SSRF-Schutz für CalDAV-URLs
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/core/redis.py | 28 ++++++
|
||
- backend/app/models/user.py | 3 +
|
||
- backend/app/services/kiosk_session_service.py | 114 ++++++++++++++++++++++
|
||
- backend/migrations/versions/0025_kiosk_nfc_uid.py | 36 +++++++
|
||
- frontend/DEVLOG.md | 51 ++++++++++
|
||
|
||
---
|
||
## 2026-05-24 12:48 – 12:49 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 30828c6 feat: agent-02-kiosk Phase 2A - Auth endpoints (PIN/NFC/QR/List)
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 16 +++
|
||
- backend/app/routers/kiosk.py | 130 ++++++++++++++++++-
|
||
- backend/app/schemas/kiosk_auth.py | 38 ++++++
|
||
- backend/app/services/kiosk_auth_service.py | 195 +++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 12:52 – 12:53 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 7e19311 feat: CALDAV_ALLOWED_CIDRS Whitelist für interne CalDAV/Nextcloud-Server
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 12:55 – 12:56 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 12:57 – 12:58 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 13:01 – 13:01 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 13:03 – 13:04 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- a639de1 docs: CalDAV-Konfiguration und CALDAV_ALLOWED_CIDRS in deployment.md
|
||
|
||
### Geänderte Dateien
|
||
- docs/deployment.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 13:15 – 19:45 (6h 29m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 62c4e74 security: 9 Findings aus Security-Audit behoben (CRITICAL + HIGH + MEDIUM)
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 63 ++++++++++++++++++++
|
||
- backend/app/core/crypto.py | 42 +++++++++++++
|
||
- backend/app/core/kiosk_security.py | 37 ++++++++----
|
||
- backend/app/main.py | 18 ++++--
|
||
- backend/app/models/ldap_config.py | 2 +-
|
||
- backend/app/models/user.py | 2 +-
|
||
- backend/app/routers/auth.py | 51 +++++++++++++---
|
||
- backend/app/routers/import_kimai.py | 17 +++++-
|
||
- backend/app/routers/users.py | 20 ++++++-
|
||
- backend/app/services/auth_service.py | 13 ++++-
|
||
- backend/app/services/caldav_service.py | 17 ++++++
|
||
- backend/migrations/versions/0026_security_fixes.py | 68 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 19:53 – 20:58 (1h 05m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 63 ++++++++++++++++++++
|
||
- backend/app/core/crypto.py | 42 +++++++++++++
|
||
- backend/app/core/kiosk_security.py | 37 ++++++++----
|
||
- backend/app/main.py | 18 ++++--
|
||
- backend/app/models/ldap_config.py | 2 +-
|
||
- backend/app/models/user.py | 2 +-
|
||
- backend/app/routers/auth.py | 51 +++++++++++++---
|
||
- backend/app/routers/import_kimai.py | 17 +++++-
|
||
- backend/app/routers/users.py | 20 ++++++-
|
||
- backend/app/services/auth_service.py | 13 ++++-
|
||
- backend/app/services/caldav_service.py | 17 ++++++
|
||
- backend/migrations/versions/0026_security_fixes.py | 68 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 21:00 – 21:05 (5m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 63 ++++++++++++++++++++
|
||
- backend/app/core/crypto.py | 42 +++++++++++++
|
||
- backend/app/core/kiosk_security.py | 37 ++++++++----
|
||
- backend/app/main.py | 18 ++++--
|
||
- backend/app/models/ldap_config.py | 2 +-
|
||
- backend/app/models/user.py | 2 +-
|
||
- backend/app/routers/auth.py | 51 +++++++++++++---
|
||
- backend/app/routers/import_kimai.py | 17 +++++-
|
||
- backend/app/routers/users.py | 20 ++++++-
|
||
- backend/app/services/auth_service.py | 13 ++++-
|
||
- backend/app/services/caldav_service.py | 17 ++++++
|
||
- backend/migrations/versions/0026_security_fixes.py | 68 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 21:09 – 21:12 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 8a04525 fix: auto-refresh access token on 401 in API client
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/api/client.ts | 56 ++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 21:15 – 21:17 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- edb1568 feat: mobile Login-Seite /mobile/login
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 77 ++++++
|
||
- frontend/src/App.tsx | 4 +
|
||
- frontend/src/pages/mobile/MobileBottomNav.tsx | 69 +++++
|
||
- frontend/src/pages/mobile/MobileLoginPage.tsx | 195 ++++++++++++++
|
||
- frontend/src/pages/mobile/MobilePage.tsx | 75 ++++++
|
||
- frontend/src/pages/mobile/MobileProfileScreen.tsx | 124 +++++++++
|
||
- frontend/src/pages/mobile/MobileStampScreen.tsx | 310 ++++++++++++++++++++++
|
||
- frontend/src/pages/mobile/MobileTodayScreen.tsx | 146 ++++++++++
|
||
|
||
---
|
||
## 2026-05-24 23:21 – 23:22 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 4a1dec7 fix: mobile/tablet Geräteerkennung in LoginPage → Redirect zu /mobile/login
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/LoginPage.tsx | 11 +++++++++--
|
||
|
||
---
|
||
## 2026-05-24 23:23 – 23:23 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/LoginPage.tsx | 11 +++++++++--
|
||
|
||
---
|
||
## 2026-05-24 23:28 – 23:31 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 22be68e feat: Abwesenheiten-Screen in Mobile-App
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 40 +++
|
||
- frontend/src/pages/mobile/MobileAbsencesScreen.tsx | 370 +++++++++++++++++++++
|
||
- frontend/src/pages/mobile/MobileBottomNav.tsx | 16 +-
|
||
- frontend/src/pages/mobile/MobilePage.tsx | 17 +-
|
||
|
||
---
|
||
## 2026-05-24 23:33 – 23:33 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 40 +++
|
||
- frontend/src/pages/mobile/MobileAbsencesScreen.tsx | 370 +++++++++++++++++++++
|
||
- frontend/src/pages/mobile/MobileBottomNav.tsx | 16 +-
|
||
- frontend/src/pages/mobile/MobilePage.tsx | 17 +-
|
||
|
||
---
|
||
## 2026-05-24 23:50 – 23:54 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 0ba16bb fix: ternäre Button-Kette in MobileStampScreen korrigiert
|
||
- c8804ef feat: Admin-Toggle für mobile Zeiterfassung
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/mobile/MobileStampScreen.tsx | 2 --
|
||
|
||
---
|
||
## 2026-05-24 23:55 – 23:55 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/mobile/MobileStampScreen.tsx | 2 --
|
||
|
||
---
|
||
## 2026-05-24 23:58 – 00:19 (20m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- f70736f test: test_cancel_absence an neue 200-Response angepasst (vorher 204)
|
||
- fd382e3 test: FZA tests korrigiert (can_manual_time_entry, TimeEntryWithWarnings, CalDAV race fix)
|
||
- 3450029 feat: Freizeitausgleich-Lücken geschlossen (Gap 1-3) + konfigurierbare Schwellwerte
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/test_absences.py | 3 ++-
|
||
|
||
---
|
||
## 2026-05-25 00:21 – 00:22 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 1170e59 fix: AuditLog bei FZA-Stornierung mit korrektem old_status und fza_hours_refunded-Flag
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 5 ++++-
|
||
|
||
---
|
||
## 2026-05-25 00:26 – 00:29 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 5 ++++-
|
||
|
||
---
|
||
## 2026-05-25 00:33 – 00:39 (6m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 5 ++++-
|
||
|
||
---
|
||
## 2026-05-25 00:42 – 00:43 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 5 ++++-
|
||
|
||
---
|
||
## 2026-05-25 00:45 – 01:00 (14m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 0dd736c fix: require_role in special_assignments router ohne extra Depends() wrapping
|
||
- 767ff9f fix: migration 0029 enum DO-Block statt CREATE TYPE IF NOT EXISTS
|
||
- 82ce592 fix: migration 0029 idempotent (IF NOT EXISTS für Enum + Tabelle)
|
||
- d60349d feat: Sondervertretungs-Faktoren (special_assignments)
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/routers/special_assignments.py | 10 +++++-----
|
||
|
||
---
|
||
## 2026-05-25 01:06 – 01:13 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 5049747 feat: Sondervertretungen als eigene HR-Seite (/hr/special-assignments)
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 +
|
||
- frontend/src/App.tsx | 2 +
|
||
- frontend/src/components/Layout.tsx | 5 +-
|
||
- frontend/src/pages/SpecialAssignmentsPage.tsx | 480 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/UsersPage.tsx | 106 ------
|
||
|
||
---
|
||
## 2026-05-25 01:15 – 01:15 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 +
|
||
- frontend/src/App.tsx | 2 +
|
||
- frontend/src/components/Layout.tsx | 5 +-
|
||
- frontend/src/pages/SpecialAssignmentsPage.tsx | 480 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/UsersPage.tsx | 106 ------
|
||
|
||
---
|
||
## 2026-05-25 01:17 – 01:17 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 +
|
||
- frontend/src/App.tsx | 2 +
|
||
- frontend/src/components/Layout.tsx | 5 +-
|
||
- frontend/src/pages/SpecialAssignmentsPage.tsx | 480 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/UsersPage.tsx | 106 ------
|
||
|
||
---
|
||
## 2026-05-25 01:18 – 01:22 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- eae0f6f docs: ROADMAP.md angelegt – alle Features in Planung
|
||
|
||
### Geänderte Dateien
|
||
- ROADMAP.md | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-25 01:28 – 01:36 (8m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- ROADMAP.md | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-25 01:37 – 01:40 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- ROADMAP.md | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-25 01:41 – 01:42 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- e83a3fb fix: agent-08 Kiosk-Härtung + 24h-Zeiteintrag-Bug
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 01:42 – 01:43 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 19:47 – 19:47 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 19:48 – 19:49 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 22:10 – 22:14 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 22:15 – 22:16 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 22:16 – 22:16 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 22:16 – 22:16 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 78 ++++++++++++++++++++++++++
|
||
- backend/app/models/kiosk_device.py | 2 +-
|
||
- backend/app/models/time_entry.py | 17 ++++--
|
||
- backend/app/schemas/company.py | 6 ++
|
||
- backend/app/services/time_service.py | 10 ++--
|
||
- backend/cli.py | 78 ++++++++++++++++++++++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 88 +++++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 22:17 – 22:18 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- a63b0e8 feat: Stunden-Auszahlung Feature (/hr/payouts)
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 136 ++++++
|
||
- backend/app/main.py | 2 +
|
||
- backend/app/models/__init__.py | 2 +
|
||
- backend/app/models/hours_payout.py | 45 ++
|
||
- backend/app/routers/hours_payouts.py | 189 +++++++++
|
||
- backend/app/schemas/hours_payout.py | 33 ++
|
||
- backend/migrations/versions/0030_hours_payouts.py | 36 ++
|
||
- frontend/src/App.tsx | 2 +
|
||
- frontend/src/components/Layout.tsx | 1 +
|
||
- frontend/src/pages/HoursPayoutPage.tsx | 484 ++++++++++++++++++++++
|
||
- frontend/src/types/hoursPayout.ts | 26 ++
|
||
|
||
---
|
||
## 2026-05-25 22:21 – 22:22 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 549783a feat: Stunden-Auszahlungen in /mobile Profil-Screen
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 21 ++++++
|
||
- frontend/src/pages/mobile/MobileProfileScreen.tsx | 87 ++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-25 22:25 – 22:29 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 23b4588 fix: Überstunden tages-weise berechnen statt Gesamtzeitraum
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/report_service.py | 19 ++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-25 22:32 – 22:33 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/report_service.py | 19 ++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-25 22:37 – 22:39 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/report_service.py | 19 ++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-25 22:39 – 22:40 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/report_service.py | 19 ++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-25 22:44 – 22:47 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/report_service.py | 19 ++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-25 22:48 – 22:51 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 23ba7f1 feat: Überstunden-Kappung + Jahresverfall pro Firma konfigurierbar
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 67 +++++++++
|
||
- backend/app/models/company.py | 7 +
|
||
- backend/app/models/overtime_balance.py | 1 +
|
||
- backend/app/routers/absences.py | 32 ++++
|
||
- backend/app/schemas/company.py | 10 ++
|
||
- backend/app/services/report_service.py | 54 +++++++
|
||
- .../versions/0031_overtime_cap_expiry.py | 33 +++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 161 ++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-26 10:39 – 10:39 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 18 ++
|
||
- frontend/src/pages/mobile/MobileTodayScreen.tsx | 225 ++++++++++++++++++------
|
||
|
||
---
|
||
## 2026-05-26 10:40 – 10:41 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- c8578f6 chore: CLAUDE.md aus Git-Tracking entfernen
|
||
|
||
### Geänderte Dateien
|
||
- .gitignore | 1 +
|
||
- CLAUDE.md | 347 -------------------------------------------------------------
|
||
|
||
---
|
||
## 2026-05-26 10:41 – 10:42 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- c9cb6d7 chore: .claude/ aus Git-Tracking entfernen
|
||
|
||
### Geänderte Dateien
|
||
- .claude/agents/code-optimizer.md | 90 ------------------------------------
|
||
- .claude/agents/frontend.md | 94 --------------------------------------
|
||
- .claude/agents/security-auditor.md | 92 -------------------------------------
|
||
- .gitignore | 1 +
|
||
|
||
---
|
||
## 2026-05-26 10:42 – 10:43 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- .claude/agents/code-optimizer.md | 90 ------------------------------------
|
||
- .claude/agents/frontend.md | 94 --------------------------------------
|
||
- .claude/agents/security-auditor.md | 92 -------------------------------------
|
||
- .gitignore | 1 +
|
||
|
||
---
|
||
## 2026-05-26 10:51 – 10:54 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- .claude/agents/code-optimizer.md | 90 ------------------------------------
|
||
- .claude/agents/frontend.md | 94 --------------------------------------
|
||
- .claude/agents/security-auditor.md | 92 -------------------------------------
|
||
- .gitignore | 1 +
|
||
|
||
---
|
||
## 2026-05-26 10:56 – 11:07 (11m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- .claude/agents/code-optimizer.md | 90 ------------------------------------
|
||
- .claude/agents/frontend.md | 94 --------------------------------------
|
||
- .claude/agents/security-auditor.md | 92 -------------------------------------
|
||
- .gitignore | 1 +
|
||
|
||
---
|
||
## 2026-05-26 11:11 – 11:13 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 06bb1c1 feat: FZA Einzelstunden + Security-Fixes (K-1–K-5, H-2–H-4, M-1/M-3/M-6)
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 80 ++++++++++++
|
||
- backend/app/core/config.py | 8 +-
|
||
- backend/app/core/crypto.py | 34 ++++-
|
||
- backend/app/core/kiosk_security.py | 20 ++-
|
||
- backend/app/main.py | 13 +-
|
||
- backend/app/models/absence.py | 4 +
|
||
- backend/app/routers/absences.py | 30 ++++-
|
||
- backend/app/routers/auth.py | 12 +-
|
||
- backend/app/schemas/absence.py | 12 +-
|
||
- backend/app/services/absence_service.py | 31 +++--
|
||
- backend/app/services/auth_service.py | 115 ++++++++++++++---
|
||
- backend/app/services/kiosk_auth_service.py | 94 +++++++++++---
|
||
- backend/app/services/user_service.py | 42 +++++++
|
||
- backend/migrations/versions/0032_fza_hours.py | 21 ++++
|
||
- frontend/DEVLOG.md | 60 +++++++++
|
||
- frontend/src/components/absences/AbsenceModals.tsx | 137 +++++++++++++++------
|
||
- frontend/src/hooks/useAbsences.ts | 2 +
|
||
- frontend/src/pages/AbsencesPage.tsx | 29 ++++-
|
||
- nginx.conf | 62 ++++++++--
|
||
|
||
---
|
||
## 2026-05-26 11:15 – 11:15 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- f723c76 docs: DEVLOG aktualisiert
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 29 +++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-26 11:16 – 11:16 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 29 +++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-26 11:17 – 11:25 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 654258f security: M-2 HttpOnly-Cookie + M-4 TrustedHost-Warning + M-5 TOTP-Lockout + M-7 zentraler get_client_ip()
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 22 +++++++
|
||
- backend/app/core/dependencies.py | 18 +++++-
|
||
- backend/app/main.py | 8 +++
|
||
- backend/app/routers/absences.py | 4 +-
|
||
- backend/app/routers/auth.py | 116 +++++++++++++++++++++++++++++++----
|
||
- backend/app/routers/busylight.py | 6 +-
|
||
- backend/app/routers/hours_payouts.py | 6 +-
|
||
- backend/app/schemas/auth.py | 4 +-
|
||
- backend/app/services/auth_service.py | 7 ++-
|
||
- frontend/src/api/client.ts | 17 +++--
|
||
- frontend/src/context/AuthContext.tsx | 14 +++--
|
||
|
||
---
|
||
## 2026-05-26 11:26 – 11:27 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 22 +++++++
|
||
- backend/app/core/dependencies.py | 18 +++++-
|
||
- backend/app/main.py | 8 +++
|
||
- backend/app/routers/absences.py | 4 +-
|
||
- backend/app/routers/auth.py | 116 +++++++++++++++++++++++++++++++----
|
||
- backend/app/routers/busylight.py | 6 +-
|
||
- backend/app/routers/hours_payouts.py | 6 +-
|
||
- backend/app/schemas/auth.py | 4 +-
|
||
- backend/app/services/auth_service.py | 7 ++-
|
||
- frontend/src/api/client.ts | 17 +++--
|
||
- frontend/src/context/AuthContext.tsx | 14 +++--
|
||
|
||
---
|
||
## 2026-05-26 11:30 – 11:35 (5m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 4dc6913 security: H-1 settings-Whitelist + H-5 UUID-Guard + H-6 DNS-Pinning + H-7 Heartbeat-Timing
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 42 ++++++++++++++++++
|
||
- backend/app/core/dependencies.py | 12 ++++--
|
||
- backend/app/core/kiosk_security.py | 11 +++--
|
||
- backend/app/routers/companies.py | 8 +++-
|
||
- backend/app/schemas/company.py | 17 +++++++-
|
||
- backend/app/services/caldav_service.py | 78 +++++++++++++++++++++++++++++-----
|
||
- backend/app/services/kiosk_service.py | 8 +++-
|
||
|
||
---
|
||
## 2026-05-26 11:36 – 11:36 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 42 ++++++++++++++++++
|
||
- backend/app/core/dependencies.py | 12 ++++--
|
||
- backend/app/core/kiosk_security.py | 11 +++--
|
||
- backend/app/routers/companies.py | 8 +++-
|
||
- backend/app/schemas/company.py | 17 +++++++-
|
||
- backend/app/services/caldav_service.py | 78 +++++++++++++++++++++++++++++-----
|
||
- backend/app/services/kiosk_service.py | 8 +++-
|
||
|
||
---
|
||
## 2026-05-26 12:39 – 12:55 (15m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- f2e9974 security: N-1 uvicorn proxy-headers + N-2 Token-Reuse-Detection + N-3 XSS-Audit + N-4 Token-URL-Fragment + N-5 pip-audit CI
|
||
|
||
### Geänderte Dateien
|
||
- .gitea/workflows/security.yml | 56 ++++++++++++++++++++++++++
|
||
- DEVLOG.md | 34 ++++++++++++++++
|
||
- backend/app/services/auth_service.py | 69 +++++++++++++++++++++++++++-----
|
||
- backend/app/services/email_service.py | 4 +-
|
||
- frontend/src/pages/ResetPasswordPage.tsx | 6 +--
|
||
- timemaster.service | 29 +++-----------
|
||
|
||
---
|
||
## 2026-05-26 12:56 – 13:18 (22m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 03d5fd6 fix: Redis-Lockout-Keys in Test-Setup bereinigen
|
||
- a870ac6 fix: Refresh-Endpoint bevorzugt Body-Token über Cookie (Token-Rotation Test)
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-05-26 13:19 – 13:19 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-05-26 13:23 – 13:35 (12m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-05-26 13:36 – 13:36 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-05-26 13:37 – 13:42 (5m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-05-29 17:20 – 17:21 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-05-29 17:22 – 17:27 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-05-29 17:46 – 17:47 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-06-02 15:30 – 15:51 (20m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-06-02 15:56 – 15:56 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/tests/conftest.py | 11 +++++++++++
|
||
|
||
---
|
||
## 2026-06-02 15:57 – 15:59 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- cead46c feat: Statischer firmenweiter QR-Code für mobiles Ein-/Ausstempeln
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/main.py | 2 +
|
||
- backend/app/models/company.py | 7 +++
|
||
- backend/app/routers/companies.py | 80 ++++++++++++++++++++++++++++++-
|
||
- backend/app/routers/public_stamp.py | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/app/schemas/company.py | 17 +++++++
|
||
- backend/app/schemas/public_stamp.py | 47 +++++++++++++++++++
|
||
- backend/app/services/kiosk_auth_service.py | 52 +++++++++++++++++++++
|
||
- backend/app/services/public_stamp_session_service.py | 77 ++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0033_public_stamp_token.py | 38 +++++++++++++++
|
||
- backend/tests/test_public_stamp.py | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/App.tsx | 2 +
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/ProfilePage.tsx | 55 ++++++++++++++++++++++
|
||
- frontend/src/pages/PublicStampPage.tsx | 265 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-02 18:27 – 20:06 (1h 38m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 548aebe fix: QR-Stempel-Status korrekt – Status vor mid-request commit ermitteln
|
||
- 3423b65 docs: DEVLOG für QR-Stempel-Feature
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/routers/public_stamp.py | 11 +++++++++--
|
||
|
||
---
|
||
## 2026-06-02 22:06 – 22:11 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- de35eaa feat: QR-Stempeln als eigener Menüpunkt + Tablet-Link
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++++++
|
||
- frontend/DEVLOG.md | 22 +++++++++++
|
||
- frontend/src/App.tsx | 2 +
|
||
- frontend/src/components/Layout.tsx | 1 +
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 167 +-----------------------------------------------------------------------------
|
||
- frontend/src/pages/QrStampSettingsPage.tsx | 247 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-02 22:12 – 22:14 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++++++
|
||
- frontend/DEVLOG.md | 22 +++++++++++
|
||
- frontend/src/App.tsx | 2 +
|
||
- frontend/src/components/Layout.tsx | 1 +
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 167 +-----------------------------------------------------------------------------
|
||
- frontend/src/pages/QrStampSettingsPage.tsx | 247 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 00:29 – 00:30 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 +++++++
|
||
- frontend/DEVLOG.md | 22 ++++++++++++
|
||
- frontend/src/App.tsx | 2 ++
|
||
- frontend/src/components/Layout.tsx | 1 +
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 167 +------------------------------------------------------------------------------------------
|
||
- frontend/src/pages/QrStampSettingsPage.tsx | 247 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 00:50 – 01:22 (32m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 898a81f feat: Reseller-Rolle + SUPER_ADMIN-Mandantenübersicht
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 48 +++++++++++++++++++++++
|
||
- backend/app/core/dependencies.py | 10 ++++-
|
||
- backend/app/main.py | 3 ++
|
||
- backend/app/models/company.py | 18 ++++++++-
|
||
- backend/app/models/user.py | 5 ++-
|
||
- backend/app/routers/reseller.py | 83 ++++++++++++++++++++++++++++++++++++++++
|
||
- backend/app/routers/tenants.py | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/app/schemas/reseller.py | 69 ++++++++++++++++++++++++++++++++++
|
||
- backend/app/services/auth_service.py | 7 ++++
|
||
- backend/app/services/tenant_service.py | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0034_reseller.py | 70 ++++++++++++++++++++++++++++++++++
|
||
- backend/tests/conftest.py | 14 +++++--
|
||
- backend/tests/test_reseller.py | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/App.tsx | 4 ++
|
||
- frontend/src/components/Layout.tsx | 1 +
|
||
- frontend/src/context/AuthContext.tsx | 8 +++-
|
||
- frontend/src/pages/ResellerCompaniesPage.tsx | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/TenantsPage.tsx | 255 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 01:26 – 01:29 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 28 ++++++++++++++++++++++++++++
|
||
- backend/app/routers/reseller.py | 8 +++++---
|
||
- backend/app/routers/tenants.py | 54 ++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/app/schemas/auth.py | 5 ++++-
|
||
- backend/app/schemas/reseller.py | 13 ++++++++++---
|
||
- backend/app/services/tenant_service.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/tests/test_reseller.py | 20 ++++++++++++++++++++
|
||
- frontend/src/pages/ResellerCompaniesPage.tsx | 45 +++++++++++++++++++++++++++++++++++++++++----
|
||
- frontend/src/pages/TenantsPage.tsx | 30 +++++++++++++++++++++---------
|
||
|
||
---
|
||
## 2026-06-23 01:36 – 01:38 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 28 ++++++++++++++++++++++++++++
|
||
- backend/app/routers/reseller.py | 8 +++++---
|
||
- backend/app/routers/tenants.py | 54 ++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/app/schemas/auth.py | 5 ++++-
|
||
- backend/app/schemas/reseller.py | 13 ++++++++++---
|
||
- backend/app/services/tenant_service.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/tests/test_reseller.py | 20 ++++++++++++++++++++
|
||
- frontend/src/pages/ResellerCompaniesPage.tsx | 45 +++++++++++++++++++++++++++++++++++++++++----
|
||
- frontend/src/pages/TenantsPage.tsx | 30 +++++++++++++++++++++---------
|
||
|
||
---
|
||
## 2026-06-23 01:38 – 01:39 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 28 ++++++++++++++++++++++++++++
|
||
- backend/app/routers/reseller.py | 8 +++++---
|
||
- backend/app/routers/tenants.py | 54 ++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/app/schemas/auth.py | 5 ++++-
|
||
- backend/app/schemas/reseller.py | 13 ++++++++++---
|
||
- backend/app/services/tenant_service.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/tests/test_reseller.py | 20 ++++++++++++++++++++
|
||
- frontend/src/pages/ResellerCompaniesPage.tsx | 45 +++++++++++++++++++++++++++++++++++++++++----
|
||
- frontend/src/pages/TenantsPage.tsx | 30 +++++++++++++++++++++---------
|
||
|
||
---
|
||
## 2026-06-23 01:40 – 01:40 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 28 ++++++++++++++++++++++++++++
|
||
- backend/app/routers/reseller.py | 8 +++++---
|
||
- backend/app/routers/tenants.py | 54 ++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/app/schemas/auth.py | 5 ++++-
|
||
- backend/app/schemas/reseller.py | 13 ++++++++++---
|
||
- backend/app/services/tenant_service.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/tests/test_reseller.py | 20 ++++++++++++++++++++
|
||
- frontend/src/pages/ResellerCompaniesPage.tsx | 45 +++++++++++++++++++++++++++++++++++++++++----
|
||
- frontend/src/pages/TenantsPage.tsx | 30 +++++++++++++++++++++---------
|
||
|
||
---
|
||
## 2026-06-23 01:41 – 01:41 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 28 ++++++++++++++++++++++++++++
|
||
- backend/app/routers/reseller.py | 8 +++++---
|
||
- backend/app/routers/tenants.py | 54 ++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/app/schemas/auth.py | 5 ++++-
|
||
- backend/app/schemas/reseller.py | 13 ++++++++++---
|
||
- backend/app/services/tenant_service.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/tests/test_reseller.py | 20 ++++++++++++++++++++
|
||
- frontend/src/pages/ResellerCompaniesPage.tsx | 45 +++++++++++++++++++++++++++++++++++++++++----
|
||
- frontend/src/pages/TenantsPage.tsx | 30 +++++++++++++++++++++---------
|
||
|
||
---
|
||
## 2026-06-23 – agent-10: Reseller-Rolle + Mandantenübersicht (Multimandanten)
|
||
|
||
**Ziel:** Mandantenfähigkeit ausbauen – SUPER_ADMIN-Mandantenübersicht + neue
|
||
RESELLER-Rolle, die selbst angelegte Firmen verwaltet (nur Firmen-Ebene, DSGVO).
|
||
|
||
### Commits
|
||
- 898a81f feat: Reseller-Rolle + SUPER_ADMIN-Mandantenübersicht
|
||
- 98cb2f8 feat: Mandant/Reseller ohne E-Mail anlegbar (Temp-Passwort statt Einladung)
|
||
|
||
### Entscheidungen (mit User abgestimmt)
|
||
- Reseller = **nur Firmen-Verwaltung** (kein Zugriff auf personenbezogene Zeit-/
|
||
Abwesenheitsdaten) → DSGVO-sauber
|
||
- **Eigene Reseller-Oberfläche** (`/reseller`), keine Impersonation
|
||
- **Nur SUPER_ADMIN** legt Reseller an; Reseller-Firmen gehören automatisch ihm
|
||
|
||
### Backend
|
||
- Neue Rolle `UserRole.RESELLER` (company_id NULL); `companies.reseller_id` + `is_active`
|
||
- Migration **0034**: Enum-Wert + Spalten + RLS-Policies (companies/users zusätzlich
|
||
auf `app.reseller_id` gefenced → DB-seitige Mandantenisolation des Resellers)
|
||
- `get_current_user` setzt `app.reseller_id` + Bypass aus für RESELLER
|
||
- `tenant_service` (Firma + Erst-Admin), Router `/reseller/*` (Self-Service) und
|
||
`/admin/*` (SUPER_ADMIN: Mandanten + Reseller); Login-Sperre bei deaktiviertem Mandant
|
||
- **Ohne E-Mail anlegbar**: interne Login-Kennung `<name>@<slug>.local` + einmaliges
|
||
Temp-Passwort (kein Mailversand). `LoginRequest.email` → `str` (Kennung muss kein
|
||
zustellbares Postfach sein; reservierte `.local`-Domains sonst nicht einloggbar)
|
||
|
||
### Frontend
|
||
- `TenantsPage` (`/admin/tenants`): alle Firmen, Reseller zuordnen/anlegen, Aktiv-Toggle
|
||
- `ResellerCompaniesPage` (`/reseller`): eigene Oberfläche mit Firmen-Kacheln
|
||
- Rollenbasierte Login-Weiterleitung (RESELLER → `/reseller`); `CredDialog` zeigt
|
||
Temp-Zugangsdaten einmalig; Nav „Mandanten" für SUPER_ADMIN
|
||
|
||
### Tests & Deployment
|
||
- 5 neue pytest-Cases inkl. **Cross-Reseller-RLS-Isolation** + Anlage ohne E-Mail
|
||
(173/173 grün); conftest-RLS um Reseller-Policies erweitert
|
||
- Auf **137 + 164** deployed (Migration 0034, Dienste aktiv, Health ok)
|
||
- **Live-Smoke-Test** auf beiden Servern bestanden (8 Checks: Anlage ohne E-Mail,
|
||
Temp-Login, RLS-Isolation, 403-Schutz, Mandanten-Sperre) – Testdaten danach gelöscht
|
||
|
||
---
|
||
## 2026-06-23 01:42 – 01:43 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 28 ++++++++++++++++++++++++++++
|
||
- backend/app/routers/reseller.py | 8 +++++---
|
||
- backend/app/routers/tenants.py | 54 ++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/app/schemas/auth.py | 5 ++++-
|
||
- backend/app/schemas/reseller.py | 13 ++++++++++---
|
||
- backend/app/services/tenant_service.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++------------------
|
||
- backend/tests/test_reseller.py | 20 ++++++++++++++++++++
|
||
- frontend/src/pages/ResellerCompaniesPage.tsx | 45 +++++++++++++++++++++++++++++++++++++++++----
|
||
- frontend/src/pages/TenantsPage.tsx | 30 +++++++++++++++++++++---------
|
||
|
||
---
|
||
## 2026-06-23 01:44 – 01:44 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- c3cb9ce docs: DEVLOG – agent-10 Reseller/Mandantenübersicht
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 01:45 – 01:45 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 01:45 – 01:47 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 01:47 – 01:48 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 10:45 – 10:47 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 10:54 – 11:01 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 11:04 – 11:35 (30m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 11:46 – 11:48 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 3b2df1c feat: agent-11 PR1 – Vertretung, Storno-Re-Genehmigung, Kommentare
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/__init__.py | 2 ++
|
||
- backend/app/models/absence.py | 11 +++---
|
||
- backend/app/models/absence_comment.py | 44 +++++++++++++++++++++++
|
||
- backend/app/routers/absences.py | 43 ++++++++++++++++++++++
|
||
- backend/app/routers/users.py | 21 +++++++++++
|
||
- backend/app/schemas/absence.py | 22 ++++++++++++
|
||
- backend/app/services/absence_service.py | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
|
||
- backend/app/services/caldav_service.py | 28 +++++++++++++++
|
||
- backend/app/services/email_service.py | 22 ++++++++++++
|
||
- backend/migrations/versions/0035_absence_comments.py | 61 +++++++++++++++++++++++++++++++
|
||
- backend/tests/conftest.py | 2 +-
|
||
- backend/tests/test_absences.py | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/components/absences/AbsenceCommentsModal.tsx | 83 ++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/components/absences/AbsenceModals.tsx | 17 ++++++++-
|
||
- frontend/src/hooks/useAbsences.ts | 22 ++++++++----
|
||
- frontend/src/pages/AbsencesPage.tsx | 40 +++++++++++++++++----
|
||
- frontend/src/types/absence.ts | 12 ++++++-
|
||
- frontend/src/utils/calendar.ts | 2 ++
|
||
|
||
---
|
||
## 2026-06-23 11:48 – 12:04 (15m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- c9c197d feat: agent-11 PR2 – Urlaubsanspruch (Verfall scharf, Pro-rata, Teilzeit)
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/company.py | 8 ++++++++
|
||
- backend/app/models/user.py | 8 ++++++--
|
||
- backend/app/routers/absences.py | 16 ++++------------
|
||
- backend/app/schemas/absence.py | 2 ++
|
||
- backend/app/schemas/company.py | 6 ++++++
|
||
- backend/app/schemas/user.py | 7 ++++++-
|
||
- backend/app/services/absence_service.py | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
|
||
- backend/migrations/versions/0036_vacation_entitlement.py | 36 ++++++++++++++++++++++++++++++++++++
|
||
- backend/tests/test_absences.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/AbsencesPage.tsx | 7 +++++--
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 41 +++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/UsersPage.tsx | 18 ++++++++++++++++++
|
||
- frontend/src/types/absence.ts | 1 +
|
||
|
||
---
|
||
## 2026-06-23 12:06 – 12:39 (33m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- c83fb31 feat: agent-11 PR3 – Scheduler + Erinnerungs-Mails + Notification-Prefs
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/core/config.py | 5 +++
|
||
- backend/app/core/notifications.py | 27 ++++++++++++++++
|
||
- backend/app/main.py | 9 ++++++
|
||
- backend/app/models/user.py | 5 ++-
|
||
- backend/app/routers/absences.py | 18 ++++++-----
|
||
- backend/app/routers/companies.py | 13 ++++++++
|
||
- backend/app/routers/users.py | 28 +++++++++++++++++
|
||
- backend/app/schemas/user.py | 10 ++++++
|
||
- backend/app/services/absence_service.py | 3 ++
|
||
- backend/app/services/email_service.py | 59 +++++++++++++++++++++++++++++++++++
|
||
- backend/app/services/scheduler_service.py | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0037_notification_prefs.py | 24 +++++++++++++++
|
||
- backend/requirements.txt | 1 +
|
||
- backend/tests/test_reminders.py | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/ProfilePage.tsx | 36 +++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-06-23 12:41 – 13:19 (38m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 450dbdb feat: agent-12 – Zwei-Stufen-Genehmigung für Abwesenheiten
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/absence.py | 6 ++++++
|
||
- backend/app/models/company.py | 5 +++++
|
||
- backend/app/schemas/absence.py | 1 +
|
||
- backend/app/schemas/company.py | 4 ++++
|
||
- backend/app/services/absence_service.py | 42 +++++++++++++++++++++++++++++++++++++-----
|
||
- backend/app/services/scheduler_service.py | 5 ++++-
|
||
- backend/migrations/versions/0038_two_stage_approval.py | 39 +++++++++++++++++++++++++++++++++++++++
|
||
- backend/tests/test_absences.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/AbsencesPage.tsx | 6 ++++++
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 28 +++++++++++++++++++++++++++-
|
||
- frontend/src/types/absence.ts | 1 +
|
||
- frontend/src/utils/calendar.ts | 2 ++
|
||
|
||
---
|
||
## 2026-06-23 13:20 – 13:24 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 6a34bd1 fix: AuditLogPage – React-key am Listen-Fragment (Konsolen-Warnung)
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/AuditLogPage.tsx | 9 ++++-----
|
||
|
||
---
|
||
## 2026-06-23 13:24 – 13:28 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- e1d423e feat: agent-04 – Team-Dashboard für Manager/HR im Frontend angebunden
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/DashboardPage.tsx | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 13:45 – 14:07 (21m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** backend
|
||
|
||
### Commits
|
||
- fe00eb4 fix(security/dsgvo): RLS für hours_payouts nachgezogen (Mandantentrennung)
|
||
- 31e39c6 fix(security): K-5 – LDAP/CalDAV/SMTP-Verschlüsselung auf zentralen Datenschlüssel
|
||
|
||
### Geänderte Dateien
|
||
- backend/migrations/versions/0039_rls_hours_payouts.py | 43 +++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/tests/conftest.py | 2 +-
|
||
- backend/tests/test_rls.py | 28 ++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 14:23 – 14:31 (8m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 2af2269 feat(dsgvo): Art. 17 Anonymisierung von Mitarbeiterkonten
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/user.py | 3 +++
|
||
- backend/app/routers/users.py | 12 ++++++++++++
|
||
- backend/app/schemas/user.py | 1 +
|
||
- backend/app/services/user_service.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0040_user_anonymization.py | 23 +++++++++++++++++++++++
|
||
- backend/tests/test_users.py | 35 +++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/UsersPage.tsx | 33 +++++++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-06-23 14:31 – 14:32 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/user.py | 3 +++
|
||
- backend/app/routers/users.py | 12 ++++++++++++
|
||
- backend/app/schemas/user.py | 1 +
|
||
- backend/app/services/user_service.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0040_user_anonymization.py | 23 +++++++++++++++++++++++
|
||
- backend/tests/test_users.py | 35 +++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/UsersPage.tsx | 33 +++++++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-06-23 14:36 – 21:41 (7h 04m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/user.py | 3 ++
|
||
- backend/app/routers/users.py | 12 ++++++
|
||
- backend/app/schemas/user.py | 1 +
|
||
- backend/app/services/user_service.py | 48 ++++++++++++++++++++++
|
||
- .../migrations/versions/0040_user_anonymization.py | 23 +++++++++++
|
||
- backend/tests/test_users.py | 35 ++++++++++++++++
|
||
- frontend/src/pages/UsersPage.tsx | 33 ++++++++++++++-
|
||
|
||
---
|
||
## 2026-06-23 22:07 – 22:07 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- 89d85a9 feat(ui): Navigation neu strukturiert (flache Topbar + Verwaltung-Menü + /settings)
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/App.tsx | 2 ++
|
||
- frontend/src/components/Layout.tsx | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------
|
||
- frontend/src/components/navConfig.ts | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/SettingsPage.tsx | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-06-23 22:25 – 22:28 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- add154b refactor(ui): Verwaltung-Dropdown aufgelöst – Berichte flach, Rest in /settings
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/components/Layout.tsx | 60 ++++--------------------------------------------------------
|
||
- frontend/src/components/navConfig.ts | 27 +++++++++++++++++----------
|
||
|
||
---
|
||
## 2026-06-23 22:34 – 22:35 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 1978d58 fix(payouts): 500 in GET /hr/payouts – computed Felder als optional
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/schemas/hours_payout.py | 4 ++--
|
||
|
||
---
|
||
## 2026-06-23 23:22 – 23:22 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/schemas/hours_payout.py | 4 ++--
|
||
|
||
---
|
||
## 2026-07-08 14:12 – 14:12 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/schemas/hours_payout.py | 4 ++--
|
||
|
||
---
|
||
## 2026-07-08 14:14 – 14:15 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/schemas/hours_payout.py | 4 ++--
|
||
|
||
---
|
||
## 2026-07-08 16:02 – 16:06 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/schemas/hours_payout.py | 4 ++--
|
||
|
||
---
|
||
## 2026-07-08 16:09 – 16:09 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/schemas/hours_payout.py | 4 ++--
|
||
|
||
---
|
||
## 2026-07-08 16:11 – 16:13 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 43ebc83 feat(ical): abonnierbarer read-only Kalender-Feed pro Nutzer
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/main.py | 2 ++
|
||
- backend/app/models/user.py | 4 ++++
|
||
- backend/app/routers/ical.py | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0041_ical_token.py | 29 +++++++++++++++++++++++++++++
|
||
- backend/tests/test_ical.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/ProfilePage.tsx | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-07-08 16:15 – 16:16 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/main.py | 2 ++
|
||
- backend/app/models/user.py | 4 ++++
|
||
- backend/app/routers/ical.py | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0041_ical_token.py | 29 +++++++++++++++++++++++++++++
|
||
- backend/tests/test_ical.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/ProfilePage.tsx | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-07-08 16:16 – 16:20 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/main.py | 2 ++
|
||
- backend/app/models/user.py | 4 ++++
|
||
- backend/app/routers/ical.py | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/migrations/versions/0041_ical_token.py | 29 +++++++++++++++++++++++++++++
|
||
- backend/tests/test_ical.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/ProfilePage.tsx | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-07-08 16:23 – 16:30 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- f24b25b chore(deploy): entkoppelte Self-Update-Skripte pro Server
|
||
|
||
### Geänderte Dateien
|
||
- deploy.sh | 121 +++++-------------------------------
|
||
- push-frontend.sh | 49 +++++++++++++++
|
||
- server-update.sh | 68 ++++++++++++++++++++
|
||
- update.sh | 562 ++++-----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
---
|
||
## 2026-07-08 16:31 – 16:34 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- fad27cb fix(deploy): server-update.sh Health-Check mit Retry (Worker-Startzeit)
|
||
|
||
### Geänderte Dateien
|
||
- server-update.sh | 11 +++++++++--
|
||
|
||
---
|
||
## 2026-07-08 16:39 – 16:48 (8m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 2c57c36 fix(deploy): server-update.sh re-exec nach git pull (Self-Edit-Falle)
|
||
|
||
### Geänderte Dateien
|
||
- server-update.sh | 14 ++++++++++----
|
||
|
||
---
|
||
## 2026-07-08 16:52 – 16:53 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- server-update.sh | 14 ++++++++++----
|
||
|
||
---
|
||
## 2026-07-08 17:10 – 17:12 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- server-update.sh | 14 ++++++++++----
|
||
|
||
---
|
||
## 2026-07-10 01:54 – 01:55 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** custom-addons
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 460 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/DEVLOG.md | 13 ++++
|
||
- backend/app/models/company.py | 2 +
|
||
- backend/app/models/hours_payout.py | 17 ++++-
|
||
- backend/app/routers/hours_payouts.py | 280 +++++++++++++++++++++++++++++++++++++++++++++++--------------------
|
||
- backend/app/schemas/company.py | 2 +
|
||
- backend/app/schemas/hours_payout.py | 17 +++++
|
||
- backend/migrations/versions/0042_payout_requests.py | 36 +++++++++
|
||
- backend/tests/test_hours_payouts.py | 87 +++++++++++++++++++++
|
||
- frontend/DEVLOG.md | 39 ++++++++++
|
||
- frontend/src/components/PayoutRequestCard.tsx | 150 ++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/AbsencesPage.tsx | 3 +
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 31 +++++++-
|
||
- frontend/src/pages/HoursPayoutPage.tsx | 82 +++++++++++++++++---
|
||
- frontend/src/types/hoursPayout.ts | 7 ++
|
||
|
||
---
|
||
## 2026-08-05 18:56 – 18:56 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 460 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/DEVLOG.md | 13 ++++
|
||
- backend/app/models/company.py | 2 +
|
||
- backend/app/models/hours_payout.py | 17 ++++-
|
||
- backend/app/routers/hours_payouts.py | 280 +++++++++++++++++++++++++++++++++++++++++++++++--------------------
|
||
- backend/app/schemas/company.py | 2 +
|
||
- backend/app/schemas/hours_payout.py | 17 +++++
|
||
- backend/migrations/versions/0042_payout_requests.py | 36 +++++++++
|
||
- backend/tests/test_hours_payouts.py | 87 +++++++++++++++++++++
|
||
- frontend/DEVLOG.md | 39 ++++++++++
|
||
- frontend/src/components/PayoutRequestCard.tsx | 150 ++++++++++++++++++++++++++++++++++++
|
||
- frontend/src/pages/AbsencesPage.tsx | 3 +
|
||
- frontend/src/pages/CompanySettingsPage.tsx | 31 +++++++-
|
||
- frontend/src/pages/HoursPayoutPage.tsx | 82 +++++++++++++++++---
|
||
- frontend/src/types/hoursPayout.ts | 7 ++
|
||
|
||
---
|
||
## 2026-08-05 18:56 – 18:57 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 803e888 fix(hours_payouts): RLS-Bypass-Falle bei mid-request commit
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/app/routers/hours_payouts.py | 22 ++++++++++++----------
|
||
|
||
---
|
||
## 2026-08-05 18:57 – 18:57 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/app/routers/hours_payouts.py | 22 ++++++++++++----------
|
||
|
||
---
|
||
## 2026-08-05 18:58 – 18:58 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- backend/app/routers/hours_payouts.py | 22 ++++++++++++----------
|
||
|
||
---
|
||
## 2026-08-05 19:01 – 19:17 (16m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- edb727e fix(security): python-jose CVE-2024-33663 durch pyjwt ersetzt, Deps gepinnt
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 36 ++++++++++++++++++++++++++++++++++++
|
||
- backend/app/core/dependencies.py | 2 +-
|
||
- backend/app/core/security.py | 3 ++-
|
||
- backend/app/routers/auth.py | 2 +-
|
||
- backend/requirements.txt | 58 +++++++++++++++++++++++++++++-----------------------------
|
||
- nginx.conf | 11 ++++++++++-
|
||
|
||
---
|
||
## 2026-08-05 19:18 – 19:20 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 36 ++++++++++++++++++++++++++++++++++++
|
||
- backend/app/core/dependencies.py | 2 +-
|
||
- backend/app/core/security.py | 3 ++-
|
||
- backend/app/routers/auth.py | 2 +-
|
||
- backend/requirements.txt | 58 +++++++++++++++++++++++++++++-----------------------------
|
||
- nginx.conf | 11 ++++++++++-
|
||
|
||
---
|
||
## 2026-08-05 19:23 – 19:23 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 36 ++++++++++++++++++++++++++++++++++++
|
||
- backend/app/core/dependencies.py | 2 +-
|
||
- backend/app/core/security.py | 3 ++-
|
||
- backend/app/routers/auth.py | 2 +-
|
||
- backend/requirements.txt | 58 +++++++++++++++++++++++++++++-----------------------------
|
||
- nginx.conf | 11 ++++++++++-
|
||
|
||
---
|
||
## 2026-08-05 19:33 – 19:35 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 319e070 feat(tls): optionales certbot-Setup vorbereitet (Option A)
|
||
|
||
### Geänderte Dateien
|
||
- nginx.conf | 13 +++++++------
|
||
- setup-tls.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-08-05 19:35 – 19:36 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 9c86cbc feat(tls): optionales Setup für interne CA vorbereitet
|
||
|
||
### Geänderte Dateien
|
||
- setup-tls-internal.sh | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-08-05 19:37 – 19:37 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- setup-tls-internal.sh | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|