Skip to main content

ProjectCheck - Releases

← App details

Nextcloud 35

ProjectCheck 2.0.25
Release Details
UpdatedApril 8, 2026, 2:20 p.m.
Changelog

Changed

  • Documentation: public-facing bilingual README (German / English), aligned with ArbeitszeitCheck-style structure; screenshots and install/support sections for the standalone repository.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXlsnGJgp4l+5BMHh8/hYSnEcadcJg912AJk8xjH+o4nW6+dxkiBaR8BVbsyHqnLIKNWY/8HBZY916jrbT9AZBlXv618r7w5A6NgJAopFxLIyaWB19okxg26K+vaU/1o3iAG8zYbozGL95nMF4DPtSlLxTd5qQZW2/GjuViW0muiiQd0RJM4xWd+3n6SVXYUtpai1MY2gpqVTHi2iYZd8NKH0KKE2SkYUwUyMJI5xX5p3T/1KS7Ta9PLwlmBzoANqafzytue66+7QZPXF/Bi7dOtjiCAgMs+UsIzqTh5ov1vFDm5DJjFOBmyuMT2qV27hWzGb10XNf26YdFyDui68ql3IKGqaCYnavLufi/+u9E080Klym3Dv0q3jnQ9wT17LvHxX17rV0PSBBpaoD5WEtOynCor4flT44aum+POpnVyBQ+rRO3WyZt6jtBaBcIKt/cGPaPbxi/2eK3oogdPe2MYGgtECOJ3+qVP37AXrnaZUxBsFlcvixYiX9wb5OvfL2zClm/bXPtmjDLZl2UG6cLS1csuldJbq9j26sL/y1tnNd683ITxmJpAtwRrBvnKgU1Npj5gqzI8HJzThL0pndonnAFiDCKG210NOfdtGFbihpCwVVxIoriPfi8rdHSJP0MgKP/QeO3Zk8bNQ3PHrmhGdbeYajU+zHwG5bTmoH3Y=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<38.0.0
Minimum Integer bits32

Nextcloud 34

ProjectCheck 2.0.95
Release Details
UpdatedAug. 10, 2026, 8:03 p.m.
Changelog

Fixed

  • Project edit save (Nordhues): full-form updates no longer fail for name, description, dates, status, priority, or category when a legacy project already has a budget with hourly rate 0. Empty capacity is display-only (not submitted); decimals are staged via ProjectFormPayload / FormDecimal before merge so "" never hits MariaDB DECIMAL columns.
  • Budget changes without a rate: still rejected with a clear message when the user changes budget/rate into an invalid project-rate state; the edit form shows an on-page error banner (no silent redirect to the list) and a pricing gate callout.
  • Create parity: createProject stages the same full-form payload (empty decimals → 0) before validation/insert.
  • API update: invalid decimal payloads return HTTP 400 instead of bubbling to a 500.
  • Error reflection (Argus): toSafeProjectErrorMessage no longer allowlists broad /Cannot …/ / /must be …/ patterns that could echo MariaDB/PDO text; known validation strings only; user-facing messages clipped to 280 chars (incl. query error_text on the form).
  • Service-layer authz: updateProject re-checks session + canUserEditProject after terminal-state guards (defense in depth); optimistic concurrency via updated_at predicate (conflict if another writer won).
  • Create + files: file upload failure no longer reports total create failure (orphan + duplicate risk); success with warning / created_files_partial banner.
  • Time entry create ACL: createTimeEntry requires canUserAddTimeEntryForProject (parity with mobile/AZC — closes PROJECT_MEMBER bypass via access-only).
  • Mobile idempotency: orphan cleanup failure returns HTTP 409 (never “success” while a billed duplicate may remain).
  • Companion booking (soft-priced projects): mobile API promotes rate_unresolved as a stable error code on rate preview and create/update so companions can show a clear preview/save failure instead of a generic seat message.
  • Team member null rates: nullable hourly_rate binds with PARAM_NULL (not empty string) on member insert/reactivate.
  • HTML/API create double-submit: pc_form_nonce / Idempotency-Key mapped via FormSubmitIdempotencyService (ILockingProvider exclusive lock + distributed cache replay); create-in-progress surfaces a safe localized error.
  • Activity audit: logProjectCreated / logProjectUpdated on web + API create/update (best-effort; allowlisted field names only).
  • DoS brake (Zeus): web TimeEntryController, CustomerController, and EmployeeController mutating endpoints carry UserRateLimit (parity with project + mobile).
  • DoS brake (Argus): project delete / team mutators (addAllTeamMembers 10/min; delete family 20/min; other team ops 60/min) and ProjectMemberController remove paths carry UserRateLimit; contract tests extended.
  • License mutators (Argus): LicenseController apply/remove/assignSeat/removeSeat carry UserRateLimit (admin DoS brake).
  • Create idempotency (Argus): after a successful insert, cache persist failures no longer clear the nonce mapping (prevents duplicate projects on refresh); mapping write is verified with one retry.
  • Locked pricing UX: when time is already logged, show one clear “Current method” summary instead of three faded disabled radio cards (fixes unreadable contrast and broken radio chrome).
  • Invoicing list cell: compact settlement progress uses a single wrapping line (0% paid · 0% invoiced or paid) + bar instead of two overflowing stat cards.
  • Create validation UX: HTML5 invalid events open the enclosing advanced <details> so closed classification fields cannot trap the user.
  • Safe required-field errors: only allowlisted keys (name, short_description, customer_id) map to localized labels; unknown Field '…' is required strings fall back (no snake_case leak).

Changed

  • Status on the edit form is a first-class save field again (hint updated); overview “Change status” remains available. Locale decimal commas (1,50) are accepted by FormDecimal.
  • Bachus form UX: exactly one primary action — sticky Save project. Removed the second mid-form Save after quick-add (replaced with secondary “Go to Save” helper), demoted team CTA from primary button to a text link, collapsed the 4-step create wizard into one tip line, and unified create/update labels to “Save project”. Quick-add focuses footer Save (Go to Save remains a nearby helper); double-submit / double quick-add guarded client-side.
  • Bachus density pass: create form keeps Basics above the fold; schedule/status, short description, classification, pricing, and budget sit in closed <details> (open on edit). Short description is optional (auto-fills from name client + server). Detailed description, portfolio stats, year-by-year, and time-entry budget impact are opt-in disclosures. Quick-add focuses footer Save project. Project detail section CTAs (files / log time / team) are secondary so header Edit stays the clear primary. Time-entry rate/total is collapsed; form errors sit above Submit. List notices use role="status" / role="alert".
  • Rate limits: store / apiStore (30/min) and update / updatePost / apiUpdate (60/min) carry UserRateLimit.

Tests

  • Unit: FormDecimal locale commas; ProjectFormPayload full-form vs API staging (whitespace / explicit zero); safe error message non-leak; mutating endpoint rate-limit contract; FormSubmitIdempotencyService claim/replay/release; activity create/update audit; create-form pc_form_nonce contract; locked pricing and settlement progress template contracts.
  • Integration: soft pricing name/status save; budget change without rate rejected; omit available_hours still saves; create with empty decimals.
  • Mutation gauntlet extended (partial-API omit; form create idempotency); JS contract for creating/submitting guards; E2E capacity display-only + pricing gate + cost-pricing workflows (open advanced create panels before fill).
  • npm run e2e:auth: actually invokes global setup (previously only loaded the module and exited).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXd9HngBUf1QKHN1vdVW/w5xUi6O9J7Boe0KH8CRzsrv5jZZLkMhL8W1VEPm/yOL+LB8hiSdnwDyc2Cat9UvWSGC6KGyPEdysErMmc6JkRNXVgGBvh/CdJbAXlE2anKJ6W2H2yDYwfc3Ps+/FaOLB+sFub8M+Abd3bSnPNx5tYaZyqOaqH0TljCJCM1MPif/1ydGNAMBYTWCM5IRf+ttJMYcM+BQMPHB4bgqd4v4Uo6QqAucG7t6Uaf1Yf4NOILaWuVI1YQCnAc1112SklRo0th6S/T2Oed/WUWFWHSlD4RBHTMQnBgUE3221UaZNxgbC80QjY63ZYk7lHdyk2dQucsrh/v9nUBuWRUpApuUa0JHIIJDLF9/jNbH9LHxOtcfytnchYHGLumiSbT8ALH5LTyDGBn8JffInOtnvD0rxs/YxO4dXH+yQHD/AOZv3PgPh770w1ptBIqd/ehugtTXHH3cXJblYNsYymToxNLbWOqovjjX+9vAOcr62g1s36c8E8acCnutVWWGXaycrxCtBA/y9A10RsfDYiIvCs9JGp/Y/SIYFwIyv+hn+tUwpgYHeXRwNKXN1W4mi9xl5YDypGg3Gn9jFM8BbaNhEPmrw6uUGKKXoPtnbHs73ZZZeGtkVpNsVvSoWM6sLshTWJRqkkQSzVVjjIdekGhNKMh8au3s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.94
Release Details
UpdatedAug. 7, 2026, 2:56 p.m.
Changelog

Fixed

  • Form focus jump (desktop): selecting dropdowns, date fields, or text inputs no longer yanks the page. The soft-keyboard helper (keep-focused-visible) only scrolls when the on-screen keyboard has shrunk the visual viewport, skips non-IME controls (select/checkbox/date/time), uses scrollIntoView({ block: 'nearest' }) instead of center, and clears leftover IME padding when the keyboard closes.
  • Validation / form messages: first-error and status message scrolls use nearest (with reduced-motion respect) and focus errors with preventScroll so long forms stay calm.
  • Global smooth scroll footgun: html { scroll-behavior } defaults to auto so CSS does not amplify programmatic focus scrolls.

Tests

  • Keep-focused unit + fleet contract + mutation gauntlet (desktop gate, select skip, nearest-only, keyboard-close pad clear).
  • E2E: time-entry create focus must not change window/#app-content scroll; UX journeys + axe smoke remain green.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureS6qdQMU9KqtnYJUGV+MChlLV/49ajG0SNSjnXdxiNi+1SxaZTs8SmFB5Auu6H02LCkLVS7MkTXioGah+ht5jntQRWuZEifIEOMf6p8ZNY9JG6TljocKfSbJQ9xjYgY4UIPf01uFou5VlSX/eU/0QYG7s3PUzXLtDzpVvuz0bajpPkUgMLy/O2a+KkQPttDMSw7akgNVKCOoMFMMq9dpKwrM2ArvREKjgKQ0oRraTIYikCB8u1pxR8fgmLc1scsGJAI6I0Kiwlk2+QlIgdyTg+wjc+KDGcs28MqfbfUEDfS85HpimLboRV877TcHbosfd2VglFSDDbdvYRwKXrasg5IDXHIDMciSDpJdhns3uEjxMg7T8a+uGt3CNhl2W6Ybdiv/jAvKc1SujFeVFkcs9Dx+69BuiAW//Mlr8lYbDmAwEc3+acm9JiSXhP6gVgfkAZQcqTgi4RQX77ZwtBTrs8tuTRPpR2XekbVjXIG/1zNO7TtXbRCm1d0n0ZCHVwhIC6dVzuwqDiRRxpZyGXvYAYQH0UGCl3y18qT1h/SYZEk9xLNDauChnWeoTaUnwKvwjWRfPN4c9hJQDVHpOC/XAt7CeyiyC5HT/euUbXLMrmziFN32z/NLQ9pzV7KG+0Ugjp5Cc7a5ZSGAd6B71VbyYerW/DNUDeX8S43vg8IDmios=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.93
Release Details
UpdatedAug. 6, 2026, 3:57 p.m.
Changelog

Fixed

  • Project customer reassignment: empty available_hours / decimal fields no longer abort the whole project UPDATE (MariaDB empty DECIMAL), so changing the customer on edit persists correctly even with zero budget.
  • Danger / delete actions (WCAG 1.4.3): solid danger buttons and row delete controls use --color-element-error via --pc-danger-fill (not pale --color-error with on-fill text), so trash/delete stays readable in Light, Dark, and High Contrast.
  • Empty progress tracks: list progress cells no longer render a blank 0% bar; they show “No hours logged yet” until consumption is greater than zero.

Changed

  • Project type icons: Lucide chips replace emoji glyphs across projects, dashboard, and related views (theme-safe).
  • Project form quick-add customer: secondary “Add to list” plus a clear next-step Save control so quick-add no longer competes with the primary Create/Update action.

Tests

  • FormDecimal / customer-reassign integration + mutation gauntlet; ProgressCellPresentation unit + mutation; danger-button and type-chip CSS/theme contracts; theme × viewport axe and UX journey E2E coverage expanded.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureeQnniJXA+jAAMbsujPZJPSAATUu+y1c2gSpr2psb0NYH0UIwfbV2tpAJPl35oPLhxc7kUVo8J+3QhqrOU8M4mQJTgbc5oZtDEv27sGQKC6kDjBP0X6S2Ii7al8HXSgdZzN2+kWYyJoLJXQx64kLo4HtKcN9u+1VkMi9AimUj8uOYyCohkUqZe6h85th/7fA69a2cX+Yd8P0nXvMcCW1bQlj/CCJzi7QAv6cW/2Ei/RC9LFAEi7SPop2sSvzjpeRCzUdlgfyoQ/ly9liKCcVju1lY2TPwVknr1qwkUFbpMnAtYxOxO3MuFP6Kk8BMVX0mUa1/qZx0XEXGQ/aIEoamsYM7ew3ir4NCHC5X7C2+XQn1k+DYIrseM+5QDFo0xkf+rofHRYlVzncQtA5pecd00yHKgHQGmg955HvMccRYGduIc5sQsNIYwIINwdFN1EteIkDqyUmQfR4e4iU1BFDHezVE37PuUdXM8WBLwWY1E1oH2MXcCJ19II6wdXlcCBaQKWKaRBkTeG1sl/qghPR93bl4ckxSzxG7lJPxskDHSyVOfekP8Txn2FTsljevoo2Oee0+59ax7J7YOmDnx3CyTcdgc8RpysyGVm14WRFrLAtKDkG4RHvRDMTYehTrKUs6/CACbfJqsqvtPbcJJNpZuivC54LnpPzISLReoEEZq2c=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.92
Release Details
UpdatedAug. 4, 2026, 6:58 p.m.
Changelog

Fixed

  • Project file upload / multi-word routes (GitHub #8): route controller segments now use underscores (project_file, time_entry, project_member) so Nextcloud resolves ProjectFileController / TimeEntryController / ProjectMemberController instead of the non-existent ProjectfileController (Linux PSR-4). All linkToRoute call sites updated; contract + container resolution tests and a mutation gauntlet added. Companion /mobile/v1/* paths stay on mobile# / MobileController (web rename is isolated); server↔companion route parity contract + client URL contract cover the full surface.
  • Project file upload redirect: non-AJAX upload success/error redirects always use linkToRoute('projectcheck.project.show') — client-supplied redirect parameters are ignored (open-redirect hardening now that uploads resolve again).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureOTgQFPtVliPwqzipShgEPe4w+3VQF1M75qMB3K28xJOl8X4CSg2lcntTN0323ANJvY6mlEb4UvVWGVy3z4hZf/ZNLD91//wVEJD7UTjNzMGHOx+1++sTOdGuDn0QlHbjV772/AHxaX6jriSMJyP/NLTW5LE4T2V9QQA2olIk5xyzW2vyv6DWNjbZFKLJs69mVeIFNcYUe5uHMV76k7TukV2nNqgAOAWuoweAI3WEBLP2Z+m94iEBztCzV+kZPkMW3iqzoeUma3CS2yVmnislnf1Zh32rwbpEibw46KbXKjGVkKM5Mh5ch8OfwWOYgGyJjwgYxyUxZLx2aslryDJmlvkKtATWSHY4nopz8SUvYiSFrCPBKk2v6xT5IUDQ2ZEmUpI52ClPrYlK8mFI8jx2m59OHrTlAj/WejZ/txnM2i/W47yiuzjcPyNaofsPZJiq5Cm3bQ8z7dIlH4rlBHSrqKrYvzx2bDsGk8DST11t7xVAKfeDG89qPgFBf6PxtdN6Y1n7bgnz0xWFtdJ4KqoiVN2fJm1pLEI7svSnIa/hGwEl5sABVAF/VVO1Af6HGFCpTcSDSlwJfnaHFrGZ/5j+jZuzWJMourg3UZ/qi4KdEYaNkfTtW0YxP0HgCt0a3i7T5+wedxV81Cb4oiclALhhxz7gDMcnIPNuiXmenMhfkfo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.91
Release Details
UpdatedAug. 3, 2026, 10:11 a.m.
Changelog

Added

  • Inline customer quick-add on the project form: create and select a customer without leaving the page (keeps draft fields); full customer form link for email/address.
  • Grouped app navigation (pc-nav): Overview / Work / Governance sections with short hints, Lucide icons via IconCatalog, and clearer empty-state guidance on list and time-entry pages.

Changed

  • Sidebar shell uses main background (MobilityCheck parity) instead of a dark fill; theme/CSS compliance contracts and UX journey e2e coverage expanded.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturegNvKUl5Qi5h5k7eXGFHKz6U4ceZpV2R4li5whj1ZrvOcdrlVj8WHtvkCpstUEFNktHouYBjMyTaaurDA7zpNgSlURLwZ3ij7VPd4y5obhukRHxpLlx9jRAH2/4V+MYvWmMWmVR2cfmbQSESUYfy9MwJB0oxBqDd3cGpdPDazk1I7xVmEMoGJxspxZy9R3+cAID+m8WsOlzzFlNsqHFhhs9VOUgronR8v+aNFSQqUKj5pqVnlIcuBPwCWd5ZWZWyp4slQgzJjDYLLZ779j0wR6XpHeEqw1vXqm3U7oFhMDgvY6HQtizOTeOX1gosOIu6FhvsIBkINxFNXyn+9SuF/fh5zfKwIsuSg1gKYmvudEkrq5sZ3ORX6wzsxMKiGZexAIowieRhGvHq/rLW317CmPZuggqBHBzNNq5iKxgO+6Sv6FTKAM9qhCW+cSeumBalUXpaX3OvrUriAegWtnTiwDZmvwtAQLRmSXkrLSfPMlfSlvKdfBz5YlZfg4dzROhD/+At64zI127EQCO7/i1nz8Hpol/CHflGvK4uBFoYz+Kf9AhDHlLRiA0pryD5KqnzC23RM/on2dUZNqA80Txj4EpI4EzzOBbaLN8vsui2rankOjDz/Il9udz+MZKrmY7nE7Th89AbzIfZbBxbVwGGOJYMDNznBNQ0edoYH+ViXbgs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.90
Release Details
UpdatedAug. 2, 2026, 12:13 p.m.
Changelog

Added

  • InvoicingCheck unpaid strip on project detail: when InvoicingCheck exposes CrmInvoiceReadFacade::summarizeUnpaidByPcProject, shows remaining €, open invoice count, and overdue count (soft feature-detect; never invents amounts). Clarifies that ProjectCheck “Not yet paid” is open + invoiced hours still unpaid in ProjectCheck.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureAuqaJIEeVTjtnT3nxmhtLADfYAQjZ9Rn4ghG7LJljQFPFjV5WWFECr90GbiPUNQLZXb6VIkaKW6l1KyUvpqx9rFQO8fMlRPCaw+sG2VPetp9+vxY1Y42+R1Bxtr/hDsxHUH7c2UDGvcyjX/aW/17ORGpR+QTDPbeeDyMWfOHQ4GE+AotyhYZYHz0KqNKFLSepFqckEOOlk0DBxti5w5YXRStleyKoN4i9lJm01wt5w7/v+5ZcQu4rbi9bnWln4Nm3LON1UZgtPWbHVqqAI4REkGjHg2Zt9VNabgLogV6EOe4wHdsBcDpu5XRmt3yw8lpQ04jg3u+UObH25qNy2jN6+RnBTcCK1GPiO/32aygrxBBvA9/9WVGOSGpOB82VZF5HDLxphL6P2GVHKYAuxIig7T8IPZlOrEmcX+hhNJMYXiMRj2R8p2uuDbSdNKIDY45KmDHy7FIGf31BrLrp8ssrAVoOEiT0Zs2PxHg4VURn+tRcXOdG7EWRcjs7lqvRlzR2BkYJk6oJ/RP2Nl2WDTzpiSSQ/BWB2RolZlR5Iao4yPD7Xxw1V0ZRajt80zE8oNNuEhvgtx/HfkHLPm5BzIjyPmJCr1y8f8q5PgSU5qNIanfp3HOrEnmt3vVW7Eq06Gi0DcLi7DIsWzHQjx3csg4bLCYA6r7BbURnk2w2+29nZ0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.88
Release Details
UpdatedJuly 31, 2026, 12:22 p.m.
Changelog

Changed

  • Packaging release: bumped version for App Store / GitHub republish; confirmed Nextcloud max-version 34 against latest stable 34.0.2.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXK7qsUG/U9eVJ0/TnvVQppGBLAyUfo/56Dey0poQVeCCdQPHnjKI3nt/odTVYGRkOgBJbWPRelkEr/gkKLVsPmATKiBWGQxafDA6y7cQ9e0MbdoO+kemAcbAAPgXu9kLTkqOf12jHylvtGVrR41FGfxHs57Cu076pIvPdVbQikKT5OVZ3KXByBKjjOtZ1yvuTw/91fTXEaBu4NW8J0oTAqnD3gusPgd8mZf4bBh8sUlwbbS6VpsvcUQ2Sx8rNHVlqWJZfD47K4XxQVyYC6AAfgUR140FVeX1xXIXEkfYwEhBhYbmnQr/Kpc6mNd+LfyOEXWT9cYrfXqrdhThsPM0xCZFHpkrC8Po/Z3OUFukpMngSdtNSLOANQzMzaKr83XRQuXCklcK5VplSxPFXWuFNzF6q+u652qNTiKpmtYPOiit2Qk6eXL5sYQ/W6+oEVeQ69pN7nQKZ5reD2NlgqWc3D0Gs90JZtQgCn/Kjp71WJkgdf3qQ6QT8xkS66JOFyL2SsVUP2noycoOvz1Q4vzJ1ul1AFvO5yXKQ7r/956zy8W5kmQAUKG8oRGI9ALgobpUGNsu+fhjonWsopUQRlSTNfBv1+bmXgY18+yytlwJsRkq3HjwUHaauIhy7D0tBbuuh8nZyYpeDDffEFiDKOVdZ/vB0kCF0xVURUTcjsg3ICI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.87
Release Details
UpdatedJuly 30, 2026, 9:22 p.m.
Changelog

Added

  • Public /health probe for mobile login reachability and ops (no version fingerprint; advertises mobileApi: true). App-access ACL does not block this public endpoint.

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signaturem69rhA8Yj8a4Xu0Xj5Uj/RLXSOzxjeIflt+emX1kwICGgwYFToN20lgLV1EBG3OTMCMVdZiUhB2lYtLJvycKBvKssOYKMzU2Q3b5V2NFFKaG/nueYjwX3a/hzyomrChHLWnGpg9V1AqTbuc8VCf1r/qsDgBIOMK2V2D5lHG5XKzxo2eKcx2FqD4HkJuaY2KsLSSxkhnK3K4okarb6oRIgUMxjD9WKZZ9wfP6tZajSVyZuj+QiYsNSbODb1x6ncR2/spxOq2EGlIxtndwWk1jaK4i3PmjqUFR/m9mJH7RVRsoKCSybr6230V/aT0jFREtYllBQwmNKFB8Po1EPaj/4YdLAAbMFL6faheBzCb7/Yq3pu/sw8wu+rpgb0GUVHWJrW9gWjShXojJYZPatY55BxtNzvDaZRGe0eRAeyOn1wP/8A09EejNN9JyuHeg1brNl8uhQIza7sKhHHc2yvAXH4+h80ztNTMdp9gZMaNAiohGEO+yEXNvEE9UcaR/qmSkq/TmIciSYQ4IcoqXXxrnfnbm+JUEPaMVJLT6KRKQHgr96t5+vF0MRKuBctE1fKpzMDBXL0xYPsJRLlbEoKrQsIF055dOEPx5qgq1Hv5cQLNqBpDYYVzElwzsFvImHhVll2yUWXXOIpLLCOmRt2qfHErtVPv/6VqAMbix1J6iqX0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.86
Release Details
UpdatedJuly 30, 2026, 5:22 p.m.
Changelog

Fixed

  • Schema repair: runtime/post-migration ensurer now creates pc_mob_idem (same path as license tables) so a marked-complete migration without the table cannot brick SchemaGuard / all ProjectCheck HTTP.
  • Mobile settlement list: returns hasMore + limit when the outstanding list is truncated at 200 entries (no silent incomplete AR view).
  • Mobile settlement apply: response no longer invents totalHours/totalAmount zeros after apply (counts only; money stays on preview).
  • Project list settlement filter: stop TypeError on PHP 8.4 when filtering ?settlement=outstanding (named parameters are IParameter objects, not strings).
  • License panel: stop claiming the mobile app is “coming soon” — seats copy matches MOBILE_APP_STATUS = available.
  • Settings page crash: LicenseUiStrings::forPanel() no longer calls $l->t() with %1$s placeholders and zero arguments (PHP 8 / Nextcloud LazyL10N vsprintf fatal).
  • User delete DI: UserDeletedListenerTest mocks MobileIdempotencyMapper so seat + idempotency cleanup stay covered after mobile v1.1.
  • Icon gate: IconCatalog includes every template data-lucide name; Lucide validator uses rg --no-filename so path prefixes cannot false-fail.
  • Audit gates: PHPUnit prefers Docker nextcloud service when the host has no MariaDB socket.
  • A5 analytics: yearly/productivity cost aggregates use SUM(ROUND(hours * rate, 2)); user totals use Money::mul; rollups no longer float-add costs.
  • A6 mobile: resolve-hourly-rate is self-only (parity with web), blocking teammate rate preview leakage.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signaturei6fql1okUsNDOVX0DftPCQc1vGzw3SNuke6+O3O78+gt8YF5WtNv9tZ1AboKtGIWJR6CviiDFkF4ae2enZenLp6KW06Xn3/MIDwfXap5MVb6de2mTjQU8M2GsrY4Qr0EDVgvrYCNe0Un6Vvhom0Llu4GNNL5oTwPeLqy0gR0V46f/eXXmhcuX+C/EiN+Gn6m+URCe1pIj3hSXPNRGfCapWOUIjMtTpPw24Be4pHI6CwucSXjnX0JDKuxLPmjf+6gigdzFvgwLQxwQK3XrPctza+1W/sTjGtfvalj2jRUYetBRfmqz/CqkmoJGnsNmVoanKO4IF+hDsOEW3ySevdBmtALIyyUQebwMWyhqzLF3sBxM4K4Yxmsg8CuIJTBY9dQ7/y5LvIxxr4uoaHnZwZfAXgSPYi7+YjfmGYJyoF10nwPNzgUWXs4ldlJhL1rXa/keYqZ7U4pgjkbFONMKBh2HJWCld7yJn+NbyokC4WQ0ZB5VLR35aXAIc0YgMgcY4KR+UxSq6ZMnuGdUi5BsoscEHCbDJNTsdCYAXULW1XajRwv84+UX/ZiLAp/Dza/Z6Ye687JqL/NJnlH7sZqyIJpUVVcihS5ZVMo8R3jWZaGxedeg2tbIdhafLmhRfKvTSce5LhoTnyZXKnuVMVF4EHaIVv12HORSFpVU+XhJIFFnsw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.77
Release Details
UpdatedJuly 17, 2026, 4:38 p.m.
Changelog

Added

  • Shared list filter toolbar: projects, customers, employees, and time entries use one equal-width filter grid (search beside the selects) with consistent select chrome, visible labels, and theme-safe focus styles (WCAG 2.1 AA).
  • Theme-safe productivity / project-type year panels: reusable partials and CSS tokens so analysis blocks stay readable in light, dark, and high-contrast themes.

Changed

  • Settlement summary strip: borderless single-line metrics row under the time-entry filters; bulk settlement bar matches the same chrome.
  • Icons: Lucide / currentColor masks replace fragile Nextcloud icon-* + white-stroke tiles so budget alerts and list chrome render correctly across themes.
  • Nextcloud compatibility: max-version kept aligned with current stable server major 34.

Fixed

  • Settlement bucket math: outstanding (not yet paid) is computed with decimal-safe Money addition in the billing service; mapper/recompute accumulate when legacy status labels normalize to the same bucket so totals cannot be silently overwritten.
  • Broken CSS selectors from earlier icon migration (orphan braces / truncated rules in list and dashboard stylesheets).

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureVds/ab5zlTOdi2KLkWWkagkBgvkZ+7Sb+dcaGlIpCUdKdgb4voclMfcrzPVbmXKJseB+w7nyPGYnE8gXhMsLbM48+yq+8vDnq/dQ93cQWFG65FJDZuY/uoE9QgSJ98/bC4fE8BEDv7dTd6RVdihgmfPmF5dv8kN7WMG46QFF3T/y4h2QjYKvHQpNwomL/cdY4+hfWcXy83j5Z89tEdceNLgC15EozgZNHHQbovVdU0ki2UK6oFpIsMWpBRRkcVxWZ5GoC6M8Oj/kjTGkPbir7Qmy0Y94zhrQaDAXEfm0rG4f+8vhI2Dks3F3HqPfhEiKRSQBLomrRQ+IR82RVGH6SfRyA8ehudNDFKhY97NfNGNSTbekxOkp8InD+hCnfTaCWNc8WlYD7xpbXpPanpRF2zuqtM8C6+ZpgTQughcgyHR45pfUNTZiIDILyeLIac7/uh50mHSm23Fy00g+WzXw8m6o8zuWGVReCT7nM25VrnWpdRcTrEuWIeKawf9iIELHLmE+WffCNcxeov5NsdoJYZykBPPoWaL+vjKfE9Fg0+l6Ll0pHDfVMhXLKkFcvevIWgllmlbptQ0IsMyX+anLDEw2lDtzLP78JE5MxE8LDA2s4x7KjGOnBMjvM3PRoUqInql0+CBCj1oKhNftwXV7GnqAcJtVP9vCaQsavSKn4Do=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.73
Release Details
UpdatedJuly 16, 2026, 10:59 a.m.
Changelog

Fixed

  • Project budget edits: saving a project no longer fails with a generic error when the input is rejected server-side. Users now see the actual, localized reason (for example: hourly rate required when the project has a budget and uses one rate for the whole project, or budget too low for the hourly rate).
  • Same-day project dates: projects with the same start and end date are accepted again; the server now matches the form's "end date must be on or after the start date" rule instead of rejecting equal dates.
  • Project form: the edit form flags a missing/zero project hourly rate before submitting when the project has a budget and uses the one-rate-for-the-whole-project pricing method (a pre-filled rate of 0.00 previously slipped past the browser's required check).
  • l10n: completed missing translations for the time-entry deletion hint and the start-date validation message in fr/es/da/nl/it/pl/sv/nb.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureQYabxyQr8Kb1t2VRdUHTR6Mo3eIdMMkDBB5Eif70Z/88JvhjX1RWkJCkBo9DnYMHGqgJDmRaNuLuHf5ahOS/Chgj0JgFO5JsXIHbz72mwBy8YzjGl9/JO1vzAR73ZJHtdDDTMM9tqKkVJzb9RC+1vMc0gq2nUYUogBjnCBp9fYvwGg/U+i24G0I8WVM+2/3m+xIS9NnLXqKuAijADZox/WcmkffmiJP+vRHDG4wR4GZMeWt2s3G4ovBeBZEl47tzsb03Bkj607VZxPXg7xfU49Suat0KZQMhebZnWQrBDybHg36vq2fSU6eDppkODzUtEgS61EQp3YgvXI4J8ZQX7MvOYabe1Ni99xbrbJ/lqRJnCrewY6oTmc5FBMxfcaOCy89Xv1SC1H+N95xzxG57KFmO/pOgR2u0sksJInTRtbNtQ8/DHu1JCXEi3pACga7tOvngNF6n44BAJg6rN6hlGnKxuQRYpMGb6ZYTmGy+N3Ud+/a+TM5Kprepoq071YV01OYjguU5NUMsUIPNERdwh4WUuZlitJ8Mgf60B07f7wSWSJNYqLh/+c+DBO3DRxJbwiRWsgEkWzI4RdAn1E/LLsQKrY460eo0SdvByCGu+qspuvPuBccPKTtEjFsq1oeibp0/jFwBXxhrcK1LO21Je9+167n50xsWVXlPZXYsgK4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.72
Release Details
UpdatedJuly 15, 2026, 10:26 a.m.
Changelog

Added

  • Shared list panels: new list-table.css and stats-panel.css unify filters, data tables, footers, and summary panels across time entries, projects, customers, and employees.
  • Time entry delete from edit/detail: delete URL wired on the time entry form and detail pages with the shared deletion modal.

Fixed

  • Time entry ownership checks: TimeEntry::isOwnedBy() uses a timing-safe compare for access control on show, edit, update, and delete.
  • Stylesheet loading: shell, layout, and mobile-nav CSS load as linked stylesheets (via EnrichTemplateNavigationContext) instead of @import in app.css, so theme tokens apply reliably.

Changed

  • Page header: inline breadcrumbs, meta strips, and action button styling aligned across list and detail pages.
  • Time entries UI: refactored list JavaScript (shared hour formatting, export guard, row action icons, deletion modal integration).
  • Time entry form: refreshed layout and styling consistent with the shared panel system.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureA8N3GN0KQ003e1NwlrVnB6Nd+yy2q7KtwFBl7T+QdBCHFIqwnmCcDhUvGIS22lp3OyWeBVanJ6qXbjMrq/cLdjeB+yEEybNSWlwYrU9b1chDMlGoq37gL9y52x7jWF13+w99GEwX097lgPoOORgHt0unR65Wohlx2yiGansj043keY672t3wSalLp/QaynywwzmnGUUfKHMeCzp6OST1K61BTm4dHMTiT1epvEZleYmOQjP+RU0NiwvCpcRWdy3J8oyb5HTgF6zCn6VNG05HwT593jrKiLupIOBovsP8wJvx+1BYukbbk0U7V32t9a8EYsB0VZ47KcWYUTX6/jlsiBHKzvL0Neyr7bHYROq76Libe0KXxVZqOQcre6RjXSI1U2f102Zz3VJRcvanfxgiQV9jb0pJowG+10ZwJApug/3C3pn7/V1e0l9g3WRh5GHddPMmZ4MicxW35dDzjEod3fES7ofQP1u0Q8voBKyhqFcMGvln6e5NR4ZX16GCm9UYnneKj6jo55aFhQzJO2RsE16KF8OouXnBYgJx47+b06tyoSmEbC6PDVC+vF3QouvTwmD/15T0WLOZjFOojFeQsJWcyPooSUMrvOhQH8eDMrOKbqOKNhGXes7SHeTr4QuQB5NwM06W4iiEHexRobPa8EI8IZS9OSWlAKeeM4jIOtM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.71
Release Details
UpdatedJuly 11, 2026, 7:42 p.m.
Changelog

Added

  • Upgrade backup: Pre-migration repair step snapshots ProjectCheck data before schema migrations run; occ projectcheck:upgrade-backup for manual backups and restore workflows.

Fixed

  • Disable vs uninstall: UninstallRepairFlow preserves tables when the app is disabled (including auto-disable during server upgrade); data is dropped only on explicit app removal.
  • Project list filters: Qualified SQL column names fix filtered project queries on some database backends.
  • Admin settings: ProjectCheck settings moved to the Additional settings section (fixes broken sidebar icons in Nextcloud 34).
  • Upgrade safety: Repair-step classes registered in Application.php to prevent ArgumentCountError during occ upgrade.

Changed

  • UI: Shared page header section and refreshed list view l10n.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signatureeng1zY6yCI6rY/twlw2TCyok+4CH2jvBuCqKKO0Tsnrx7Ygip97oRdGMprlv2AyvbKbJpQuf6Vna18jdFqlp6OjvJR614ii+pnHSHYlOA7QLgAoACSHiFeg7GebXw2orm7I/JS3iIrwZizy9mkTUcThQK3nfHJRTUMrtyNpzZ3rZbO5ZsEyy3CNfOXYMJjAj7cXu105L03+lhl/nhDiDDJew+xOLzFvIfnQEUZCZfRiC6G1kd6qvzxM/cs6oSA8HdnTeJcD7SyMGwwjj2iTOP8yp7jp3fyJgxDaNxvyq3bNFsbciLz/q5wy0qrNdh9dZ1GgPrr7v1O+clc5j6hHIv/sm6K73nC2YnKq0ZTZVHNSi/hfJf84Cg9X1vBx/wgkmgOBefcgBJCwFogyHQXdoiIyqN2IKHTR3uvgKP+jMN1Alq/MQOuIrNqDkwSjoCV/KMUlDXMUzESFIVBvX9/31Rhsx48pmXFGBMvuJ6PAk0xzs6OHZ7oHEnW1ntgpt4ggWdARJyPIz7QbcYJ+a5A4f5UZxKxZarcG7L7+TaH0IrOya4uMhKwjKQujzH+hupQJVHbcW9a1Fzc89HoANVkrqzd2i5+go8YRT4jp145r8FEdV0CHnktmz7AKEowynoVdTh/7nfd2pN3apmZd89a9Y03aXyLdibD0HLPhUIySzJKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.25
Release Details
UpdatedApril 8, 2026, 2:20 p.m.
Changelog

Changed

  • Documentation: public-facing bilingual README (German / English), aligned with ArbeitszeitCheck-style structure; screenshots and install/support sections for the standalone repository.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXlsnGJgp4l+5BMHh8/hYSnEcadcJg912AJk8xjH+o4nW6+dxkiBaR8BVbsyHqnLIKNWY/8HBZY916jrbT9AZBlXv618r7w5A6NgJAopFxLIyaWB19okxg26K+vaU/1o3iAG8zYbozGL95nMF4DPtSlLxTd5qQZW2/GjuViW0muiiQd0RJM4xWd+3n6SVXYUtpai1MY2gpqVTHi2iYZd8NKH0KKE2SkYUwUyMJI5xX5p3T/1KS7Ta9PLwlmBzoANqafzytue66+7QZPXF/Bi7dOtjiCAgMs+UsIzqTh5ov1vFDm5DJjFOBmyuMT2qV27hWzGb10XNf26YdFyDui68ql3IKGqaCYnavLufi/+u9E080Klym3Dv0q3jnQ9wT17LvHxX17rV0PSBBpaoD5WEtOynCor4flT44aum+POpnVyBQ+rRO3WyZt6jtBaBcIKt/cGPaPbxi/2eK3oogdPe2MYGgtECOJ3+qVP37AXrnaZUxBsFlcvixYiX9wb5OvfL2zClm/bXPtmjDLZl2UG6cLS1csuldJbq9j26sL/y1tnNd683ITxmJpAtwRrBvnKgU1Npj5gqzI8HJzThL0pndonnAFiDCKG210NOfdtGFbihpCwVVxIoriPfi8rdHSJP0MgKP/QeO3Zk8bNQ3PHrmhGdbeYajU+zHwG5bTmoH3Y=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<38.0.0
Minimum Integer bits32

Nextcloud 33

ProjectCheck 2.0.95
Release Details
UpdatedAug. 10, 2026, 8:03 p.m.
Changelog

Fixed

  • Project edit save (Nordhues): full-form updates no longer fail for name, description, dates, status, priority, or category when a legacy project already has a budget with hourly rate 0. Empty capacity is display-only (not submitted); decimals are staged via ProjectFormPayload / FormDecimal before merge so "" never hits MariaDB DECIMAL columns.
  • Budget changes without a rate: still rejected with a clear message when the user changes budget/rate into an invalid project-rate state; the edit form shows an on-page error banner (no silent redirect to the list) and a pricing gate callout.
  • Create parity: createProject stages the same full-form payload (empty decimals → 0) before validation/insert.
  • API update: invalid decimal payloads return HTTP 400 instead of bubbling to a 500.
  • Error reflection (Argus): toSafeProjectErrorMessage no longer allowlists broad /Cannot …/ / /must be …/ patterns that could echo MariaDB/PDO text; known validation strings only; user-facing messages clipped to 280 chars (incl. query error_text on the form).
  • Service-layer authz: updateProject re-checks session + canUserEditProject after terminal-state guards (defense in depth); optimistic concurrency via updated_at predicate (conflict if another writer won).
  • Create + files: file upload failure no longer reports total create failure (orphan + duplicate risk); success with warning / created_files_partial banner.
  • Time entry create ACL: createTimeEntry requires canUserAddTimeEntryForProject (parity with mobile/AZC — closes PROJECT_MEMBER bypass via access-only).
  • Mobile idempotency: orphan cleanup failure returns HTTP 409 (never “success” while a billed duplicate may remain).
  • Companion booking (soft-priced projects): mobile API promotes rate_unresolved as a stable error code on rate preview and create/update so companions can show a clear preview/save failure instead of a generic seat message.
  • Team member null rates: nullable hourly_rate binds with PARAM_NULL (not empty string) on member insert/reactivate.
  • HTML/API create double-submit: pc_form_nonce / Idempotency-Key mapped via FormSubmitIdempotencyService (ILockingProvider exclusive lock + distributed cache replay); create-in-progress surfaces a safe localized error.
  • Activity audit: logProjectCreated / logProjectUpdated on web + API create/update (best-effort; allowlisted field names only).
  • DoS brake (Zeus): web TimeEntryController, CustomerController, and EmployeeController mutating endpoints carry UserRateLimit (parity with project + mobile).
  • DoS brake (Argus): project delete / team mutators (addAllTeamMembers 10/min; delete family 20/min; other team ops 60/min) and ProjectMemberController remove paths carry UserRateLimit; contract tests extended.
  • License mutators (Argus): LicenseController apply/remove/assignSeat/removeSeat carry UserRateLimit (admin DoS brake).
  • Create idempotency (Argus): after a successful insert, cache persist failures no longer clear the nonce mapping (prevents duplicate projects on refresh); mapping write is verified with one retry.
  • Locked pricing UX: when time is already logged, show one clear “Current method” summary instead of three faded disabled radio cards (fixes unreadable contrast and broken radio chrome).
  • Invoicing list cell: compact settlement progress uses a single wrapping line (0% paid · 0% invoiced or paid) + bar instead of two overflowing stat cards.
  • Create validation UX: HTML5 invalid events open the enclosing advanced <details> so closed classification fields cannot trap the user.
  • Safe required-field errors: only allowlisted keys (name, short_description, customer_id) map to localized labels; unknown Field '…' is required strings fall back (no snake_case leak).

Changed

  • Status on the edit form is a first-class save field again (hint updated); overview “Change status” remains available. Locale decimal commas (1,50) are accepted by FormDecimal.
  • Bachus form UX: exactly one primary action — sticky Save project. Removed the second mid-form Save after quick-add (replaced with secondary “Go to Save” helper), demoted team CTA from primary button to a text link, collapsed the 4-step create wizard into one tip line, and unified create/update labels to “Save project”. Quick-add focuses footer Save (Go to Save remains a nearby helper); double-submit / double quick-add guarded client-side.
  • Bachus density pass: create form keeps Basics above the fold; schedule/status, short description, classification, pricing, and budget sit in closed <details> (open on edit). Short description is optional (auto-fills from name client + server). Detailed description, portfolio stats, year-by-year, and time-entry budget impact are opt-in disclosures. Quick-add focuses footer Save project. Project detail section CTAs (files / log time / team) are secondary so header Edit stays the clear primary. Time-entry rate/total is collapsed; form errors sit above Submit. List notices use role="status" / role="alert".
  • Rate limits: store / apiStore (30/min) and update / updatePost / apiUpdate (60/min) carry UserRateLimit.

Tests

  • Unit: FormDecimal locale commas; ProjectFormPayload full-form vs API staging (whitespace / explicit zero); safe error message non-leak; mutating endpoint rate-limit contract; FormSubmitIdempotencyService claim/replay/release; activity create/update audit; create-form pc_form_nonce contract; locked pricing and settlement progress template contracts.
  • Integration: soft pricing name/status save; budget change without rate rejected; omit available_hours still saves; create with empty decimals.
  • Mutation gauntlet extended (partial-API omit; form create idempotency); JS contract for creating/submitting guards; E2E capacity display-only + pricing gate + cost-pricing workflows (open advanced create panels before fill).
  • npm run e2e:auth: actually invokes global setup (previously only loaded the module and exited).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXd9HngBUf1QKHN1vdVW/w5xUi6O9J7Boe0KH8CRzsrv5jZZLkMhL8W1VEPm/yOL+LB8hiSdnwDyc2Cat9UvWSGC6KGyPEdysErMmc6JkRNXVgGBvh/CdJbAXlE2anKJ6W2H2yDYwfc3Ps+/FaOLB+sFub8M+Abd3bSnPNx5tYaZyqOaqH0TljCJCM1MPif/1ydGNAMBYTWCM5IRf+ttJMYcM+BQMPHB4bgqd4v4Uo6QqAucG7t6Uaf1Yf4NOILaWuVI1YQCnAc1112SklRo0th6S/T2Oed/WUWFWHSlD4RBHTMQnBgUE3221UaZNxgbC80QjY63ZYk7lHdyk2dQucsrh/v9nUBuWRUpApuUa0JHIIJDLF9/jNbH9LHxOtcfytnchYHGLumiSbT8ALH5LTyDGBn8JffInOtnvD0rxs/YxO4dXH+yQHD/AOZv3PgPh770w1ptBIqd/ehugtTXHH3cXJblYNsYymToxNLbWOqovjjX+9vAOcr62g1s36c8E8acCnutVWWGXaycrxCtBA/y9A10RsfDYiIvCs9JGp/Y/SIYFwIyv+hn+tUwpgYHeXRwNKXN1W4mi9xl5YDypGg3Gn9jFM8BbaNhEPmrw6uUGKKXoPtnbHs73ZZZeGtkVpNsVvSoWM6sLshTWJRqkkQSzVVjjIdekGhNKMh8au3s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.94
Release Details
UpdatedAug. 7, 2026, 2:56 p.m.
Changelog

Fixed

  • Form focus jump (desktop): selecting dropdowns, date fields, or text inputs no longer yanks the page. The soft-keyboard helper (keep-focused-visible) only scrolls when the on-screen keyboard has shrunk the visual viewport, skips non-IME controls (select/checkbox/date/time), uses scrollIntoView({ block: 'nearest' }) instead of center, and clears leftover IME padding when the keyboard closes.
  • Validation / form messages: first-error and status message scrolls use nearest (with reduced-motion respect) and focus errors with preventScroll so long forms stay calm.
  • Global smooth scroll footgun: html { scroll-behavior } defaults to auto so CSS does not amplify programmatic focus scrolls.

Tests

  • Keep-focused unit + fleet contract + mutation gauntlet (desktop gate, select skip, nearest-only, keyboard-close pad clear).
  • E2E: time-entry create focus must not change window/#app-content scroll; UX journeys + axe smoke remain green.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureS6qdQMU9KqtnYJUGV+MChlLV/49ajG0SNSjnXdxiNi+1SxaZTs8SmFB5Auu6H02LCkLVS7MkTXioGah+ht5jntQRWuZEifIEOMf6p8ZNY9JG6TljocKfSbJQ9xjYgY4UIPf01uFou5VlSX/eU/0QYG7s3PUzXLtDzpVvuz0bajpPkUgMLy/O2a+KkQPttDMSw7akgNVKCOoMFMMq9dpKwrM2ArvREKjgKQ0oRraTIYikCB8u1pxR8fgmLc1scsGJAI6I0Kiwlk2+QlIgdyTg+wjc+KDGcs28MqfbfUEDfS85HpimLboRV877TcHbosfd2VglFSDDbdvYRwKXrasg5IDXHIDMciSDpJdhns3uEjxMg7T8a+uGt3CNhl2W6Ybdiv/jAvKc1SujFeVFkcs9Dx+69BuiAW//Mlr8lYbDmAwEc3+acm9JiSXhP6gVgfkAZQcqTgi4RQX77ZwtBTrs8tuTRPpR2XekbVjXIG/1zNO7TtXbRCm1d0n0ZCHVwhIC6dVzuwqDiRRxpZyGXvYAYQH0UGCl3y18qT1h/SYZEk9xLNDauChnWeoTaUnwKvwjWRfPN4c9hJQDVHpOC/XAt7CeyiyC5HT/euUbXLMrmziFN32z/NLQ9pzV7KG+0Ugjp5Cc7a5ZSGAd6B71VbyYerW/DNUDeX8S43vg8IDmios=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.93
Release Details
UpdatedAug. 6, 2026, 3:57 p.m.
Changelog

Fixed

  • Project customer reassignment: empty available_hours / decimal fields no longer abort the whole project UPDATE (MariaDB empty DECIMAL), so changing the customer on edit persists correctly even with zero budget.
  • Danger / delete actions (WCAG 1.4.3): solid danger buttons and row delete controls use --color-element-error via --pc-danger-fill (not pale --color-error with on-fill text), so trash/delete stays readable in Light, Dark, and High Contrast.
  • Empty progress tracks: list progress cells no longer render a blank 0% bar; they show “No hours logged yet” until consumption is greater than zero.

Changed

  • Project type icons: Lucide chips replace emoji glyphs across projects, dashboard, and related views (theme-safe).
  • Project form quick-add customer: secondary “Add to list” plus a clear next-step Save control so quick-add no longer competes with the primary Create/Update action.

Tests

  • FormDecimal / customer-reassign integration + mutation gauntlet; ProgressCellPresentation unit + mutation; danger-button and type-chip CSS/theme contracts; theme × viewport axe and UX journey E2E coverage expanded.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureeQnniJXA+jAAMbsujPZJPSAATUu+y1c2gSpr2psb0NYH0UIwfbV2tpAJPl35oPLhxc7kUVo8J+3QhqrOU8M4mQJTgbc5oZtDEv27sGQKC6kDjBP0X6S2Ii7al8HXSgdZzN2+kWYyJoLJXQx64kLo4HtKcN9u+1VkMi9AimUj8uOYyCohkUqZe6h85th/7fA69a2cX+Yd8P0nXvMcCW1bQlj/CCJzi7QAv6cW/2Ei/RC9LFAEi7SPop2sSvzjpeRCzUdlgfyoQ/ly9liKCcVju1lY2TPwVknr1qwkUFbpMnAtYxOxO3MuFP6Kk8BMVX0mUa1/qZx0XEXGQ/aIEoamsYM7ew3ir4NCHC5X7C2+XQn1k+DYIrseM+5QDFo0xkf+rofHRYlVzncQtA5pecd00yHKgHQGmg955HvMccRYGduIc5sQsNIYwIINwdFN1EteIkDqyUmQfR4e4iU1BFDHezVE37PuUdXM8WBLwWY1E1oH2MXcCJ19II6wdXlcCBaQKWKaRBkTeG1sl/qghPR93bl4ckxSzxG7lJPxskDHSyVOfekP8Txn2FTsljevoo2Oee0+59ax7J7YOmDnx3CyTcdgc8RpysyGVm14WRFrLAtKDkG4RHvRDMTYehTrKUs6/CACbfJqsqvtPbcJJNpZuivC54LnpPzISLReoEEZq2c=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.92
Release Details
UpdatedAug. 4, 2026, 6:58 p.m.
Changelog

Fixed

  • Project file upload / multi-word routes (GitHub #8): route controller segments now use underscores (project_file, time_entry, project_member) so Nextcloud resolves ProjectFileController / TimeEntryController / ProjectMemberController instead of the non-existent ProjectfileController (Linux PSR-4). All linkToRoute call sites updated; contract + container resolution tests and a mutation gauntlet added. Companion /mobile/v1/* paths stay on mobile# / MobileController (web rename is isolated); server↔companion route parity contract + client URL contract cover the full surface.
  • Project file upload redirect: non-AJAX upload success/error redirects always use linkToRoute('projectcheck.project.show') — client-supplied redirect parameters are ignored (open-redirect hardening now that uploads resolve again).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureOTgQFPtVliPwqzipShgEPe4w+3VQF1M75qMB3K28xJOl8X4CSg2lcntTN0323ANJvY6mlEb4UvVWGVy3z4hZf/ZNLD91//wVEJD7UTjNzMGHOx+1++sTOdGuDn0QlHbjV772/AHxaX6jriSMJyP/NLTW5LE4T2V9QQA2olIk5xyzW2vyv6DWNjbZFKLJs69mVeIFNcYUe5uHMV76k7TukV2nNqgAOAWuoweAI3WEBLP2Z+m94iEBztCzV+kZPkMW3iqzoeUma3CS2yVmnislnf1Zh32rwbpEibw46KbXKjGVkKM5Mh5ch8OfwWOYgGyJjwgYxyUxZLx2aslryDJmlvkKtATWSHY4nopz8SUvYiSFrCPBKk2v6xT5IUDQ2ZEmUpI52ClPrYlK8mFI8jx2m59OHrTlAj/WejZ/txnM2i/W47yiuzjcPyNaofsPZJiq5Cm3bQ8z7dIlH4rlBHSrqKrYvzx2bDsGk8DST11t7xVAKfeDG89qPgFBf6PxtdN6Y1n7bgnz0xWFtdJ4KqoiVN2fJm1pLEI7svSnIa/hGwEl5sABVAF/VVO1Af6HGFCpTcSDSlwJfnaHFrGZ/5j+jZuzWJMourg3UZ/qi4KdEYaNkfTtW0YxP0HgCt0a3i7T5+wedxV81Cb4oiclALhhxz7gDMcnIPNuiXmenMhfkfo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.91
Release Details
UpdatedAug. 3, 2026, 10:11 a.m.
Changelog

Added

  • Inline customer quick-add on the project form: create and select a customer without leaving the page (keeps draft fields); full customer form link for email/address.
  • Grouped app navigation (pc-nav): Overview / Work / Governance sections with short hints, Lucide icons via IconCatalog, and clearer empty-state guidance on list and time-entry pages.

Changed

  • Sidebar shell uses main background (MobilityCheck parity) instead of a dark fill; theme/CSS compliance contracts and UX journey e2e coverage expanded.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturegNvKUl5Qi5h5k7eXGFHKz6U4ceZpV2R4li5whj1ZrvOcdrlVj8WHtvkCpstUEFNktHouYBjMyTaaurDA7zpNgSlURLwZ3ij7VPd4y5obhukRHxpLlx9jRAH2/4V+MYvWmMWmVR2cfmbQSESUYfy9MwJB0oxBqDd3cGpdPDazk1I7xVmEMoGJxspxZy9R3+cAID+m8WsOlzzFlNsqHFhhs9VOUgronR8v+aNFSQqUKj5pqVnlIcuBPwCWd5ZWZWyp4slQgzJjDYLLZ779j0wR6XpHeEqw1vXqm3U7oFhMDgvY6HQtizOTeOX1gosOIu6FhvsIBkINxFNXyn+9SuF/fh5zfKwIsuSg1gKYmvudEkrq5sZ3ORX6wzsxMKiGZexAIowieRhGvHq/rLW317CmPZuggqBHBzNNq5iKxgO+6Sv6FTKAM9qhCW+cSeumBalUXpaX3OvrUriAegWtnTiwDZmvwtAQLRmSXkrLSfPMlfSlvKdfBz5YlZfg4dzROhD/+At64zI127EQCO7/i1nz8Hpol/CHflGvK4uBFoYz+Kf9AhDHlLRiA0pryD5KqnzC23RM/on2dUZNqA80Txj4EpI4EzzOBbaLN8vsui2rankOjDz/Il9udz+MZKrmY7nE7Th89AbzIfZbBxbVwGGOJYMDNznBNQ0edoYH+ViXbgs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.90
Release Details
UpdatedAug. 2, 2026, 12:13 p.m.
Changelog

Added

  • InvoicingCheck unpaid strip on project detail: when InvoicingCheck exposes CrmInvoiceReadFacade::summarizeUnpaidByPcProject, shows remaining €, open invoice count, and overdue count (soft feature-detect; never invents amounts). Clarifies that ProjectCheck “Not yet paid” is open + invoiced hours still unpaid in ProjectCheck.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureAuqaJIEeVTjtnT3nxmhtLADfYAQjZ9Rn4ghG7LJljQFPFjV5WWFECr90GbiPUNQLZXb6VIkaKW6l1KyUvpqx9rFQO8fMlRPCaw+sG2VPetp9+vxY1Y42+R1Bxtr/hDsxHUH7c2UDGvcyjX/aW/17ORGpR+QTDPbeeDyMWfOHQ4GE+AotyhYZYHz0KqNKFLSepFqckEOOlk0DBxti5w5YXRStleyKoN4i9lJm01wt5w7/v+5ZcQu4rbi9bnWln4Nm3LON1UZgtPWbHVqqAI4REkGjHg2Zt9VNabgLogV6EOe4wHdsBcDpu5XRmt3yw8lpQ04jg3u+UObH25qNy2jN6+RnBTcCK1GPiO/32aygrxBBvA9/9WVGOSGpOB82VZF5HDLxphL6P2GVHKYAuxIig7T8IPZlOrEmcX+hhNJMYXiMRj2R8p2uuDbSdNKIDY45KmDHy7FIGf31BrLrp8ssrAVoOEiT0Zs2PxHg4VURn+tRcXOdG7EWRcjs7lqvRlzR2BkYJk6oJ/RP2Nl2WDTzpiSSQ/BWB2RolZlR5Iao4yPD7Xxw1V0ZRajt80zE8oNNuEhvgtx/HfkHLPm5BzIjyPmJCr1y8f8q5PgSU5qNIanfp3HOrEnmt3vVW7Eq06Gi0DcLi7DIsWzHQjx3csg4bLCYA6r7BbURnk2w2+29nZ0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.88
Release Details
UpdatedJuly 31, 2026, 12:22 p.m.
Changelog

Changed

  • Packaging release: bumped version for App Store / GitHub republish; confirmed Nextcloud max-version 34 against latest stable 34.0.2.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXK7qsUG/U9eVJ0/TnvVQppGBLAyUfo/56Dey0poQVeCCdQPHnjKI3nt/odTVYGRkOgBJbWPRelkEr/gkKLVsPmATKiBWGQxafDA6y7cQ9e0MbdoO+kemAcbAAPgXu9kLTkqOf12jHylvtGVrR41FGfxHs57Cu076pIvPdVbQikKT5OVZ3KXByBKjjOtZ1yvuTw/91fTXEaBu4NW8J0oTAqnD3gusPgd8mZf4bBh8sUlwbbS6VpsvcUQ2Sx8rNHVlqWJZfD47K4XxQVyYC6AAfgUR140FVeX1xXIXEkfYwEhBhYbmnQr/Kpc6mNd+LfyOEXWT9cYrfXqrdhThsPM0xCZFHpkrC8Po/Z3OUFukpMngSdtNSLOANQzMzaKr83XRQuXCklcK5VplSxPFXWuFNzF6q+u652qNTiKpmtYPOiit2Qk6eXL5sYQ/W6+oEVeQ69pN7nQKZ5reD2NlgqWc3D0Gs90JZtQgCn/Kjp71WJkgdf3qQ6QT8xkS66JOFyL2SsVUP2noycoOvz1Q4vzJ1ul1AFvO5yXKQ7r/956zy8W5kmQAUKG8oRGI9ALgobpUGNsu+fhjonWsopUQRlSTNfBv1+bmXgY18+yytlwJsRkq3HjwUHaauIhy7D0tBbuuh8nZyYpeDDffEFiDKOVdZ/vB0kCF0xVURUTcjsg3ICI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.87
Release Details
UpdatedJuly 30, 2026, 9:22 p.m.
Changelog

Added

  • Public /health probe for mobile login reachability and ops (no version fingerprint; advertises mobileApi: true). App-access ACL does not block this public endpoint.

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signaturem69rhA8Yj8a4Xu0Xj5Uj/RLXSOzxjeIflt+emX1kwICGgwYFToN20lgLV1EBG3OTMCMVdZiUhB2lYtLJvycKBvKssOYKMzU2Q3b5V2NFFKaG/nueYjwX3a/hzyomrChHLWnGpg9V1AqTbuc8VCf1r/qsDgBIOMK2V2D5lHG5XKzxo2eKcx2FqD4HkJuaY2KsLSSxkhnK3K4okarb6oRIgUMxjD9WKZZ9wfP6tZajSVyZuj+QiYsNSbODb1x6ncR2/spxOq2EGlIxtndwWk1jaK4i3PmjqUFR/m9mJH7RVRsoKCSybr6230V/aT0jFREtYllBQwmNKFB8Po1EPaj/4YdLAAbMFL6faheBzCb7/Yq3pu/sw8wu+rpgb0GUVHWJrW9gWjShXojJYZPatY55BxtNzvDaZRGe0eRAeyOn1wP/8A09EejNN9JyuHeg1brNl8uhQIza7sKhHHc2yvAXH4+h80ztNTMdp9gZMaNAiohGEO+yEXNvEE9UcaR/qmSkq/TmIciSYQ4IcoqXXxrnfnbm+JUEPaMVJLT6KRKQHgr96t5+vF0MRKuBctE1fKpzMDBXL0xYPsJRLlbEoKrQsIF055dOEPx5qgq1Hv5cQLNqBpDYYVzElwzsFvImHhVll2yUWXXOIpLLCOmRt2qfHErtVPv/6VqAMbix1J6iqX0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.86
Release Details
UpdatedJuly 30, 2026, 5:22 p.m.
Changelog

Fixed

  • Schema repair: runtime/post-migration ensurer now creates pc_mob_idem (same path as license tables) so a marked-complete migration without the table cannot brick SchemaGuard / all ProjectCheck HTTP.
  • Mobile settlement list: returns hasMore + limit when the outstanding list is truncated at 200 entries (no silent incomplete AR view).
  • Mobile settlement apply: response no longer invents totalHours/totalAmount zeros after apply (counts only; money stays on preview).
  • Project list settlement filter: stop TypeError on PHP 8.4 when filtering ?settlement=outstanding (named parameters are IParameter objects, not strings).
  • License panel: stop claiming the mobile app is “coming soon” — seats copy matches MOBILE_APP_STATUS = available.
  • Settings page crash: LicenseUiStrings::forPanel() no longer calls $l->t() with %1$s placeholders and zero arguments (PHP 8 / Nextcloud LazyL10N vsprintf fatal).
  • User delete DI: UserDeletedListenerTest mocks MobileIdempotencyMapper so seat + idempotency cleanup stay covered after mobile v1.1.
  • Icon gate: IconCatalog includes every template data-lucide name; Lucide validator uses rg --no-filename so path prefixes cannot false-fail.
  • Audit gates: PHPUnit prefers Docker nextcloud service when the host has no MariaDB socket.
  • A5 analytics: yearly/productivity cost aggregates use SUM(ROUND(hours * rate, 2)); user totals use Money::mul; rollups no longer float-add costs.
  • A6 mobile: resolve-hourly-rate is self-only (parity with web), blocking teammate rate preview leakage.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signaturei6fql1okUsNDOVX0DftPCQc1vGzw3SNuke6+O3O78+gt8YF5WtNv9tZ1AboKtGIWJR6CviiDFkF4ae2enZenLp6KW06Xn3/MIDwfXap5MVb6de2mTjQU8M2GsrY4Qr0EDVgvrYCNe0Un6Vvhom0Llu4GNNL5oTwPeLqy0gR0V46f/eXXmhcuX+C/EiN+Gn6m+URCe1pIj3hSXPNRGfCapWOUIjMtTpPw24Be4pHI6CwucSXjnX0JDKuxLPmjf+6gigdzFvgwLQxwQK3XrPctza+1W/sTjGtfvalj2jRUYetBRfmqz/CqkmoJGnsNmVoanKO4IF+hDsOEW3ySevdBmtALIyyUQebwMWyhqzLF3sBxM4K4Yxmsg8CuIJTBY9dQ7/y5LvIxxr4uoaHnZwZfAXgSPYi7+YjfmGYJyoF10nwPNzgUWXs4ldlJhL1rXa/keYqZ7U4pgjkbFONMKBh2HJWCld7yJn+NbyokC4WQ0ZB5VLR35aXAIc0YgMgcY4KR+UxSq6ZMnuGdUi5BsoscEHCbDJNTsdCYAXULW1XajRwv84+UX/ZiLAp/Dza/Z6Ye687JqL/NJnlH7sZqyIJpUVVcihS5ZVMo8R3jWZaGxedeg2tbIdhafLmhRfKvTSce5LhoTnyZXKnuVMVF4EHaIVv12HORSFpVU+XhJIFFnsw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.77
Release Details
UpdatedJuly 17, 2026, 4:38 p.m.
Changelog

Added

  • Shared list filter toolbar: projects, customers, employees, and time entries use one equal-width filter grid (search beside the selects) with consistent select chrome, visible labels, and theme-safe focus styles (WCAG 2.1 AA).
  • Theme-safe productivity / project-type year panels: reusable partials and CSS tokens so analysis blocks stay readable in light, dark, and high-contrast themes.

Changed

  • Settlement summary strip: borderless single-line metrics row under the time-entry filters; bulk settlement bar matches the same chrome.
  • Icons: Lucide / currentColor masks replace fragile Nextcloud icon-* + white-stroke tiles so budget alerts and list chrome render correctly across themes.
  • Nextcloud compatibility: max-version kept aligned with current stable server major 34.

Fixed

  • Settlement bucket math: outstanding (not yet paid) is computed with decimal-safe Money addition in the billing service; mapper/recompute accumulate when legacy status labels normalize to the same bucket so totals cannot be silently overwritten.
  • Broken CSS selectors from earlier icon migration (orphan braces / truncated rules in list and dashboard stylesheets).

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureVds/ab5zlTOdi2KLkWWkagkBgvkZ+7Sb+dcaGlIpCUdKdgb4voclMfcrzPVbmXKJseB+w7nyPGYnE8gXhMsLbM48+yq+8vDnq/dQ93cQWFG65FJDZuY/uoE9QgSJ98/bC4fE8BEDv7dTd6RVdihgmfPmF5dv8kN7WMG46QFF3T/y4h2QjYKvHQpNwomL/cdY4+hfWcXy83j5Z89tEdceNLgC15EozgZNHHQbovVdU0ki2UK6oFpIsMWpBRRkcVxWZ5GoC6M8Oj/kjTGkPbir7Qmy0Y94zhrQaDAXEfm0rG4f+8vhI2Dks3F3HqPfhEiKRSQBLomrRQ+IR82RVGH6SfRyA8ehudNDFKhY97NfNGNSTbekxOkp8InD+hCnfTaCWNc8WlYD7xpbXpPanpRF2zuqtM8C6+ZpgTQughcgyHR45pfUNTZiIDILyeLIac7/uh50mHSm23Fy00g+WzXw8m6o8zuWGVReCT7nM25VrnWpdRcTrEuWIeKawf9iIELHLmE+WffCNcxeov5NsdoJYZykBPPoWaL+vjKfE9Fg0+l6Ll0pHDfVMhXLKkFcvevIWgllmlbptQ0IsMyX+anLDEw2lDtzLP78JE5MxE8LDA2s4x7KjGOnBMjvM3PRoUqInql0+CBCj1oKhNftwXV7GnqAcJtVP9vCaQsavSKn4Do=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.73
Release Details
UpdatedJuly 16, 2026, 10:59 a.m.
Changelog

Fixed

  • Project budget edits: saving a project no longer fails with a generic error when the input is rejected server-side. Users now see the actual, localized reason (for example: hourly rate required when the project has a budget and uses one rate for the whole project, or budget too low for the hourly rate).
  • Same-day project dates: projects with the same start and end date are accepted again; the server now matches the form's "end date must be on or after the start date" rule instead of rejecting equal dates.
  • Project form: the edit form flags a missing/zero project hourly rate before submitting when the project has a budget and uses the one-rate-for-the-whole-project pricing method (a pre-filled rate of 0.00 previously slipped past the browser's required check).
  • l10n: completed missing translations for the time-entry deletion hint and the start-date validation message in fr/es/da/nl/it/pl/sv/nb.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureQYabxyQr8Kb1t2VRdUHTR6Mo3eIdMMkDBB5Eif70Z/88JvhjX1RWkJCkBo9DnYMHGqgJDmRaNuLuHf5ahOS/Chgj0JgFO5JsXIHbz72mwBy8YzjGl9/JO1vzAR73ZJHtdDDTMM9tqKkVJzb9RC+1vMc0gq2nUYUogBjnCBp9fYvwGg/U+i24G0I8WVM+2/3m+xIS9NnLXqKuAijADZox/WcmkffmiJP+vRHDG4wR4GZMeWt2s3G4ovBeBZEl47tzsb03Bkj607VZxPXg7xfU49Suat0KZQMhebZnWQrBDybHg36vq2fSU6eDppkODzUtEgS61EQp3YgvXI4J8ZQX7MvOYabe1Ni99xbrbJ/lqRJnCrewY6oTmc5FBMxfcaOCy89Xv1SC1H+N95xzxG57KFmO/pOgR2u0sksJInTRtbNtQ8/DHu1JCXEi3pACga7tOvngNF6n44BAJg6rN6hlGnKxuQRYpMGb6ZYTmGy+N3Ud+/a+TM5Kprepoq071YV01OYjguU5NUMsUIPNERdwh4WUuZlitJ8Mgf60B07f7wSWSJNYqLh/+c+DBO3DRxJbwiRWsgEkWzI4RdAn1E/LLsQKrY460eo0SdvByCGu+qspuvPuBccPKTtEjFsq1oeibp0/jFwBXxhrcK1LO21Je9+167n50xsWVXlPZXYsgK4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.72
Release Details
UpdatedJuly 15, 2026, 10:26 a.m.
Changelog

Added

  • Shared list panels: new list-table.css and stats-panel.css unify filters, data tables, footers, and summary panels across time entries, projects, customers, and employees.
  • Time entry delete from edit/detail: delete URL wired on the time entry form and detail pages with the shared deletion modal.

Fixed

  • Time entry ownership checks: TimeEntry::isOwnedBy() uses a timing-safe compare for access control on show, edit, update, and delete.
  • Stylesheet loading: shell, layout, and mobile-nav CSS load as linked stylesheets (via EnrichTemplateNavigationContext) instead of @import in app.css, so theme tokens apply reliably.

Changed

  • Page header: inline breadcrumbs, meta strips, and action button styling aligned across list and detail pages.
  • Time entries UI: refactored list JavaScript (shared hour formatting, export guard, row action icons, deletion modal integration).
  • Time entry form: refreshed layout and styling consistent with the shared panel system.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureA8N3GN0KQ003e1NwlrVnB6Nd+yy2q7KtwFBl7T+QdBCHFIqwnmCcDhUvGIS22lp3OyWeBVanJ6qXbjMrq/cLdjeB+yEEybNSWlwYrU9b1chDMlGoq37gL9y52x7jWF13+w99GEwX097lgPoOORgHt0unR65Wohlx2yiGansj043keY672t3wSalLp/QaynywwzmnGUUfKHMeCzp6OST1K61BTm4dHMTiT1epvEZleYmOQjP+RU0NiwvCpcRWdy3J8oyb5HTgF6zCn6VNG05HwT593jrKiLupIOBovsP8wJvx+1BYukbbk0U7V32t9a8EYsB0VZ47KcWYUTX6/jlsiBHKzvL0Neyr7bHYROq76Libe0KXxVZqOQcre6RjXSI1U2f102Zz3VJRcvanfxgiQV9jb0pJowG+10ZwJApug/3C3pn7/V1e0l9g3WRh5GHddPMmZ4MicxW35dDzjEod3fES7ofQP1u0Q8voBKyhqFcMGvln6e5NR4ZX16GCm9UYnneKj6jo55aFhQzJO2RsE16KF8OouXnBYgJx47+b06tyoSmEbC6PDVC+vF3QouvTwmD/15T0WLOZjFOojFeQsJWcyPooSUMrvOhQH8eDMrOKbqOKNhGXes7SHeTr4QuQB5NwM06W4iiEHexRobPa8EI8IZS9OSWlAKeeM4jIOtM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.71
Release Details
UpdatedJuly 11, 2026, 7:42 p.m.
Changelog

Added

  • Upgrade backup: Pre-migration repair step snapshots ProjectCheck data before schema migrations run; occ projectcheck:upgrade-backup for manual backups and restore workflows.

Fixed

  • Disable vs uninstall: UninstallRepairFlow preserves tables when the app is disabled (including auto-disable during server upgrade); data is dropped only on explicit app removal.
  • Project list filters: Qualified SQL column names fix filtered project queries on some database backends.
  • Admin settings: ProjectCheck settings moved to the Additional settings section (fixes broken sidebar icons in Nextcloud 34).
  • Upgrade safety: Repair-step classes registered in Application.php to prevent ArgumentCountError during occ upgrade.

Changed

  • UI: Shared page header section and refreshed list view l10n.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signatureeng1zY6yCI6rY/twlw2TCyok+4CH2jvBuCqKKO0Tsnrx7Ygip97oRdGMprlv2AyvbKbJpQuf6Vna18jdFqlp6OjvJR614ii+pnHSHYlOA7QLgAoACSHiFeg7GebXw2orm7I/JS3iIrwZizy9mkTUcThQK3nfHJRTUMrtyNpzZ3rZbO5ZsEyy3CNfOXYMJjAj7cXu105L03+lhl/nhDiDDJew+xOLzFvIfnQEUZCZfRiC6G1kd6qvzxM/cs6oSA8HdnTeJcD7SyMGwwjj2iTOP8yp7jp3fyJgxDaNxvyq3bNFsbciLz/q5wy0qrNdh9dZ1GgPrr7v1O+clc5j6hHIv/sm6K73nC2YnKq0ZTZVHNSi/hfJf84Cg9X1vBx/wgkmgOBefcgBJCwFogyHQXdoiIyqN2IKHTR3uvgKP+jMN1Alq/MQOuIrNqDkwSjoCV/KMUlDXMUzESFIVBvX9/31Rhsx48pmXFGBMvuJ6PAk0xzs6OHZ7oHEnW1ntgpt4ggWdARJyPIz7QbcYJ+a5A4f5UZxKxZarcG7L7+TaH0IrOya4uMhKwjKQujzH+hupQJVHbcW9a1Fzc89HoANVkrqzd2i5+go8YRT4jp145r8FEdV0CHnktmz7AKEowynoVdTh/7nfd2pN3apmZd89a9Y03aXyLdibD0HLPhUIySzJKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.69
Release Details
UpdatedJune 4, 2026, 9:20 a.m.
Changelog

Changed

  • Release metadata aligned with the latest stable Nextcloud 33 server line (max-version verified against upstream).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureGUaBBYkMSkWC1bcIjYEkBryjwY8I7LadqIdJTCQCpakQjPxx/Ox0bQXrONfEGeB/BOCjuLlM2ekYZMMoJkr14d+wj2amWVpINRlj1Y6ZoKZirlHOGkfMggXvJR9W5XNyfBJq0urFXeAtN3N6j6+wLHKhL1sZrdDWmvzu6EaQdGnj5spZO0+84bh39k4p9t2aKmNg9USaJX5lOiQW54Lt85BVxn578zvPyUcO9go2hXamCSUBC/O0wl9fdK2kI8rzSQ9UrVR9NSUpMzxvKOWIkZ8x0wtu09SPtYapCI1tfF5cG+pYmx4cI9nfMksSRQGi+JU/cMVmPt3STHb1KXmsYUr30lPWvKx6/zg48j2Mjc19ytUOnTPa00nIIq1emrXNQsRnYcGIEDBCcOwvBHo4P7HyR22QYOMKOW6SSBMbdw7MxmjchhJRrzaA9jDv3/y/jbpoJe/bxMzbEc2vMKqx2ZMRa+/qRuCx6qD3/a1yGkNbRC2Oj7tjMftdvsAknut2JZ38mjI+HMbZ/rZlMyjm//MXgXbycU2Ji7cUjKQ6yY4Lflfm3c39iN/5O/NcoCLTLz4/gZjcuhT8c9dKiLT40Cc+g5DmkjI4bS+CKGTi2leVlF6bbY0ypp2NxKDkcRoSB+bPiMeYbIizAswNzkrP4XVxbMkd/9su4nznqBWsspY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.68
Release Details
UpdatedJune 1, 2026, 11:52 a.m.
Changelog

Changed

  • Mobile layout: responsive CSS converted to mobile-first min-width breakpoints across shell, navigation, projects, time entries, settings, and shared components; desktop (≥1024px) layout preserved.
  • Mobile navigation: replaced the core floating menu toggle with an in-page Menu button in the page header and a slide-in drawer (no dimming backdrop); drawer sits below the Nextcloud header with focus trap and Escape / tap-outside to close.

Fixed

  • Shell layout: page title and main content stack correctly above each other on desktop (fixes flex row regression on .pc-shell pages).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureLylxQMPnLSwM9sb0G24+afSvm+VVzsjyEbe07qDcij+UQDynpyBDAYk+LY2T90pbh+MmJ8ZN3ov1WnGnbiyR4lxNm+Kz3/bN953tksBEMb9GaUBGIaWFjU2uKqUjcM7GIzTQLLehQAW/2wM8AiPOCRQ4z9tbo2W8SE9G/i6j9H0eLEdW7LCzhbWO7fXUN7KEClujbHl6bDfo6UQ/LxiPCSInzlFhvB0LYGhX0dE53zI0fKfjUIjmAFwPzAqKpFAHqc24b0bQbDBLA7ctuWvYqLmndG1IwZ2i2a5diVlLrrTOQsdBgLEy7ZMAVJ+RVIXEaMynCeFk9W0RsvJn30fzX7mBKFVfB3ARNPy4RaaJ16sJYRhMUw7Oy06ltgqReTHUt8vDDKOFSJ8+cw8i+SOvOVygDFg603+BLsx9mne8DKJUzdhPlV6O5fajKPS2hui8O8tbSMgy52gQE29SJftoIYDJgthF5XRG39xsIJXI061+vd+4u/8+VSF0XkMoRTz5tRIS3D6OKF6gDR5+YZEAbBHZXRCBgt0HHLM9RPDDfcPjiN6uSa+7vGEw/Cj5ZvOeQ0G/besE8yWsLrNh1gl3YCmk1GOZjErRzT8GAoCoDVII+uZ7SbtOQ9nJkf8PPIzzQy+wkKG5r1AgYij65HgKhZQFjBaOv9OqW2zXiD4TcSM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.65
Release Details
UpdatedMay 31, 2026, 8:20 a.m.
Changelog

Fixed

  • Employee detail page crashed for admins: hourly rate section called non-existent OCP\Util::getLocale(); now uses injected htmlLang like other date fields.
  • Hourly rate workflow: locale-aware rate history display, client-side validation, future-date guard on effective-from, read-only rate history for removed accounts, and API rejection when adding rates for deleted users.

Changed

  • Employee hourly rate section: clearer layout, WCAG-oriented form structure (fieldset, hints, table caption), and responsive styling aligned with project team rate UI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturejNE9yDimM3kIs2s9qMXIVHQI928LSzM78jlMR0qzy1vnVB1sdDHEWUyppmpd2zcqlSbmzuL+Znru9tGmbtANUYApSmZbVk1boqbiZF3YSUXaD2bWiADtXZkc5zifV4lhaSiw60tHu7muUX+NhqpjhGQZIDOKW+RSj42LIj5pnmrrG0gQvuaoEHj8ya1R5JPVV1Fbb04l6r+H+/JaWhLhyfIZgWiqkEgO4FGHzrID8nFpe+VkSaNIlvgw+OydAwo4JED1d4JZtV7tCUUGjlEDSLswudvcUNJqzOY+Jw0FAhva2vZ/ymLDjyYUDrJDBvRF2nFCe8PH/VRr8Ngs5RZQOfiL7J49mUMII+jxT/VqoRw/F21xEoa6JtiGsio2El/gmZ0DHms8+sCgtqy0JazcEMPbwqeRXk978RobsYN4AMhAtbemwUX6eWIcecmClGL6xIwkLjloz1Kv7oqGos7KJLZmeMixGIC6Ffxr6nB/AoT8PYt1m7SQjjC5KIzfmD8k+/QHKc52zakt+LKSxAPH/HP3CgefwuUN/dLFXM9dMSJE3Ibot6XDORmeTkKFZ/oNqGTeDNBciMC/S4WfjV0lvAIYUDi0FgpTlZtz31mpk/3tEJN9IKjZpXmGmixjnWLgUpXfixl7EHsLfLTBgRYOYD4zgQOskdQjrHq+7S8UWxU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.64
Release Details
UpdatedMay 31, 2026, 7:43 a.m.
Changelog

Fixed

  • Search field magnifier sat at the top of the input: global .lucide-icon-host { height: 1.125em } overrode the search icon’s full-height positioning. The search icon host now uses height: auto with top/bottom: 0 so it centres on the input. Moved the screen-reader hint outside .employees-search so it cannot affect layout.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureOVeEKvyU1eqmDB/dZhTVEc+h6+iftPxuE3ykFcHDZytBEwym9Nr3Ki6qK7HiradAthJmXcepi6r00vhYt4UeyOMYHRXKP75tS9zG6PgHx3NGekFROL82SACwMcLlpPiofmn6dMYUakieuGlNcG2IzVXG1oKZzP2UfFeBOUUJhBNGliaCJXsBpZPwg0aH1caT7iFus7PwmxYKU4RMC2Kil/59NbbOU+OpYPoTQJeDr81EHTX2OOX3CmdPMH1NT2rvB3nM8ZNFV1n6mmTLC6irjod7P/g9wPK8dZa3BsYFD5cuDRokKI95Ju9cgGkGMXTWGVt2AQgn+uWgRSe8j4C8mCDGQyt/8Ct1d27+VZOX0JYv6Z2aRoGUOAQykprvN3A5PUX7xVJtHpYo9CWotCDQVbW5neN4uMpFGs+kc1foQFIhqlIp6APktheg/RPduacg8vlWDdXRmFKgpKjLJV74Oy3o/N9/H4KJY5yN6e4MhvoiH36QssbzHOs0tgcR4rVnj72qSre493mWF+hdU9m8XTyqumnhK0448jWgrxXwkCpSZdjUbVvbEyM1o2XuxdgWy/HBIGNaatQsLwABikJ/9UdgjRkkSMyXec7pX5g6RuhXlzy2ygis03ehbXXroQLDFIkHAj3I3mc2SlWo0QgfqA7Hvy7wzaDVwIJXpHggonk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.49
Release Details
UpdatedMay 27, 2026, 9:36 a.m.
Changelog

Added

  • Project edit — team callout: Prominent callout on the project form deep-links to the team section on project detail, with permission-aware copy, member count, and secondary footer links.

Changed

  • Time entries: Clearer admin override messaging on project detail and the time-entry form; tighter server-side checks when adding time on behalf of others.
  • Team roster: Improved rate-mode handling and project mapper hydration for member lists.

Fixed

  • Tests: ProjectMapperHydrationTest, HourlyRateServiceTest, and ProjectServiceTest cover team roster and rate-mode edge cases.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturepFMdGFtPWEr9Qp8FzVqgXTZTlFHZ0d8bMIFDjYQeWSCj7uj0P3E7ppETt/OgNyWWZvuyo17EF60gAABXCS09W2ogeH+eA5pQftgbdzwUPuCkgIv5BXmuEyoUncPQnHv7mSOTyIzVsahxGExkVZ5/qxTMht/y5sHbN+6BWl9MRQ67X2OOwuMzW5P6Fl9muGt0MvtFsLzBJj+syYq/8n8vFnEX1Dqvo59Xu6ZxDrHiQXKhYIaRURfm2yysBh6LThqVA3FUM/7nJVfPi58ShlY/M5kMkqFLz8Zmtu0+TP8YcEx8XkzRJhDxZGsLBJxPyu91MixZLIMIg8PSXyK/Nidu4cEatqn/ml/tvwPZHbW2x0v9Jg9HARHMnU4vuubD7gOcBoHmm+Fy/5TkbNSrQSkpdNE/fvcjxZtHsnF1U1wAxKtqyZ+6tJLR+PUq8372VFH6he6GSBUkE8Y8gTzAiql3eZyYQUSHN1ioR/2gJ52eTQvL1Hn3mZPU6urmUzBGNdwkpxty44CqxCmwv01cwyLdbffL04E9YwHLwoAJr2CEcFCY6KDPW+HkZvEDamSZKXC9WByHvEkzWWqyVtoC2sVmxzAYjXK3iU+0uvSw8IgyDVK7yN8LGQ8+cMogxrYAENGED+kn6BS/HTR3CSBeUvl/TLIzirKUi8oY9QTdBTRCOjw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.48
Release Details
UpdatedMay 26, 2026, 7:29 p.m.
Changelog

Fixed

  • Pricing mode cards: disabled cards no longer show the primary focus ring; styles use :has(:disabled) so locked modes stay visually inactive over :checked / :hover.
  • Project files: refreshed upload/dropzone layout and project-detail files UX.

Changed

  • Rate history migrations: consolidated rate-table bootstrap into RateHistoryTables / RateTableRenamer; added migration Version2011Date20260526120000.
  • info.xml dependencies: declare mysql and pgsql under <dependencies> for DB standards linting.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureRf7tn5ub6IZhmWnoPwsND54Rryv7rHuCcUqTUTy07iP34PMY0BuUVg2QkK7+fcesv6BM2+s3iMcfeCvtf4cwyRol+Rg0gKJOrXKchdbnIVJrlHnR0HV09BZaUhRafqzn0DqzuTPRwb5n/ui5MyqQyqmRxPtmiXUCbvg+1dZuxw9MjGPzHlZ6FBNy7cKCiz+jXhnYOhCyGadmZSX1EwmObb/S67MUaip6BzOCwdvFDGeXhfMYkYxqcQ8k6200EWYlqR8VkAsT/RQd26eCAKpwuI4HjBnj6DPTO27v/kZ00/frYs+8aUAcBCtOppRS4Y0Eqqa2dATo0DWzvYiAQt2Z6UkSTY7soYekcW6TdIdiUcl0c8qasqknkcj+ym9lBBPkQA9mKUyM2K7GrkBtjFfiQ4b+4ttO18Bir66cD+VC2rrpEo2VxVyPsmj1q8MZDg+bZUCFMTAE/oxAaik5Nl7GxVLVICz0snoUHQwTCwxwGnyGxg05j7MWE7GqHJCJ0CdsQgvBGzX2X9/hoV64V/Uvuj6SlPYWicjh2RbKRHZfQ7G8T6fokO+sGul0odDJsYV8rG4BPGhpTOFGFk+56wJUy1obEbPaBIcpD4LypYK+27qt//YCvJnfTV5T5XmfCqQPFG052OXXawKvf4A82CBhrLVdsqwO2dX6O60KBIJ0GdU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.47
Release Details
UpdatedMay 25, 2026, 8:05 p.m.
Changelog

Changed

  • DB-standards alignment (Oracle/MySQL/PostgreSQL portability): every migration declares : ?ISchemaWrapper and wraps createTable / column additions in hasTable / hasColumn guards (idempotent across replays). Primary keys and indexes use explicit short names (pc_*_pk, pc_*_idx). PcCoreSchemaBootstrap helpers now return false instead of bailing early so re-runs after partial failures finish the schema.
  • Budget display: "Over by X" instead of negative remaining. BudgetService now returns over_budget_amount alongside is_over_budget (computed via Money fixed-point so display never drifts). Project detail and budget bar both flip to "Over by X" via the new shared templates/parts/budget-remaining-line.php partial; the duplicate "Over Budget" breakdown row is removed.
  • Time entries: moved the filter container CSS out of an inline <style> block (with CSP nonce) into css/time-entries.css.

Added

  • OCA\ProjectCheck\Repair\UninstallDropTables + <repair-steps><uninstall> in appinfo/info.xml: auto-generated drop list keeps every projectcheck table ever created in sync. Disabling the app now drops all pc_* (and legacy) tables, migrations rows, and app config — no orphan data on remove. Regenerate with php scripts/check-nextcloud-db-standards.php sync-uninstall --app=projectcheck.
  • l10n: Over by %s (en: Over by %s, de: Überschreitung um %s).
  • Tests: BudgetServiceTest covers the new over_budget_amount field.

Bumped

  • Nextcloud max-version: 33 (latest stable major).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturegqUw9DiaEeBURXZU8t/qtt0r2YxgXSBWSBWZS12aQx4vtgjnOKHNdxDTCqd9fUwq8DT+pjgGhljldseTwVl69rzyRsUaPstTJKAfR5rgoJvk81wJ4SAU+4AxjFdOpA1IJEYmGX4tIBKP/+9sE3DP9yVDJy3Dzr1gBTkNuTc3iJ+Ny1noxQBdotlDck+RHVG02Jn2XVXRr/QNYOlRF7i5FxxSEAPms8NLh5QkhY8vOvyun2LkIywYpj2QyY1hIqcrNaB2ii6VX+g8SAjmQ6kVUbjKQ9YF2v4yvCMC9Fi1E8zPzkcoDP1WT9SHHxZrxPGunxhQXONZcR1557pheHzOwh8oS8P+/rXf7XscfIaBZf4yhpCNXqbanLpPuuAGzFs7ASAAwUrl0fvJKKCTxx1QxQQdCUk5peb1Ur/GC0S2R0bRWKAKNaWHNroMUQZpRs/Lu6iIT+w9wyXNy6bnqNOgQJBVkLIppEApnNaZek3wXUcDkJ7GCN01qG0VyYJXx+wDDShg/IlMcGD2S0ja3ym++3tDUxHoO7RDxBGqcS9RKUjcDLncg7pUl8DfPh/peO4/Su9srWd1/xnNS6LfNqDHMax1ql6YfCA+U0DWzkNOMZ2MiomsmPp5Bb8l9JhD0oNLefaRTTXs4m0kkQgzO5J7+WANgQFi/8VdPCkVY48FpoI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.36
Release Details
UpdatedMay 12, 2026, 12:09 p.m.
Changelog

Fixed

  • App Store: donation, website, and author homepage in appinfo/info.xml use https:// URLs so they validate against the store schema (donation requires pattern https://.+).

Changed

  • Release: Nextcloud max-version set to current stable major 33 (upstream lookup during release prep).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureNM6Q4VtXW2Q8c+Mw9DVfI8ALhd8Ete/S4LbnMOuKoWZIVka8TrDtWAXEkYPW5r0K7EO4EnNeM3bT38Y2AZVAPDC5t29HvJujMZMDxoiAED7025B6so/tFn0bkjEW+KSGBZpJayQ4lsG8CDOSMhd0uWWQAVJngeDZEv4WWvgQr2XfTYfrWYOL/HJIT2dhe8nm3nqt6Q7Hd1mP2lcmIMDi1oMPXqqHFsBWgLmd3SYp0af9WB72JrOK1xeg9906XudWQFXfAEMF4KxfRbMrXhTtgG3g0Oimiij3uv5DKA9Glxln+VT2OeRrgsO7GKHF8kdstjOTCf9M/uQO3/KPFzIpMKi4567nviRODNn/NUzYoRr4vlUDhoIzNIhwb37k0+ynt0CH9RUrvk+6oJqOiMU6XNQ3ZaKjXyLVZ46dlXXJ1XEeGboW3vxHy/wqLc5Dz+cIQpNfVBY8ypI9oSJeevBNIKPqsK2+YCF/JuG3l/Ke5U+RwpxIKjDLP22jUXNo2mxM1pcPcmI3ZPDO1gJ11EC3UxHTjv/lQ3kjajzCO1XlCHGZAd5vdXQJvszmijpgkCRcWzlG4ZXvJ/4hZ627lqzttppCz19YORrlW3UdCHW3K7HGDa/UXIYRCiGwUwOeFyS0g8HhVZMTGX0MOIVXQTPLS2Qxl7xnBbgdS3CLtNgVB68=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.32
Release Details
UpdatedMay 8, 2026, 2:24 p.m.
Changelog

Fixed

  • Budget overview: clearer UI state handling when loading or when data is empty.
  • Organization currency settings: stricter validation and safer persistence of the default currency.

Changed

  • Dashboard widgets: prefer dark-themed app icons where the server exposes them, for better contrast on the dashboard.
  • Release metadata for App Store: version 2.0.32, package alignment, and Nextcloud 32–33 compatibility (max-version aligned with current stable server major 33).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturedO/Jb949rBMsANjsc0inHR1+6a81vTiFjPymmHwI4qtaU5+anUNRgN/542L2tIfpReL1nnJyr9iuvZpK3ipMbZM8B8zTEUSd0+89d0YnnCbJuhS01u0XMe9DBk0qOWiYZ7UPsHHUgiN4X9oZYeEabyxDXU8XGuNda63kWS7U/mgjR3obYpu5c3TGJSmNeS43ol2eT9bOZkXSetkoyggWhjK/QqTU5kNBIJQvbdNyzZv9QBv75262SWbY5oLHJeXAES/1Nf1trxxR47XZwBb5kTk2GkGrqDtulkdqWdcOjiJxowj9pGB8Vz37JmRFNEH0yubXI5k7wpQfESbxyVHJEJsDsVAP3RW5IVKcJxKKqLqj+n9KDBq3OmNJaKY7oWZKVpFg0q8BJLym2w4FUYLP61JtPVXyY/Ms+STiRPkft2j7/U0wB1vRpGc5Y14xUXHRcEHlNvOvp4lSWSB5MBg6JoKXyetTGbie3dhKZn3AYSEKpYvHx8TYTm4pVgKgZlFHKScZlCZYoy0V/qHu8xXCszLgTVwc8Nllmqt/f6nuQ/8lWLBwaWC2/piWZJPDZp/LOAqHq2V6oFUuzWchvgojmkQp0td975INp5VGaRzQYPcYYAqfqVO+m2zFlK/Lo6TAKmaJDXD8rheb6jEOsGsnDPXe6fNKrDDQrbo9wmh58Rk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.31
Release Details
UpdatedMay 6, 2026, 2:57 p.m.
Changelog

Fixed

  • Time entries page (/apps/projectcheck/time-entries) crashed with SQLSTATE[42S22] Unknown column ':dcValue1' on installs whose pc_projects.project_type column was missing. The fallback SELECT branch in TimeEntryMapper::findWithProjectInfo() was emitting a named parameter placeholder as if it were a column identifier; that branch is now removed in favour of the existing PHP-level fallback to 'client'.

Added

  • New migration Version2007Date20260506180000 ensures that pc_projects.project_type always exists (varchar(32) NOT NULL DEFAULT 'client') and is indexed (pc_proj_type_idx) on every install, including fresh installs and partial upgrades from the legacy projectcontrol schema. Idempotent and cross-database safe.

Changed

  • Consolidated the two divergent columnExists() helpers in TimeEntryMapper and ProjectService into a shared ColumnIntrospectionTrait. The new helper is portable across MySQL, PostgreSQL and SQLite, immune to false negatives on empty tables, and caches results for the request lifetime so a typical request now performs at most one introspection probe per (table, column) pair.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureKwfXpzIe3+p0x9crZKeKH168d5iX1BaGIBFJeaNxSNjBhGEcrO2Iipmdp9CZsFRfL1E3VPzA6dHVqkayZTwrR3Y8e+BbT0DIQ9T+ZKeVDhsSnUuSfJgbUKTU4gPa1/hKSfLEaVxm0wijR4wNbuJS7UcFatkLA1G5n1DWnigGVbxxX3nIrEPLb0wmUjM6UdRzATIcj+rwAWDXxOemdXp27iyyY9lIMrszGaSYCE/5DwiW3dH/Gu0DlBp1fm4X2mR0zssOfCy6ESmikAF5IXN35zZrVFC28DE0YYaWlESlIqFJc8l4R2XCT1h2nbhXkgngzsz//49aSbJYHjiaZAZpMiBFZQCZSWsdl2F0I5cI1EpbAXCwP6GFjRRmUKIgfRGV/+Q/ItpuktWqNSt0w/AbpszByNZO4CD6gTEQrP+4IUHX3vFqTqAt1GVNsaZXJck+FbSC1Xm18nzE4uk+w/GcIQusiWvkKMYbOOnXJSoLuNL3TXgIAJJQnLnw2QwHOb8V+mpRIxYd83Y/8uj0N3E4Fs2m301VrPI/puCXL5O3oXF1QCLMDTWI4LmqGxzNqMSe7UdvP0ptGFwAjfsHaNowXMHDN48C/QQ/GmpLCP574uYEiBUzBriSyAzFfVZQ7wcALKGycLes5WVDqNA4fkP3TfZ8s7VxJXLURxfVPPiT75E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.30
Release Details
UpdatedMay 5, 2026, 7:39 p.m.
Changelog

Changed

  • Database migration hardening for production upgrades: legacy generic table and identifier names are normalized to pc_* names with idempotent upgrade-safe migrations and cross-database compatibility safeguards.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturehUBNMg8dHoC24+DO+ZZD6GRUSem9e0hd8ir7ipR2LDOeAx9Ii3K8OqpsSP1WTFjj5vsE6d5wabFTMciF35ePjkRart7NguVV7UBtONxEXw5Jxnr3EAF4cHWj5IsNRGx0e9pv+91BF/ksVyK+O5mYCcHiO7I9ALv9xe57nbBjVc0xmGM7UMjW3BDytWeoGU0MSV09FQQiKsqLhISgj/jPjiQZzXpDMeCl39sIYP4mpwjUia7UxN54zDLL8VlZbpZzwCQNLmumfh2zobyAOSQblsoVC1MCS812IczECQFu0GE2DPEoLgTH68m7X2+iU4+VqjvdeAYuUuR2ClUUvBvBJgCdWBoQ9M5aNmAvBTh1JwTqG+Di0DBlEeXJYN+j83SVfL716pjWBlM9093ERqkdlrNANUtoQNYmc0OAMziqG6KzfQKcEGXrvcZF5+aqa4ofy9XbvbuQG9q9DsUWhK0d1wUSCPAvsKDXhLZm3lssh3kzsVbELuKCPjaP1eKYrjSfTWvHgBp3mzHs51pVfeEnxHCdNg1WXyEtljpz3m1BDgKDsGRRc/dlpQher6V+ZOZPu7EVeyEF0cxArmvBLE676Bo/9quYtqCm4UKd2GNkPX0ZHgnpxcK+LF5YQzhnGzklVVgrO7+l0eV9SlK4FI0KHQJxBJYtZi0pAaxHguOwOrI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.29
Release Details
UpdatedMay 3, 2026, 3:29 p.m.
Changelog

Changed

  • Prepared ProjectCheck 2.0.29 release metadata for App Store publishing with aligned package versioning and Nextcloud 32-33 compatibility.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturenaKyPhe1AZI71FsRuHuunD8wDCfX3lyBjoksL1fh5NpgSBpmTiRNJ0jkDDYxVX/HHukGmIZmvUAG6tiLNkoxNb3K0irnnMUxsM7r4wuxkiwFLyJ0lh96RlC9+pDqgicVsPHLrXdTw9AvgzPutrP/ffgQBW1sWGf1UYWUbDKq+BzK60YklARHk2qQvJ9pITvagkNyOvK+rwvAaclDNWZZIBJi72lzEyw0KN+o3zZZjMcA10N9EN2QYB8monHUsBbu5BMZlqKg9zsv2luFXQiV3XDNrKMEDyafTMZaeSBiARnaeKf+Z7ujx2JyQvJvnr4SNxU0WkqygIXtgkGTltsuOXU70wO6ipBUp1w/ZCcRSwVgT2YAU4XIpSFUzLxhJP6xYCX/Iyha+7FQ3wQjz17JDbNshq47IxC4P6vAJEbIVJWTi9TUQNQOQby/A0q22WwV/kpNa89FhYIYjS7vcYxkQFDTH6PRsz5jRNzouIID8cFhYvfDqbdxrxwrxizgSdYSZK80ug3KywG86sz+LNRvMSMpTK8IGKox0E2BMZGDxgmxIL3SkWW6qCFpcM3WWgG7CDsYv35f/vNqglQbzgewZwcXuWlTnBl9UCs9o8LUIZb8bUkd5stez466RJ7gSuDjojAUWHq/GrcWFkp4jwlDu5oOccJ/XlLHgHBptMV5mnY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.28
Release Details
UpdatedApril 30, 2026, 9:58 a.m.
Changelog

Changed

  • Finalized organization-scoped settings and deletion workflow hardening across controllers, templates, listener wiring, and localization payloads.
  • Release operator guidance now explicitly requires a new app version for each published update to ensure upgrade visibility in Nextcloud instances.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureYKgNyzj6+VVqiqCPRLImmjfRwGnYpG1VxoM4dQlGEo2Ms4QoY9P2L2sJmZJrYa94E0vIPdpIFEotNfuJHc/3tCkIj/7ZnewudUjfjuPJr9MiPqF0NHeAfKz4QbqpHnf+hl+kY6CUku7ZCU5BaANJQd7D9rFSOWmXD53U72PzmojN9hUbE/++QhfWmPEhnrpqMoihyN+ydg7pA3ljXto1h1rG0E+HwzpMBzFBljyH8ixCuPMEWLLcrFxZjIT4GgOIqoxPTCyJKZoAcQHl8dwD7cdpwjdXlZGBKwlF4ywT5FWtHKtoO+QIn67nUDRijTsNoarUPF2BQQszzOIyG4PbAq5+dr3zIbC89vGQZCTKYf5g4uaBFgiwecQM8G0lETTj0q2dAXDHy7JFyheTYn7EXuaTHT/vr8vMqbJaywmKyKA722IKE3AygAFQldp8xO/8u90K4x1KiJLte+M0L9rKTZce/M8yiDwVNoDTrmzkiGLy9gu5u/987sMWZ9I7d8+RmSwCPYX5sL8QGqpCT4DmBxlWP5yqK3rgCinGmHuexasbftZWZ8IDUX8vACYAz6Hbeo3zm009o8HdQDxAHjnDvg4MPgGNvNeaQJKEEy9ae+//M4hS2tD4u7uLhifewZJTgIOg+GYuMq5YlRozF3ynHHiGkFApCnuH7+1HCvsVb1E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.27
Release Details
UpdatedApril 30, 2026, 9:27 a.m.
Changelog

Changed

  • Release metadata alignment for App Store publishing: bumped appinfo/info.xml and package.json to 2.0.27, and aligned declared Nextcloud compatibility to 32-33 for this validated release line.
  • Release documentation refreshed (README.md, release/APPSTORE-RELEASE.md) to match the current support policy and current release placeholder examples.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureV3u77GAZig3Zdip7YbJy1HPN7AzM8v4Rhd/Y9meTmomNUuxZbTK8a7KVRfApihc9L+Gx2YjkSxXUKhcR+tewFb01WjwHg+SsXLy2V3cL6VcJ5rOUBAtAaQmj8Zzd0gIhpAxaGOYFgRaOIaMLC4GObxvSr/AD/K5Iz5yNhQqnH8u6DyQTq2AzIkEqBAVc8Z2nPCFpxTv+cuHCzhm5vFBrNLLG4iHT82BTprzQlCRM2HcpnvDrO/i5gF98FNOkdHJITg0wDVqby6FTt3TpSJ5L2QRzcZG9RGMuF5wz4OtHmpj4WqnzDB1fVbLgyKzdVKhXt+tVgSZwq4TBQGmEoLqnNFUIa85dwtZRIVnGcdhkUa3Rg31+Z5bFr3oZAq/MKMrcFLo4SXyK99Fm4IaDAMkNx/Et6AEkMbIxT7oj4zyqBEaGUlFTdTWUnt1pKLH3/KFZU50qRTXlotQZEY25jh0/vkrnjkOsiUQLbJd6r5xSehKHxmc0gWLfTxQ3FvRVVomZtbPfaXzBJo1+5eYOPp4+E7XXYQHmFIhCMs+AdBoZncyxGYaXO0KfY9gqr0kvCvg7aCi+PUswEM/0NY+E6UNOi5a2n1NYeQ/1KBdksdPXFrKjdP2/PO3W1xiq1ug1O2ZuUF4jPppQTFVjo3wbkMZZP2wMldnirZUaiIIYVHJ0c2w=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.25
Release Details
UpdatedApril 8, 2026, 2:20 p.m.
Changelog

Changed

  • Documentation: public-facing bilingual README (German / English), aligned with ArbeitszeitCheck-style structure; screenshots and install/support sections for the standalone repository.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXlsnGJgp4l+5BMHh8/hYSnEcadcJg912AJk8xjH+o4nW6+dxkiBaR8BVbsyHqnLIKNWY/8HBZY916jrbT9AZBlXv618r7w5A6NgJAopFxLIyaWB19okxg26K+vaU/1o3iAG8zYbozGL95nMF4DPtSlLxTd5qQZW2/GjuViW0muiiQd0RJM4xWd+3n6SVXYUtpai1MY2gpqVTHi2iYZd8NKH0KKE2SkYUwUyMJI5xX5p3T/1KS7Ta9PLwlmBzoANqafzytue66+7QZPXF/Bi7dOtjiCAgMs+UsIzqTh5ov1vFDm5DJjFOBmyuMT2qV27hWzGb10XNf26YdFyDui68ql3IKGqaCYnavLufi/+u9E080Klym3Dv0q3jnQ9wT17LvHxX17rV0PSBBpaoD5WEtOynCor4flT44aum+POpnVyBQ+rRO3WyZt6jtBaBcIKt/cGPaPbxi/2eK3oogdPe2MYGgtECOJ3+qVP37AXrnaZUxBsFlcvixYiX9wb5OvfL2zClm/bXPtmjDLZl2UG6cLS1csuldJbq9j26sL/y1tnNd683ITxmJpAtwRrBvnKgU1Npj5gqzI8HJzThL0pndonnAFiDCKG210NOfdtGFbihpCwVVxIoriPfi8rdHSJP0MgKP/QeO3Zk8bNQ3PHrmhGdbeYajU+zHwG5bTmoH3Y=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<38.0.0
Minimum Integer bits32

Nextcloud 32

ProjectCheck 2.0.95
Release Details
UpdatedAug. 10, 2026, 8:03 p.m.
Changelog

Fixed

  • Project edit save (Nordhues): full-form updates no longer fail for name, description, dates, status, priority, or category when a legacy project already has a budget with hourly rate 0. Empty capacity is display-only (not submitted); decimals are staged via ProjectFormPayload / FormDecimal before merge so "" never hits MariaDB DECIMAL columns.
  • Budget changes without a rate: still rejected with a clear message when the user changes budget/rate into an invalid project-rate state; the edit form shows an on-page error banner (no silent redirect to the list) and a pricing gate callout.
  • Create parity: createProject stages the same full-form payload (empty decimals → 0) before validation/insert.
  • API update: invalid decimal payloads return HTTP 400 instead of bubbling to a 500.
  • Error reflection (Argus): toSafeProjectErrorMessage no longer allowlists broad /Cannot …/ / /must be …/ patterns that could echo MariaDB/PDO text; known validation strings only; user-facing messages clipped to 280 chars (incl. query error_text on the form).
  • Service-layer authz: updateProject re-checks session + canUserEditProject after terminal-state guards (defense in depth); optimistic concurrency via updated_at predicate (conflict if another writer won).
  • Create + files: file upload failure no longer reports total create failure (orphan + duplicate risk); success with warning / created_files_partial banner.
  • Time entry create ACL: createTimeEntry requires canUserAddTimeEntryForProject (parity with mobile/AZC — closes PROJECT_MEMBER bypass via access-only).
  • Mobile idempotency: orphan cleanup failure returns HTTP 409 (never “success” while a billed duplicate may remain).
  • Companion booking (soft-priced projects): mobile API promotes rate_unresolved as a stable error code on rate preview and create/update so companions can show a clear preview/save failure instead of a generic seat message.
  • Team member null rates: nullable hourly_rate binds with PARAM_NULL (not empty string) on member insert/reactivate.
  • HTML/API create double-submit: pc_form_nonce / Idempotency-Key mapped via FormSubmitIdempotencyService (ILockingProvider exclusive lock + distributed cache replay); create-in-progress surfaces a safe localized error.
  • Activity audit: logProjectCreated / logProjectUpdated on web + API create/update (best-effort; allowlisted field names only).
  • DoS brake (Zeus): web TimeEntryController, CustomerController, and EmployeeController mutating endpoints carry UserRateLimit (parity with project + mobile).
  • DoS brake (Argus): project delete / team mutators (addAllTeamMembers 10/min; delete family 20/min; other team ops 60/min) and ProjectMemberController remove paths carry UserRateLimit; contract tests extended.
  • License mutators (Argus): LicenseController apply/remove/assignSeat/removeSeat carry UserRateLimit (admin DoS brake).
  • Create idempotency (Argus): after a successful insert, cache persist failures no longer clear the nonce mapping (prevents duplicate projects on refresh); mapping write is verified with one retry.
  • Locked pricing UX: when time is already logged, show one clear “Current method” summary instead of three faded disabled radio cards (fixes unreadable contrast and broken radio chrome).
  • Invoicing list cell: compact settlement progress uses a single wrapping line (0% paid · 0% invoiced or paid) + bar instead of two overflowing stat cards.
  • Create validation UX: HTML5 invalid events open the enclosing advanced <details> so closed classification fields cannot trap the user.
  • Safe required-field errors: only allowlisted keys (name, short_description, customer_id) map to localized labels; unknown Field '…' is required strings fall back (no snake_case leak).

Changed

  • Status on the edit form is a first-class save field again (hint updated); overview “Change status” remains available. Locale decimal commas (1,50) are accepted by FormDecimal.
  • Bachus form UX: exactly one primary action — sticky Save project. Removed the second mid-form Save after quick-add (replaced with secondary “Go to Save” helper), demoted team CTA from primary button to a text link, collapsed the 4-step create wizard into one tip line, and unified create/update labels to “Save project”. Quick-add focuses footer Save (Go to Save remains a nearby helper); double-submit / double quick-add guarded client-side.
  • Bachus density pass: create form keeps Basics above the fold; schedule/status, short description, classification, pricing, and budget sit in closed <details> (open on edit). Short description is optional (auto-fills from name client + server). Detailed description, portfolio stats, year-by-year, and time-entry budget impact are opt-in disclosures. Quick-add focuses footer Save project. Project detail section CTAs (files / log time / team) are secondary so header Edit stays the clear primary. Time-entry rate/total is collapsed; form errors sit above Submit. List notices use role="status" / role="alert".
  • Rate limits: store / apiStore (30/min) and update / updatePost / apiUpdate (60/min) carry UserRateLimit.

Tests

  • Unit: FormDecimal locale commas; ProjectFormPayload full-form vs API staging (whitespace / explicit zero); safe error message non-leak; mutating endpoint rate-limit contract; FormSubmitIdempotencyService claim/replay/release; activity create/update audit; create-form pc_form_nonce contract; locked pricing and settlement progress template contracts.
  • Integration: soft pricing name/status save; budget change without rate rejected; omit available_hours still saves; create with empty decimals.
  • Mutation gauntlet extended (partial-API omit; form create idempotency); JS contract for creating/submitting guards; E2E capacity display-only + pricing gate + cost-pricing workflows (open advanced create panels before fill).
  • npm run e2e:auth: actually invokes global setup (previously only loaded the module and exited).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXd9HngBUf1QKHN1vdVW/w5xUi6O9J7Boe0KH8CRzsrv5jZZLkMhL8W1VEPm/yOL+LB8hiSdnwDyc2Cat9UvWSGC6KGyPEdysErMmc6JkRNXVgGBvh/CdJbAXlE2anKJ6W2H2yDYwfc3Ps+/FaOLB+sFub8M+Abd3bSnPNx5tYaZyqOaqH0TljCJCM1MPif/1ydGNAMBYTWCM5IRf+ttJMYcM+BQMPHB4bgqd4v4Uo6QqAucG7t6Uaf1Yf4NOILaWuVI1YQCnAc1112SklRo0th6S/T2Oed/WUWFWHSlD4RBHTMQnBgUE3221UaZNxgbC80QjY63ZYk7lHdyk2dQucsrh/v9nUBuWRUpApuUa0JHIIJDLF9/jNbH9LHxOtcfytnchYHGLumiSbT8ALH5LTyDGBn8JffInOtnvD0rxs/YxO4dXH+yQHD/AOZv3PgPh770w1ptBIqd/ehugtTXHH3cXJblYNsYymToxNLbWOqovjjX+9vAOcr62g1s36c8E8acCnutVWWGXaycrxCtBA/y9A10RsfDYiIvCs9JGp/Y/SIYFwIyv+hn+tUwpgYHeXRwNKXN1W4mi9xl5YDypGg3Gn9jFM8BbaNhEPmrw6uUGKKXoPtnbHs73ZZZeGtkVpNsVvSoWM6sLshTWJRqkkQSzVVjjIdekGhNKMh8au3s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.94
Release Details
UpdatedAug. 7, 2026, 2:56 p.m.
Changelog

Fixed

  • Form focus jump (desktop): selecting dropdowns, date fields, or text inputs no longer yanks the page. The soft-keyboard helper (keep-focused-visible) only scrolls when the on-screen keyboard has shrunk the visual viewport, skips non-IME controls (select/checkbox/date/time), uses scrollIntoView({ block: 'nearest' }) instead of center, and clears leftover IME padding when the keyboard closes.
  • Validation / form messages: first-error and status message scrolls use nearest (with reduced-motion respect) and focus errors with preventScroll so long forms stay calm.
  • Global smooth scroll footgun: html { scroll-behavior } defaults to auto so CSS does not amplify programmatic focus scrolls.

Tests

  • Keep-focused unit + fleet contract + mutation gauntlet (desktop gate, select skip, nearest-only, keyboard-close pad clear).
  • E2E: time-entry create focus must not change window/#app-content scroll; UX journeys + axe smoke remain green.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureS6qdQMU9KqtnYJUGV+MChlLV/49ajG0SNSjnXdxiNi+1SxaZTs8SmFB5Auu6H02LCkLVS7MkTXioGah+ht5jntQRWuZEifIEOMf6p8ZNY9JG6TljocKfSbJQ9xjYgY4UIPf01uFou5VlSX/eU/0QYG7s3PUzXLtDzpVvuz0bajpPkUgMLy/O2a+KkQPttDMSw7akgNVKCOoMFMMq9dpKwrM2ArvREKjgKQ0oRraTIYikCB8u1pxR8fgmLc1scsGJAI6I0Kiwlk2+QlIgdyTg+wjc+KDGcs28MqfbfUEDfS85HpimLboRV877TcHbosfd2VglFSDDbdvYRwKXrasg5IDXHIDMciSDpJdhns3uEjxMg7T8a+uGt3CNhl2W6Ybdiv/jAvKc1SujFeVFkcs9Dx+69BuiAW//Mlr8lYbDmAwEc3+acm9JiSXhP6gVgfkAZQcqTgi4RQX77ZwtBTrs8tuTRPpR2XekbVjXIG/1zNO7TtXbRCm1d0n0ZCHVwhIC6dVzuwqDiRRxpZyGXvYAYQH0UGCl3y18qT1h/SYZEk9xLNDauChnWeoTaUnwKvwjWRfPN4c9hJQDVHpOC/XAt7CeyiyC5HT/euUbXLMrmziFN32z/NLQ9pzV7KG+0Ugjp5Cc7a5ZSGAd6B71VbyYerW/DNUDeX8S43vg8IDmios=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.93
Release Details
UpdatedAug. 6, 2026, 3:57 p.m.
Changelog

Fixed

  • Project customer reassignment: empty available_hours / decimal fields no longer abort the whole project UPDATE (MariaDB empty DECIMAL), so changing the customer on edit persists correctly even with zero budget.
  • Danger / delete actions (WCAG 1.4.3): solid danger buttons and row delete controls use --color-element-error via --pc-danger-fill (not pale --color-error with on-fill text), so trash/delete stays readable in Light, Dark, and High Contrast.
  • Empty progress tracks: list progress cells no longer render a blank 0% bar; they show “No hours logged yet” until consumption is greater than zero.

Changed

  • Project type icons: Lucide chips replace emoji glyphs across projects, dashboard, and related views (theme-safe).
  • Project form quick-add customer: secondary “Add to list” plus a clear next-step Save control so quick-add no longer competes with the primary Create/Update action.

Tests

  • FormDecimal / customer-reassign integration + mutation gauntlet; ProgressCellPresentation unit + mutation; danger-button and type-chip CSS/theme contracts; theme × viewport axe and UX journey E2E coverage expanded.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureeQnniJXA+jAAMbsujPZJPSAATUu+y1c2gSpr2psb0NYH0UIwfbV2tpAJPl35oPLhxc7kUVo8J+3QhqrOU8M4mQJTgbc5oZtDEv27sGQKC6kDjBP0X6S2Ii7al8HXSgdZzN2+kWYyJoLJXQx64kLo4HtKcN9u+1VkMi9AimUj8uOYyCohkUqZe6h85th/7fA69a2cX+Yd8P0nXvMcCW1bQlj/CCJzi7QAv6cW/2Ei/RC9LFAEi7SPop2sSvzjpeRCzUdlgfyoQ/ly9liKCcVju1lY2TPwVknr1qwkUFbpMnAtYxOxO3MuFP6Kk8BMVX0mUa1/qZx0XEXGQ/aIEoamsYM7ew3ir4NCHC5X7C2+XQn1k+DYIrseM+5QDFo0xkf+rofHRYlVzncQtA5pecd00yHKgHQGmg955HvMccRYGduIc5sQsNIYwIINwdFN1EteIkDqyUmQfR4e4iU1BFDHezVE37PuUdXM8WBLwWY1E1oH2MXcCJ19II6wdXlcCBaQKWKaRBkTeG1sl/qghPR93bl4ckxSzxG7lJPxskDHSyVOfekP8Txn2FTsljevoo2Oee0+59ax7J7YOmDnx3CyTcdgc8RpysyGVm14WRFrLAtKDkG4RHvRDMTYehTrKUs6/CACbfJqsqvtPbcJJNpZuivC54LnpPzISLReoEEZq2c=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.92
Release Details
UpdatedAug. 4, 2026, 6:58 p.m.
Changelog

Fixed

  • Project file upload / multi-word routes (GitHub #8): route controller segments now use underscores (project_file, time_entry, project_member) so Nextcloud resolves ProjectFileController / TimeEntryController / ProjectMemberController instead of the non-existent ProjectfileController (Linux PSR-4). All linkToRoute call sites updated; contract + container resolution tests and a mutation gauntlet added. Companion /mobile/v1/* paths stay on mobile# / MobileController (web rename is isolated); server↔companion route parity contract + client URL contract cover the full surface.
  • Project file upload redirect: non-AJAX upload success/error redirects always use linkToRoute('projectcheck.project.show') — client-supplied redirect parameters are ignored (open-redirect hardening now that uploads resolve again).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureOTgQFPtVliPwqzipShgEPe4w+3VQF1M75qMB3K28xJOl8X4CSg2lcntTN0323ANJvY6mlEb4UvVWGVy3z4hZf/ZNLD91//wVEJD7UTjNzMGHOx+1++sTOdGuDn0QlHbjV772/AHxaX6jriSMJyP/NLTW5LE4T2V9QQA2olIk5xyzW2vyv6DWNjbZFKLJs69mVeIFNcYUe5uHMV76k7TukV2nNqgAOAWuoweAI3WEBLP2Z+m94iEBztCzV+kZPkMW3iqzoeUma3CS2yVmnislnf1Zh32rwbpEibw46KbXKjGVkKM5Mh5ch8OfwWOYgGyJjwgYxyUxZLx2aslryDJmlvkKtATWSHY4nopz8SUvYiSFrCPBKk2v6xT5IUDQ2ZEmUpI52ClPrYlK8mFI8jx2m59OHrTlAj/WejZ/txnM2i/W47yiuzjcPyNaofsPZJiq5Cm3bQ8z7dIlH4rlBHSrqKrYvzx2bDsGk8DST11t7xVAKfeDG89qPgFBf6PxtdN6Y1n7bgnz0xWFtdJ4KqoiVN2fJm1pLEI7svSnIa/hGwEl5sABVAF/VVO1Af6HGFCpTcSDSlwJfnaHFrGZ/5j+jZuzWJMourg3UZ/qi4KdEYaNkfTtW0YxP0HgCt0a3i7T5+wedxV81Cb4oiclALhhxz7gDMcnIPNuiXmenMhfkfo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.91
Release Details
UpdatedAug. 3, 2026, 10:11 a.m.
Changelog

Added

  • Inline customer quick-add on the project form: create and select a customer without leaving the page (keeps draft fields); full customer form link for email/address.
  • Grouped app navigation (pc-nav): Overview / Work / Governance sections with short hints, Lucide icons via IconCatalog, and clearer empty-state guidance on list and time-entry pages.

Changed

  • Sidebar shell uses main background (MobilityCheck parity) instead of a dark fill; theme/CSS compliance contracts and UX journey e2e coverage expanded.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturegNvKUl5Qi5h5k7eXGFHKz6U4ceZpV2R4li5whj1ZrvOcdrlVj8WHtvkCpstUEFNktHouYBjMyTaaurDA7zpNgSlURLwZ3ij7VPd4y5obhukRHxpLlx9jRAH2/4V+MYvWmMWmVR2cfmbQSESUYfy9MwJB0oxBqDd3cGpdPDazk1I7xVmEMoGJxspxZy9R3+cAID+m8WsOlzzFlNsqHFhhs9VOUgronR8v+aNFSQqUKj5pqVnlIcuBPwCWd5ZWZWyp4slQgzJjDYLLZ779j0wR6XpHeEqw1vXqm3U7oFhMDgvY6HQtizOTeOX1gosOIu6FhvsIBkINxFNXyn+9SuF/fh5zfKwIsuSg1gKYmvudEkrq5sZ3ORX6wzsxMKiGZexAIowieRhGvHq/rLW317CmPZuggqBHBzNNq5iKxgO+6Sv6FTKAM9qhCW+cSeumBalUXpaX3OvrUriAegWtnTiwDZmvwtAQLRmSXkrLSfPMlfSlvKdfBz5YlZfg4dzROhD/+At64zI127EQCO7/i1nz8Hpol/CHflGvK4uBFoYz+Kf9AhDHlLRiA0pryD5KqnzC23RM/on2dUZNqA80Txj4EpI4EzzOBbaLN8vsui2rankOjDz/Il9udz+MZKrmY7nE7Th89AbzIfZbBxbVwGGOJYMDNznBNQ0edoYH+ViXbgs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.90
Release Details
UpdatedAug. 2, 2026, 12:13 p.m.
Changelog

Added

  • InvoicingCheck unpaid strip on project detail: when InvoicingCheck exposes CrmInvoiceReadFacade::summarizeUnpaidByPcProject, shows remaining €, open invoice count, and overdue count (soft feature-detect; never invents amounts). Clarifies that ProjectCheck “Not yet paid” is open + invoiced hours still unpaid in ProjectCheck.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureAuqaJIEeVTjtnT3nxmhtLADfYAQjZ9Rn4ghG7LJljQFPFjV5WWFECr90GbiPUNQLZXb6VIkaKW6l1KyUvpqx9rFQO8fMlRPCaw+sG2VPetp9+vxY1Y42+R1Bxtr/hDsxHUH7c2UDGvcyjX/aW/17ORGpR+QTDPbeeDyMWfOHQ4GE+AotyhYZYHz0KqNKFLSepFqckEOOlk0DBxti5w5YXRStleyKoN4i9lJm01wt5w7/v+5ZcQu4rbi9bnWln4Nm3LON1UZgtPWbHVqqAI4REkGjHg2Zt9VNabgLogV6EOe4wHdsBcDpu5XRmt3yw8lpQ04jg3u+UObH25qNy2jN6+RnBTcCK1GPiO/32aygrxBBvA9/9WVGOSGpOB82VZF5HDLxphL6P2GVHKYAuxIig7T8IPZlOrEmcX+hhNJMYXiMRj2R8p2uuDbSdNKIDY45KmDHy7FIGf31BrLrp8ssrAVoOEiT0Zs2PxHg4VURn+tRcXOdG7EWRcjs7lqvRlzR2BkYJk6oJ/RP2Nl2WDTzpiSSQ/BWB2RolZlR5Iao4yPD7Xxw1V0ZRajt80zE8oNNuEhvgtx/HfkHLPm5BzIjyPmJCr1y8f8q5PgSU5qNIanfp3HOrEnmt3vVW7Eq06Gi0DcLi7DIsWzHQjx3csg4bLCYA6r7BbURnk2w2+29nZ0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.88
Release Details
UpdatedJuly 31, 2026, 12:22 p.m.
Changelog

Changed

  • Packaging release: bumped version for App Store / GitHub republish; confirmed Nextcloud max-version 34 against latest stable 34.0.2.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXK7qsUG/U9eVJ0/TnvVQppGBLAyUfo/56Dey0poQVeCCdQPHnjKI3nt/odTVYGRkOgBJbWPRelkEr/gkKLVsPmATKiBWGQxafDA6y7cQ9e0MbdoO+kemAcbAAPgXu9kLTkqOf12jHylvtGVrR41FGfxHs57Cu076pIvPdVbQikKT5OVZ3KXByBKjjOtZ1yvuTw/91fTXEaBu4NW8J0oTAqnD3gusPgd8mZf4bBh8sUlwbbS6VpsvcUQ2Sx8rNHVlqWJZfD47K4XxQVyYC6AAfgUR140FVeX1xXIXEkfYwEhBhYbmnQr/Kpc6mNd+LfyOEXWT9cYrfXqrdhThsPM0xCZFHpkrC8Po/Z3OUFukpMngSdtNSLOANQzMzaKr83XRQuXCklcK5VplSxPFXWuFNzF6q+u652qNTiKpmtYPOiit2Qk6eXL5sYQ/W6+oEVeQ69pN7nQKZ5reD2NlgqWc3D0Gs90JZtQgCn/Kjp71WJkgdf3qQ6QT8xkS66JOFyL2SsVUP2noycoOvz1Q4vzJ1ul1AFvO5yXKQ7r/956zy8W5kmQAUKG8oRGI9ALgobpUGNsu+fhjonWsopUQRlSTNfBv1+bmXgY18+yytlwJsRkq3HjwUHaauIhy7D0tBbuuh8nZyYpeDDffEFiDKOVdZ/vB0kCF0xVURUTcjsg3ICI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.87
Release Details
UpdatedJuly 30, 2026, 9:22 p.m.
Changelog

Added

  • Public /health probe for mobile login reachability and ops (no version fingerprint; advertises mobileApi: true). App-access ACL does not block this public endpoint.

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signaturem69rhA8Yj8a4Xu0Xj5Uj/RLXSOzxjeIflt+emX1kwICGgwYFToN20lgLV1EBG3OTMCMVdZiUhB2lYtLJvycKBvKssOYKMzU2Q3b5V2NFFKaG/nueYjwX3a/hzyomrChHLWnGpg9V1AqTbuc8VCf1r/qsDgBIOMK2V2D5lHG5XKzxo2eKcx2FqD4HkJuaY2KsLSSxkhnK3K4okarb6oRIgUMxjD9WKZZ9wfP6tZajSVyZuj+QiYsNSbODb1x6ncR2/spxOq2EGlIxtndwWk1jaK4i3PmjqUFR/m9mJH7RVRsoKCSybr6230V/aT0jFREtYllBQwmNKFB8Po1EPaj/4YdLAAbMFL6faheBzCb7/Yq3pu/sw8wu+rpgb0GUVHWJrW9gWjShXojJYZPatY55BxtNzvDaZRGe0eRAeyOn1wP/8A09EejNN9JyuHeg1brNl8uhQIza7sKhHHc2yvAXH4+h80ztNTMdp9gZMaNAiohGEO+yEXNvEE9UcaR/qmSkq/TmIciSYQ4IcoqXXxrnfnbm+JUEPaMVJLT6KRKQHgr96t5+vF0MRKuBctE1fKpzMDBXL0xYPsJRLlbEoKrQsIF055dOEPx5qgq1Hv5cQLNqBpDYYVzElwzsFvImHhVll2yUWXXOIpLLCOmRt2qfHErtVPv/6VqAMbix1J6iqX0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.86
Release Details
UpdatedJuly 30, 2026, 5:22 p.m.
Changelog

Fixed

  • Schema repair: runtime/post-migration ensurer now creates pc_mob_idem (same path as license tables) so a marked-complete migration without the table cannot brick SchemaGuard / all ProjectCheck HTTP.
  • Mobile settlement list: returns hasMore + limit when the outstanding list is truncated at 200 entries (no silent incomplete AR view).
  • Mobile settlement apply: response no longer invents totalHours/totalAmount zeros after apply (counts only; money stays on preview).
  • Project list settlement filter: stop TypeError on PHP 8.4 when filtering ?settlement=outstanding (named parameters are IParameter objects, not strings).
  • License panel: stop claiming the mobile app is “coming soon” — seats copy matches MOBILE_APP_STATUS = available.
  • Settings page crash: LicenseUiStrings::forPanel() no longer calls $l->t() with %1$s placeholders and zero arguments (PHP 8 / Nextcloud LazyL10N vsprintf fatal).
  • User delete DI: UserDeletedListenerTest mocks MobileIdempotencyMapper so seat + idempotency cleanup stay covered after mobile v1.1.
  • Icon gate: IconCatalog includes every template data-lucide name; Lucide validator uses rg --no-filename so path prefixes cannot false-fail.
  • Audit gates: PHPUnit prefers Docker nextcloud service when the host has no MariaDB socket.
  • A5 analytics: yearly/productivity cost aggregates use SUM(ROUND(hours * rate, 2)); user totals use Money::mul; rollups no longer float-add costs.
  • A6 mobile: resolve-hourly-rate is self-only (parity with web), blocking teammate rate preview leakage.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signaturei6fql1okUsNDOVX0DftPCQc1vGzw3SNuke6+O3O78+gt8YF5WtNv9tZ1AboKtGIWJR6CviiDFkF4ae2enZenLp6KW06Xn3/MIDwfXap5MVb6de2mTjQU8M2GsrY4Qr0EDVgvrYCNe0Un6Vvhom0Llu4GNNL5oTwPeLqy0gR0V46f/eXXmhcuX+C/EiN+Gn6m+URCe1pIj3hSXPNRGfCapWOUIjMtTpPw24Be4pHI6CwucSXjnX0JDKuxLPmjf+6gigdzFvgwLQxwQK3XrPctza+1W/sTjGtfvalj2jRUYetBRfmqz/CqkmoJGnsNmVoanKO4IF+hDsOEW3ySevdBmtALIyyUQebwMWyhqzLF3sBxM4K4Yxmsg8CuIJTBY9dQ7/y5LvIxxr4uoaHnZwZfAXgSPYi7+YjfmGYJyoF10nwPNzgUWXs4ldlJhL1rXa/keYqZ7U4pgjkbFONMKBh2HJWCld7yJn+NbyokC4WQ0ZB5VLR35aXAIc0YgMgcY4KR+UxSq6ZMnuGdUi5BsoscEHCbDJNTsdCYAXULW1XajRwv84+UX/ZiLAp/Dza/Z6Ye687JqL/NJnlH7sZqyIJpUVVcihS5ZVMo8R3jWZaGxedeg2tbIdhafLmhRfKvTSce5LhoTnyZXKnuVMVF4EHaIVv12HORSFpVU+XhJIFFnsw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.77
Release Details
UpdatedJuly 17, 2026, 4:38 p.m.
Changelog

Added

  • Shared list filter toolbar: projects, customers, employees, and time entries use one equal-width filter grid (search beside the selects) with consistent select chrome, visible labels, and theme-safe focus styles (WCAG 2.1 AA).
  • Theme-safe productivity / project-type year panels: reusable partials and CSS tokens so analysis blocks stay readable in light, dark, and high-contrast themes.

Changed

  • Settlement summary strip: borderless single-line metrics row under the time-entry filters; bulk settlement bar matches the same chrome.
  • Icons: Lucide / currentColor masks replace fragile Nextcloud icon-* + white-stroke tiles so budget alerts and list chrome render correctly across themes.
  • Nextcloud compatibility: max-version kept aligned with current stable server major 34.

Fixed

  • Settlement bucket math: outstanding (not yet paid) is computed with decimal-safe Money addition in the billing service; mapper/recompute accumulate when legacy status labels normalize to the same bucket so totals cannot be silently overwritten.
  • Broken CSS selectors from earlier icon migration (orphan braces / truncated rules in list and dashboard stylesheets).

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureVds/ab5zlTOdi2KLkWWkagkBgvkZ+7Sb+dcaGlIpCUdKdgb4voclMfcrzPVbmXKJseB+w7nyPGYnE8gXhMsLbM48+yq+8vDnq/dQ93cQWFG65FJDZuY/uoE9QgSJ98/bC4fE8BEDv7dTd6RVdihgmfPmF5dv8kN7WMG46QFF3T/y4h2QjYKvHQpNwomL/cdY4+hfWcXy83j5Z89tEdceNLgC15EozgZNHHQbovVdU0ki2UK6oFpIsMWpBRRkcVxWZ5GoC6M8Oj/kjTGkPbir7Qmy0Y94zhrQaDAXEfm0rG4f+8vhI2Dks3F3HqPfhEiKRSQBLomrRQ+IR82RVGH6SfRyA8ehudNDFKhY97NfNGNSTbekxOkp8InD+hCnfTaCWNc8WlYD7xpbXpPanpRF2zuqtM8C6+ZpgTQughcgyHR45pfUNTZiIDILyeLIac7/uh50mHSm23Fy00g+WzXw8m6o8zuWGVReCT7nM25VrnWpdRcTrEuWIeKawf9iIELHLmE+WffCNcxeov5NsdoJYZykBPPoWaL+vjKfE9Fg0+l6Ll0pHDfVMhXLKkFcvevIWgllmlbptQ0IsMyX+anLDEw2lDtzLP78JE5MxE8LDA2s4x7KjGOnBMjvM3PRoUqInql0+CBCj1oKhNftwXV7GnqAcJtVP9vCaQsavSKn4Do=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.73
Release Details
UpdatedJuly 16, 2026, 10:59 a.m.
Changelog

Fixed

  • Project budget edits: saving a project no longer fails with a generic error when the input is rejected server-side. Users now see the actual, localized reason (for example: hourly rate required when the project has a budget and uses one rate for the whole project, or budget too low for the hourly rate).
  • Same-day project dates: projects with the same start and end date are accepted again; the server now matches the form's "end date must be on or after the start date" rule instead of rejecting equal dates.
  • Project form: the edit form flags a missing/zero project hourly rate before submitting when the project has a budget and uses the one-rate-for-the-whole-project pricing method (a pre-filled rate of 0.00 previously slipped past the browser's required check).
  • l10n: completed missing translations for the time-entry deletion hint and the start-date validation message in fr/es/da/nl/it/pl/sv/nb.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureQYabxyQr8Kb1t2VRdUHTR6Mo3eIdMMkDBB5Eif70Z/88JvhjX1RWkJCkBo9DnYMHGqgJDmRaNuLuHf5ahOS/Chgj0JgFO5JsXIHbz72mwBy8YzjGl9/JO1vzAR73ZJHtdDDTMM9tqKkVJzb9RC+1vMc0gq2nUYUogBjnCBp9fYvwGg/U+i24G0I8WVM+2/3m+xIS9NnLXqKuAijADZox/WcmkffmiJP+vRHDG4wR4GZMeWt2s3G4ovBeBZEl47tzsb03Bkj607VZxPXg7xfU49Suat0KZQMhebZnWQrBDybHg36vq2fSU6eDppkODzUtEgS61EQp3YgvXI4J8ZQX7MvOYabe1Ni99xbrbJ/lqRJnCrewY6oTmc5FBMxfcaOCy89Xv1SC1H+N95xzxG57KFmO/pOgR2u0sksJInTRtbNtQ8/DHu1JCXEi3pACga7tOvngNF6n44BAJg6rN6hlGnKxuQRYpMGb6ZYTmGy+N3Ud+/a+TM5Kprepoq071YV01OYjguU5NUMsUIPNERdwh4WUuZlitJ8Mgf60B07f7wSWSJNYqLh/+c+DBO3DRxJbwiRWsgEkWzI4RdAn1E/LLsQKrY460eo0SdvByCGu+qspuvPuBccPKTtEjFsq1oeibp0/jFwBXxhrcK1LO21Je9+167n50xsWVXlPZXYsgK4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.72
Release Details
UpdatedJuly 15, 2026, 10:26 a.m.
Changelog

Added

  • Shared list panels: new list-table.css and stats-panel.css unify filters, data tables, footers, and summary panels across time entries, projects, customers, and employees.
  • Time entry delete from edit/detail: delete URL wired on the time entry form and detail pages with the shared deletion modal.

Fixed

  • Time entry ownership checks: TimeEntry::isOwnedBy() uses a timing-safe compare for access control on show, edit, update, and delete.
  • Stylesheet loading: shell, layout, and mobile-nav CSS load as linked stylesheets (via EnrichTemplateNavigationContext) instead of @import in app.css, so theme tokens apply reliably.

Changed

  • Page header: inline breadcrumbs, meta strips, and action button styling aligned across list and detail pages.
  • Time entries UI: refactored list JavaScript (shared hour formatting, export guard, row action icons, deletion modal integration).
  • Time entry form: refreshed layout and styling consistent with the shared panel system.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureA8N3GN0KQ003e1NwlrVnB6Nd+yy2q7KtwFBl7T+QdBCHFIqwnmCcDhUvGIS22lp3OyWeBVanJ6qXbjMrq/cLdjeB+yEEybNSWlwYrU9b1chDMlGoq37gL9y52x7jWF13+w99GEwX097lgPoOORgHt0unR65Wohlx2yiGansj043keY672t3wSalLp/QaynywwzmnGUUfKHMeCzp6OST1K61BTm4dHMTiT1epvEZleYmOQjP+RU0NiwvCpcRWdy3J8oyb5HTgF6zCn6VNG05HwT593jrKiLupIOBovsP8wJvx+1BYukbbk0U7V32t9a8EYsB0VZ47KcWYUTX6/jlsiBHKzvL0Neyr7bHYROq76Libe0KXxVZqOQcre6RjXSI1U2f102Zz3VJRcvanfxgiQV9jb0pJowG+10ZwJApug/3C3pn7/V1e0l9g3WRh5GHddPMmZ4MicxW35dDzjEod3fES7ofQP1u0Q8voBKyhqFcMGvln6e5NR4ZX16GCm9UYnneKj6jo55aFhQzJO2RsE16KF8OouXnBYgJx47+b06tyoSmEbC6PDVC+vF3QouvTwmD/15T0WLOZjFOojFeQsJWcyPooSUMrvOhQH8eDMrOKbqOKNhGXes7SHeTr4QuQB5NwM06W4iiEHexRobPa8EI8IZS9OSWlAKeeM4jIOtM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.71
Release Details
UpdatedJuly 11, 2026, 7:42 p.m.
Changelog

Added

  • Upgrade backup: Pre-migration repair step snapshots ProjectCheck data before schema migrations run; occ projectcheck:upgrade-backup for manual backups and restore workflows.

Fixed

  • Disable vs uninstall: UninstallRepairFlow preserves tables when the app is disabled (including auto-disable during server upgrade); data is dropped only on explicit app removal.
  • Project list filters: Qualified SQL column names fix filtered project queries on some database backends.
  • Admin settings: ProjectCheck settings moved to the Additional settings section (fixes broken sidebar icons in Nextcloud 34).
  • Upgrade safety: Repair-step classes registered in Application.php to prevent ArgumentCountError during occ upgrade.

Changed

  • UI: Shared page header section and refreshed list view l10n.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
Signatureeng1zY6yCI6rY/twlw2TCyok+4CH2jvBuCqKKO0Tsnrx7Ygip97oRdGMprlv2AyvbKbJpQuf6Vna18jdFqlp6OjvJR614ii+pnHSHYlOA7QLgAoACSHiFeg7GebXw2orm7I/JS3iIrwZizy9mkTUcThQK3nfHJRTUMrtyNpzZ3rZbO5ZsEyy3CNfOXYMJjAj7cXu105L03+lhl/nhDiDDJew+xOLzFvIfnQEUZCZfRiC6G1kd6qvzxM/cs6oSA8HdnTeJcD7SyMGwwjj2iTOP8yp7jp3fyJgxDaNxvyq3bNFsbciLz/q5wy0qrNdh9dZ1GgPrr7v1O+clc5j6hHIv/sm6K73nC2YnKq0ZTZVHNSi/hfJf84Cg9X1vBx/wgkmgOBefcgBJCwFogyHQXdoiIyqN2IKHTR3uvgKP+jMN1Alq/MQOuIrNqDkwSjoCV/KMUlDXMUzESFIVBvX9/31Rhsx48pmXFGBMvuJ6PAk0xzs6OHZ7oHEnW1ntgpt4ggWdARJyPIz7QbcYJ+a5A4f5UZxKxZarcG7L7+TaH0IrOya4uMhKwjKQujzH+hupQJVHbcW9a1Fzc89HoANVkrqzd2i5+go8YRT4jp145r8FEdV0CHnktmz7AKEowynoVdTh/7nfd2pN3apmZd89a9Y03aXyLdibD0HLPhUIySzJKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.69
Release Details
UpdatedJune 4, 2026, 9:20 a.m.
Changelog

Changed

  • Release metadata aligned with the latest stable Nextcloud 33 server line (max-version verified against upstream).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureGUaBBYkMSkWC1bcIjYEkBryjwY8I7LadqIdJTCQCpakQjPxx/Ox0bQXrONfEGeB/BOCjuLlM2ekYZMMoJkr14d+wj2amWVpINRlj1Y6ZoKZirlHOGkfMggXvJR9W5XNyfBJq0urFXeAtN3N6j6+wLHKhL1sZrdDWmvzu6EaQdGnj5spZO0+84bh39k4p9t2aKmNg9USaJX5lOiQW54Lt85BVxn578zvPyUcO9go2hXamCSUBC/O0wl9fdK2kI8rzSQ9UrVR9NSUpMzxvKOWIkZ8x0wtu09SPtYapCI1tfF5cG+pYmx4cI9nfMksSRQGi+JU/cMVmPt3STHb1KXmsYUr30lPWvKx6/zg48j2Mjc19ytUOnTPa00nIIq1emrXNQsRnYcGIEDBCcOwvBHo4P7HyR22QYOMKOW6SSBMbdw7MxmjchhJRrzaA9jDv3/y/jbpoJe/bxMzbEc2vMKqx2ZMRa+/qRuCx6qD3/a1yGkNbRC2Oj7tjMftdvsAknut2JZ38mjI+HMbZ/rZlMyjm//MXgXbycU2Ji7cUjKQ6yY4Lflfm3c39iN/5O/NcoCLTLz4/gZjcuhT8c9dKiLT40Cc+g5DmkjI4bS+CKGTi2leVlF6bbY0ypp2NxKDkcRoSB+bPiMeYbIizAswNzkrP4XVxbMkd/9su4nznqBWsspY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.68
Release Details
UpdatedJune 1, 2026, 11:52 a.m.
Changelog

Changed

  • Mobile layout: responsive CSS converted to mobile-first min-width breakpoints across shell, navigation, projects, time entries, settings, and shared components; desktop (≥1024px) layout preserved.
  • Mobile navigation: replaced the core floating menu toggle with an in-page Menu button in the page header and a slide-in drawer (no dimming backdrop); drawer sits below the Nextcloud header with focus trap and Escape / tap-outside to close.

Fixed

  • Shell layout: page title and main content stack correctly above each other on desktop (fixes flex row regression on .pc-shell pages).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureLylxQMPnLSwM9sb0G24+afSvm+VVzsjyEbe07qDcij+UQDynpyBDAYk+LY2T90pbh+MmJ8ZN3ov1WnGnbiyR4lxNm+Kz3/bN953tksBEMb9GaUBGIaWFjU2uKqUjcM7GIzTQLLehQAW/2wM8AiPOCRQ4z9tbo2W8SE9G/i6j9H0eLEdW7LCzhbWO7fXUN7KEClujbHl6bDfo6UQ/LxiPCSInzlFhvB0LYGhX0dE53zI0fKfjUIjmAFwPzAqKpFAHqc24b0bQbDBLA7ctuWvYqLmndG1IwZ2i2a5diVlLrrTOQsdBgLEy7ZMAVJ+RVIXEaMynCeFk9W0RsvJn30fzX7mBKFVfB3ARNPy4RaaJ16sJYRhMUw7Oy06ltgqReTHUt8vDDKOFSJ8+cw8i+SOvOVygDFg603+BLsx9mne8DKJUzdhPlV6O5fajKPS2hui8O8tbSMgy52gQE29SJftoIYDJgthF5XRG39xsIJXI061+vd+4u/8+VSF0XkMoRTz5tRIS3D6OKF6gDR5+YZEAbBHZXRCBgt0HHLM9RPDDfcPjiN6uSa+7vGEw/Cj5ZvOeQ0G/besE8yWsLrNh1gl3YCmk1GOZjErRzT8GAoCoDVII+uZ7SbtOQ9nJkf8PPIzzQy+wkKG5r1AgYij65HgKhZQFjBaOv9OqW2zXiD4TcSM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.65
Release Details
UpdatedMay 31, 2026, 8:20 a.m.
Changelog

Fixed

  • Employee detail page crashed for admins: hourly rate section called non-existent OCP\Util::getLocale(); now uses injected htmlLang like other date fields.
  • Hourly rate workflow: locale-aware rate history display, client-side validation, future-date guard on effective-from, read-only rate history for removed accounts, and API rejection when adding rates for deleted users.

Changed

  • Employee hourly rate section: clearer layout, WCAG-oriented form structure (fieldset, hints, table caption), and responsive styling aligned with project team rate UI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturejNE9yDimM3kIs2s9qMXIVHQI928LSzM78jlMR0qzy1vnVB1sdDHEWUyppmpd2zcqlSbmzuL+Znru9tGmbtANUYApSmZbVk1boqbiZF3YSUXaD2bWiADtXZkc5zifV4lhaSiw60tHu7muUX+NhqpjhGQZIDOKW+RSj42LIj5pnmrrG0gQvuaoEHj8ya1R5JPVV1Fbb04l6r+H+/JaWhLhyfIZgWiqkEgO4FGHzrID8nFpe+VkSaNIlvgw+OydAwo4JED1d4JZtV7tCUUGjlEDSLswudvcUNJqzOY+Jw0FAhva2vZ/ymLDjyYUDrJDBvRF2nFCe8PH/VRr8Ngs5RZQOfiL7J49mUMII+jxT/VqoRw/F21xEoa6JtiGsio2El/gmZ0DHms8+sCgtqy0JazcEMPbwqeRXk978RobsYN4AMhAtbemwUX6eWIcecmClGL6xIwkLjloz1Kv7oqGos7KJLZmeMixGIC6Ffxr6nB/AoT8PYt1m7SQjjC5KIzfmD8k+/QHKc52zakt+LKSxAPH/HP3CgefwuUN/dLFXM9dMSJE3Ibot6XDORmeTkKFZ/oNqGTeDNBciMC/S4WfjV0lvAIYUDi0FgpTlZtz31mpk/3tEJN9IKjZpXmGmixjnWLgUpXfixl7EHsLfLTBgRYOYD4zgQOskdQjrHq+7S8UWxU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.64
Release Details
UpdatedMay 31, 2026, 7:43 a.m.
Changelog

Fixed

  • Search field magnifier sat at the top of the input: global .lucide-icon-host { height: 1.125em } overrode the search icon’s full-height positioning. The search icon host now uses height: auto with top/bottom: 0 so it centres on the input. Moved the screen-reader hint outside .employees-search so it cannot affect layout.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureOVeEKvyU1eqmDB/dZhTVEc+h6+iftPxuE3ykFcHDZytBEwym9Nr3Ki6qK7HiradAthJmXcepi6r00vhYt4UeyOMYHRXKP75tS9zG6PgHx3NGekFROL82SACwMcLlpPiofmn6dMYUakieuGlNcG2IzVXG1oKZzP2UfFeBOUUJhBNGliaCJXsBpZPwg0aH1caT7iFus7PwmxYKU4RMC2Kil/59NbbOU+OpYPoTQJeDr81EHTX2OOX3CmdPMH1NT2rvB3nM8ZNFV1n6mmTLC6irjod7P/g9wPK8dZa3BsYFD5cuDRokKI95Ju9cgGkGMXTWGVt2AQgn+uWgRSe8j4C8mCDGQyt/8Ct1d27+VZOX0JYv6Z2aRoGUOAQykprvN3A5PUX7xVJtHpYo9CWotCDQVbW5neN4uMpFGs+kc1foQFIhqlIp6APktheg/RPduacg8vlWDdXRmFKgpKjLJV74Oy3o/N9/H4KJY5yN6e4MhvoiH36QssbzHOs0tgcR4rVnj72qSre493mWF+hdU9m8XTyqumnhK0448jWgrxXwkCpSZdjUbVvbEyM1o2XuxdgWy/HBIGNaatQsLwABikJ/9UdgjRkkSMyXec7pX5g6RuhXlzy2ygis03ehbXXroQLDFIkHAj3I3mc2SlWo0QgfqA7Hvy7wzaDVwIJXpHggonk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.49
Release Details
UpdatedMay 27, 2026, 9:36 a.m.
Changelog

Added

  • Project edit — team callout: Prominent callout on the project form deep-links to the team section on project detail, with permission-aware copy, member count, and secondary footer links.

Changed

  • Time entries: Clearer admin override messaging on project detail and the time-entry form; tighter server-side checks when adding time on behalf of others.
  • Team roster: Improved rate-mode handling and project mapper hydration for member lists.

Fixed

  • Tests: ProjectMapperHydrationTest, HourlyRateServiceTest, and ProjectServiceTest cover team roster and rate-mode edge cases.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturepFMdGFtPWEr9Qp8FzVqgXTZTlFHZ0d8bMIFDjYQeWSCj7uj0P3E7ppETt/OgNyWWZvuyo17EF60gAABXCS09W2ogeH+eA5pQftgbdzwUPuCkgIv5BXmuEyoUncPQnHv7mSOTyIzVsahxGExkVZ5/qxTMht/y5sHbN+6BWl9MRQ67X2OOwuMzW5P6Fl9muGt0MvtFsLzBJj+syYq/8n8vFnEX1Dqvo59Xu6ZxDrHiQXKhYIaRURfm2yysBh6LThqVA3FUM/7nJVfPi58ShlY/M5kMkqFLz8Zmtu0+TP8YcEx8XkzRJhDxZGsLBJxPyu91MixZLIMIg8PSXyK/Nidu4cEatqn/ml/tvwPZHbW2x0v9Jg9HARHMnU4vuubD7gOcBoHmm+Fy/5TkbNSrQSkpdNE/fvcjxZtHsnF1U1wAxKtqyZ+6tJLR+PUq8372VFH6he6GSBUkE8Y8gTzAiql3eZyYQUSHN1ioR/2gJ52eTQvL1Hn3mZPU6urmUzBGNdwkpxty44CqxCmwv01cwyLdbffL04E9YwHLwoAJr2CEcFCY6KDPW+HkZvEDamSZKXC9WByHvEkzWWqyVtoC2sVmxzAYjXK3iU+0uvSw8IgyDVK7yN8LGQ8+cMogxrYAENGED+kn6BS/HTR3CSBeUvl/TLIzirKUi8oY9QTdBTRCOjw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.48
Release Details
UpdatedMay 26, 2026, 7:29 p.m.
Changelog

Fixed

  • Pricing mode cards: disabled cards no longer show the primary focus ring; styles use :has(:disabled) so locked modes stay visually inactive over :checked / :hover.
  • Project files: refreshed upload/dropzone layout and project-detail files UX.

Changed

  • Rate history migrations: consolidated rate-table bootstrap into RateHistoryTables / RateTableRenamer; added migration Version2011Date20260526120000.
  • info.xml dependencies: declare mysql and pgsql under <dependencies> for DB standards linting.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureRf7tn5ub6IZhmWnoPwsND54Rryv7rHuCcUqTUTy07iP34PMY0BuUVg2QkK7+fcesv6BM2+s3iMcfeCvtf4cwyRol+Rg0gKJOrXKchdbnIVJrlHnR0HV09BZaUhRafqzn0DqzuTPRwb5n/ui5MyqQyqmRxPtmiXUCbvg+1dZuxw9MjGPzHlZ6FBNy7cKCiz+jXhnYOhCyGadmZSX1EwmObb/S67MUaip6BzOCwdvFDGeXhfMYkYxqcQ8k6200EWYlqR8VkAsT/RQd26eCAKpwuI4HjBnj6DPTO27v/kZ00/frYs+8aUAcBCtOppRS4Y0Eqqa2dATo0DWzvYiAQt2Z6UkSTY7soYekcW6TdIdiUcl0c8qasqknkcj+ym9lBBPkQA9mKUyM2K7GrkBtjFfiQ4b+4ttO18Bir66cD+VC2rrpEo2VxVyPsmj1q8MZDg+bZUCFMTAE/oxAaik5Nl7GxVLVICz0snoUHQwTCwxwGnyGxg05j7MWE7GqHJCJ0CdsQgvBGzX2X9/hoV64V/Uvuj6SlPYWicjh2RbKRHZfQ7G8T6fokO+sGul0odDJsYV8rG4BPGhpTOFGFk+56wJUy1obEbPaBIcpD4LypYK+27qt//YCvJnfTV5T5XmfCqQPFG052OXXawKvf4A82CBhrLVdsqwO2dX6O60KBIJ0GdU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
ProjectCheck 2.0.47
Release Details
UpdatedMay 25, 2026, 8:05 p.m.
Changelog

Changed

  • DB-standards alignment (Oracle/MySQL/PostgreSQL portability): every migration declares : ?ISchemaWrapper and wraps createTable / column additions in hasTable / hasColumn guards (idempotent across replays). Primary keys and indexes use explicit short names (pc_*_pk, pc_*_idx). PcCoreSchemaBootstrap helpers now return false instead of bailing early so re-runs after partial failures finish the schema.
  • Budget display: "Over by X" instead of negative remaining. BudgetService now returns over_budget_amount alongside is_over_budget (computed via Money fixed-point so display never drifts). Project detail and budget bar both flip to "Over by X" via the new shared templates/parts/budget-remaining-line.php partial; the duplicate "Over Budget" breakdown row is removed.
  • Time entries: moved the filter container CSS out of an inline <style> block (with CSP nonce) into css/time-entries.css.

Added

  • OCA\ProjectCheck\Repair\UninstallDropTables + <repair-steps><uninstall> in appinfo/info.xml: auto-generated drop list keeps every projectcheck table ever created in sync. Disabling the app now drops all pc_* (and legacy) tables, migrations rows, and app config — no orphan data on remove. Regenerate with php scripts/check-nextcloud-db-standards.php sync-uninstall --app=projectcheck.
  • l10n: Over by %s (en: Over by %s, de: Überschreitung um %s).
  • Tests: BudgetServiceTest covers the new over_budget_amount field.

Bumped

  • Nextcloud max-version: 33 (latest stable major).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturegqUw9DiaEeBURXZU8t/qtt0r2YxgXSBWSBWZS12aQx4vtgjnOKHNdxDTCqd9fUwq8DT+pjgGhljldseTwVl69rzyRsUaPstTJKAfR5rgoJvk81wJ4SAU+4AxjFdOpA1IJEYmGX4tIBKP/+9sE3DP9yVDJy3Dzr1gBTkNuTc3iJ+Ny1noxQBdotlDck+RHVG02Jn2XVXRr/QNYOlRF7i5FxxSEAPms8NLh5QkhY8vOvyun2LkIywYpj2QyY1hIqcrNaB2ii6VX+g8SAjmQ6kVUbjKQ9YF2v4yvCMC9Fi1E8zPzkcoDP1WT9SHHxZrxPGunxhQXONZcR1557pheHzOwh8oS8P+/rXf7XscfIaBZf4yhpCNXqbanLpPuuAGzFs7ASAAwUrl0fvJKKCTxx1QxQQdCUk5peb1Ur/GC0S2R0bRWKAKNaWHNroMUQZpRs/Lu6iIT+w9wyXNy6bnqNOgQJBVkLIppEApnNaZek3wXUcDkJ7GCN01qG0VyYJXx+wDDShg/IlMcGD2S0ja3ym++3tDUxHoO7RDxBGqcS9RKUjcDLncg7pUl8DfPh/peO4/Su9srWd1/xnNS6LfNqDHMax1ql6YfCA+U0DWzkNOMZ2MiomsmPp5Bb8l9JhD0oNLefaRTTXs4m0kkQgzO5J7+WANgQFi/8VdPCkVY48FpoI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.36
Release Details
UpdatedMay 12, 2026, 12:09 p.m.
Changelog

Fixed

  • App Store: donation, website, and author homepage in appinfo/info.xml use https:// URLs so they validate against the store schema (donation requires pattern https://.+).

Changed

  • Release: Nextcloud max-version set to current stable major 33 (upstream lookup during release prep).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureNM6Q4VtXW2Q8c+Mw9DVfI8ALhd8Ete/S4LbnMOuKoWZIVka8TrDtWAXEkYPW5r0K7EO4EnNeM3bT38Y2AZVAPDC5t29HvJujMZMDxoiAED7025B6so/tFn0bkjEW+KSGBZpJayQ4lsG8CDOSMhd0uWWQAVJngeDZEv4WWvgQr2XfTYfrWYOL/HJIT2dhe8nm3nqt6Q7Hd1mP2lcmIMDi1oMPXqqHFsBWgLmd3SYp0af9WB72JrOK1xeg9906XudWQFXfAEMF4KxfRbMrXhTtgG3g0Oimiij3uv5DKA9Glxln+VT2OeRrgsO7GKHF8kdstjOTCf9M/uQO3/KPFzIpMKi4567nviRODNn/NUzYoRr4vlUDhoIzNIhwb37k0+ynt0CH9RUrvk+6oJqOiMU6XNQ3ZaKjXyLVZ46dlXXJ1XEeGboW3vxHy/wqLc5Dz+cIQpNfVBY8ypI9oSJeevBNIKPqsK2+YCF/JuG3l/Ke5U+RwpxIKjDLP22jUXNo2mxM1pcPcmI3ZPDO1gJ11EC3UxHTjv/lQ3kjajzCO1XlCHGZAd5vdXQJvszmijpgkCRcWzlG4ZXvJ/4hZ627lqzttppCz19YORrlW3UdCHW3K7HGDa/UXIYRCiGwUwOeFyS0g8HhVZMTGX0MOIVXQTPLS2Qxl7xnBbgdS3CLtNgVB68=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.32
Release Details
UpdatedMay 8, 2026, 2:24 p.m.
Changelog

Fixed

  • Budget overview: clearer UI state handling when loading or when data is empty.
  • Organization currency settings: stricter validation and safer persistence of the default currency.

Changed

  • Dashboard widgets: prefer dark-themed app icons where the server exposes them, for better contrast on the dashboard.
  • Release metadata for App Store: version 2.0.32, package alignment, and Nextcloud 32–33 compatibility (max-version aligned with current stable server major 33).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturedO/Jb949rBMsANjsc0inHR1+6a81vTiFjPymmHwI4qtaU5+anUNRgN/542L2tIfpReL1nnJyr9iuvZpK3ipMbZM8B8zTEUSd0+89d0YnnCbJuhS01u0XMe9DBk0qOWiYZ7UPsHHUgiN4X9oZYeEabyxDXU8XGuNda63kWS7U/mgjR3obYpu5c3TGJSmNeS43ol2eT9bOZkXSetkoyggWhjK/QqTU5kNBIJQvbdNyzZv9QBv75262SWbY5oLHJeXAES/1Nf1trxxR47XZwBb5kTk2GkGrqDtulkdqWdcOjiJxowj9pGB8Vz37JmRFNEH0yubXI5k7wpQfESbxyVHJEJsDsVAP3RW5IVKcJxKKqLqj+n9KDBq3OmNJaKY7oWZKVpFg0q8BJLym2w4FUYLP61JtPVXyY/Ms+STiRPkft2j7/U0wB1vRpGc5Y14xUXHRcEHlNvOvp4lSWSB5MBg6JoKXyetTGbie3dhKZn3AYSEKpYvHx8TYTm4pVgKgZlFHKScZlCZYoy0V/qHu8xXCszLgTVwc8Nllmqt/f6nuQ/8lWLBwaWC2/piWZJPDZp/LOAqHq2V6oFUuzWchvgojmkQp0td975INp5VGaRzQYPcYYAqfqVO+m2zFlK/Lo6TAKmaJDXD8rheb6jEOsGsnDPXe6fNKrDDQrbo9wmh58Rk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.31
Release Details
UpdatedMay 6, 2026, 2:57 p.m.
Changelog

Fixed

  • Time entries page (/apps/projectcheck/time-entries) crashed with SQLSTATE[42S22] Unknown column ':dcValue1' on installs whose pc_projects.project_type column was missing. The fallback SELECT branch in TimeEntryMapper::findWithProjectInfo() was emitting a named parameter placeholder as if it were a column identifier; that branch is now removed in favour of the existing PHP-level fallback to 'client'.

Added

  • New migration Version2007Date20260506180000 ensures that pc_projects.project_type always exists (varchar(32) NOT NULL DEFAULT 'client') and is indexed (pc_proj_type_idx) on every install, including fresh installs and partial upgrades from the legacy projectcontrol schema. Idempotent and cross-database safe.

Changed

  • Consolidated the two divergent columnExists() helpers in TimeEntryMapper and ProjectService into a shared ColumnIntrospectionTrait. The new helper is portable across MySQL, PostgreSQL and SQLite, immune to false negatives on empty tables, and caches results for the request lifetime so a typical request now performs at most one introspection probe per (table, column) pair.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureKwfXpzIe3+p0x9crZKeKH168d5iX1BaGIBFJeaNxSNjBhGEcrO2Iipmdp9CZsFRfL1E3VPzA6dHVqkayZTwrR3Y8e+BbT0DIQ9T+ZKeVDhsSnUuSfJgbUKTU4gPa1/hKSfLEaVxm0wijR4wNbuJS7UcFatkLA1G5n1DWnigGVbxxX3nIrEPLb0wmUjM6UdRzATIcj+rwAWDXxOemdXp27iyyY9lIMrszGaSYCE/5DwiW3dH/Gu0DlBp1fm4X2mR0zssOfCy6ESmikAF5IXN35zZrVFC28DE0YYaWlESlIqFJc8l4R2XCT1h2nbhXkgngzsz//49aSbJYHjiaZAZpMiBFZQCZSWsdl2F0I5cI1EpbAXCwP6GFjRRmUKIgfRGV/+Q/ItpuktWqNSt0w/AbpszByNZO4CD6gTEQrP+4IUHX3vFqTqAt1GVNsaZXJck+FbSC1Xm18nzE4uk+w/GcIQusiWvkKMYbOOnXJSoLuNL3TXgIAJJQnLnw2QwHOb8V+mpRIxYd83Y/8uj0N3E4Fs2m301VrPI/puCXL5O3oXF1QCLMDTWI4LmqGxzNqMSe7UdvP0ptGFwAjfsHaNowXMHDN48C/QQ/GmpLCP574uYEiBUzBriSyAzFfVZQ7wcALKGycLes5WVDqNA4fkP3TfZ8s7VxJXLURxfVPPiT75E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.30
Release Details
UpdatedMay 5, 2026, 7:39 p.m.
Changelog

Changed

  • Database migration hardening for production upgrades: legacy generic table and identifier names are normalized to pc_* names with idempotent upgrade-safe migrations and cross-database compatibility safeguards.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturehUBNMg8dHoC24+DO+ZZD6GRUSem9e0hd8ir7ipR2LDOeAx9Ii3K8OqpsSP1WTFjj5vsE6d5wabFTMciF35ePjkRart7NguVV7UBtONxEXw5Jxnr3EAF4cHWj5IsNRGx0e9pv+91BF/ksVyK+O5mYCcHiO7I9ALv9xe57nbBjVc0xmGM7UMjW3BDytWeoGU0MSV09FQQiKsqLhISgj/jPjiQZzXpDMeCl39sIYP4mpwjUia7UxN54zDLL8VlZbpZzwCQNLmumfh2zobyAOSQblsoVC1MCS812IczECQFu0GE2DPEoLgTH68m7X2+iU4+VqjvdeAYuUuR2ClUUvBvBJgCdWBoQ9M5aNmAvBTh1JwTqG+Di0DBlEeXJYN+j83SVfL716pjWBlM9093ERqkdlrNANUtoQNYmc0OAMziqG6KzfQKcEGXrvcZF5+aqa4ofy9XbvbuQG9q9DsUWhK0d1wUSCPAvsKDXhLZm3lssh3kzsVbELuKCPjaP1eKYrjSfTWvHgBp3mzHs51pVfeEnxHCdNg1WXyEtljpz3m1BDgKDsGRRc/dlpQher6V+ZOZPu7EVeyEF0cxArmvBLE676Bo/9quYtqCm4UKd2GNkPX0ZHgnpxcK+LF5YQzhnGzklVVgrO7+l0eV9SlK4FI0KHQJxBJYtZi0pAaxHguOwOrI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.29
Release Details
UpdatedMay 3, 2026, 3:29 p.m.
Changelog

Changed

  • Prepared ProjectCheck 2.0.29 release metadata for App Store publishing with aligned package versioning and Nextcloud 32-33 compatibility.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignaturenaKyPhe1AZI71FsRuHuunD8wDCfX3lyBjoksL1fh5NpgSBpmTiRNJ0jkDDYxVX/HHukGmIZmvUAG6tiLNkoxNb3K0irnnMUxsM7r4wuxkiwFLyJ0lh96RlC9+pDqgicVsPHLrXdTw9AvgzPutrP/ffgQBW1sWGf1UYWUbDKq+BzK60YklARHk2qQvJ9pITvagkNyOvK+rwvAaclDNWZZIBJi72lzEyw0KN+o3zZZjMcA10N9EN2QYB8monHUsBbu5BMZlqKg9zsv2luFXQiV3XDNrKMEDyafTMZaeSBiARnaeKf+Z7ujx2JyQvJvnr4SNxU0WkqygIXtgkGTltsuOXU70wO6ipBUp1w/ZCcRSwVgT2YAU4XIpSFUzLxhJP6xYCX/Iyha+7FQ3wQjz17JDbNshq47IxC4P6vAJEbIVJWTi9TUQNQOQby/A0q22WwV/kpNa89FhYIYjS7vcYxkQFDTH6PRsz5jRNzouIID8cFhYvfDqbdxrxwrxizgSdYSZK80ug3KywG86sz+LNRvMSMpTK8IGKox0E2BMZGDxgmxIL3SkWW6qCFpcM3WWgG7CDsYv35f/vNqglQbzgewZwcXuWlTnBl9UCs9o8LUIZb8bUkd5stez466RJ7gSuDjojAUWHq/GrcWFkp4jwlDu5oOccJ/XlLHgHBptMV5mnY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.28
Release Details
UpdatedApril 30, 2026, 9:58 a.m.
Changelog

Changed

  • Finalized organization-scoped settings and deletion workflow hardening across controllers, templates, listener wiring, and localization payloads.
  • Release operator guidance now explicitly requires a new app version for each published update to ensure upgrade visibility in Nextcloud instances.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureYKgNyzj6+VVqiqCPRLImmjfRwGnYpG1VxoM4dQlGEo2Ms4QoY9P2L2sJmZJrYa94E0vIPdpIFEotNfuJHc/3tCkIj/7ZnewudUjfjuPJr9MiPqF0NHeAfKz4QbqpHnf+hl+kY6CUku7ZCU5BaANJQd7D9rFSOWmXD53U72PzmojN9hUbE/++QhfWmPEhnrpqMoihyN+ydg7pA3ljXto1h1rG0E+HwzpMBzFBljyH8ixCuPMEWLLcrFxZjIT4GgOIqoxPTCyJKZoAcQHl8dwD7cdpwjdXlZGBKwlF4ywT5FWtHKtoO+QIn67nUDRijTsNoarUPF2BQQszzOIyG4PbAq5+dr3zIbC89vGQZCTKYf5g4uaBFgiwecQM8G0lETTj0q2dAXDHy7JFyheTYn7EXuaTHT/vr8vMqbJaywmKyKA722IKE3AygAFQldp8xO/8u90K4x1KiJLte+M0L9rKTZce/M8yiDwVNoDTrmzkiGLy9gu5u/987sMWZ9I7d8+RmSwCPYX5sL8QGqpCT4DmBxlWP5yqK3rgCinGmHuexasbftZWZ8IDUX8vACYAz6Hbeo3zm009o8HdQDxAHjnDvg4MPgGNvNeaQJKEEy9ae+//M4hS2tD4u7uLhifewZJTgIOg+GYuMq5YlRozF3ynHHiGkFApCnuH7+1HCvsVb1E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.27
Release Details
UpdatedApril 30, 2026, 9:27 a.m.
Changelog

Changed

  • Release metadata alignment for App Store publishing: bumped appinfo/info.xml and package.json to 2.0.27, and aligned declared Nextcloud compatibility to 32-33 for this validated release line.
  • Release documentation refreshed (README.md, release/APPSTORE-RELEASE.md) to match the current support policy and current release placeholder examples.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureV3u77GAZig3Zdip7YbJy1HPN7AzM8v4Rhd/Y9meTmomNUuxZbTK8a7KVRfApihc9L+Gx2YjkSxXUKhcR+tewFb01WjwHg+SsXLy2V3cL6VcJ5rOUBAtAaQmj8Zzd0gIhpAxaGOYFgRaOIaMLC4GObxvSr/AD/K5Iz5yNhQqnH8u6DyQTq2AzIkEqBAVc8Z2nPCFpxTv+cuHCzhm5vFBrNLLG4iHT82BTprzQlCRM2HcpnvDrO/i5gF98FNOkdHJITg0wDVqby6FTt3TpSJ5L2QRzcZG9RGMuF5wz4OtHmpj4WqnzDB1fVbLgyKzdVKhXt+tVgSZwq4TBQGmEoLqnNFUIa85dwtZRIVnGcdhkUa3Rg31+Z5bFr3oZAq/MKMrcFLo4SXyK99Fm4IaDAMkNx/Et6AEkMbIxT7oj4zyqBEaGUlFTdTWUnt1pKLH3/KFZU50qRTXlotQZEY25jh0/vkrnjkOsiUQLbJd6r5xSehKHxmc0gWLfTxQ3FvRVVomZtbPfaXzBJo1+5eYOPp4+E7XXYQHmFIhCMs+AdBoZncyxGYaXO0KfY9gqr0kvCvg7aCi+PUswEM/0NY+E6UNOi5a2n1NYeQ/1KBdksdPXFrKjdP2/PO3W1xiq1ug1O2ZuUF4jPppQTFVjo3wbkMZZP2wMldnirZUaiIIYVHJ0c2w=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
ProjectCheck 2.0.25
Release Details
UpdatedApril 8, 2026, 2:20 p.m.
Changelog

Changed

  • Documentation: public-facing bilingual README (German / English), aligned with ArbeitszeitCheck-style structure; screenshots and install/support sections for the standalone repository.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhMvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNDA4MTIxNDE5WhcNMzYwNzE0MTIxNDE5WjAXMRUwEwYD
VQQDDAxwcm9qZWN0Y2hlY2swggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCnGWkj07UrC2FdaeNJc+xBFH7w/WIIPUt71ifpzBp0qL5gZnqFQnzo5WZjOTJ3
U7xE+LNU1sT78pWsYfQ1xf7XiTv73CQyA1HOp94IVtGbAHqy0H+YknAT5ZafkXzR
Z8h2Z+3FtHTDgxYl+yODHqxE6IRoHKURRYEH3pQSUWUPtIOZNzgOigwqsu6+xs2h
qd5WlLTnZsWpq7ImvFy+C02LPJCbiSRJC7TWebi4eFF093ahLpCDwYk9Xuuwi4RC
Cvhw4nb9VDjb8dfhpoAPtXWEhf0DG5Oub3WzxayEc0eslZGUMeUHTCCNAdhi5ZGa
2wOuLqwGIxS9HaU0+yga9JD8o6DNZYRzlvCDdo3rTkj4mWQj7oKE7j9kJA1azfBw
5hACi0UpKvXnQgiI2EoHpQWDLStWQocIOuUq1E8Sh7d13TvXPV3CFOikSMp70LWG
af2YXEJ2oc5tPOxrA7fzvUKDUA2FVu/05ugAWT8mcBAXO2gWbIQlPiE+YTJNx3iM
U3Fru6IX4W1g6Th6s+HLSFFy0/TmMGag5gpgNiAQgFJt1KISIH3jqMBAVMfaYYyb
azQ9avPRVs0Rd2c+odmeasMWPo2p84FpfLksb54LxtB4sY+hxi4lGzUkM7St0nL6
McNb1pjqEv17Zr42A18LR9T67+LyZ+UC6MvS1H4w8C47lwIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQA2i1Mruq6FqgEMT1gRId5iqIpt4OUs7QXjvjekGO9VE8bkXwmP
XaOyXN/HNnuseB5hKeFjxbDP3+En3P0JMyvMK9cpqHfSIT0gbKoOVtNHThv6Xy/Y
aLvBIZidh7BAdev1BHfz5kz3NxWJJ4/wCcRed/OLyUyvrGQXwll4liSuUK9JOk7R
ecXG7T0SNtGtvLYOQGzi83p9GK2XYlL+67OjA2FAzFim4FAIKCP1TZU7N+UVHHu1
Lek+II6n9FZBQHZ1MZ5tnz9UbZgnMTO/6yY2QXsNCBMcnan4ba86T3bYQaDSpEmi
JXrvIsXl+pvXSnnwgAKsu3K+afkHEFh2nzGz
-----END CERTIFICATE-----
SignatureXlsnGJgp4l+5BMHh8/hYSnEcadcJg912AJk8xjH+o4nW6+dxkiBaR8BVbsyHqnLIKNWY/8HBZY916jrbT9AZBlXv618r7w5A6NgJAopFxLIyaWB19okxg26K+vaU/1o3iAG8zYbozGL95nMF4DPtSlLxTd5qQZW2/GjuViW0muiiQd0RJM4xWd+3n6SVXYUtpai1MY2gpqVTHi2iYZd8NKH0KKE2SkYUwUyMJI5xX5p3T/1KS7Ta9PLwlmBzoANqafzytue66+7QZPXF/Bi7dOtjiCAgMs+UsIzqTh5ov1vFDm5DJjFOBmyuMT2qV27hWzGb10XNf26YdFyDui68ql3IKGqaCYnavLufi/+u9E080Klym3Dv0q3jnQ9wT17LvHxX17rV0PSBBpaoD5WEtOynCor4flT44aum+POpnVyBQ+rRO3WyZt6jtBaBcIKt/cGPaPbxi/2eK3oogdPe2MYGgtECOJ3+qVP37AXrnaZUxBsFlcvixYiX9wb5OvfL2zClm/bXPtmjDLZl2UG6cLS1csuldJbq9j26sL/y1tnNd683ITxmJpAtwRrBvnKgU1Npj5gqzI8HJzThL0pndonnAFiDCKG210NOfdtGFbihpCwVVxIoriPfi8rdHSJP0MgKP/QeO3Zk8bNQ3PHrmhGdbeYajU+zHwG5bTmoH3Y=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<38.0.0
Minimum Integer bits32