← HR Cluster

Changelog

Operational and technical updates to the HR Cluster platform.

Types of changes
Added New functionality or modules.
Updated Improvements or changes to existing functionality.
Core Major architectural, platform-wide, or operational changes.
Deprecated Features scheduled for removal.
Removed Features or functionality removed.
Fixed Bug fixes and issue resolution.
Security Security improvements or vulnerability fixes.

2026

— continued

Design system uplift • Contracts and Incidents

Contracts and Incidents now follow the same layout, table, modal, and action-button patterns as the rest of the workspace. Mobile action rows wrap cleanly, the user access card stacks correctly, and modal footers no longer overflow on narrow screens.

Shared pill navigation across the workspace

Tabs, sub-filters, and section navs across Users, Incidents, Items, Contracts, Schedule, Settings, and Payroll now use one shared pill component. On mobile, narrow tab strips get a chevron scroll button, the active tab scrolls itself into view, and a fade indicates more options off-screen.

Schedule list view • instant assign and group changes

Assigning, unassigning, and changing the group on a shift in the schedule list view now updates in place via AJAX. No more full-page reloads after each tweak — the row updates and you keep your scroll position and any open filters.

Incidents • case workspace, owner, and priority

The incident detail page has been rebuilt as a single case workspace with one owner control, a priority field, and an anonymous-reporter fallback when no submitter is recorded. Closing an incident now goes through a confirm modal instead of a native browser dialog, and the Involved company row is always visible on the case so it's never hidden behind a toggle.

13 changes · 7 added · 3 updated · 2 fixed · 1 security

Clockwork 3 · Scheduling 3 · Contracts 3 · Workforce 2 · Payroll 1 · Incidents 1 · +6 more

User shifts • cancelled assignments hidden

Cancelled shift assignments and cancelled sessions are now skipped on the per-user Shifts tab, so the list reflects what the worker actually has on their plate.

Schedule • stale shift link cleared on session edits

Editing a session's work status now clears the stale link to the scheduled shift on linked sessions, so a session that's been re-categorised no longer claims an old scheduled shift.

reCAPTCHA • per-account toggles across all public surfaces

reCAPTCHA Enterprise can now be toggled per account on the public signup, registration forms, incident submission, password reset, and PIN reset surfaces. The /login page enables an adaptive challenge after repeated failed attempts. The server is the single decision point — clients fail open so a CAPTCHA outage never locks legitimate users out.

Settings • customer-editable billing address

Billing address is now editable directly from Settings → Billing. Changes update the next invoice automatically; no support request needed.

Bank accounts • country-aware Nordic + international handling

The payment details edit modal now has a country picker. Norwegian accounts auto-format as 4-2-rest, and Sweden, Denmark, and Finland get their own validation. Anything else is accepted as a free-text international account number. The Bank Review tab in Users surfaces accounts that are unset or set to OTHER for follow-up.

Contracts • company info pulled from account details

Contract templates now have shared global merge fields for the issuing company's legal name, organisation number, postal address, and bank account. They populate automatically from the account's details, so every contract carries consistent company info without per-template edits.

Contracts • 14-day default deadline and sender e-signature

New contracts default to a 14-day signing deadline, and the sender's electronic signature is now applied automatically on send (default on, can be disabled). Signed PDFs reflect the actual signer count in their wording.

Contracts • account-specific vs global templates

The template library now separates the account's own templates from the shared global templates, with search and an active/archived toggle on each list. Creating a new version can start from a global template instead of a blank document.

Items • per-user access grant on the access card

Managers can grant Items access to individual users from the access card on the user profile, without giving them broader admin or manager rights.

Items • concurrent-issuance cap per item

Each item can now define a max_quantity — the maximum number of concurrent issuances allowed. Once reached, the Issue modal blocks new issuances until something is returned. Useful for radios, harnesses, key sets, and any pool with a finite count.

Items • receipt-style emails and per-issuance identifiers

Issuance and return emails now render as a receipt with the item name as the hero, the per-issuance identifier and description, a localised timestamp, and one row per item. Single-item batches still show what was issued instead of collapsing into a generic message.

Items • statistics dashboard

A new Statistics tab on the Items module shows issued, returned, and outstanding counts by item, category, or month. Equal-height KPI cards highlight return-rate and active alerts; row highlights flag items with overdue or outstanding issuances; filters submit automatically as you adjust them.

Payroll export wizard with frozen-snapshot audit log

A new step-by-step payroll export builds a CSV per period with a frozen snapshot of every session, rate, and adjustment at export time. Past exports are kept in an audit log so you can always re-download exactly what was sent to the accountant — even if a session is later edited or cancelled.

5 changes · 1 added · 4 updated

Clockwork 2 · Workforce 2 · Security 1 · Competence 1 · Inventory 1 · UI 1

Clockwork verify modal • richer prompt with snooze

The verify-document prompt at clock-in is now always-on (no per-account gate), supports a 24-hour snooze that lasts until the next clock-in, exposes an audit-logged SSN reveal, and chains directly into Items handout after verification.

Modals • explicit close, mobile-safe

Every modal in the workspace now closes only via the X / Cancel button or Escape — backdrop click no longer dismisses, so you don't lose data by tapping outside on mobile. Modal heights respect the dynamic viewport and safe-area insets so iOS and Android Chrome no longer clip content behind the URL bar.

Document review modal • unified preview and verification

The user document and competence review modals merged into one surface. Image preview supports zoom (single-click toggles, with cursor states for pan), rotation persists per attachment, and a drop zone replaces the old upload control. Actions adapt to the document's current state so you only see what applies.

Modules split • Items (Workforce) and Inventory (Ops)

Items belongs to the Workforce platform — operational issuance to crew. Inventory becomes the Ops platform — asset, stock, and equipment-pool management. The Inventory stub now self-labels as "coming soon (Ops)" and points to Items for crew handout. The sidebar has a segmented Workforce/Ops switcher to move between the two platforms.

Items module • catalog, issue, return, transfer

A new Items module tracks anything that gets issued to crew: radios, keys, vests, tablets, harnesses, cash floats. Catalog with categories and kits, multi-item issue modal, return + transfer flows on the Open page, full audit log per item, and per-user history. Wired into the Clockwork terminal so handout and return can happen at clock-in or clock-out.

6 changes · 3 added · 3 updated

Clockwork 2 · Workforce 2 · Scheduling 1 · Incidents 1 · Forms 1 · Groups 1 · +2 more

Public shift signup • 5-minute reservation hold

When a worker selects a shift on a public signup link, the slot is held for 5 minutes while they finish the registration. Prevents the race where two people pick the same last seat at the same time.

Users • parent group shown when scoped to a subgroup

When a user belongs to a subgroup, their profile and lists now show the parent group name alongside the subgroup, so you can see their full org context at a glance.

Sessions • unified project resolver across all entry points

Manual session creation, terminal clock-in, and the new session_open() pipeline all use the same project resolution logic. The user's default project is applied consistently whether the session is started from a terminal, the manager's session create form, or the API.