You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(release): prepare 1.2.6 metadata and release notes
Align version metadata and release documentation with the hardened absence and entitlement workflow changes. Document release integrity gates and provide updated multilingual changelog/manual context for the 1.2.6 rollout.
Made-with: Cursor
Copy file name to clipboardExpand all lines: CHANGELOG.de.md
+35Lines changed: 35 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,40 @@
1
1
## [Unreleased]
2
2
3
+
## 1.2.6 – 2026-04-24
4
+
5
+
### Hinzugefügt
6
+
7
+
-**Forensik bei Abwesenheitsfreigaben**: `approved_by_user_id` wird nun direkt am Abwesenheitsdatensatz gespeichert (Freigabe/Ablehnung/Auto-Freigabe), inkl. Migration und API-Ausgabe.
8
+
9
+
### Geändert
10
+
11
+
-**Integrität der Urlaubsanspruch-Snapshots**: Deterministisches Key-Upsert auf `(user_id, period_key, as_of_date)` ergänzt und per Migrations-Unique-Index auf Datenbankebene abgesichert.
12
+
-**Nebenläufigkeitskontrolle in kritischen Workflows**: Create/Update/Approve/Reject/Substitute-Flows sind nun mit nutzerspezifischen Mutations-Locks plus transaktionalen Rechecks/Row-Locks abgesichert, um Race-Conditions bei Überschneidungen und Überfreigaben zu verhindern.
13
+
-**Release-Absicherung**: Workflow-bezogene Unit- und Integrationstests wurden auf die gehärteten Mutationspfade angepasst und erfolgreich ausgeführt.
14
+
15
+
### Behoben
16
+
17
+
-**Legacy-Snapshot-Reparaturpfad**: Upsert behandelt historische fehlerhafte Zeilen sowie parallele Unique-Key-Konflikte robust via deterministischem Retry-Update.
18
+
-**Race-Condition bei Resturlaub-Updates**: `VacationYearBalanceMapper::upsert` löst gleichzeitige Unique-Key-Konflikte jetzt per Re-Read/Update-Fallback.
19
+
20
+
## 1.2.5 – 2026-04-22
21
+
22
+
### Geändert
23
+
24
+
-**Release-Paket aktualisiert**: App-Metadaten auf `1.2.5` angehoben und den signierten Release-Artefaktsatz für App-Store- und GitHub-Veröffentlichung neu erzeugt.
25
+
26
+
## 1.2.4 – 2026-04-21
27
+
28
+
### Geändert
29
+
30
+
-**Release-Stand veröffentlichbar gemacht**: App-Metadaten auf `1.2.4` angehoben und ein neuer signierter Release-Artefaktsatz (Archiv, Checksummen, App-Store-Signatur) für App-Store-/GitHub-Veröffentlichung erstellt.
31
+
32
+
## 1.2.3 – 2026-04-21
33
+
34
+
### Geändert
35
+
36
+
-**Release-Paket aktualisiert**: Neues signiertes App-Store-/GitHub-Release-Archiv für den aktuellen Code-Stand mit Docker-basiertem Signatur-Workflow erstellt.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+35Lines changed: 35 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
+
## 1.2.6 - 2026-04-24
11
+
12
+
### Added
13
+
14
+
-**Absence approval forensics**: Added `approved_by_user_id` persistence on absence records (approve/reject/auto-approve), with schema migration and API summary output.
15
+
16
+
### Changed
17
+
18
+
-**Vacation entitlement snapshot integrity**: Added deterministic key-based upsert on `(user_id, period_key, as_of_date)` and migration-backed unique index enforcement.
19
+
-**Concurrency control in critical workflows**: Absence create/update/approve/reject/substitute flows now use user-scoped mutation locks plus transactional rechecks/row locks to prevent race-based overlap and over-approval inconsistencies.
20
+
-**Release safety**: Workflow/unit/integration tests were updated and executed against the hardened mutation paths.
21
+
22
+
### Fixed
23
+
24
+
-**Legacy snapshot repair path**: Upsert now handles historical malformed rows and concurrent unique-key conflicts safely by retrying as deterministic update.
25
+
-**Vacation balance write races**: `VacationYearBalanceMapper::upsert` now resolves concurrent unique-key collisions via re-read/update fallback.
26
+
27
+
## 1.2.5 - 2026-04-22
28
+
29
+
### Changed
30
+
31
+
-**Release packaging refresh**: Bumped app metadata to `1.2.5` and regenerated the signed release artifact set for App Store and GitHub publication.
32
+
33
+
## 1.2.4 - 2026-04-21
34
+
35
+
### Changed
36
+
37
+
-**Publishable release refresh**: Bumped app metadata to `1.2.4` and generated a new signed release artifact set (archive, checksums, and App Store signature) for App Store/GitHub publication.
38
+
39
+
## 1.2.3 - 2026-04-21
40
+
41
+
### Changed
42
+
43
+
-**Release packaging refresh**: Prepared a new signed App Store/GitHub release archive for the current code line using the Docker-based signing workflow.
Copy file name to clipboardExpand all lines: docs/README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,8 +6,8 @@ This folder contains the documentation included with ArbeitszeitCheck for admini
6
6
7
7
| Document | Description |
8
8
|----------|-------------|
9
-
|[User-Manual.en.md](User-Manual.en.md)| Short end-user/admin guide (calendar vs Nextcloud Calendar, absences, roles, app-admin allowlist usage, overtime/undertime traffic light notifications, revision-safe month closure including optional grace period and auto-finalization) |
10
-
|[User-Manual.de.md](User-Manual.de.md)| Kurzanleitung für Endnutzer/Admins (Deutsch), inkl. App-Admin-Whitelist sowie Monatsnachweis mit Karenz und Auto-Finalisierung |
9
+
|[User-Manual.en.md](User-Manual.en.md)| Short end-user/admin guide (calendar vs Nextcloud Calendar, absences, roles, dashboard quick-actions workspace with role-based overview blocks, manager approvals tabs for absences/time-entry corrections, app-admin allowlist usage, overtime/undertime traffic light notifications, revision-safe month closure including optional grace period and auto-finalization) |
10
+
|[User-Manual.de.md](User-Manual.de.md)| Kurzanleitung für Endnutzer/Admins (Deutsch), inkl. Dashboard-Schnellaktionen mit rollenbasierten Übersichten, Manager-Reitern für Abwesenheiten/Korrekturen, App-Admin-Whitelist sowie Monatsnachweis mit Karenz und Auto-Finalisierung |
11
11
|[GDPR-Compliance-Guide.en.md](GDPR-Compliance-Guide.en.md)| How to operate ArbeitszeitCheck in a GDPR-compliant way (legal basis, data minimization, employee rights, retention) |
12
12
|[Compliance-Implementation.en.md](Compliance-Implementation.en.md)| Technical implementation of ArbZG compliance checks (breaks, rest periods, real-time vs batch) |
13
13
|[Compliance-Implementation.de.md](Compliance-Implementation.de.md)| Same content in German |
Copy file name to clipboardExpand all lines: docs/User-Manual.de.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,14 +60,18 @@ Im Auswahldialog erscheinen nur Konten aus der Nextcloud-`admin`-Gruppe.
60
60
## 4. Alltägliche Aufgaben
61
61
62
62
-**Kommen/Gehen und Pausen** über die Zeiterfassung; Korrekturen und Begründungen nach internen Regeln.
63
+
-**Dashboard-Schnellaktionen (Workspace):**
64
+
- Das Dashboard enthält einen eigenen Schnellaktionsbereich mit **Mein Status**, **Aktuelle Sitzung** und direkten Aktionen für **Clock In**, **Pause**, **Fortsetzen** und **Clock Out**.
65
+
- Je nach Rolle zeigt dieselbe Seite zusätzlich **Teamübersicht** (Führungskraft) und **Unternehmensübersicht** (Admin) mit kompakten Statuslisten.
66
+
- Wenn eine Aktion wegen einer abgelaufenen Nextcloud-Sitzung fehlschlägt, Seite aktualisieren und erneut ausführen.
63
67
-**Pausierter Eintrag (wieder aufnehmen oder korrigieren):**
64
68
- Wenn ein Eintrag den Status **Pausiert** hat, zeigt das Dashboard bei **Clock In** die Aktion **Fortsetzen (nach Pause)** und setzt den gleichen Tages-Eintrag fort (statt einen Duplikat-Eintrag zu erzeugen).
65
69
- Pausierte Einträge sind in den letzten 14 Tagen wieder normal **bearbeitbar/löschbar** (sofern nicht bereits genehmigt).
66
70
- Beim Speichern mit Endzeit wird ein pausierter Eintrag automatisch als **Abgeschlossen** (`completed`) finalisiert.
67
71
-**Abwesenheiten** beantragen und ggf. auf Freigabe warten. **Resturlaub** und Überträge werden angezeigt, wenn die Administration das gepflegt hat.
68
72
-**App-Teams (empfohlene Einrichtung):** Wenn Ihre Organisation **App-Teams** nutzt und in der App **kein:e Vorgesetzte:r** für Ihr Team hinterlegt ist, werden Anträge **ohne** Vertretung beim Absenden **automatisch genehmigt**—es gäbe sonst niemanden mit Managerfreigabe. Mit **Vertretung** läuft zuerst der Vertretungs-Schritt. Die Oberfläche kann dazu einen kurzen Hinweis anzeigen.
69
73
-**Älteres Gruppenmodell:** Verhalten folgt dem früheren „gleiche Gruppe“-Modell; die Administration sollte sicherstellen, dass Genehmigungen für Ihre Organisation weiterhin sinnvoll möglich sind.
70
-
-**Manager-Dashboard** (als Führungskraft): Unter **Ausstehende Genehmigungen** erscheint der **Abwesenheitstyp in Ihrer Sprache** (z. B. Urlaub, Krankheit), nicht technische Kurzbezeichnungen. Wo freigeschaltet, bietet **Abwesenheiten der Mitarbeitenden** eine eigene Listen-/Filteransicht.
74
+
-**Manager-Dashboard** (als Führungskraft): Unter **Ausstehende Genehmigungen**können Sie zwischen den Reitern **Abwesenheiten** und **Zeiteintrag-Korrekturen** wechseln. Bei Abwesenheiten erscheint der **Abwesenheitstyp in Ihrer Sprache** (z. B. Urlaub, Krankheit), nicht technische Kurzbezeichnungen. Wo freigeschaltet, bietet **Abwesenheiten der Mitarbeitenden** eine eigene Listen-/Filteransicht.
71
75
-**Mobile Nutzung (Smartphone/Tablet):** Die Oberfläche ist responsiv optimiert (klarere Abschnittsabstände, größere Touch-Ziele, iPhone-Safe-Area-Berücksichtigung). Auf sehr kleinen Displays funktionieren Formulare meist am besten im Hochformat, breite Tabellen/Berichte im Querformat.
72
76
-**Berichte** für Zeiträume erstellen und erlaubte Exporte nutzen (CSV, DATEV, …).
73
77
-**Compliance-Hinweise** (z. B. fehlende Pausen) nach Vorgabe des Arbeitgebers bearbeiten.
Copy file name to clipboardExpand all lines: docs/User-Manual.en.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,14 +61,18 @@ Only users in Nextcloud's `admin` group are eligible in this picker.
61
61
## 4. Everyday tasks
62
62
63
63
-**Clock in / out** and **breaks**: Use the time tracking UI; follow your organization’s rules for corrections and comments.
64
+
-**Dashboard quick actions workspace**:
65
+
- The dashboard includes a dedicated quick-actions area with **My status**, **Current session**, and direct buttons for **Clock In**, **Pause**, **Continue**, and **Clock Out**.
66
+
- Depending on your role, the same page can also show **Team overview** (manager) and **Company overview** (admin) with compact status lists.
67
+
- If a request fails because your Nextcloud session expired, refresh the page and retry.
64
68
-**Paused entry (resume or fix):**
65
69
- If an entry is in **Paused** state, the dashboard shows **Resume after break** on clock-in and continues the same-day entry instead of creating a duplicate.
66
70
- Paused entries are editable/deletable again within the normal 14-day edit window (as long as they are not already approved).
67
71
- When saved with an end time, a paused entry is finalized automatically as **Completed**.
68
72
-**Absences**: Create requests; wait for approval if your workflow requires it. Vacation balances and carryover (**Resturlaub**) may be shown if your admin configured them.
69
73
-**App teams (recommended setup):** If your organization uses **app-managed teams** and **no manager is assigned** to your team in the app, requests you submit **without** a substitute are **approved automatically** when you send them—there is nobody who could approve them in the manager workflow. If you **do** pick a substitute, the substitute step still runs first. The UI may show a short explanation when this applies.
70
74
-**Legacy group-based setup:** Behavior follows the older “same group” model; your admin should ensure approvals remain workable for your organization.
71
-
-**Manager dashboard** (if you are a team lead): Under **Pending approvals**, absence requests list each person with the **absence type in your language** (e.g. vacation vs sick leave), not raw internal codes. Where enabled, **Employee absences** provides a dedicated list/filter view of team absences.
75
+
-**Manager dashboard** (if you are a team lead): Under **Pending approvals**, you can switch between **Absences** and **Time entry corrections** tabs. Absence requests list each person with the **absence type in your language** (e.g. vacation vs sick leave), not raw internal codes. Where enabled, **Employee absences** provides a dedicated list/filter view of team absences.
72
76
-**Overtime balance traffic light**: On the dashboard, your balance can appear as green/yellow/red and distinguishes overtime vs undertime warnings. This is an orientation signal; your organization defines policy actions.
73
77
-**Mobile use (phones/tablets):** The UI is optimized for responsive use with clearer section spacing, larger touch targets, and iPhone safe-area aware layout. If you use a very small screen, prefer portrait mode for forms and landscape for wide tables/reports.
74
78
-**Reports**: Generate period reports or exports your admin allows (CSV, DATEV, etc.).
0 commit comments