This website requires JavaScript.
7e165d37b6
feat(deploy): deploy.sh + lokale Host-Konfig, server-update/setup_server übernehmen Unit und sudoers aus dem Repo
main
patrick and Claude Sonnet 5.5
2026-11-05 09:40:35 +01:00
628955560a
chore(scripts): Server-Hosts per TM_DEV_HOST/TM_PROD_HOST/TM_SSH_USER konfigurierbar (Defaults unverändert)
patrick and Claude Sonnet 5.5
2026-11-05 09:35:44 +01:00
e766974018
fix(service): ProtectHome entfernt (asyncpg prüft ~/.postgresql)
patrick and Claude Sonnet 5.5
2026-11-05 00:21:19 +01:00
c02338eb7a
fix(security): Dienst als Systemuser auf 127.0.0.1, TLS-Erneuerung per sudo
patrick and Claude Sonnet 5.5
2026-11-05 00:20:26 +01:00
8a55e183fd
test(ha): Token deaktivierter Firma liefert 404
patrick and Claude Sonnet 5.5
2026-11-05 00:17:59 +01:00
b6eda4e2d5
fix(security): Krankheitsdaten im Kalender maskieren, Art.-15-Export nur HR/Admin, Login-Enumeration, Session-Invalidierung bei Passwortwechsel
patrick and Claude Sonnet 5.5
2026-11-04 23:05:46 +01:00
8672f92ee5
fix(security): Audit-Funde M-1,M-2,M-3,M-6,M-7,N-1..N-3 (Client-IP-Trust, AuditLog company_id, Token-Feeds, Mass-Assignment, Kiosk-Heartbeat)
patrick and Claude Sonnet 5.5
2026-11-04 23:04:07 +01:00
a3470a135c
fix(security): PDF-Export ohne Ressourcenzugriff, HTML-Escaping, CSV/XLSX Formula-Injection
patrick and Claude Sonnet 5.5
2026-11-04 23:02:39 +01:00
8dfee59bf0
feat(portal): Token-Verwaltung für das Buchhaltungsportal in den Firmeneinstellungen
patrick and Claude Sonnet 5.5
2026-11-03 22:26:34 +01:00
43cdece01f
docs: DEVLOG-Einträge ergänzt
patrick and Claude Sonnet 5.5
2026-10-30 14:55:35 +01:00
73784248d4
test(busylight): Pull-Token deaktivierter Firma liefert 401
patrick and Claude Sonnet 5.5
2026-10-30 14:55:35 +01:00
cd7aaa9ce2
fix(busylight): Pull-Token deaktivierter Firmen ablehnen
patrick and Claude Sonnet 5.5
2026-10-30 13:53:51 +01:00
f0b436c91f
feat(portal): read-only Firmensummen für das Buchhaltungsportal (Token-Endpunkt)
patrick and Claude Sonnet 5.5
2026-10-29 19:40:49 +01:00
80cee20fe5
docs: DEVLOG-Einträge ergänzt
patrick and Claude Sonnet 5.5
2026-10-28 22:57:21 +01:00
c9f2725186
docs: Home-Assistant-Status in api.md
patrick and Claude Sonnet 5.5
2026-10-28 22:38:25 +01:00
ed5c52d8b3
feat(ha): read-only Arbeitszeit-Status für Home Assistant (Token-URL)
patrick and Claude Sonnet 5.5
2026-10-28 22:33:54 +01:00
2f75ebc5a7
docs: DEVLOG-Einträge ergänzt
patrick and Claude Sonnet 5.5
2026-10-28 22:25:37 +01:00
0635bb5b8a
feat(frontend): Geräte-ID-QR für Ed25519-Kiosk + TLS-Warnung bei Bearer
patrick and Claude Sonnet 5.5
2026-10-28 22:24:22 +01:00
1d163cc299
fix(security): Audit-Nachzug – Rate-Limit, X-Real-IP-Vertrauen, Indizes
patrick and Claude Sonnet 5
2026-09-10 15:33:12 +02:00
7873236de3
feat(time): kiosk_device_id an TimeEntry – dokumentiert Stempel-Standort
patrick and Claude Sonnet 5
2026-09-10 15:06:15 +02:00
71db3bdd57
feat(kiosk): QR-Login-Token-Endpunkt für Employee-App
patrick and Claude Sonnet 5
2026-09-10 14:47:45 +02:00
62a19d17e8
feat(frontend): Bearer-Kiosk-Gerät + QR-Code-Einrichtung im Portal
patrick and Claude Sonnet 5
2026-09-10 13:23:56 +02:00
d80fc59f17
feat(kiosk): Bearer-Geräte-Erstellung im Portal (für QR-Einrichtung)
patrick and Claude Sonnet 5
2026-09-10 13:22:02 +02:00
3c427dcb15
feat(frontend): Kiosk-App-Download in ProfilePage (nur Admins)
patrick and Claude Sonnet 5
2026-09-10 13:16:13 +02:00
370358d117
fix(cli): RLS-Refresh-Bug in kiosk add/rotate-key
patrick and Claude Sonnet 5
2026-09-10 13:12:17 +02:00
c15fe81498
fix(tests): RLS-Bypass + Refresh-Fehler in Bearer-Auth-Tests
patrick and Claude Sonnet 5
2026-09-10 02:16:34 +02:00
f4ff11a80e
feat(kiosk): Bearer-Token-Auth für Android-Tablets hinter VPN
patrick and Claude Sonnet 5
2026-09-10 02:13:16 +02:00
d5b2fc75d6
fix(kiosk): TOCTOU-Race beim QR-Login (Audit-Finding K-1)
patrick and Claude Sonnet 5
2026-09-10 01:54:16 +02:00
2e27a7fcae
fix(time): Mikrosekunden bei Zeitstempeln kappen
patrick and Claude Sonnet 5
2026-09-09 23:59:25 +02:00
4398632880
feat(frontend): Mobile-App-Version im Download-Bereich anzeigen
patrick and Claude Sonnet 5
2026-09-09 23:53:23 +02:00
fd752878b0
test: P1-Coverage für Scheduler-Idempotenz, Bradford-Fensterrand, FZA-Faktor+Kappung, Cross-Company-RLS
patrick and Claude Sonnet 5
2026-09-03 02:10:19 +02:00
9afc29a8bb
fix(redis): Timeouts für Async-Pool + Start-Health-Check-Log
patrick and Claude Sonnet 5
2026-09-03 01:58:33 +02:00
107cba99f9
fix(redis): INCR+EXPIRE atomar via Pipeline (MULTI/EXEC)
patrick and Claude Sonnet 5
2026-09-03 00:12:44 +02:00
56f6f16e27
fix(redis): Pool-Rollout vervollständigen + TOTP-Lockout fail-closed mit 503
patrick and Claude Sonnet 5
2026-09-03 00:09:35 +02:00
5ba5a99e02
docs: README erstellt, Debian statt Ubuntu korrigiert
patrick and Claude Sonnet 5
2026-09-03 00:03:06 +02:00
ac496a5f9b
fix(absences): POST /absences/ reicht warnings jetzt an den Client durch
patrick and Claude Sonnet 5
2026-09-02 23:54:02 +02:00
3cf396b972
fix(tests): Testdaten für Jahreswechsel-Regressionstest korrigieren
patrick and Claude Sonnet 5
2026-09-02 23:51:46 +02:00
548738c9ea
fix(absences): Feiertage über Jahreswechsel korrekt aus working_days rausrechnen
patrick and Claude Sonnet 5
2026-09-02 23:50:28 +02:00
dd044793c6
fix(tests): compare UUID objects not str in DATEV coverage test
patrick and Claude Sonnet 5
2026-09-02 23:34:12 +02:00
55d54e0ff0
fix(tests): expire_all() before DATEV bypass query to avoid stale identity map
patrick and Claude Sonnet 5
2026-09-02 23:32:02 +02:00
21b65087d3
fix(tests): re-set RLS bypass per transaction in coverage gap tests
patrick and Claude Sonnet 5
2026-09-02 23:31:20 +02:00
dc4982bb37
fix(tests): year-boundary + response-shape issues in coverage gap tests
patrick and Claude Sonnet 5
2026-09-02 23:30:35 +02:00
cbb5f467fe
test: gezielte Coverage-Tests für kritische Pfade in absence_service/report_service
patrick and Claude Sonnet 5
2026-09-02 23:28:34 +02:00
b7bec79284
fix(setup): nginx-Template im Installer auf Prod-Stand bringen
patrick and Claude Sonnet 5
2026-09-02 23:17:27 +02:00
aba0b53449
fix(docs): StaticFiles-Mount-Pfad korrigieren (static statt app/static)
patrick and Claude Sonnet 5
2026-09-02 23:12:48 +02:00
4e30c55b6c
fix(docs): Swagger-Assets nach backend/static/ verschoben (nginx-Alias)
patrick and Claude Sonnet 5
2026-09-02 23:12:28 +02:00
9f9dfb5be3
fix(docs): Swagger/ReDoc-Assets lokal statt von cdn.jsdelivr.net
patrick and Claude Sonnet 5
2026-09-02 23:11:08 +02:00
c1572c397d
docs(api): 7 fehlende Router nachgezogen
patrick and Claude Sonnet 5
2026-09-02 23:05:51 +02:00
9bdce25187
test(coverage): fail-under=50 Gate + XML-Report
patrick and Claude Sonnet 5
2026-09-02 22:52:42 +02:00
538cbb0437
test(coverage): pytest-cov einbauen (term-missing Report)
patrick and Claude Sonnet 5
2026-09-02 22:47:31 +02:00
ad0bc62b21
ci(frontend): Build-Job als Gate im Security-Workflow ergänzen
patrick and Claude Sonnet 5
2026-09-02 22:46:57 +02:00
c733ddfe40
fix(redis): gepoolten async-Redis-Client statt Connect/Close pro Request
patrick and Claude Sonnet 5
2026-09-02 22:29:08 +02:00
52ecd9e5ce
chore(routers): toten Router absence.py entfernen
patrick and Claude Sonnet 5
2026-09-02 22:27:24 +02:00
b8073fa133
docs(devlog): Sessions vom 2026-08-05 bis 2026-09-02 nachtragen
patrick and Claude Sonnet 5
2026-09-02 15:08:54 +02:00
81d58f720e
feat(kiosk): PC-Terminal-Frontend für NFC-Login + Stempeln
patrick and Claude Sonnet 5
2026-08-27 13:37:06 +02:00
21c7c0bd14
test(kiosk): E2E-Test für Login + Stempel-Flow, Cross-Device-Session-Check
patrick and Claude Sonnet 5
2026-08-27 13:34:39 +02:00
2ce363c422
feat(kiosk): Stempel-Endpunkte für Kiosk-Sessions (fehlten bisher komplett)
patrick and Claude Sonnet 5
2026-08-27 13:32:46 +02:00
3650da8022
fix(kiosk): NFC-Login verlangt Pflicht-PIN als Zweitfaktor (Security-Audit K-3)
patrick and Claude Sonnet 5
2026-08-27 13:24:19 +02:00
cfa707d8f9
fix(time): break_minutes DB-Default ergänzen + Retention-Tests korrigiert
patrick and Claude Sonnet 5
2026-08-27 09:06:59 +02:00
5a9e432a80
feat(dsgvo): Löschkonzept/Aufbewahrungsfristen (Auto-Purge)
patrick and Claude Sonnet 5
2026-08-27 09:04:27 +02:00
7166bbb5aa
fix(payouts): status-Spalte mit echtem DB-Default statt nur Python-Default
patrick and Claude Sonnet 5
2026-08-27 00:30:20 +02:00
456ca1526b
fix(security): RLS für special_assignments nachziehen (DSGVO)
patrick and Claude Sonnet 5
2026-08-27 00:20:00 +02:00
23f8e634d1
feat(dsgvo): Art. 15 Auskunftsrecht – strukturierter Datenexport pro User
patrick and Claude Sonnet 5
2026-08-07 08:19:15 +02:00
59a0305a75
feat(reports): DATEV-Monatsblatt-Button im Zeiterfassungs-Tab
patrick and Claude Sonnet 5
2026-08-06 22:25:45 +02:00
8a2f512112
fix(reports): DATEV-Export nutzt falschen FK-Namen (absence_type_id statt type_id)
patrick and Claude Sonnet 5
2026-08-06 22:20:50 +02:00
1dcc04ae07
feat(reports): DATEV-Monatsblatt-Export (Blanko-Vorlage) für Steuerberater
patrick and Claude Sonnet 5
2026-08-06 22:19:54 +02:00
f3ed234e56
feat(admin): SUPER_ADMIN TLS-Zertifikat-Status + Renewal-Trigger
patrick and Claude Sonnet 5
2026-08-05 20:29:47 +02:00
f354bddd1e
feat(tls): optionales Setup für interne CA vorbereitet
patrick and Claude Sonnet 5
2026-08-05 19:36:19 +02:00
6104a67c9e
feat(tls): optionales certbot-Setup vorbereitet (Option A)
patrick and Claude Sonnet 5
2026-08-05 19:34:25 +02:00
2046f6475b
fix(security): python-jose CVE-2024-33663 durch pyjwt ersetzt, Deps gepinnt
patrick and Claude Sonnet 5
2026-08-05 19:10:28 +02:00
7c24887ec1
fix(hours_payouts): RLS-Bypass-Falle bei mid-request commit
patrick and Claude Sonnet 5
2026-08-05 18:56:55 +02:00
eb8dace0fd
feat(overtime): Auszahlungs-Anträge durch Mitarbeiter (opt-in pro Firma)
patrick and Claude Opus 4.8
2026-07-08 22:43:26 +02:00
87806b4501
fix(deploy): server-update.sh re-exec nach git pull (Self-Edit-Falle)
patrick and Claude Opus 4.8
2026-07-08 16:47:58 +02:00
a772785add
fix(deploy): server-update.sh Health-Check mit Retry (Worker-Startzeit)
patrick and Claude Opus 4.8
2026-07-08 16:33:59 +02:00
8ae792fd90
chore(deploy): entkoppelte Self-Update-Skripte pro Server
patrick and Claude Opus 4.8
2026-07-08 16:29:43 +02:00
d13350b38b
feat(ical): abonnierbarer read-only Kalender-Feed pro Nutzer
patrick and Claude Opus 4.8
2026-07-08 16:12:05 +02:00
d27be740a0
fix(payouts): 500 in GET /hr/payouts – computed Felder als optional
patrick and Claude Opus 4.8
2026-06-23 22:35:40 +02:00
c497a14446
refactor(ui): Verwaltung-Dropdown aufgelöst – Berichte flach, Rest in /settings
patrick and Claude Opus 4.8
2026-06-23 22:27:51 +02:00
933d369dc4
feat(ui): Navigation neu strukturiert (flache Topbar + Verwaltung-Menü + /settings)
patrick and Claude Opus 4.8
2026-06-23 22:07:34 +02:00
c122ab6fd7
feat(dsgvo): Art. 17 Anonymisierung von Mitarbeiterkonten
patrick and Claude Opus 4.8
2026-06-23 14:31:14 +02:00
3034c6c55a
fix(security/dsgvo): RLS für hours_payouts nachgezogen (Mandantentrennung)
patrick and Claude Opus 4.8
2026-06-23 14:06:19 +02:00
2b74f95e68
fix(security): K-5 – LDAP/CalDAV/SMTP-Verschlüsselung auf zentralen Datenschlüssel
patrick and Claude Opus 4.8
2026-06-23 13:56:01 +02:00
408b2c4c7a
feat: agent-04 – Team-Dashboard für Manager/HR im Frontend angebunden
patrick and Claude Opus 4.8
2026-06-23 13:27:48 +02:00
6fcd6783ad
fix: AuditLogPage – React-key am Listen-Fragment (Konsolen-Warnung)
patrick and Claude Opus 4.8
2026-06-23 13:23:18 +02:00
eab41ede69
feat: agent-12 – Zwei-Stufen-Genehmigung für Abwesenheiten
patrick and Claude Opus 4.8
2026-06-23 13:17:32 +02:00
2f110df619
feat: agent-11 PR3 – Scheduler + Erinnerungs-Mails + Notification-Prefs
patrick and Claude Opus 4.8
2026-06-23 12:21:14 +02:00
e8bed43570
feat: agent-11 PR2 – Urlaubsanspruch (Verfall scharf, Pro-rata, Teilzeit)
patrick and Claude Opus 4.8
2026-06-23 12:03:42 +02:00
6fa66b8c13
feat: agent-11 PR1 – Vertretung, Storno-Re-Genehmigung, Kommentare
patrick and Claude Opus 4.8
2026-06-23 11:47:47 +02:00
be22a51805
docs: DEVLOG – agent-10 Reseller/Mandantenübersicht
patrick and Claude Opus 4.8
2026-06-23 01:44:48 +02:00
9e1ba2bd91
feat: Mandant/Reseller ohne E-Mail anlegbar (Temp-Passwort statt Einladung)
patrick and Claude Opus 4.8
2026-06-23 01:34:23 +02:00
fcda813ba6
feat: Reseller-Rolle + SUPER_ADMIN-Mandantenübersicht
patrick and Claude Opus 4.8
2026-06-23 01:15:51 +02:00
da4745013e
feat: QR-Stempeln als eigener Menüpunkt + Tablet-Link
patrick and Claude Opus 4.8
2026-06-02 22:10:48 +02:00
031d7e36f3
fix: QR-Stempel-Status korrekt – Status vor mid-request commit ermitteln
patrick and Claude Opus 4.8
2026-06-02 20:03:49 +02:00
994c9809aa
docs: DEVLOG für QR-Stempel-Feature
patrick and Claude Opus 4.8
2026-06-02 19:55:49 +02:00
707b73b0c5
feat: Statischer firmenweiter QR-Code für mobiles Ein-/Ausstempeln
patrick and Claude Opus 4.8
2026-06-02 15:58:38 +02:00
6261e572c5
fix: Redis-Lockout-Keys in Test-Setup bereinigen
patrick and Claude Sonnet 4.6
2026-05-26 13:17:48 +02:00
738e940268
fix: Refresh-Endpoint bevorzugt Body-Token über Cookie (Token-Rotation Test)
patrick and Claude Sonnet 4.6
2026-05-26 13:14:44 +02:00
b59c5ca52a
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
patrick and Claude Sonnet 4.6
2026-05-26 12:55:41 +02:00
1bcb09a822
security: H-1 settings-Whitelist + H-5 UUID-Guard + H-6 DNS-Pinning + H-7 Heartbeat-Timing
patrick and Claude Sonnet 4.6
2026-05-26 11:35:18 +02:00
721d33a04c
security: M-2 HttpOnly-Cookie + M-4 TrustedHost-Warning + M-5 TOTP-Lockout + M-7 zentraler get_client_ip()
patrick and Claude Sonnet 4.6
2026-05-26 11:25:24 +02:00