User requests • token validity extended to 72 hours
Tokens for personal info verification and registration links now stay valid for 72 hours instead of 24, giving people more time to act on the email before the link expires.
— continued
Tokens for personal info verification and registration links now stay valid for 72 hours instead of 24, giving people more time to act on the email before the link expires.
Importing contacts from a CSV used to throw a server error when groups were involved. The import handler has been corrected to match the leaf-only group schema and now imports cleanly.
A shared modal system now powers most dialogs across Users, Items, Contacts, and the verify flow. Pressing Escape closes the open modal, the page underneath stops scrolling while a modal is open, and clicking outside the dialog no longer dismisses it — only the X, Cancel, or Escape close a modal. Behaviour is now consistent across the workspace.
Spacing, padding, and footer layout are now consistent across notice modals in the admin area, so add and edit dialogs frame their content the same way as the rest of the workspace.
9 changes · 1 added · 7 updated · 1 fixed
Workforce 2 · Payroll 2 · Contracts 2 · Competence 2 · Clockwork 1 · Scheduling 1 · +3 more
The payroll export wizard now offers a Users only mode that exports the worker list without sessions — useful for syncing rosters into accounting without bringing time data along.
Norwegian postal codes are now padded to four digits everywhere (so a leading zero is no longer dropped on import or save), with a one-time backfill across existing user records.
Subgroup rows lay out properly on mobile with a dimmed hierarchy arrow and stack as cards on narrow screens. The group contact picker is now a searchable typeahead instead of a long static dropdown.
Uploading a pre-signed contract PDF could fail with a 500 error on save. The upload now completes cleanly and the contract appears in the list as expected.
The contracts list filters as you type instead of waiting for a submit, large lists paginate at 50 per page, and uploaded signed contracts only show the actions that actually apply to them.
When a document is linked to multiple competence classes, the documents list now shows all of them instead of only the first. Easier to spot at a glance which credentials are covered by which file.
A major polish pass to the competence workflow: certificates can carry multiple classes per card, each class can be verified or rejected individually in the document viewer, valid-until dates and certificate numbers are required only when the certificate type calls for them, and category and class labels read more cleanly. Mobile rows and the review modal have been tightened so they fit phones properly.
Registration forms now collect organisation details for invoice and organisation-paid workers under a clearer Organisasjonsdetaljer section, with smarter title handling that follows the account's default language.
A fourth worker type has been added for volunteer and organisation-paid crew. Dugnad workers support an hourly rate without requiring personal bank account details, and flow through the import, schedule, and payroll surfaces like the other types.
10 changes · 3 added · 7 updated
Workforce 5 · Contracts 4 · Incidents 3 · Forms 2 · Scheduling 1 · Groups 1
Event log entry types in the contract history are now translated, and creating a new contract preselects the account's standard project when the recipient has no default of their own.
Shift exports — list view, CSV, PDF, and the daily emails — now produce one row per (shift × assignee) and include the assigned worker's name, so a shift with three assignees is no longer collapsed into a single ambiguous row.
On mobile, the Quick actions band now sits on top of the Details panel, the meta block has tighter spacing, and Last updated has moved into the meta block where the rest of the case metadata lives.
Owners are now notified by email when an incident is assigned, reassigned, cleared, has its status changed, or is closed. Every dispatch attempt is recorded in the case audit log so you can see exactly what was sent and when.
Each incident case now has a Download PDF report action in the More menu, producing a printable case summary with the full event log.
The missing-info detector on the user profile now flags users without a date of birth, so gaps in worker records are easier to chase down.
Only account admins can grant or revoke the admin role. Managers can still manage their own group's users but can no longer escalate or demote admin-level access.
Workers now have a dedicated title field on their profile, separate from worker type. Imports, the user edit form, and registration forms all flow into it.
Phone numbers are now normalised to international (+CC) format both on CSV import and when saving from the user edit form, with safeguards so a real local number that happens to start with country-code digits is no longer mangled.
CSV user import has been rebuilt around a fuller template, a bulk default values panel, override-all + clear-value toggles, and a richer preview that surfaces birthday, address, and emergency contact fields. Header validation now suggests the closest match when a column is misspelled, the template covers every importable field via its config aliases, and rates of 0 are treated as empty cells. When a row has no project, the account default project is used.
6 changes · 5 updated · 1 fixed
Contracts 3 · Incidents 3 · Scheduling 1 · Workforce 1 · Payroll 1 · Messaging 1
The payroll export wizard moved into the Settings pill nav and dropped the per-step H1s, giving the wizard the same compact framing as the rest of Settings.
Some transactional emails were rendering in the sender's UI language instead of the recipient's preferred language. Emails now always swap the translation table when a language is set explicitly, so workers receive their messages in their own language regardless of who triggered the send.