ArbeitszeitCheck - Releases

← App details

Nextcloud 33

ArbeitszeitCheck 1.2.7
Release Details
UpdatedApril 27, 2026, 8:55 a.m.
Changelog

Added

  • Critical workflow audit checklist: Added tests/WORKFLOW_AUDIT_CHECKLIST.md as a concise release checklist for time tracking, manual entry corrections, absences/approvals, month closure, reporting/compliance/export behavior, and public error-surface expectations.

Changed

  • Time tracking mutation safety: Clock/break mutations now use user-scoped locks and transactions; status polling remains read-only while automatic break fallback and daily maximum enforcement run through explicit mutation paths/background jobs.
  • API input and error hardening: Report, export, compliance, manager, and time tracking endpoints now use stricter date/time parsing, safer validation responses, and generic public error messages for unexpected failures.
  • Month-closure enforcement: Absence update/delete/cancel/shorten/approval/substitute flows now re-check month mutability before applying workflow mutations.

Fixed

  • Health endpoint fingerprinting: The public health response no longer exposes app or Nextcloud version fields.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureT26RnSxGZtpmkWUMOT/kRj1pbj9j9dZCmH4GEaIONGYsjG9eFIorh133vbuxQbf+Ow0asxbdP0zK3CUa6iW6FhQkyo2Uyj0+BBVyFPliahtPKh68I8/YcQLJLnzI6i9lZhSCpy7gdMwr5xH14QVEq1gW9nlFA2ppepB0TJVCjpE9Ykc6egd1Fb28mr1KQcgYD39fXKG1R1rfY604eJtjuAnKomAkWecOPaUlElmIR5/QTBYeIthZV0fI79PfrcQdi1AjPIxQWx5mtvNy8vdSyah119zrA/Q7vJbh1i1vshxl65q5EKBh/Qam2JWadnVcfC6FH6CZwLkZwrkVlhfgAHhjRH4N01Mc3fRIbMTg+nKzW+oXANXnWyk8wtLf39wN4Qum+H4Yx4/ECG4aNULfPQki7EUdcLANlafsHKBarmYzITMnCPIzmKbQ/a07tKEsI+36C//sdfV2r15CMxkDfqey4NjtIbb8jv0ye5iv4gZnvl/FdyRaxLiptRiRxIRoFJgVMG1ZKxy6jw4MmIigONvQJ9Npn6//8vAdb80ftJvDCkyHa4DPmKHPoIphqFLLnSWbaUKn+KjfpDYom5nV99ccQlcdWqs5aXHLQR2UDv5gG+NCkLNxLNZcHLl6blsnsqnLGsnjgYLzYKxKJanBSvPkvO5nrpNoRM/3ybV4nWE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.6
Release Details
UpdatedApril 24, 2026, 10:32 a.m.
Changelog

Added

  • Absence approval forensics: Added approved_by_user_id persistence on absence records (approve/reject/auto-approve), with schema migration and API summary output.

Changed

  • Vacation entitlement snapshot integrity: Added deterministic key-based upsert on (user_id, period_key, as_of_date) and migration-backed unique index enforcement.
  • 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.
  • Release safety: Workflow/unit/integration tests were updated and executed against the hardened mutation paths.

Fixed

  • Legacy snapshot repair path: Upsert now handles historical malformed rows and concurrent unique-key conflicts safely by retrying as deterministic update.
  • Vacation balance write races: VacationYearBalanceMapper::upsert now resolves concurrent unique-key collisions via re-read/update fallback.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureFCaNQEccscnzM6rLSgigNgiMK//Ogy4aLpQQ02I290SKuEd1galIkTleu42bUC3jUHSHpnmIDlaOC359unS4KGTEy3nmCdndzTjnZo6r+Pbk9+/vFkufLmhW6rckhWRuZ5FaTDQEtSuZXf/xGdfbdoy0emnIb+n76unzaXXDRbRwiofg80WVWY3ejgfixFajIBo0pYBiWHsjvjA66KtZXYxALqBikSLtr7Qo2BNssYqyDpxnPXjrpabkjwefBgBEro9vtBMgdxO1BiXf2R7YQK7tdea1b1+Z0SPhktPHoetniDAHnLzFucaQdwMVT4jiqwldo5wArfOLOWnFHa3jBDLUVc3RCov3/euMcr2GKxwYR6Zxjuwb++CAMTv4wKuKhju4tfWm6KQfUXCVMciK56XxAvwhf0FzlGBpT0+YORUBc7r0OSm1SbO5R8E6wOF6sUM9QhQCz+VFFyo5QEXxME0pV+yDzFFCBCulYH5VFq+cTXXZ9Cg7LaafpLP0dm3xJ+bnjLf/sNziApiMCQsOvK5DQ/tH6NS1qf87PZdb2FeciFFCO9eZw5JP842ePPPdbfq6hhz36BOv2gHqY3b4ze2H8Jp08II7/a3FWKbkz0nXN0G0HLQYDkBAa22Sn/c6Io6hGcQI/0fuW8pHJjhI6VgoCZpdY+dVD00/7Pu/HXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.5
Release Details
UpdatedApril 22, 2026, 7:23 p.m.
Changelog

Changed

  • Release packaging refresh: Bumped app metadata to 1.2.5 and regenerated the signed release artifact set for App Store and GitHub publication.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureZpb9Oh1bIRpGiO5z2K6o3xhzr43wa8RdfzfLXHg7sEGwS8tzN8GaAdyCnk4IoZbFQbrcrwdyFCK2ifzBqN9OrxHGAqGpFLeQOaHUDcH/imXCIFxYAch8kwW545iujuTkvSBdlIFa+DAG6lFFRngQPO2aO9gC1B0Vp6wLTAjI5NDNeM6nVNyCIhbvaC4jUfIrTjrCfvgQ4hgpJ29pYU0GdY6bEgwKCQQgUuJVEB6Hoay1M40Xq8eLzdT/UfobFlC1nV4Anda02g1AeoM04FrJQUfD6lCo0s5pFYAJ82EM5OyzWwi/xgEv4y54tao/UBX6yoUvIdHa7yh6bfoKy0dQmzb+iHl8eQTAzCVQAgWWu58F5J+k884kYMwBNBdcuymPnszTlypmrQoRRjvI+UI2f8taEikdX2EUAbwHkBU8U8CG98NogPFy/w9drgLqq6gvBCtuuz3BLC7fsEfA2/Lx4XYEwCdbvoFMc2GNZJMIujhs1jsbk0Hzscz3NCmaILzbZpfKr59xfZy/bxNl2Yi8nl6L9tJRyaLdxJ7urZthACHIdATnAqGretxEcTox69OnoR+Pir+0N/8ujZ3Z2K2C/5zu/QGwGgaz+WeoKCwGjmTb3JCG3jh340kFLnp8TnzUiZpduSj4Bz4o7yojTzFAPoQrTUYZrv0llb8PGSoPI8w=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.4
Release Details
UpdatedApril 22, 2026, 7:18 p.m.
Changelog

Changed

  • 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.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturefOspm7RunA6JBPSZZ3vwdD+rRVZ5qOeMbZFcndytc+ZU00QoTdCYDFaEsDlUZtuCnpLGgwQ1x8o0jBhi409JtsZrNyD99XhzBZCKNl/nysKo/jDLa3h1msZ/AWKtjJUlyLxEPvPLzM2e/bg7DVOJKi0lsvq6nmUxJEhlLmhdgaONOlbAsBdtrtTKOO7DSxslFRRW0fmofVEdH8lL+5y0l/RtV5Gd6bMtpQ5bzHSoai9OMuOBFJ98QX9k/vX4qAuJUGVRvivJmMXDmiD/kPvezmia5no32RbXtYgYBUVY3Y9kfOza3mdFIwlHSD0bnjCI22QWUCBa5v59k+OuMPzPxCy+bzBl/M6Fu09TrNCDJvejpF/y9vKl7Wxgdz4ynaA2EZZ+RN15cGiTdOWVzjcWtnXBMSh9RCnBZqSCz8dFq1qVLUy16lBciLRNa6HofkEvemUN1oLbokZKLQlyXMFNxT8Ny3udUaOa5qKFDLbwgTttFuHDfn4NWOeI7JQgJ5kntg2KMpB4VYXvDwODCEcolniDL08kWuPbxOxd0tTR55+seYBfrSQrrGt46a4Vcp683MvMn8fx/el7vSPx9ifD1cUd6KMf/fi5IJF+pohxoCZlNepNdQGmaKNfWh87EGsdUl7089uKLWdwGWeGoHdxrBuRBhcfIU1HvCH+KVcvT9A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.3
Release Details
UpdatedApril 21, 2026, 8:11 p.m.
Changelog

Changed

  • Release packaging refresh: Prepared a new signed App Store/GitHub release archive for the current code line using the Docker-based signing workflow.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturexYrrvEAHPwtfVHCBhNEEi7sX2LvqPOYNCC1AOYXNIeoRkUCxYLFTc29MwrgaUMoSLGtoZDChDD2eKsUH6MY+y5Jk79dKZg/ngf2/YBQpmMevl8Lp5eSGo2QES6rBtWYa1GFOEd6sVU6RLcy9tNL3toOxw5Te3QTskzeamEGChd0JYprcLZSWJG1kRu8Y8c32p5Rwbwu1tuq3AAW+i/6Bq4bxztKR6PGkZ6uyTbVaW3p0PwMFoJxceVu0/MsbMpftQaGQHr/1h6nBvbuj1WBkfi9W0PHrl+0zRn+5FwoUU9dECfeHuQAAcXOcJsKT979ewplb5+vPgNSeN2SSTWoGs9eYYIvUzznpyhuqSa1aplwXO/U0xyTXeUE5fiAQFlbnxtZ7gjmeLBkbAR/gF4aCX3NEPGLtw24gY8jomJ67+foeoM1+AJM73aFgTH0NjYKUetACRTFgB6gJPXl97JrJxd7sTeg6xiqlNKrWSvxiAO8XkjHCUV1BaPmoRtyfcNnLxmf0MGCVUuO4btz7JH5qy3q4H8XecbNYpnEeer8qxzTkw3toonE4+LVgbHV0nW6uu/gfEvDtYZI0wKx/A4vQYSQ7WEprMn9SbjnXbaMFOcG81GT2HifhcWZH0/YfFzz+sRng/TvZOkuf2iUq/9EjnKwkyygMSlHE7Si3kYXldKc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.2
Release Details
UpdatedApril 21, 2026, 8:07 p.m.
Changelog

Fixed

  • Localized decimal inputs in admin settings: Daily working-hour inputs now reliably accept comma-decimals like 7,74 and preserve two-decimal precision.
  • Legacy hours API payload parsing: Time-entry endpoints now parse optional decimal hour fields consistently for both comma and dot separators, preventing silent truncation in backward-compatible request formats.

Changed

  • Input precision hints: Updated settings input steps/help text to align with two-decimal hour values used in 38.7-hour week scenarios.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureeG9EHR4R6Kg1X8OQ9g5Q0yPR7Y7yp+snb/sVhhLXEOtBIFd4xLZd/xi0GuLYF4KBZlPCH1GbRCy+q/kbjx7MyqlO2rHn3Cef0MnwJoLp9czZFJOjVJJpkoZNf/o9hh2OpeK+sNS7ghXfC5Pax2oicQFmeQeKQKLaTwn0AcJgvQrF1laVjQiXQopE98v16iClBjZ+KuybKcRmglxbd1N8dx69nBB0uyLQdkQIhnwHccyrlPCBzsXq55AtIEXGsitgXtquHKOk1bzBwM3uwQZoNRi4RIB/zWmOv0c7+71QTw0i1DMUsz+FUrTw+bBY0FnZe/Q9ageaUvwOb4bHUJYt1cuWPGEufAUC1w7ONCfHGASNkDv34msX4MQEaMf28k8ohtWlX/fzNIxL63Erijyanuo1tf9hZFeYEXmCKwXAeWOL0O/lXWcTGTvEOAD96sSv6RIcIOwHBLqxGUHiCQzJkKZJ3hjv3rrpOeneCLOz/jMNJrEgYCihLn1J8cUEPPeP6VH3rNthDuQOVCi63v+0X1uubbM6DQheViBYTA/z4wEAP/2YsA6rsXATB0JR4pOIxlsiT0MgjxIyrfctOJP/4zMU4645rSmZE+NS0TF46gpf8DF6ai0zilMmaHf9xY72qGZTICjvtIUcmwbMhRMqG9fmYomv5U2/jd3rubayPDg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.1
Release Details
UpdatedApril 21, 2026, 10:50 a.m.
Changelog

Fixed

  • Paused-entry recovery and lifecycle: Paused entries can now be accessed again in edit/delete workflows and are consistently finalized as completed when edited with an end time.
  • Resume behavior for same-day paused sessions: Clock-in now resumes a same-day paused entry instead of creating duplicate automatic entries, while preserving the pause gap as break history.
  • Historical paused leftovers: Added migration Version1020Date20260421000000 to repair all remaining orphaned paused rows (including cases not covered by the earlier one-time migration).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturewHjRsCMFlhEA9EgrgvzuDGiwQsEIOmqNFH9oA9Fs+lJZOluUc6XSmPeZow7uso0PwR/b5YYt+f8KmOoIwuJepnD1TTa5ClzBP5zx5gZq+KIloaEGzVPTnHvHJuc4V8q4A5BYEXvYrVvEuPgufr8BOBNy4SLwMKYQlJR0LhDLn3ShHowJ+VDaUSUjOtUih0uUCsNI54HhaAAa3EfKpgDqc2+jhM7WvnIzDGRVYF4HbPBYPpn+1eWOyOlOgq0YIy5M8+4shNLiGeIRo7Uepk9+HnDm6vjLdYB2iE9AMl+vSCGSdQTrP0Z5ceXZBZT/bM0t4Af3EfAP5seJ/sSQIYs1a5T8RIneJ7DwyFbZdGelFSSBZoMGDevr4IUUfAB3NIKNlPZsxAOv9elrF4AjLJZhDVB6i7OSVeER7yLqrIgMhBFXiFpr095gYQ7Wn6VCcBWwWVS7cWXa0xN9Yl00mn0z9GcVagRvncJ28Y0wSgk+GP/BDalUHmD7wHSL3pyXIWxpqQ2OJHi/xT5Myx4T+HVsywgRwAFaOLjV+hm8hkJLxd70WG0e1oo21m/DtTZZ1R44+BDdRGMJIcabWxJ/zFhYSZvVmoL2dpUlJhPgBBp1Y9Xp5pF0zOeLiGSMR4ON/Iys2jpsbAd0/TxW55NaEFOpZRRNYt3VoZJ8oqM1n1sHZX4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.0
Release Details
UpdatedApril 21, 2026, 10:08 a.m.
Changelog

Added

  • Vacation entitlement policy engine: New policy-driven calculation flow with support for manual_fixed, model_based_simple, tariff_rule_based, and manual_exception, plus admin simulation endpoint.
  • Tariff rule data model and APIs: Added versioned tariff rule sets/modules and admin endpoints to create, update, activate, retire, and assign policies to users.
  • Entitlement computation snapshots: Added persistent entitlement snapshots (at_entitlement_snapshots) with calculation trace/policy fingerprint for auditability and diagnostics.
  • Admin notifications page: New dedicated admin UI (/admin/notifications) with HR recipient + event matrix management and a dedicated notifications settings API.

Changed

  • Vacation allocation integration: Year allocation now resolves entitlement via VacationEntitlementEngine and returns entitlement source/rule-set/trace metadata in allocation payloads.
  • Policy migration compatibility: Existing user model vacation values are backfilled into policy assignments during migration (Version1018Date20260420123000) to keep legacy installs consistent.
  • Admin settings flow: Absence notification-related controls (carryover expiry/cap, rollover switches, substitute-required types, iCal and substitution-mail toggles) are centralized on admin notifications APIs/UI.
  • Working time model schema: Added work_days_per_week to at_models (Version1019Date20260420150000) to support entitlement formulas.

Fixed

  • User deletion cleanup: Deleting a user now also removes vacation policy assignments and entitlement snapshots, preventing orphaned policy/computation data.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signatureu3gPfbToOow1ecZSrYUbhzoOp6/Fb3syYzSdx9CNYBvsUDqkoBODyN714AKc/4PF8hYrf+nk+A7ICF0GC94uBW8MsNWCHRQ1GEmhhaNSePTNjV+JCCOR9SINE1JCYVSh4avkBX7evJrRZFTOoxRGZxKBSY8ubYG71+F/N22A3qH8wzu6yYMBi0hrt1oVOfFkhrkBKeEwip7Bm0vrEzfrhnNJ3qsqf5q52F9sxUFZNT+/JLDBPu/ZAokssMJGTgbmKwdc3qQzdI/d0zNPuZJwUNjjgvU+TLeFJRkOKNghRfdkVotVcm63NmAf9afJJx3QkCTOTbMchC9sKyvlnIbG68WUZvsiAUPRW5o2XxXK71zZo8y+GC65ZazjioV/4ANt6sEItnJ0MSylRmWFEXMTMJHgCiqqp9hwZwxs0IicHLsRRsnUDdT7yMgOdB7082cnUFJtWM9Me2uSvYx4QUfPosWZhkMqpwagxJ80EnYSfc12/cEXbr58MbdqyQeCj2dUG1iBPw0eVooOWxf9UwOnNaUKV6ynEGok/mYM3qS8XnNElFpliKoRAfBtgLsCpV7O/ChhjE0gPNILNasGMiofSaAd4cHZjSZI/7Cm6FkOSrGju6XCPubM6XeYLbyZ8pv1htd1H1NzUIsWYXG23nPhICNAdOvEcbIXWEw8H5b2Xtw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.14
Release Details
UpdatedApril 14, 2026, 9:48 a.m.
Changelog

Fixed

  • Approver deadlock (app teams): Absence and time-entry correction workflows no longer treat “has colleagues” as “has a manager”. Auto-approval when no assignable approver exists now follows TeamResolverService::hasAssignableManagerForEmployee() (explicit team managers in app-teams mode; legacy group mode still uses colleagues as a proxy). Prevents requests stuck in “awaiting manager approval” when nobody can approve.
  • Time entry corrections: Same assignability rule as absences (previously used colleague IDs only).
  • Admin users API requests on /index.php instances: Refresh/edit/history/update actions now reliably resolve app URLs and no longer produce invalid requests like search=[object PointerEvent].
  • Admin teams and settings API reliability on rewrite-less setups: Central URL resolution now includes a robust /index.php fallback when OC.generateUrl() is unavailable/incomplete in page context.

Added

  • Repair step ReleaseStuckPendingAbsences: post-migration repair auto-approves legacy pending absences that still match the “no assignable approver” condition (idempotent).
  • Frontend URL security guardrails: Shared AJAX layer now blocks external cross-origin calls by default (explicit allowExternal: true required), with unit tests covering URL normalization and external URL handling.
  • Lint guardrails: ESLint rules now prevent introducing raw fetch('/apps/arbeitszeitcheck/...') and implicit external fetch(...) patterns outside approved abstractions.

Changed

  • UX: Absences UI shows an informational callout when app teams are enabled and no approver is assigned; detail view shows a defensive warning if an old pending row is still stuck (until repair/admin fixes team setup).
  • Frontend architecture: ArbeitszeitCheckUtils now provides centralized getRequestToken(), resolveUrl(), and isExternalUrl() primitives used by page scripts (admin-users, reports, settings, validation).
  • Mobile UX consistency (WCAG 2.1 AA focused): iPhone-safe-area-aware spacing, improved touch targets, clearer section rhythm, and better visual hierarchy for normal user pages (dashboard, time-entries, absences) and manager pages (manager-dashboard, manager-time-entries, employee absences view).

Documentation

  • User manuals (EN/DE), tests/WORKFLOW_ROLE_MATRIX.md, and developer documentation updated for assignable-manager semantics and repair step.
  • README and developer documentation updated with centralized frontend URL policy, strict external-call behavior, and mobile/iOS layout guidance.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureVBSDJh3veK9J7eUDKGFw/xB1ypmBQrjMDzamatQfncYem1qg9kNVWAnHDH+fGRlFJtrBH+fOu+MRTFZuK78DU/W18IQglCtTbsH4MdaHLHTwVz2JOxeGJWmx2p1yK0ulK0vbDgCLXQu5B8gR/L/JYRGFo0+FpwuRvxrpp1BWrX5m9mQLgoxn3hOj2r+F2m0wYdEDWhksF6VzLbHyr3pIT9hu6p1owuAZzr3Nqtva4tZK0WGgn8xa5bDwZqJdWSyQJ04JiCZisftYCOJz8HNfq6o4MFTLF0aQpYxUH8wf6gz5pkfUOKIemq4Ui8GqRr3Fxo/DW2APAk0GcwWyY8ypEiY2RNi6IkGv3K9p8mFamDxirDeurOX/hwNia1Lt4HCqzJATjWpmaCEAoBQWfOCgozI9o+h8cI9LhHp3LvK3VxFD/s9xjJPFLZ9y8b98hufe13Uq5/NYzqo2vQ1DgQXyCbRjsiMbqDvz+yyDmXM+JPV8U8gTKxTD8y19VoiVIlWhAsI/zBmxHC84G2htaCHBws47cGhmJVvQDXGz/1aae9J0of1bGoOIERyEFSOAzmUN9fcvdVbN+77wn70QQ1k7GQcw6jAEScIQq8Pt8n7pBTECeECk6K4baNfaTT2+kZKLCdD1mdaJII84B8+XXxmxIk+VI1sarNlMIvPAk3FQjww=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.13
Release Details
UpdatedApril 13, 2026, 10:46 a.m.
Changelog

Added

  • Month closure grace period and auto-finalization: Admin setting month_closure_grace_days_after_eom (0–90, default 0). After end-of-month, employees have that many calendar days to finalize manually; if the month is still open afterward, a daily background job finalizes it automatically (same snapshot as manual finalize). Pending time entry approvals and open absence workflow states block auto-finalization. Reopening remains admin-only.
  • App-admin allowlist: New admin setting app_admin_user_ids to restrict ArbeitszeitCheck administration to a selected subset of Nextcloud admins. Empty selection keeps backward-compatible behavior (all Nextcloud admins can administer the app).
  • Security role-gating Docker test target: Added scripts/test-security-role-gating-docker.sh wiring via make test-security-role-gating-docker and composer test:security-role-gating:docker for fast authorization regression checks in containerized setups.

Changed

  • Month closure UX and API: Employee UI uses a clearer card layout, visible feedback for success/errors (WCAG-friendly), server-driven canFinalize with localized block reasons (feature off, future month, pending approvals). Manual finalize rejects future calendar months. Absence workflow (pending, substitute_pending, substitute_declined) is enforced alongside pending time entry corrections. Unauthorized API access returns 401 where appropriate. Admin settings: dedicated “Month closure” section; grace-days field stays editable with copy explaining it is saved even when closure is off; reopen uses searchable employee picker and clearer administrator vs. employee wording. Form validation error callouts use higher-contrast text and tinted surfaces across themes. Auto-finalize job logs per-user failures for operations.
  • Release/signing workflow hardened for integrity checks: make release-signed now signs the extracted release archive payload (not the local development checkout), validates forbidden development paths are excluded, and repacks the signed archive for deployment/App Store upload.
  • Admin authorization enforcement: Access to AdminController routes now uses middleware-level app-admin checks with a dedicated exception and a consistent 403 response page for authenticated users without app-admin rights.

Documentation

  • Deployment guidance: Release docs now explicitly require production deployment from the signed tarball only and document the common integrity-failure pattern (.git/* / node_modules/* lists) caused by signing a dev tree.
  • Deployment helper script: Added release/deploy-from-release.sh to deploy from signed release archives with safety checks (forbidden path scan, required signature.json, optional app disable/enable and occ integrity:check-app).
  • Admin operations: User/developer docs now describe how to configure app-admin allowlisting, what the default fallback is, and how to verify authorization gating in Docker-based test runs.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signatureol/yHOgiMCOj+yYqb8HC0g5laqPih/kTTbBB12bDawwgGQGVdx+GCBNaSmM8Sgu2jRB6PJWwnF1qFQQ6MIHWCjFzuOQeyL+sDEGH0VhI/qgbCmyRKZnBKAyUq9BBrxux3zaI6cN6QD76nP27UCU4C/OxW87nybYxy4WqqdOSOR0Af9QMkUg/VZLhRatpageqRGkYSFl+3ZwEg8qhlpDyLH3lh3xSG6+tQsyy9yU4La+XDiZ63lG2yF1RWHQ1/irb+dRrPEs/I1wuLvdZL+6olqx7MTogIylUqrJyux7ycTUrC/sxTBsZYJUQ2vGFyGzO30qARQ+KSOJtai5Upcx7WZxHv98eS0X3FGI0QUhC2NwIE2ahn0mfH/YjuRW5wBn9nsDG03KPpDaMATyvxTD8BbzGTM9ziuMKfOzd2HfYxMWDX/GF4LWM/eXpqsO7E2veMjtIClAcMI6vZhJKVV4mxXHxMkFIdvTbaFmPrWEAhFRoI+0NHQ4y3ec+goBucU+E4gHCyicVOT0T4n3NH6U+nOs+95d5cSA85Dz+LF7ZLLYU/rxi1ybC36fVg8igg+P8YvH555KQNizrYNJ2xdglmirJcs0XcEwZ8/hVrWfzuLUgKbMNXlqa2dgRzMnfOy9b5bNUPez9FKsqEqAc66dUr9JnDiR+poFgQBlCAnZ7vbw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.12
Release Details
UpdatedApril 12, 2026, 4:25 p.m.
Changelog

Added

  • Revision-safe month finalization (optional): Admin toggle month_closure_enabled (default off). Employees can finalize a full calendar month; the app stores a canonical JSON snapshot, SHA-256 hash chain, append-only revision rows, audit events, and a minimal PDF download. Finalized months are read-only through normal app APIs; administrators may reopen a month with a mandatory reason (audit). Monthly reports for a finalized month use the stored snapshot. Database: at_month_closure, at_month_closure_revision (migration Version1014Date20260409120000).

Documentation

  • User manuals (EN/DE), developer documentation, and compliance notes updated for month closure, retention context, and limits (in-app tamper evidence, not QES).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signature0mCLz3x6v/VzKxsK9I8J3HAMtz+lr9Z43v3UN+tH4hZeZLXvuXWayTxLB6EYKXXnNSfkvF5KMiYJqh3LJHUCTcPUgGfPqNDwCkkTK51T0cmghwWPQylVIe9L6My8a2Pu0sVCrG5P0Ev5t7wdLQNMSxKcHYKXYT7B2QvQG+ljdNKr1/ywfXDEpIg4yzCMnxVdfGIBiUNl4vUIYOXCNt30fUXiRCXHfl381LcA2Bv9ZP+Ddxk+qEpa1iuujWcRg6o32YRCESwDAO2IoXKEvLy16btLtNQd7wL+E6lhCfgST/jp+rWPxh4RSJ8kBlyaBYo8LqvhvMRpGqhYfNOJZTrq0BnKQZfjc1qnAcIHMDFjBfUwi8tp0/bmxOnXmMMFZZtGf6rGLUYinb470whWKydzhIib2K2kSTN9GrRvjmp+osUh9/qAlBzN5wRutIBewKqM8SkwJ52dYiYWU5jAyf3fVxXqRJs970WUccI7udQ8A7J9XqkmCRUBvl46mPugz0K481/X6cKHiZBK9681njxRWorGVGHpCiz92T+Ug2W+bRIBYLBM0oqPd9Dp2rXQ5+UFLDTC9eDG8WP3VVxsK7d5xtK/xWC1fSHy4c7Mgp8WAVITY1eU9ftn1tS8BHZxcgz7EvgtPmamoKwb55KKFTxQu4c6khCWaZ2pPQvXQjxtrNw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.11
Release Details
UpdatedApril 9, 2026, 2:45 p.m.
Changelog

Added

  • Manager employee absences view: New in-app page and API for managers/admins to review employee absences with secure scope filtering, pagination, and localized status labels.
  • Working time model copy flow: Added copy action with modal UX, unique default naming, and safeguards against duplicate submits.

Changed

  • Manager navigation structure: Sidebar regrouped into clearer manager/admin submenus; reports moved under manager context; compliance link placement adjusted for reduced top-level clutter.
  • Manager employee time entries UX: Date defaults and formatting/translation handling improved for clearer filtering behavior.
  • Calendar behavior (rollback cleanup): Removed in-progress direct calendar-write functionality and related admin controls/status/test endpoints. The supported behavior remains unchanged: no Nextcloud Calendar app sync; optional .ics attachments are sent by email for configured absence workflows.

Fixed

  • Working time model modals: Corrected copy modal interaction flow, source-model presentation, and delete-confirmation localization/rendering issues.
  • Absence iCal hardening: Added stricter status/date guards, recipient deduplication, and privacy-safe event descriptions for substitute/manager recipients.

Documentation

  • User manuals and changelogs updated to reflect the final calendar model (email .ics optional, no direct Nextcloud Calendar app sync) and current manager/admin UX structure.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureHwGRZcCLjb/plcL+LoYgcSBNEXoLoZU2DlOb7pcOx6X41OU6v9SkdO5YXOynEBr7kmViQeQzJfLyTUTRSfcqLlz4jC8KL7Xmaa7rImQ0EGSVpaBmmUuHC0MWlrhWWMEkG52smtFFalq0GZy0wLhcHRc6BtqCzilQLju2jS5SR6GTPWutj0i9LsbKsB6LFzkbc9cAbtcRCUjzx9A2oU/EAA1BhRBlyQTvR/OLyDa2FU/CBNWrm3I9293E+D9UP9gMBhKvSH5f1DXF/TpwiCEzYB/NRR0KBXvQb30whbv6O/WJfCEs9z1+wryRvNfGjT0+9X4C3tPtLTpyh7noU7NK7VzS0Cl0/TbACvlEY8yk9I+UPbNYA9jUiNny2JpAh6syrFE3k2RrhIpiJ9iLwqKgUYN2rlx6LFtqWP1NlIExC97DdmCTt1YRTyeDzi/NrZuGKHl5JBtCJWZalX6KwxjJd4oBrxoy1+i/2BLSpjoUlvPQ2FHPlqdtHWcIqryrVzmV+8ZJyxmo5EVJR6bmGESQjUovJ70j5KIltEg1OM/5MAyJ9hkIBJxjXiLTvocREbYOdoicChFs9aQFbDX0VN3BD4q6FNSiV5UXRsbzo57lxa4n51hB3tjoQAJ+rBlmMyVez7u1zNj+5X6lrvn7b5/5UQg2oHpaR8Hz1iPPou7E/GA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.10
Release Details
UpdatedApril 7, 2026, 7:49 p.m.
Changelog

Added

  • Vacation rollover: VacationRolloverService, background job, occ arbeitszeitcheck:vacation-rollover, migration Version1013Date20260407120000 with at_vacation_rollover_log; unit tests.

Changed

  • Frontend l10n: Shared templates/common/main-ui-l10n.php and teams-l10n.php so translated strings are available early across pages; related template and JS updates.

Fixed

  • Manager dashboard — pending absences: API includes summary.typeLabel (server-localized absence type); UI prefers it so cards show translated labels (e.g. German Urlaub) instead of raw codes like vacation.

Documentation

  • docs/Developer-Documentation.en.md: pending-approvals API note for typeLabel; user manuals (EN/DE): manager pending approvals show localized absence types.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturekmFxrMFQus0US44BSrw/0eOzjGU8zutOf6Q4Dqcc/39RNDiCiQOKB55We29dsKBZ77Qkk8fbitvBMURDmfLM21hqyrDTfltj77MNdonON7hcINJKQZG2fGLz3Rrc+10mDQDAiDqVQGOLrpJBQVuA+TxdUEA1C9+z0zwvmHLdlBEgXCw7k/4FoU8aKCA/Jcp02Fjr98PG+1MW5SbOtTs8oQG2iMpRe7Ogo+YzqZtU11KZ4tOr8zEblZeh7oSG+AaIlj16YscKKCWAL3MLmyRvYTXWpPgsu4xLp+AUvTGbSEKUlDeEznDDkGpUvVrd2pTm4Y7xyc8X8c/0WQRqWuioiqRLUHHldJg8MjgL4s7mQkqy95dfZ/xQRC9BAc/cbTceynA8PD5XILnQAVgVRe9hXsji6TgN2EURulrVsBbCN1wCAp/Be9FqH7NYiQYxhmVfYM3kmyMdVe/+owslEAaMcmjT/QcZQlCeJj5SNOXCqVwCsks0ijINP2utN0XO4mlHkCt712QwFAMw86rSjnuX7eA1W6w2OpFjFFobOekDaUgBs8ID4LMgpOWJSGTI2P9AHtBJTMNSrRmsMzQmafZYdBm2F9gO4tz9ktxbhcmBFWpTvNHZimE6Re354pnTOQIQ4yCKU+8VsqYEJxdxe1JYXE2yTeNCKOCcIywL8/hvVS0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.6
Release Details
UpdatedMarch 27, 2026, 6:08 p.m.
Changelog

Added

  • Development tooling: occ arbeitszeitcheck:generate-test-data CLI for deterministic demo data (time entries, absences, optional violations, demo app team) to exercise UI, reports, and workflows locally.

Fixed

  • Reports UI: Report type cards are no longer incorrectly disabled when a team-related scope is selected (team scopes still use the team report API where applicable).
  • Reports (tests): Team report CSV download test now reads download bodies via DataDownloadResponse::render() (Nextcloud API).
  • Team reports: Deduplicate user IDs before permission checks and aggregation to avoid double-counting when users appear in multiple teams.
  • Absence type badges: Stronger, theme-safe contrast for vacation / sick / home office / other badges (readable on pale Nextcloud palettes).

Changed

  • Compatibility (dev): Local development stacks aligned with Nextcloud 33.x (example: official nextcloud Docker image).
  • Reports layout: Reverted an overly aggressive “full width” parameter form rule that could interfere with scrolling/layout on the reports page.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturehE0UvSaJEnunYMHOd5u3aR+5MyAg2Pl78l3t75Fx494nh6CzImBfoaswZXb9agJ6Iz1orktgFsKlTqfZoSGNxuZHRiRjcbtC+LsLLQsjONX5i5UOXK6crz87+6TEDAPkgdr318s+w9qHvTic2kdcdx+rpqbBSMIAgU/GuVZjyp4wtCV2Ti9VFR1pFzAlmH95b6WVCQCdTYmWs7LsLY//midoEYCd8JXSicLvr2nobqTL/soYZdR/39931AgpiUO5B9Rd0Wo7NVhk8C59bmlNqkLa8UDZHTZ/Eseks/njP9CdRsgdaUiqIm3libscOPzoFg2abyJpIZUV/nV8acOq8dh/XNNVRuLxxHs5v5FcByrnuxE4G1IbyC/FtB1KFRQlGF+rwwSEzBKdkNCdH5zbJ//gEgRfjZJb/Ijtma9+14jeRub/oLHQx0Mkh27aVMBPbqDI8LeuOLWo4Gbd4RXFknth02gSZpk1/Ko4uE90R44RcO2YUS58qvKQkickIoDEQId9w55FIEyP7LIAZa2bXl9qYZAA+CHCwixsBKi3a+yADg/wWaN4roVQ4LobTjp1adPOOVWbTHSemHRgEsqpboMxRXcrRWan8pNiQrnvTbJwIu9i3Q6zgHtHXe6RviFMzwiMJQTdvLhhHuANr9Lt04cCZjPS2dWfjGCZKVfo7hM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.5
Release Details
UpdatedMarch 26, 2026, 6:57 p.m.
Changelog

Fixed

  • Admin settings API URL handling: Prevented duplicate index.php/index.php path generation when a route URL is already pre-generated by Nextcloud.
  • Frontend error handling: Avoided unhandled Promise rejections in callback-based Utils.ajax() consumers after expected API failures.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signaturedkvj+LT0qxzHO59iXnzyYCXDEgfS9OMri9yD8QWcQqS/VPzNKFBHIHDqX/2JmnEuQFM6sKf+jyx0QORDIAC4h2XiZoUlJe+MHgZQGGqa/mA/SGFQtwzlxWw2A4Drm1ioGkOIwhGo5Ny0zIogawfyhPtDQX7Mjj2K9x5+OSHQKtQs8LGRiyy7EsVJUC4fWworktCvuqRYpvR+rY2GfSu0CcWWZVItcEYqAfDFl3UvmWag299QrF1g7SOVY1EcoDH2B+O2mOwXwj6JjWNhz4iUkdcbkthaHPwZ12cUTOYLOtopIILuRTdlXiYWqYvLn24yZUObqmS0LbNcyzAF8gF8LDOmp08FxRCo6NY4L9HJcvgaR4qDkOpiC1aj/9FK8LmRnmdOvH9FHIqr2P6eBP4uoetMWoMbW3QAqvizVMDYPe96Qj1m/Cwp2ogV5+D0JOt1Ms02LGHZ3pcBp0vojoUu52pdP+dXL1d0ZN4rzSPEVQboJllQz4dyahtQ55l2EuDdk6VVf35oOPFLt5HqIF84tFYbY4moxafMunMI2lSWeRj0jCxApnTcrjuWDRuG8Q/fv3Za2gtkSsx9XNLPAb6YNOrgKFEeZRtSIp7L2V6shwxn9H4PG2uETboUm44RWkoZO+JZFtNTTlZpij4B5mRvo/OamgruxwI6YgplBQXObSw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.4
Release Details
UpdatedMarch 26, 2026, 6:40 p.m.
Changelog

Fixed

  • Routing/compatibility: Added indexApi() compatibility aliases for legacy endpoints to prevent 500 errors in the Nextcloud log.
  • PHP fatal errors: Fixed constructor signature issues in AbsenceService and ComplianceService that could crash the app when loading services or saving settings.
  • Reports security hardening: Hardened report preview endpoints with start <= end validation and a maximum date-range limit to reduce DoS risk from untrusted parameters.
  • Admin “whole organization” scope: Correctly handle admin organization scope (userId="" = all enabled users) and enforce access checks so preview/download data stays consistent.
  • Reports rendering: Improved Preview rendering for absence and compliance reports to match the actual report data structure.

Changed

  • Reports UI semantics: Team scope is limited to the team overview/export semantics that the backend actually returns (prevents misleading previews/downloads).
  • Organization download guidance: Added explicit UI messaging for organization scope download limitations until organization-wide export endpoints are implemented.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureB+kiXQiNbiYsWVOlB3wiTffKZj021JMzAUzhQRYuwQmpszoGICQ7cCChEeggNXAMuOsRrPkznqB190jArt5Sfp7zKL5I3Z7IjyH6ur4aAqf6Tddq93/6Vb4W4ud9G30AJhkh3X0PBZ98bcOPcrxiaMrOqHryaIkcQ0os1pJnCAZ5v/zmUZGz/rVHxc0VNUGGvJZnx8Odwgd0r9z3McM4r9LL7n9+CrwtDMOVS/fUwAapkdaqM381pkLCa5BHM8VJd+ARz7Tt8rPVuVBwXDR9pkq38eoD9tQ61QVbCqrfsf4/8LgcbNlrHjWVRrAtUirX38JlJgFBKvmzaORvsgylNFggcrZ7sIx4o29kPPkFWZaUee0TKI/uc3WlThNIj/i4+sVTZ2Um23cfon/wr/sHByJIMOsFrw60s6RPm/XjAxeTnJbrm61ms9a0kKTodDR7puH0guqBQJX/CTJUQxcoPmKcfVqqblI2Ll/efOzi/BHYEEuiMGRVfYmuwtlALuFODD8ALFhf8EYmnB2EyCTLJwR+1bSUQF6/a/p4PP9cVSRKDbfYY3rpSU/QXbM3XTn3fET1dqE98FWEqPK6iNKdoMrcsZ4gkKNMNYKpAjMB9kbemHOVPNCIDVTIkYsVQO/edieH4N3EPouwzLWCvQVqWpb8h7SPbTslAhg45WtVByU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.3
Release Details
UpdatedMarch 19, 2026, 2:41 p.m.
Changelog

Fixed

  • ArbZG compliance: Corrected break check logic (9h/45min branch now reachable; check ≥9h before ≥6h)
  • Manager logic: employeeHasManager() now uses getManagerIdsForEmployee() instead of getColleagueIds()
  • Reporting: getTeamHoursSummary() respects period parameter (week/month)
  • Admin users: hasTimeEntriesToday is now per-user, not system-wide
  • UserSettingsMapper: Fixed falsy zero/empty-string handling in getIntegerSetting, getFloatSetting, getStringSetting
  • Routing: Moved exportUsers route above getUser to fix route shadowing
  • Version1009 migration: Replaced MySQL backtick SQL with portable QueryBuilder; use OCP\DB\Types
  • Duplicate notifier: Removed double registration from Application.php boot()
  • API security: Generic error messages instead of raw exception output (SubstituteController, GdprController)
  • PDF export: Returns HTTP 422 with clear message instead of silent CSV fallback
  • LIKE injection: WorkingTimeModelMapper::searchByName() uses escapeLikeParameter()
  • XSS: Modal titles escaped in components.js; compliance-violations.js innerHTML escaped
  • Admin-settings form: Added CSRF requesttoken
  • AbsenceService DI: Fixed constructor argument order (IDBConnection)
  • Admin holidays and settings: English source strings for l10n keys
  • UserDeletedListener: inject TeamMemberMapper and TeamManagerMapper
  • XSS: sanitise team names in admin-teams.js

Changed

  • CSS: Shadow-light variable, scoped resets, dark-mode color-mix fixes, semantic color variables, navigation height/z-index
  • Clock buttons: Double-submit guard (disabled during API calls)
  • initTimeline(): Max retry count (20) to prevent infinite loop
  • Accessibility: aria-label on header buttons, label for admin user search, aria-modal on welcome dialog, English l10n keys in navigation
  • Docs: Removed internal docs; added docs/README; corrected repo URLs
  • Manager dashboard: Injected l10n from PHP so JS translations work
  • Constants.php for magic numbers; user-facing error messages

Added

  • Version1010 migration: Compound indices on at_entries, at_violations, at_holidays, at_absences
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturePf3DfgKP/j8T95ElL4ORpuPFeD3UHt901udriCVI1yQdyRJDTp5Z8tHcaFpLRjjmjW8c1nFIEjrFVTjl5UNnPTTWzwf1+Woci/TtIHa7lDkMftxjIIVMf7khRJ6NGriUQD1WVS6Hqdi+FWafgnIqn7dO728K+lB3rFSlgoCoQgQpjjJ/D+N5yynIi44wiD7F8PngozN58wUdWoW02zBX3W+ndpEZXmrY2srqPndhBrlg4cOrE8cWSUFe9wtwSaopkDZPSl85Wsg7nwDOJGV1JaFzDdBxyHATs3kxJnsntXePI1j/O8bcWR69o45JkDY458TsiA0qweFMx5A3Ioh5K0Rrp4UQREthUP83sEzQCIo9ztzB3oeFr1sAs+/dfauAPLsHWNG3NO70fZ82RnsRKuhklTbL8RQ6gc2a3rqrOLSPypyLsv6+UxyoKwm41cggNl4UnhyUhoa33IjBiEoZDXTfB2d+fNZoTXkOYZdDTKcC9bNMc+mo8guNkTxqAYw8Ian0V7vmLs0uBJ9JYyyy5k8AUd+8ijMokWm/2VKPCbDga4mmZevp3KqSpVOqXYBJXmMzJH2Vf+LXZYjRHTScFQ92bXVz7VRRNoz+LEtZy4QYIT9u+YCIvu7ddT5RZmA08HIWU52W/jWQQiKraZE/Nw8Ks4VQBfB6TX+wDCGadBs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.2
Release Details
UpdatedMarch 11, 2026, 11:36 a.m.
Changelog

Changed

  • Long-term refactor: Replaced all \OC::$server usage with proper OCP APIs and constructor injection
  • CSPService: Injected ContentSecurityPolicyNonceManager via constructor
  • Controllers: Removed manual cspNonce (configureCSP handles it); injected IURLGenerator, IConfig where needed
  • PageController: Injected IURLGenerator, IConfig; passes urlGenerator to templates
  • HealthController: Injected IDBConnection for database check
  • ProjectCheckIntegrationService: Injected LoggerInterface instead of OC::$server->getLogger()
  • Templates: Replaced \OC::$server with \OCP\Server::get() (OCP public API)
  • Added GitHub Actions release workflow (.github/workflows/release.yml)
  • Updated PageControllerTest with full constructor mocks
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureVdOLtKkuJFOvqioRam3iZGmEiSQrA4Xc99thIdm97dMKFlfHskcRIG34rWiqftbbIh+6CgWWxu+YdQOLSV63qOtZ7rH/rl1x5hnhaR4GBDbTtnE/frmfTJYlpHlKVw9KSyniEEAE30lLl5tuYA/4myl+9N6abL+9oJpQo8nAY2oApVgdJQFHPvUPeaJ6q0Qb6GUkOTwZo/UgmT0cIqTL7Ymkvkp3OGE1nRr2hD+T5aFyXu0E3IfS5m+eete4Xdn5TcSYzWVB3oBdMxmRTUtracW4ar/ZstAIwsVxmrLcW4/2AgvUQrrAZ87EBNNoiekUF+nJogWpFeh1n6lN7ZbuUSQJaQtlquovukPbnOgO1AAFe3EMG2DmBtlbyn/jt8/DY5ql8VTDp62eKDJxYTodidjAQYkqMEve7XuTtPgrNwG9c4hFNYS5fIGz07ER4otxErRKC25d89ql/bkSDre0IZPw/gTgdEjx71iD/UZBf9b2tzhMKpNfdtlkT0BV1mNOa376kZzYOk9DcpAaOgobPK00gb3ZeeODGn29N8LEvEAI5SCoa1m7eT4B0KbMQNtgDEUNZrrvRf3Tzpb0mL2QUmf5i3sn10IjQ6KdTDor1xWFEYIF03M240Dw5ml/UUrDgvXI9WZ1BzgyNDe2HAVeNPb9akpPHUWYkoe+uOoaf7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.1
Release Details
UpdatedMarch 10, 2026, 10:18 p.m.
Changelog

Fixed

  • Resolved duplicate route names in absence API (absence#store, absence#show, absence#update, absence#delete)
  • Corrected settings class names in info.xml to use full OCA namespace
  • Added declare(strict_types=1) to routes.php

Changed

  • Removed non-existent screenshot references from info.xml until real screenshots are captured
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signaturec6nuFK9N2O61bf1GpNWz2G2FDt1GzTRzd2pXna6x5E/HI/m1e1dt8TheGnhfgYm/TY/o/W539hak3svOJbJmoJr/kmd7xVWRGnZH/PDBjROe5kwRIwWdZlR3z7DiOyTsZo44DBLvVFEaRMAjF4PpVpJxTIA0xV59d3YJHyFZXbMPxSvAbZu43bAjWU6kVGmfaKUOrW5d592aApbxQ+mwJS7LwFMXlxGSzyCTwYL3bMkwormPPS64RTJtrPhvImU09ACMsjwgERAuFGlvbGj8CiuXzAWoO7ISyxcsqiaw1jnA5OIlJ+hnQhUdYHtkIzdwNHxw4ItSBL3pSJjhwIyrs4zZRMkOVjTqDluDfmvbx3Ir9cglVHlMGGTOOJtuyU0PmL0Fo9HZ2R0Noz9w8T3cpetxRG+B+mSWapUblbM+BT6aIvfHMjSzvI0qjwzcczwVzkYJISHReObwYFpeVs5W7cW1gXY2mx42Q/fPqDkrM5wEiuYJ98QG7Y67uhYZce9wmAp0Pygx0UJILj4fNPLuA27hVOp3++x0rOxhEl1A4v0tgiX5pVRYK3qwf1vHFl3zSGgldQs2WUmJ6CoPWbIE6hzmtRUGMzSOnKEK+2eLHej/Edzdo75nVZd6maKXVAY1L+z74IK61HvJ6kQ0QXFO7urWBZJg+IfxzR6W4mrvZnY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32

Nextcloud 32

ArbeitszeitCheck 1.2.7
Release Details
UpdatedApril 27, 2026, 8:55 a.m.
Changelog

Added

  • Critical workflow audit checklist: Added tests/WORKFLOW_AUDIT_CHECKLIST.md as a concise release checklist for time tracking, manual entry corrections, absences/approvals, month closure, reporting/compliance/export behavior, and public error-surface expectations.

Changed

  • Time tracking mutation safety: Clock/break mutations now use user-scoped locks and transactions; status polling remains read-only while automatic break fallback and daily maximum enforcement run through explicit mutation paths/background jobs.
  • API input and error hardening: Report, export, compliance, manager, and time tracking endpoints now use stricter date/time parsing, safer validation responses, and generic public error messages for unexpected failures.
  • Month-closure enforcement: Absence update/delete/cancel/shorten/approval/substitute flows now re-check month mutability before applying workflow mutations.

Fixed

  • Health endpoint fingerprinting: The public health response no longer exposes app or Nextcloud version fields.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureT26RnSxGZtpmkWUMOT/kRj1pbj9j9dZCmH4GEaIONGYsjG9eFIorh133vbuxQbf+Ow0asxbdP0zK3CUa6iW6FhQkyo2Uyj0+BBVyFPliahtPKh68I8/YcQLJLnzI6i9lZhSCpy7gdMwr5xH14QVEq1gW9nlFA2ppepB0TJVCjpE9Ykc6egd1Fb28mr1KQcgYD39fXKG1R1rfY604eJtjuAnKomAkWecOPaUlElmIR5/QTBYeIthZV0fI79PfrcQdi1AjPIxQWx5mtvNy8vdSyah119zrA/Q7vJbh1i1vshxl65q5EKBh/Qam2JWadnVcfC6FH6CZwLkZwrkVlhfgAHhjRH4N01Mc3fRIbMTg+nKzW+oXANXnWyk8wtLf39wN4Qum+H4Yx4/ECG4aNULfPQki7EUdcLANlafsHKBarmYzITMnCPIzmKbQ/a07tKEsI+36C//sdfV2r15CMxkDfqey4NjtIbb8jv0ye5iv4gZnvl/FdyRaxLiptRiRxIRoFJgVMG1ZKxy6jw4MmIigONvQJ9Npn6//8vAdb80ftJvDCkyHa4DPmKHPoIphqFLLnSWbaUKn+KjfpDYom5nV99ccQlcdWqs5aXHLQR2UDv5gG+NCkLNxLNZcHLl6blsnsqnLGsnjgYLzYKxKJanBSvPkvO5nrpNoRM/3ybV4nWE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.6
Release Details
UpdatedApril 24, 2026, 10:32 a.m.
Changelog

Added

  • Absence approval forensics: Added approved_by_user_id persistence on absence records (approve/reject/auto-approve), with schema migration and API summary output.

Changed

  • Vacation entitlement snapshot integrity: Added deterministic key-based upsert on (user_id, period_key, as_of_date) and migration-backed unique index enforcement.
  • 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.
  • Release safety: Workflow/unit/integration tests were updated and executed against the hardened mutation paths.

Fixed

  • Legacy snapshot repair path: Upsert now handles historical malformed rows and concurrent unique-key conflicts safely by retrying as deterministic update.
  • Vacation balance write races: VacationYearBalanceMapper::upsert now resolves concurrent unique-key collisions via re-read/update fallback.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureFCaNQEccscnzM6rLSgigNgiMK//Ogy4aLpQQ02I290SKuEd1galIkTleu42bUC3jUHSHpnmIDlaOC359unS4KGTEy3nmCdndzTjnZo6r+Pbk9+/vFkufLmhW6rckhWRuZ5FaTDQEtSuZXf/xGdfbdoy0emnIb+n76unzaXXDRbRwiofg80WVWY3ejgfixFajIBo0pYBiWHsjvjA66KtZXYxALqBikSLtr7Qo2BNssYqyDpxnPXjrpabkjwefBgBEro9vtBMgdxO1BiXf2R7YQK7tdea1b1+Z0SPhktPHoetniDAHnLzFucaQdwMVT4jiqwldo5wArfOLOWnFHa3jBDLUVc3RCov3/euMcr2GKxwYR6Zxjuwb++CAMTv4wKuKhju4tfWm6KQfUXCVMciK56XxAvwhf0FzlGBpT0+YORUBc7r0OSm1SbO5R8E6wOF6sUM9QhQCz+VFFyo5QEXxME0pV+yDzFFCBCulYH5VFq+cTXXZ9Cg7LaafpLP0dm3xJ+bnjLf/sNziApiMCQsOvK5DQ/tH6NS1qf87PZdb2FeciFFCO9eZw5JP842ePPPdbfq6hhz36BOv2gHqY3b4ze2H8Jp08II7/a3FWKbkz0nXN0G0HLQYDkBAa22Sn/c6Io6hGcQI/0fuW8pHJjhI6VgoCZpdY+dVD00/7Pu/HXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.5
Release Details
UpdatedApril 22, 2026, 7:23 p.m.
Changelog

Changed

  • Release packaging refresh: Bumped app metadata to 1.2.5 and regenerated the signed release artifact set for App Store and GitHub publication.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureZpb9Oh1bIRpGiO5z2K6o3xhzr43wa8RdfzfLXHg7sEGwS8tzN8GaAdyCnk4IoZbFQbrcrwdyFCK2ifzBqN9OrxHGAqGpFLeQOaHUDcH/imXCIFxYAch8kwW545iujuTkvSBdlIFa+DAG6lFFRngQPO2aO9gC1B0Vp6wLTAjI5NDNeM6nVNyCIhbvaC4jUfIrTjrCfvgQ4hgpJ29pYU0GdY6bEgwKCQQgUuJVEB6Hoay1M40Xq8eLzdT/UfobFlC1nV4Anda02g1AeoM04FrJQUfD6lCo0s5pFYAJ82EM5OyzWwi/xgEv4y54tao/UBX6yoUvIdHa7yh6bfoKy0dQmzb+iHl8eQTAzCVQAgWWu58F5J+k884kYMwBNBdcuymPnszTlypmrQoRRjvI+UI2f8taEikdX2EUAbwHkBU8U8CG98NogPFy/w9drgLqq6gvBCtuuz3BLC7fsEfA2/Lx4XYEwCdbvoFMc2GNZJMIujhs1jsbk0Hzscz3NCmaILzbZpfKr59xfZy/bxNl2Yi8nl6L9tJRyaLdxJ7urZthACHIdATnAqGretxEcTox69OnoR+Pir+0N/8ujZ3Z2K2C/5zu/QGwGgaz+WeoKCwGjmTb3JCG3jh340kFLnp8TnzUiZpduSj4Bz4o7yojTzFAPoQrTUYZrv0llb8PGSoPI8w=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.4
Release Details
UpdatedApril 22, 2026, 7:18 p.m.
Changelog

Changed

  • 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.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturefOspm7RunA6JBPSZZ3vwdD+rRVZ5qOeMbZFcndytc+ZU00QoTdCYDFaEsDlUZtuCnpLGgwQ1x8o0jBhi409JtsZrNyD99XhzBZCKNl/nysKo/jDLa3h1msZ/AWKtjJUlyLxEPvPLzM2e/bg7DVOJKi0lsvq6nmUxJEhlLmhdgaONOlbAsBdtrtTKOO7DSxslFRRW0fmofVEdH8lL+5y0l/RtV5Gd6bMtpQ5bzHSoai9OMuOBFJ98QX9k/vX4qAuJUGVRvivJmMXDmiD/kPvezmia5no32RbXtYgYBUVY3Y9kfOza3mdFIwlHSD0bnjCI22QWUCBa5v59k+OuMPzPxCy+bzBl/M6Fu09TrNCDJvejpF/y9vKl7Wxgdz4ynaA2EZZ+RN15cGiTdOWVzjcWtnXBMSh9RCnBZqSCz8dFq1qVLUy16lBciLRNa6HofkEvemUN1oLbokZKLQlyXMFNxT8Ny3udUaOa5qKFDLbwgTttFuHDfn4NWOeI7JQgJ5kntg2KMpB4VYXvDwODCEcolniDL08kWuPbxOxd0tTR55+seYBfrSQrrGt46a4Vcp683MvMn8fx/el7vSPx9ifD1cUd6KMf/fi5IJF+pohxoCZlNepNdQGmaKNfWh87EGsdUl7089uKLWdwGWeGoHdxrBuRBhcfIU1HvCH+KVcvT9A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.3
Release Details
UpdatedApril 21, 2026, 8:11 p.m.
Changelog

Changed

  • Release packaging refresh: Prepared a new signed App Store/GitHub release archive for the current code line using the Docker-based signing workflow.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturexYrrvEAHPwtfVHCBhNEEi7sX2LvqPOYNCC1AOYXNIeoRkUCxYLFTc29MwrgaUMoSLGtoZDChDD2eKsUH6MY+y5Jk79dKZg/ngf2/YBQpmMevl8Lp5eSGo2QES6rBtWYa1GFOEd6sVU6RLcy9tNL3toOxw5Te3QTskzeamEGChd0JYprcLZSWJG1kRu8Y8c32p5Rwbwu1tuq3AAW+i/6Bq4bxztKR6PGkZ6uyTbVaW3p0PwMFoJxceVu0/MsbMpftQaGQHr/1h6nBvbuj1WBkfi9W0PHrl+0zRn+5FwoUU9dECfeHuQAAcXOcJsKT979ewplb5+vPgNSeN2SSTWoGs9eYYIvUzznpyhuqSa1aplwXO/U0xyTXeUE5fiAQFlbnxtZ7gjmeLBkbAR/gF4aCX3NEPGLtw24gY8jomJ67+foeoM1+AJM73aFgTH0NjYKUetACRTFgB6gJPXl97JrJxd7sTeg6xiqlNKrWSvxiAO8XkjHCUV1BaPmoRtyfcNnLxmf0MGCVUuO4btz7JH5qy3q4H8XecbNYpnEeer8qxzTkw3toonE4+LVgbHV0nW6uu/gfEvDtYZI0wKx/A4vQYSQ7WEprMn9SbjnXbaMFOcG81GT2HifhcWZH0/YfFzz+sRng/TvZOkuf2iUq/9EjnKwkyygMSlHE7Si3kYXldKc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.2
Release Details
UpdatedApril 21, 2026, 8:07 p.m.
Changelog

Fixed

  • Localized decimal inputs in admin settings: Daily working-hour inputs now reliably accept comma-decimals like 7,74 and preserve two-decimal precision.
  • Legacy hours API payload parsing: Time-entry endpoints now parse optional decimal hour fields consistently for both comma and dot separators, preventing silent truncation in backward-compatible request formats.

Changed

  • Input precision hints: Updated settings input steps/help text to align with two-decimal hour values used in 38.7-hour week scenarios.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureeG9EHR4R6Kg1X8OQ9g5Q0yPR7Y7yp+snb/sVhhLXEOtBIFd4xLZd/xi0GuLYF4KBZlPCH1GbRCy+q/kbjx7MyqlO2rHn3Cef0MnwJoLp9czZFJOjVJJpkoZNf/o9hh2OpeK+sNS7ghXfC5Pax2oicQFmeQeKQKLaTwn0AcJgvQrF1laVjQiXQopE98v16iClBjZ+KuybKcRmglxbd1N8dx69nBB0uyLQdkQIhnwHccyrlPCBzsXq55AtIEXGsitgXtquHKOk1bzBwM3uwQZoNRi4RIB/zWmOv0c7+71QTw0i1DMUsz+FUrTw+bBY0FnZe/Q9ageaUvwOb4bHUJYt1cuWPGEufAUC1w7ONCfHGASNkDv34msX4MQEaMf28k8ohtWlX/fzNIxL63Erijyanuo1tf9hZFeYEXmCKwXAeWOL0O/lXWcTGTvEOAD96sSv6RIcIOwHBLqxGUHiCQzJkKZJ3hjv3rrpOeneCLOz/jMNJrEgYCihLn1J8cUEPPeP6VH3rNthDuQOVCi63v+0X1uubbM6DQheViBYTA/z4wEAP/2YsA6rsXATB0JR4pOIxlsiT0MgjxIyrfctOJP/4zMU4645rSmZE+NS0TF46gpf8DF6ai0zilMmaHf9xY72qGZTICjvtIUcmwbMhRMqG9fmYomv5U2/jd3rubayPDg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.1
Release Details
UpdatedApril 21, 2026, 10:50 a.m.
Changelog

Fixed

  • Paused-entry recovery and lifecycle: Paused entries can now be accessed again in edit/delete workflows and are consistently finalized as completed when edited with an end time.
  • Resume behavior for same-day paused sessions: Clock-in now resumes a same-day paused entry instead of creating duplicate automatic entries, while preserving the pause gap as break history.
  • Historical paused leftovers: Added migration Version1020Date20260421000000 to repair all remaining orphaned paused rows (including cases not covered by the earlier one-time migration).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturewHjRsCMFlhEA9EgrgvzuDGiwQsEIOmqNFH9oA9Fs+lJZOluUc6XSmPeZow7uso0PwR/b5YYt+f8KmOoIwuJepnD1TTa5ClzBP5zx5gZq+KIloaEGzVPTnHvHJuc4V8q4A5BYEXvYrVvEuPgufr8BOBNy4SLwMKYQlJR0LhDLn3ShHowJ+VDaUSUjOtUih0uUCsNI54HhaAAa3EfKpgDqc2+jhM7WvnIzDGRVYF4HbPBYPpn+1eWOyOlOgq0YIy5M8+4shNLiGeIRo7Uepk9+HnDm6vjLdYB2iE9AMl+vSCGSdQTrP0Z5ceXZBZT/bM0t4Af3EfAP5seJ/sSQIYs1a5T8RIneJ7DwyFbZdGelFSSBZoMGDevr4IUUfAB3NIKNlPZsxAOv9elrF4AjLJZhDVB6i7OSVeER7yLqrIgMhBFXiFpr095gYQ7Wn6VCcBWwWVS7cWXa0xN9Yl00mn0z9GcVagRvncJ28Y0wSgk+GP/BDalUHmD7wHSL3pyXIWxpqQ2OJHi/xT5Myx4T+HVsywgRwAFaOLjV+hm8hkJLxd70WG0e1oo21m/DtTZZ1R44+BDdRGMJIcabWxJ/zFhYSZvVmoL2dpUlJhPgBBp1Y9Xp5pF0zOeLiGSMR4ON/Iys2jpsbAd0/TxW55NaEFOpZRRNYt3VoZJ8oqM1n1sHZX4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.2.0
Release Details
UpdatedApril 21, 2026, 10:08 a.m.
Changelog

Added

  • Vacation entitlement policy engine: New policy-driven calculation flow with support for manual_fixed, model_based_simple, tariff_rule_based, and manual_exception, plus admin simulation endpoint.
  • Tariff rule data model and APIs: Added versioned tariff rule sets/modules and admin endpoints to create, update, activate, retire, and assign policies to users.
  • Entitlement computation snapshots: Added persistent entitlement snapshots (at_entitlement_snapshots) with calculation trace/policy fingerprint for auditability and diagnostics.
  • Admin notifications page: New dedicated admin UI (/admin/notifications) with HR recipient + event matrix management and a dedicated notifications settings API.

Changed

  • Vacation allocation integration: Year allocation now resolves entitlement via VacationEntitlementEngine and returns entitlement source/rule-set/trace metadata in allocation payloads.
  • Policy migration compatibility: Existing user model vacation values are backfilled into policy assignments during migration (Version1018Date20260420123000) to keep legacy installs consistent.
  • Admin settings flow: Absence notification-related controls (carryover expiry/cap, rollover switches, substitute-required types, iCal and substitution-mail toggles) are centralized on admin notifications APIs/UI.
  • Working time model schema: Added work_days_per_week to at_models (Version1019Date20260420150000) to support entitlement formulas.

Fixed

  • User deletion cleanup: Deleting a user now also removes vacation policy assignments and entitlement snapshots, preventing orphaned policy/computation data.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signatureu3gPfbToOow1ecZSrYUbhzoOp6/Fb3syYzSdx9CNYBvsUDqkoBODyN714AKc/4PF8hYrf+nk+A7ICF0GC94uBW8MsNWCHRQ1GEmhhaNSePTNjV+JCCOR9SINE1JCYVSh4avkBX7evJrRZFTOoxRGZxKBSY8ubYG71+F/N22A3qH8wzu6yYMBi0hrt1oVOfFkhrkBKeEwip7Bm0vrEzfrhnNJ3qsqf5q52F9sxUFZNT+/JLDBPu/ZAokssMJGTgbmKwdc3qQzdI/d0zNPuZJwUNjjgvU+TLeFJRkOKNghRfdkVotVcm63NmAf9afJJx3QkCTOTbMchC9sKyvlnIbG68WUZvsiAUPRW5o2XxXK71zZo8y+GC65ZazjioV/4ANt6sEItnJ0MSylRmWFEXMTMJHgCiqqp9hwZwxs0IicHLsRRsnUDdT7yMgOdB7082cnUFJtWM9Me2uSvYx4QUfPosWZhkMqpwagxJ80EnYSfc12/cEXbr58MbdqyQeCj2dUG1iBPw0eVooOWxf9UwOnNaUKV6ynEGok/mYM3qS8XnNElFpliKoRAfBtgLsCpV7O/ChhjE0gPNILNasGMiofSaAd4cHZjSZI/7Cm6FkOSrGju6XCPubM6XeYLbyZ8pv1htd1H1NzUIsWYXG23nPhICNAdOvEcbIXWEw8H5b2Xtw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.14
Release Details
UpdatedApril 14, 2026, 9:48 a.m.
Changelog

Fixed

  • Approver deadlock (app teams): Absence and time-entry correction workflows no longer treat “has colleagues” as “has a manager”. Auto-approval when no assignable approver exists now follows TeamResolverService::hasAssignableManagerForEmployee() (explicit team managers in app-teams mode; legacy group mode still uses colleagues as a proxy). Prevents requests stuck in “awaiting manager approval” when nobody can approve.
  • Time entry corrections: Same assignability rule as absences (previously used colleague IDs only).
  • Admin users API requests on /index.php instances: Refresh/edit/history/update actions now reliably resolve app URLs and no longer produce invalid requests like search=[object PointerEvent].
  • Admin teams and settings API reliability on rewrite-less setups: Central URL resolution now includes a robust /index.php fallback when OC.generateUrl() is unavailable/incomplete in page context.

Added

  • Repair step ReleaseStuckPendingAbsences: post-migration repair auto-approves legacy pending absences that still match the “no assignable approver” condition (idempotent).
  • Frontend URL security guardrails: Shared AJAX layer now blocks external cross-origin calls by default (explicit allowExternal: true required), with unit tests covering URL normalization and external URL handling.
  • Lint guardrails: ESLint rules now prevent introducing raw fetch('/apps/arbeitszeitcheck/...') and implicit external fetch(...) patterns outside approved abstractions.

Changed

  • UX: Absences UI shows an informational callout when app teams are enabled and no approver is assigned; detail view shows a defensive warning if an old pending row is still stuck (until repair/admin fixes team setup).
  • Frontend architecture: ArbeitszeitCheckUtils now provides centralized getRequestToken(), resolveUrl(), and isExternalUrl() primitives used by page scripts (admin-users, reports, settings, validation).
  • Mobile UX consistency (WCAG 2.1 AA focused): iPhone-safe-area-aware spacing, improved touch targets, clearer section rhythm, and better visual hierarchy for normal user pages (dashboard, time-entries, absences) and manager pages (manager-dashboard, manager-time-entries, employee absences view).

Documentation

  • User manuals (EN/DE), tests/WORKFLOW_ROLE_MATRIX.md, and developer documentation updated for assignable-manager semantics and repair step.
  • README and developer documentation updated with centralized frontend URL policy, strict external-call behavior, and mobile/iOS layout guidance.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureVBSDJh3veK9J7eUDKGFw/xB1ypmBQrjMDzamatQfncYem1qg9kNVWAnHDH+fGRlFJtrBH+fOu+MRTFZuK78DU/W18IQglCtTbsH4MdaHLHTwVz2JOxeGJWmx2p1yK0ulK0vbDgCLXQu5B8gR/L/JYRGFo0+FpwuRvxrpp1BWrX5m9mQLgoxn3hOj2r+F2m0wYdEDWhksF6VzLbHyr3pIT9hu6p1owuAZzr3Nqtva4tZK0WGgn8xa5bDwZqJdWSyQJ04JiCZisftYCOJz8HNfq6o4MFTLF0aQpYxUH8wf6gz5pkfUOKIemq4Ui8GqRr3Fxo/DW2APAk0GcwWyY8ypEiY2RNi6IkGv3K9p8mFamDxirDeurOX/hwNia1Lt4HCqzJATjWpmaCEAoBQWfOCgozI9o+h8cI9LhHp3LvK3VxFD/s9xjJPFLZ9y8b98hufe13Uq5/NYzqo2vQ1DgQXyCbRjsiMbqDvz+yyDmXM+JPV8U8gTKxTD8y19VoiVIlWhAsI/zBmxHC84G2htaCHBws47cGhmJVvQDXGz/1aae9J0of1bGoOIERyEFSOAzmUN9fcvdVbN+77wn70QQ1k7GQcw6jAEScIQq8Pt8n7pBTECeECk6K4baNfaTT2+kZKLCdD1mdaJII84B8+XXxmxIk+VI1sarNlMIvPAk3FQjww=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.13
Release Details
UpdatedApril 13, 2026, 10:46 a.m.
Changelog

Added

  • Month closure grace period and auto-finalization: Admin setting month_closure_grace_days_after_eom (0–90, default 0). After end-of-month, employees have that many calendar days to finalize manually; if the month is still open afterward, a daily background job finalizes it automatically (same snapshot as manual finalize). Pending time entry approvals and open absence workflow states block auto-finalization. Reopening remains admin-only.
  • App-admin allowlist: New admin setting app_admin_user_ids to restrict ArbeitszeitCheck administration to a selected subset of Nextcloud admins. Empty selection keeps backward-compatible behavior (all Nextcloud admins can administer the app).
  • Security role-gating Docker test target: Added scripts/test-security-role-gating-docker.sh wiring via make test-security-role-gating-docker and composer test:security-role-gating:docker for fast authorization regression checks in containerized setups.

Changed

  • Month closure UX and API: Employee UI uses a clearer card layout, visible feedback for success/errors (WCAG-friendly), server-driven canFinalize with localized block reasons (feature off, future month, pending approvals). Manual finalize rejects future calendar months. Absence workflow (pending, substitute_pending, substitute_declined) is enforced alongside pending time entry corrections. Unauthorized API access returns 401 where appropriate. Admin settings: dedicated “Month closure” section; grace-days field stays editable with copy explaining it is saved even when closure is off; reopen uses searchable employee picker and clearer administrator vs. employee wording. Form validation error callouts use higher-contrast text and tinted surfaces across themes. Auto-finalize job logs per-user failures for operations.
  • Release/signing workflow hardened for integrity checks: make release-signed now signs the extracted release archive payload (not the local development checkout), validates forbidden development paths are excluded, and repacks the signed archive for deployment/App Store upload.
  • Admin authorization enforcement: Access to AdminController routes now uses middleware-level app-admin checks with a dedicated exception and a consistent 403 response page for authenticated users without app-admin rights.

Documentation

  • Deployment guidance: Release docs now explicitly require production deployment from the signed tarball only and document the common integrity-failure pattern (.git/* / node_modules/* lists) caused by signing a dev tree.
  • Deployment helper script: Added release/deploy-from-release.sh to deploy from signed release archives with safety checks (forbidden path scan, required signature.json, optional app disable/enable and occ integrity:check-app).
  • Admin operations: User/developer docs now describe how to configure app-admin allowlisting, what the default fallback is, and how to verify authorization gating in Docker-based test runs.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signatureol/yHOgiMCOj+yYqb8HC0g5laqPih/kTTbBB12bDawwgGQGVdx+GCBNaSmM8Sgu2jRB6PJWwnF1qFQQ6MIHWCjFzuOQeyL+sDEGH0VhI/qgbCmyRKZnBKAyUq9BBrxux3zaI6cN6QD76nP27UCU4C/OxW87nybYxy4WqqdOSOR0Af9QMkUg/VZLhRatpageqRGkYSFl+3ZwEg8qhlpDyLH3lh3xSG6+tQsyy9yU4La+XDiZ63lG2yF1RWHQ1/irb+dRrPEs/I1wuLvdZL+6olqx7MTogIylUqrJyux7ycTUrC/sxTBsZYJUQ2vGFyGzO30qARQ+KSOJtai5Upcx7WZxHv98eS0X3FGI0QUhC2NwIE2ahn0mfH/YjuRW5wBn9nsDG03KPpDaMATyvxTD8BbzGTM9ziuMKfOzd2HfYxMWDX/GF4LWM/eXpqsO7E2veMjtIClAcMI6vZhJKVV4mxXHxMkFIdvTbaFmPrWEAhFRoI+0NHQ4y3ec+goBucU+E4gHCyicVOT0T4n3NH6U+nOs+95d5cSA85Dz+LF7ZLLYU/rxi1ybC36fVg8igg+P8YvH555KQNizrYNJ2xdglmirJcs0XcEwZ8/hVrWfzuLUgKbMNXlqa2dgRzMnfOy9b5bNUPez9FKsqEqAc66dUr9JnDiR+poFgQBlCAnZ7vbw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.12
Release Details
UpdatedApril 12, 2026, 4:25 p.m.
Changelog

Added

  • Revision-safe month finalization (optional): Admin toggle month_closure_enabled (default off). Employees can finalize a full calendar month; the app stores a canonical JSON snapshot, SHA-256 hash chain, append-only revision rows, audit events, and a minimal PDF download. Finalized months are read-only through normal app APIs; administrators may reopen a month with a mandatory reason (audit). Monthly reports for a finalized month use the stored snapshot. Database: at_month_closure, at_month_closure_revision (migration Version1014Date20260409120000).

Documentation

  • User manuals (EN/DE), developer documentation, and compliance notes updated for month closure, retention context, and limits (in-app tamper evidence, not QES).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signature0mCLz3x6v/VzKxsK9I8J3HAMtz+lr9Z43v3UN+tH4hZeZLXvuXWayTxLB6EYKXXnNSfkvF5KMiYJqh3LJHUCTcPUgGfPqNDwCkkTK51T0cmghwWPQylVIe9L6My8a2Pu0sVCrG5P0Ev5t7wdLQNMSxKcHYKXYT7B2QvQG+ljdNKr1/ywfXDEpIg4yzCMnxVdfGIBiUNl4vUIYOXCNt30fUXiRCXHfl381LcA2Bv9ZP+Ddxk+qEpa1iuujWcRg6o32YRCESwDAO2IoXKEvLy16btLtNQd7wL+E6lhCfgST/jp+rWPxh4RSJ8kBlyaBYo8LqvhvMRpGqhYfNOJZTrq0BnKQZfjc1qnAcIHMDFjBfUwi8tp0/bmxOnXmMMFZZtGf6rGLUYinb470whWKydzhIib2K2kSTN9GrRvjmp+osUh9/qAlBzN5wRutIBewKqM8SkwJ52dYiYWU5jAyf3fVxXqRJs970WUccI7udQ8A7J9XqkmCRUBvl46mPugz0K481/X6cKHiZBK9681njxRWorGVGHpCiz92T+Ug2W+bRIBYLBM0oqPd9Dp2rXQ5+UFLDTC9eDG8WP3VVxsK7d5xtK/xWC1fSHy4c7Mgp8WAVITY1eU9ftn1tS8BHZxcgz7EvgtPmamoKwb55KKFTxQu4c6khCWaZ2pPQvXQjxtrNw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.11
Release Details
UpdatedApril 9, 2026, 2:45 p.m.
Changelog

Added

  • Manager employee absences view: New in-app page and API for managers/admins to review employee absences with secure scope filtering, pagination, and localized status labels.
  • Working time model copy flow: Added copy action with modal UX, unique default naming, and safeguards against duplicate submits.

Changed

  • Manager navigation structure: Sidebar regrouped into clearer manager/admin submenus; reports moved under manager context; compliance link placement adjusted for reduced top-level clutter.
  • Manager employee time entries UX: Date defaults and formatting/translation handling improved for clearer filtering behavior.
  • Calendar behavior (rollback cleanup): Removed in-progress direct calendar-write functionality and related admin controls/status/test endpoints. The supported behavior remains unchanged: no Nextcloud Calendar app sync; optional .ics attachments are sent by email for configured absence workflows.

Fixed

  • Working time model modals: Corrected copy modal interaction flow, source-model presentation, and delete-confirmation localization/rendering issues.
  • Absence iCal hardening: Added stricter status/date guards, recipient deduplication, and privacy-safe event descriptions for substitute/manager recipients.

Documentation

  • User manuals and changelogs updated to reflect the final calendar model (email .ics optional, no direct Nextcloud Calendar app sync) and current manager/admin UX structure.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureHwGRZcCLjb/plcL+LoYgcSBNEXoLoZU2DlOb7pcOx6X41OU6v9SkdO5YXOynEBr7kmViQeQzJfLyTUTRSfcqLlz4jC8KL7Xmaa7rImQ0EGSVpaBmmUuHC0MWlrhWWMEkG52smtFFalq0GZy0wLhcHRc6BtqCzilQLju2jS5SR6GTPWutj0i9LsbKsB6LFzkbc9cAbtcRCUjzx9A2oU/EAA1BhRBlyQTvR/OLyDa2FU/CBNWrm3I9293E+D9UP9gMBhKvSH5f1DXF/TpwiCEzYB/NRR0KBXvQb30whbv6O/WJfCEs9z1+wryRvNfGjT0+9X4C3tPtLTpyh7noU7NK7VzS0Cl0/TbACvlEY8yk9I+UPbNYA9jUiNny2JpAh6syrFE3k2RrhIpiJ9iLwqKgUYN2rlx6LFtqWP1NlIExC97DdmCTt1YRTyeDzi/NrZuGKHl5JBtCJWZalX6KwxjJd4oBrxoy1+i/2BLSpjoUlvPQ2FHPlqdtHWcIqryrVzmV+8ZJyxmo5EVJR6bmGESQjUovJ70j5KIltEg1OM/5MAyJ9hkIBJxjXiLTvocREbYOdoicChFs9aQFbDX0VN3BD4q6FNSiV5UXRsbzo57lxa4n51hB3tjoQAJ+rBlmMyVez7u1zNj+5X6lrvn7b5/5UQg2oHpaR8Hz1iPPou7E/GA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.10
Release Details
UpdatedApril 7, 2026, 7:49 p.m.
Changelog

Added

  • Vacation rollover: VacationRolloverService, background job, occ arbeitszeitcheck:vacation-rollover, migration Version1013Date20260407120000 with at_vacation_rollover_log; unit tests.

Changed

  • Frontend l10n: Shared templates/common/main-ui-l10n.php and teams-l10n.php so translated strings are available early across pages; related template and JS updates.

Fixed

  • Manager dashboard — pending absences: API includes summary.typeLabel (server-localized absence type); UI prefers it so cards show translated labels (e.g. German Urlaub) instead of raw codes like vacation.

Documentation

  • docs/Developer-Documentation.en.md: pending-approvals API note for typeLabel; user manuals (EN/DE): manager pending approvals show localized absence types.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturekmFxrMFQus0US44BSrw/0eOzjGU8zutOf6Q4Dqcc/39RNDiCiQOKB55We29dsKBZ77Qkk8fbitvBMURDmfLM21hqyrDTfltj77MNdonON7hcINJKQZG2fGLz3Rrc+10mDQDAiDqVQGOLrpJBQVuA+TxdUEA1C9+z0zwvmHLdlBEgXCw7k/4FoU8aKCA/Jcp02Fjr98PG+1MW5SbOtTs8oQG2iMpRe7Ogo+YzqZtU11KZ4tOr8zEblZeh7oSG+AaIlj16YscKKCWAL3MLmyRvYTXWpPgsu4xLp+AUvTGbSEKUlDeEznDDkGpUvVrd2pTm4Y7xyc8X8c/0WQRqWuioiqRLUHHldJg8MjgL4s7mQkqy95dfZ/xQRC9BAc/cbTceynA8PD5XILnQAVgVRe9hXsji6TgN2EURulrVsBbCN1wCAp/Be9FqH7NYiQYxhmVfYM3kmyMdVe/+owslEAaMcmjT/QcZQlCeJj5SNOXCqVwCsks0ijINP2utN0XO4mlHkCt712QwFAMw86rSjnuX7eA1W6w2OpFjFFobOekDaUgBs8ID4LMgpOWJSGTI2P9AHtBJTMNSrRmsMzQmafZYdBm2F9gO4tz9ktxbhcmBFWpTvNHZimE6Re354pnTOQIQ4yCKU+8VsqYEJxdxe1JYXE2yTeNCKOCcIywL8/hvVS0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.6
Release Details
UpdatedMarch 27, 2026, 6:08 p.m.
Changelog

Added

  • Development tooling: occ arbeitszeitcheck:generate-test-data CLI for deterministic demo data (time entries, absences, optional violations, demo app team) to exercise UI, reports, and workflows locally.

Fixed

  • Reports UI: Report type cards are no longer incorrectly disabled when a team-related scope is selected (team scopes still use the team report API where applicable).
  • Reports (tests): Team report CSV download test now reads download bodies via DataDownloadResponse::render() (Nextcloud API).
  • Team reports: Deduplicate user IDs before permission checks and aggregation to avoid double-counting when users appear in multiple teams.
  • Absence type badges: Stronger, theme-safe contrast for vacation / sick / home office / other badges (readable on pale Nextcloud palettes).

Changed

  • Compatibility (dev): Local development stacks aligned with Nextcloud 33.x (example: official nextcloud Docker image).
  • Reports layout: Reverted an overly aggressive “full width” parameter form rule that could interfere with scrolling/layout on the reports page.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturehE0UvSaJEnunYMHOd5u3aR+5MyAg2Pl78l3t75Fx494nh6CzImBfoaswZXb9agJ6Iz1orktgFsKlTqfZoSGNxuZHRiRjcbtC+LsLLQsjONX5i5UOXK6crz87+6TEDAPkgdr318s+w9qHvTic2kdcdx+rpqbBSMIAgU/GuVZjyp4wtCV2Ti9VFR1pFzAlmH95b6WVCQCdTYmWs7LsLY//midoEYCd8JXSicLvr2nobqTL/soYZdR/39931AgpiUO5B9Rd0Wo7NVhk8C59bmlNqkLa8UDZHTZ/Eseks/njP9CdRsgdaUiqIm3libscOPzoFg2abyJpIZUV/nV8acOq8dh/XNNVRuLxxHs5v5FcByrnuxE4G1IbyC/FtB1KFRQlGF+rwwSEzBKdkNCdH5zbJ//gEgRfjZJb/Ijtma9+14jeRub/oLHQx0Mkh27aVMBPbqDI8LeuOLWo4Gbd4RXFknth02gSZpk1/Ko4uE90R44RcO2YUS58qvKQkickIoDEQId9w55FIEyP7LIAZa2bXl9qYZAA+CHCwixsBKi3a+yADg/wWaN4roVQ4LobTjp1adPOOVWbTHSemHRgEsqpboMxRXcrRWan8pNiQrnvTbJwIu9i3Q6zgHtHXe6RviFMzwiMJQTdvLhhHuANr9Lt04cCZjPS2dWfjGCZKVfo7hM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.5
Release Details
UpdatedMarch 26, 2026, 6:57 p.m.
Changelog

Fixed

  • Admin settings API URL handling: Prevented duplicate index.php/index.php path generation when a route URL is already pre-generated by Nextcloud.
  • Frontend error handling: Avoided unhandled Promise rejections in callback-based Utils.ajax() consumers after expected API failures.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signaturedkvj+LT0qxzHO59iXnzyYCXDEgfS9OMri9yD8QWcQqS/VPzNKFBHIHDqX/2JmnEuQFM6sKf+jyx0QORDIAC4h2XiZoUlJe+MHgZQGGqa/mA/SGFQtwzlxWw2A4Drm1ioGkOIwhGo5Ny0zIogawfyhPtDQX7Mjj2K9x5+OSHQKtQs8LGRiyy7EsVJUC4fWworktCvuqRYpvR+rY2GfSu0CcWWZVItcEYqAfDFl3UvmWag299QrF1g7SOVY1EcoDH2B+O2mOwXwj6JjWNhz4iUkdcbkthaHPwZ12cUTOYLOtopIILuRTdlXiYWqYvLn24yZUObqmS0LbNcyzAF8gF8LDOmp08FxRCo6NY4L9HJcvgaR4qDkOpiC1aj/9FK8LmRnmdOvH9FHIqr2P6eBP4uoetMWoMbW3QAqvizVMDYPe96Qj1m/Cwp2ogV5+D0JOt1Ms02LGHZ3pcBp0vojoUu52pdP+dXL1d0ZN4rzSPEVQboJllQz4dyahtQ55l2EuDdk6VVf35oOPFLt5HqIF84tFYbY4moxafMunMI2lSWeRj0jCxApnTcrjuWDRuG8Q/fv3Za2gtkSsx9XNLPAb6YNOrgKFEeZRtSIp7L2V6shwxn9H4PG2uETboUm44RWkoZO+JZFtNTTlZpij4B5mRvo/OamgruxwI6YgplBQXObSw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.4
Release Details
UpdatedMarch 26, 2026, 6:40 p.m.
Changelog

Fixed

  • Routing/compatibility: Added indexApi() compatibility aliases for legacy endpoints to prevent 500 errors in the Nextcloud log.
  • PHP fatal errors: Fixed constructor signature issues in AbsenceService and ComplianceService that could crash the app when loading services or saving settings.
  • Reports security hardening: Hardened report preview endpoints with start <= end validation and a maximum date-range limit to reduce DoS risk from untrusted parameters.
  • Admin “whole organization” scope: Correctly handle admin organization scope (userId="" = all enabled users) and enforce access checks so preview/download data stays consistent.
  • Reports rendering: Improved Preview rendering for absence and compliance reports to match the actual report data structure.

Changed

  • Reports UI semantics: Team scope is limited to the team overview/export semantics that the backend actually returns (prevents misleading previews/downloads).
  • Organization download guidance: Added explicit UI messaging for organization scope download limitations until organization-wide export endpoints are implemented.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureB+kiXQiNbiYsWVOlB3wiTffKZj021JMzAUzhQRYuwQmpszoGICQ7cCChEeggNXAMuOsRrPkznqB190jArt5Sfp7zKL5I3Z7IjyH6ur4aAqf6Tddq93/6Vb4W4ud9G30AJhkh3X0PBZ98bcOPcrxiaMrOqHryaIkcQ0os1pJnCAZ5v/zmUZGz/rVHxc0VNUGGvJZnx8Odwgd0r9z3McM4r9LL7n9+CrwtDMOVS/fUwAapkdaqM381pkLCa5BHM8VJd+ARz7Tt8rPVuVBwXDR9pkq38eoD9tQ61QVbCqrfsf4/8LgcbNlrHjWVRrAtUirX38JlJgFBKvmzaORvsgylNFggcrZ7sIx4o29kPPkFWZaUee0TKI/uc3WlThNIj/i4+sVTZ2Um23cfon/wr/sHByJIMOsFrw60s6RPm/XjAxeTnJbrm61ms9a0kKTodDR7puH0guqBQJX/CTJUQxcoPmKcfVqqblI2Ll/efOzi/BHYEEuiMGRVfYmuwtlALuFODD8ALFhf8EYmnB2EyCTLJwR+1bSUQF6/a/p4PP9cVSRKDbfYY3rpSU/QXbM3XTn3fET1dqE98FWEqPK6iNKdoMrcsZ4gkKNMNYKpAjMB9kbemHOVPNCIDVTIkYsVQO/edieH4N3EPouwzLWCvQVqWpb8h7SPbTslAhg45WtVByU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.3
Release Details
UpdatedMarch 19, 2026, 2:41 p.m.
Changelog

Fixed

  • ArbZG compliance: Corrected break check logic (9h/45min branch now reachable; check ≥9h before ≥6h)
  • Manager logic: employeeHasManager() now uses getManagerIdsForEmployee() instead of getColleagueIds()
  • Reporting: getTeamHoursSummary() respects period parameter (week/month)
  • Admin users: hasTimeEntriesToday is now per-user, not system-wide
  • UserSettingsMapper: Fixed falsy zero/empty-string handling in getIntegerSetting, getFloatSetting, getStringSetting
  • Routing: Moved exportUsers route above getUser to fix route shadowing
  • Version1009 migration: Replaced MySQL backtick SQL with portable QueryBuilder; use OCP\DB\Types
  • Duplicate notifier: Removed double registration from Application.php boot()
  • API security: Generic error messages instead of raw exception output (SubstituteController, GdprController)
  • PDF export: Returns HTTP 422 with clear message instead of silent CSV fallback
  • LIKE injection: WorkingTimeModelMapper::searchByName() uses escapeLikeParameter()
  • XSS: Modal titles escaped in components.js; compliance-violations.js innerHTML escaped
  • Admin-settings form: Added CSRF requesttoken
  • AbsenceService DI: Fixed constructor argument order (IDBConnection)
  • Admin holidays and settings: English source strings for l10n keys
  • UserDeletedListener: inject TeamMemberMapper and TeamManagerMapper
  • XSS: sanitise team names in admin-teams.js

Changed

  • CSS: Shadow-light variable, scoped resets, dark-mode color-mix fixes, semantic color variables, navigation height/z-index
  • Clock buttons: Double-submit guard (disabled during API calls)
  • initTimeline(): Max retry count (20) to prevent infinite loop
  • Accessibility: aria-label on header buttons, label for admin user search, aria-modal on welcome dialog, English l10n keys in navigation
  • Docs: Removed internal docs; added docs/README; corrected repo URLs
  • Manager dashboard: Injected l10n from PHP so JS translations work
  • Constants.php for magic numbers; user-facing error messages

Added

  • Version1010 migration: Compound indices on at_entries, at_violations, at_holidays, at_absences
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignaturePf3DfgKP/j8T95ElL4ORpuPFeD3UHt901udriCVI1yQdyRJDTp5Z8tHcaFpLRjjmjW8c1nFIEjrFVTjl5UNnPTTWzwf1+Woci/TtIHa7lDkMftxjIIVMf7khRJ6NGriUQD1WVS6Hqdi+FWafgnIqn7dO728K+lB3rFSlgoCoQgQpjjJ/D+N5yynIi44wiD7F8PngozN58wUdWoW02zBX3W+ndpEZXmrY2srqPndhBrlg4cOrE8cWSUFe9wtwSaopkDZPSl85Wsg7nwDOJGV1JaFzDdBxyHATs3kxJnsntXePI1j/O8bcWR69o45JkDY458TsiA0qweFMx5A3Ioh5K0Rrp4UQREthUP83sEzQCIo9ztzB3oeFr1sAs+/dfauAPLsHWNG3NO70fZ82RnsRKuhklTbL8RQ6gc2a3rqrOLSPypyLsv6+UxyoKwm41cggNl4UnhyUhoa33IjBiEoZDXTfB2d+fNZoTXkOYZdDTKcC9bNMc+mo8guNkTxqAYw8Ian0V7vmLs0uBJ9JYyyy5k8AUd+8ijMokWm/2VKPCbDga4mmZevp3KqSpVOqXYBJXmMzJH2Vf+LXZYjRHTScFQ92bXVz7VRRNoz+LEtZy4QYIT9u+YCIvu7ddT5RZmA08HIWU52W/jWQQiKraZE/Nw8Ks4VQBfB6TX+wDCGadBs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.2
Release Details
UpdatedMarch 11, 2026, 11:36 a.m.
Changelog

Changed

  • Long-term refactor: Replaced all \OC::$server usage with proper OCP APIs and constructor injection
  • CSPService: Injected ContentSecurityPolicyNonceManager via constructor
  • Controllers: Removed manual cspNonce (configureCSP handles it); injected IURLGenerator, IConfig where needed
  • PageController: Injected IURLGenerator, IConfig; passes urlGenerator to templates
  • HealthController: Injected IDBConnection for database check
  • ProjectCheckIntegrationService: Injected LoggerInterface instead of OC::$server->getLogger()
  • Templates: Replaced \OC::$server with \OCP\Server::get() (OCP public API)
  • Added GitHub Actions release workflow (.github/workflows/release.yml)
  • Updated PageControllerTest with full constructor mocks
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
SignatureVdOLtKkuJFOvqioRam3iZGmEiSQrA4Xc99thIdm97dMKFlfHskcRIG34rWiqftbbIh+6CgWWxu+YdQOLSV63qOtZ7rH/rl1x5hnhaR4GBDbTtnE/frmfTJYlpHlKVw9KSyniEEAE30lLl5tuYA/4myl+9N6abL+9oJpQo8nAY2oApVgdJQFHPvUPeaJ6q0Qb6GUkOTwZo/UgmT0cIqTL7Ymkvkp3OGE1nRr2hD+T5aFyXu0E3IfS5m+eete4Xdn5TcSYzWVB3oBdMxmRTUtracW4ar/ZstAIwsVxmrLcW4/2AgvUQrrAZ87EBNNoiekUF+nJogWpFeh1n6lN7ZbuUSQJaQtlquovukPbnOgO1AAFe3EMG2DmBtlbyn/jt8/DY5ql8VTDp62eKDJxYTodidjAQYkqMEve7XuTtPgrNwG9c4hFNYS5fIGz07ER4otxErRKC25d89ql/bkSDre0IZPw/gTgdEjx71iD/UZBf9b2tzhMKpNfdtlkT0BV1mNOa376kZzYOk9DcpAaOgobPK00gb3ZeeODGn29N8LEvEAI5SCoa1m7eT4B0KbMQNtgDEUNZrrvRf3Tzpb0mL2QUmf5i3sn10IjQ6KdTDor1xWFEYIF03M240Dw5ml/UUrDgvXI9WZ1BzgyNDe2HAVeNPb9akpPHUWYkoe+uOoaf7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
ArbeitszeitCheck 1.1.1
Release Details
UpdatedMarch 10, 2026, 10:18 p.m.
Changelog

Fixed

  • Resolved duplicate route names in absence API (absence#store, absence#show, absence#update, absence#delete)
  • Corrected settings class names in info.xml to use full OCA namespace
  • Added declare(strict_types=1) to routes.php

Changed

  • Removed non-existent screenshot references from info.xml until real screenshots are captured
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIECzCCAvMCAhMPMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzEwMTIwNDQ1WhcNMzYwNjE1MTIwNDQ1WjAbMRkwFwYD
VQQDDBBhcmJlaXRzemVpdGNoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA36f1UVsSAVpJMWTBc3IuCLVx3o3I+F7k9uVZWcg7swgv9RXZcoEqU1/F
s0SsmAa/27dliUZ68Mse/lObGhzUOBwHHG9dhPOJfIDV/8uKs3KiorcwezBjDHIM
s5PZM7ctDBd8VNid2tbIJ+YFJiyYoI4i7adOCoHCVGi5Imhi7IyyujcVH/gbxE+G
dyq3eebXh5gtrLwJTd9emekdJ4ZzwqccCDllPu+bQrpX9rhX0uZpcK4y4VElHPdd
lFv2VTotgovqTvRFTpyxgfeJI5qvQ6okq6RNRUmPJ7tk6Zy9bzOYP1DEkb2jsIGX
IT5Sc60sz33pso2VFnX37A5j3gULwfgMrA9jMlRgfvFq/gxgGKwv4xTqMcKdROUr
emgDDSAOq9DmChtFskw/0KgndaxgfpxKiC5+H8242gja0j8+pWaYzeOp0qTWWjoE
LJEV++w+krRQDv/LlUoRn8E+mg+svGSlvVDD/DDhqQAGEHrmd5Zm4DqmnJjyaPnc
LA9FJdhor5aD8da8iXMXFxiT8dZsC7CvMS42O3XrEzsbcANp3C4/jdJx7jdZC+lf
c/19I677hewMPomWQGwzFZyrGdQsQykaQYVqJdKOIVpT7HlVrlIZ/FzBPIAR6u+I
g1gY8z+20I8Nl7g9Px/3/RMygomMwzPW6Vl8mUVI1YbsrzoQBP0CAwEAATANBgkq
hkiG9w0BAQsFAAOCAQEAEPOiRKIE7zPVDVMHs8zw/t/fChrAbSSO69EvdiWft+a1
bwtUM2vwORm3rHUwLLtRHGTCAX5DxzQOzscd0RPpI42D7d0CygC0aq912caAcI48
RuCY5/dbXSnfrAPHo4AWwo5dCbLsM6/FE3OjX8wA6J14P3q6me1IdEmWN1wVFeB7
WUhP3rJizFsOOL9L7PYFCYCCj5n/ZF3PXTeMzaz93lFq/M7xo6+KoFfloChYvctz
t8zYxalL4ExEegIGDkw1bk5MCVoL5E3dMaK8CpzcuDgGRe7z17C5GKRB9021g6Kn
VpcU+y0BR1hn8QEQrFxEkxoONJDCuK0nmvZJpb2TMQ==
-----END CERTIFICATE-----
Signaturec6nuFK9N2O61bf1GpNWz2G2FDt1GzTRzd2pXna6x5E/HI/m1e1dt8TheGnhfgYm/TY/o/W539hak3svOJbJmoJr/kmd7xVWRGnZH/PDBjROe5kwRIwWdZlR3z7DiOyTsZo44DBLvVFEaRMAjF4PpVpJxTIA0xV59d3YJHyFZXbMPxSvAbZu43bAjWU6kVGmfaKUOrW5d592aApbxQ+mwJS7LwFMXlxGSzyCTwYL3bMkwormPPS64RTJtrPhvImU09ACMsjwgERAuFGlvbGj8CiuXzAWoO7ISyxcsqiaw1jnA5OIlJ+hnQhUdYHtkIzdwNHxw4ItSBL3pSJjhwIyrs4zZRMkOVjTqDluDfmvbx3Ir9cglVHlMGGTOOJtuyU0PmL0Fo9HZ2R0Noz9w8T3cpetxRG+B+mSWapUblbM+BT6aIvfHMjSzvI0qjwzcczwVzkYJISHReObwYFpeVs5W7cW1gXY2mx42Q/fPqDkrM5wEiuYJ98QG7Y67uhYZce9wmAp0Pygx0UJILj4fNPLuA27hVOp3++x0rOxhEl1A4v0tgiX5pVRYK3qwf1vHFl3zSGgldQs2WUmJ6CoPWbIE6hzmtRUGMzSOnKEK+2eLHej/Edzdo75nVZd6maKXVAY1L+z74IK61HvJ6kQ0QXFO7urWBZJg+IfxzR6W4mrvZnY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<37.0.0
Minimum Integer bits32