← 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

Production Plan • Plan Live: put the plan on a screen with a public live link

A new Sharing tab under Production Plan creates public live links. Each link opens a read-only page with a large event clock and the project's plan grouped by day, using the plan's own row colours for overdue, unconfirmed, ongoing and OK rows; completed rows are hidden. The page refreshes every 15 seconds: a changed or new row pulses once, a completed row fades out, and if a refresh fails the last loaded plan stays on screen with a warning next to the Updated time. The link decides what a screen may see: all departments or a selected set (a parent includes its sub-departments), and a detail level. Minimal shows time, what, location and the delivery reference; Standard adds type, priority, status, department, need, supplier, labels and, for deliveries, the vehicles with registration number and gate control; Full adds responsible names, comments, descriptions and the delivery driver. The person at the screen chooses the range (6 h, 12 h, today, or the current phase), a text size for the plan (Small, Normal, Large, for a wall screen read at a distance), and can narrow by department, type, priority or search; none of those can widen what the link allows. Links can carry a password and an expiry, be disabled, given a new URL, or removed. Every screen and every row carries a quiet Report incident action that opens the public incident form in a new tab, prefilled with the project, planned time, location and supplier where the link allows it; the incident keeps a link to the plan row, and reporting never changes the plan. Help updated in all four languages.

Deliveries • linking keeps a stated gate control, and says so when the deliveries disagreed

When you link deliveries into one, the gate control now travels with them. If every linked delivery stated the same control, the shared delivery carries it. If they stated different controls, the shared delivery states none of them, or keeps its own control if it was already a group, and the confirmation message tells you what it now states so you can set it deliberately. The same rule applies to a truck attached to more than one of the linked deliveries: a control override the deliveries agreed on survives on the one remaining row, and when they disagreed the row is left without an override and the message counts the vehicles to check. Until now a linked delivery's own control was dropped without a word, and a truck on two deliveries kept whichever override happened to be processed first. The vehicle record page now shows the vehicle's standing control with a note that a delivery arriving today may override it, and the wording beside the control on the vehicle form says the same. Help updated in all four languages.

Dialogs • opening one after your session has ended takes you to the sign-in page

When a session had timed out, opening a dialog that loads its content from the server, such as a delivery or a shift, showed the sign-in page inside the dialog and the page stopped responding to further clicks. The dialog now recognises that answer and sends you to the sign-in page itself.

Schedule • an empty day offers Add shift, and the period arrows share one icon

A day with nothing scheduled on the calendar used to be a blank lane. It now carries a quiet No shifts ➜ Add shift line, and Add shift opens the ordinary shift dialog already set to that day. The previous and next arrows on the Schedule, the crew list, your own Shifts page, Statistics and the Production Plan checklist now use one shared icon, labelled Previous period and Next period in all four languages, in place of the typographic arrows each page drew for itself. Help updated in all four languages.

Signup links • a new link requires shift approval by default

When you create a public signup link, Require shift approval is now ticked from the start, so shifts picked through a new link wait for a manager's decision unless you deliberately open them. Editing an existing link is unchanged and shows what it stored. The Require approval by default toggle under Settings ➜ Modules ➜ Schedule is a separate setting: it covers logged-in workers requesting shifts from their own Shifts page, while each signup link carries its own setting chosen per link. The settings page and the Schedule and Signup Help now say so in all four languages.

Deliveries • saving a delivery now confirms itself

Saving a delivery in the delivery editor refreshes the editor to show what was stored, and until now the confirmation message was refreshed away with it, so a successful save looked like nothing had happened. The confirmation now appears in the editor's footer, beside Close, and stays for a few seconds after the refresh.

Scanner • a vehicle arriving on a delivery today is controlled as that delivery says

When a scanned vehicle is attached to a delivery whose arrival window is today, the scan card names that delivery, with its reference, title and window, and the control shown beneath is the delivery's: the vehicle's override on that delivery, else the delivery's control, else the vehicle's own standing control, else its accreditation type's default. Today is the account's own date, and a delivery whose window comes from its plan rows counts too. If the vehicle has several deliveries today, the one not yet completed with the earliest arrival is used. A vehicle with no delivery today shows its own control exactly as before. Help updated in all four languages.

Production Plan • a delivery row shows what arrives and how it is controlled

Beneath its D- reference, a delivery or return row in the Production Plan now shows the delivery's description, the vehicles attached to it, the gate control the delivery states, and a dangerous goods chip with the ADR class when one is declared. A vehicle is annotated with its own control only where that differs from the delivery line, so a truck that simply follows the delivery says nothing extra. The plan reads what is arriving, on which trucks and under which control without opening the delivery, and the lines stay in step with the delivery editor: a change saved there appears on the plan at the next refresh.

Deliveries • the delivery decides the gate control, and every vehicle on it follows

A delivery now carries its own Gate control, in the delivery editor directly beneath the dangerous goods block: no control, a set of controls such as Check cargo or Escort required, or Use each vehicle's own controls when the delivery has nothing to say. Every vehicle attached to the delivery inherits it, so two trucks arriving with one load are checked the same way and a truck is checked for what it carries on this trip rather than for what it is. A vehicle can still be overridden from its card in the editor, and that override now applies to this vehicle on this delivery only. Before this change the same button quietly rewrote the vehicle's own record, so an escort required for one trip became a requirement everywhere that truck turned up. The control beside each vehicle shows the result: its override on this delivery, else the delivery's control, else the vehicle's own standing control, else its accreditation type's default. The Deliveries list shows the delivery's control under the registration numbers. Help updated in all four languages.

Deliveries • dangerous goods are declared on the delivery, not on each vehicle

The delivery editor, opened from a plan row's D- reference or from Vehicles ➜ Deliveries, used to ask about dangerous goods only when a vehicle was attached, so a delivery arriving on two trucks was asked twice and the load itself had no answer on record. The Dangerous Goods (ADR) block now sits directly beneath the delivery description on both the new-delivery form and the edit form: tick Carries dangerous goods, choose the ADR class, and add a short description if it helps the gate. The attach-vehicle form no longer asks. The ADR class is required once the box is ticked, and unticking it clears both fields. A delivery that carries dangerous goods shows a warning chip with its ADR class in the Deliveries list, so it can be spotted without opening it. A vehicle's own record keeps its ADR fields, now labelled Can carry dangerous goods, because they describe what the vehicle is able to carry, while the delivery describes what is on board this particular trip. Help updated in all four languages.

Norwegian • one word for a shift, everywhere

The Norwegian interface used two different nouns for the same scheduled shift: one in the Schedule menu and most of the product, the other on the dashboard, in the Statistics help texts, in the shift emails, in import and export settings, in Items and in Risk Assessments. Every occurrence now uses the word the Schedule menu entry has always used, with the grammar adjusted to match. Swedish and Danish were already consistent and are unchanged.

Schedule • the schedule can be read as a calendar or as a list

The Schedule toolbar gains a Calendar / List toggle, two icons beside the period arrows: columns for the calendar, rows for the list. Both show the same shifts under the same filters for the same period; the list simply stacks each day's shifts at full width one after another, skips days with nothing on them and opens every day expanded, which is easier to read on a narrow screen or when you are scanning a whole week for one person. The calendar opens on every fresh visit and is never remembered as a preference: the list stays with you while you move through the arrows, presets and filters, and a click on Schedule in the menu brings the calendar back. Below tablet width the schedule is already a list, so the toggle is hidden there. Help updated in all four languages.

13 changes · 6 added · 4 updated · 3 fixed

Scheduling 5 · Payroll 4 · Forms 3 · Groups 2 · Production Plan 2 · Dashboard 2 · +5 more

Production Plan • a delivery row gets its reference the moment it is on the plan

A delivery-typed row added on the plan or on the Quick Entry Sheet showed no D- reference until somebody opened Vehicles ➜ Deliveries, which is where the numbers were being assigned. The plan is where the reference is read out, so it now assigns the reference itself as soon as the row is shown, including on the live refresh after a Sheet save.

Schedule • the Requests page is easier to read and previews scheduling conflicts

Each shift on Schedule ➜ Requests has a normal-case header carrying the shift's own facts, title, minimum age, when and where, instead of the muted uppercase style the page uses for section headings. The worker row carries the group the request would count against; the employee number is gone from the row, since it lives on the person's page. The Worker and Requested columns line up across cards. A request that would now clash with a shift the person already holds shows the same conflict badge as Schedule ➜ Approvals, with the reason and the clashing shift, before you decide.

Signup • the scheduling-conflict badge on a pending registration marks only the shift that clashes

The review surfaces flag a pick on a pending registration when it would clash with a shift the person already holds. On Schedule ➜ Approvals and Forms ➜ Pending review, one genuine clash could mark every pick on that registration as blocked, and on a signup link's registration list the badge never appeared at all. Each surface now flags exactly the clashing shift. The badge was only ever a preview: approval itself always judged each shift correctly, so no assignment was affected.

Signup • rejecting a request or a registration can carry your reason, and the person is always told

Rejecting a shift request on Schedule ➜ Requests, or a registration on Schedule ➜ Approvals, Forms ➜ Pending review or a signup link's registration list, now opens one confirmation dialog with an optional free-text reason. The reason is stored with the decision and included in the email to the person. Registration rejection used to be silent; a person who registered and was turned down now hears about it, with your words when you gave any. When a shift request is rejected because the person is under the shift's minimum age, the email states that on its own line alongside your reason. On Forms the internal review note stays internal; only the reason typed in the dialog reaches the applicant. Help updated in all four languages.

Signup • approving a registration lets you decide what happens to its shifts

Every review surface, Schedule ➜ Approvals, Forms ➜ Pending review and the registration list on a signup link, now offers three ways to approve a registration that named shifts. Approve with shifts assigns them, as before. Approve, decide shifts later approves the person and turns each shift pick into a pending request on Schedule ➜ Requests, keeping the seat it already held, for a manager to decide one by one. Approve, release shifts approves the person and gives every held seat back. The person is approved identically in all three; only the shifts differ. The two extra buttons appear only when the registration picked shifts. The approval email tells the person which shifts are assigned, which are waiting for a decision and which were released, since those are different news. Help updated in all four languages.

Production Plan • select, copy and paste a block of cells on the Quick Entry Sheet

The Quick Entry Sheet could receive a pasted range from a spreadsheet but had no way to produce one, so moving a block of rows within the sheet, or out to Excel, meant retyping it. Drag across cells, shift+click, or hold Shift+Alt with the arrow keys, and the rectangle is what Ctrl+C, Ctrl+X, Ctrl+V and Delete act on. A pasted block lands at the top-left of the selection and a single copied value fills the whole rectangle; what is copied is the displayed text, tab-separated, so it round-trips through Excel and Google Sheets. A dragged selection scrolls the page when the pointer reaches the edge; a row number selects its row, a column header selects its column, the corner selects everything used so far, and shift+click extends any of them. Every pasted value goes through the same path as typing, so a date still completes its year and a name still resolves to the right person, location or supplier. With nothing selected, editing inside a single cell works exactly as before.

Payroll • sessions-only workers are no longer exported with a zero rate

A sessions-only worker's hours used to reach the payroll file as a row with a rate of 0,00, which invited the payroll system to pay nothing or somebody to type a rate in; and if a rate happened to be on the worker's profile, the hours were priced at it, which the Hours by rate report deliberately does not do. Payroll now follows the report's rule: a sessions-only worker is priced only by a rate set on a specific session, never by the profile rate, and unpriced sessions-only hours are left out of the payroll file altogether. They still appear under Sessions only on the group report. Employees without a rate keep their 0,00 row, because those hours are payable and the missing-rate warning on the export is what flags them.

Statistics • the pressure hotspots count positions, not people

The Peak planned, Peak filled and Unfilled cells on the Pressure Hotspots card, on the page and in the PDF, carried a people suffix. None of the three is a headcount: they are the required, filled and still-open positions in the busiest hour, and one person on three overlapping shifts is three positions. The cells now say positions, in all four languages, and the Help defines Unfilled as positions still missing. The Arrival card's count is labelled assignments, the unit the Accuracy and Variance cards already use, since a person on two shifts is two arrivals. The CSV export was already bare numbers and is unchanged.

Dashboard • staffing tiles and their drill-downs use one vocabulary and count everyone

A shift is the scheduled record; a position is one required slot on it; a shift is understaffed when fewer people are assigned than it has positions. The Dashboard, Statistics, the chart drill-downs, the CSV headings and the Schedule Help now say the same thing in all four languages: sets of shifts are Understaffed shifts, missing slots are open positions, and every figure names its unit wherever it differs from the one beside it. The Open positions tile is coloured by the share of required positions still open across the shifts in its window, not by how many shifts are affected, so one shift missing a dozen people is no longer amber while four shifts missing one each are red; an overbooked shift counts toward the demand and contributes no gap. The No-shows tile counts every late person: it used to stop at thirty and say nothing about the rest, and now shows the first thirty and states how many more there are. Starting soon: gaps is now Starting soon: understaffed, and its badge carries both units, affected shifts and open positions. Active now gains a badge of its own: the number of active shifts, and how many people are clocked in of the positions those shifts require, red while people are missing. The two drill-downs beneath the tiles, Under-covered shifts right now and Understaffed shifts, are now collapsible section cards in the same style as the Today and Starting soon tables, with a clocked-in status on running shifts and a link to the full schedule past thirty rows.

Schedule • filter the schedule to understaffed or overstaffed shifts, straight from the Dashboard

A Staffing filter sits beside Status in the Schedule toolbar: All shifts, Understaffed shifts (fewer people assigned than positions) or Overstaffed shifts (more people assigned than positions, the shifts the schedule already marks red). Both look at confirmed assignments only, so a seat held by a pending registration or request still counts as open, and a shift with no required count is in neither. The Dashboard's Open positions tile and its understaffed-shifts drill-down now open exactly this filter, on published shifts, in the week of the soonest understaffed shift and within whatever project or location the dashboard is scoped to, so the number on the tile leads to every shift behind it rather than to a page capped at fifty rows. The understaffed card on Schedule ➜ Approvals now counts everything too: its badge is the true count, the table shows the first fifty and states how many more there are, with a link to the full filtered schedule. Help updated in all four languages.

Clockwork • a single session can be given its own hourly rate

When you edit a session on a person's Sessions tab there is now an Hourly rate for this session field. Leave it blank and the session counts at the person's own rate, which is shown in the field so blank is never a guess; enter a value and it replaces that rate for this one session only, a stand-in paid differently for a night, a training shift, a one-off agreement, or a volunteer paid for a single session. The reports and payroll both honour it. Because it changes what the session is worth, setting or clearing it withdraws an existing approval of that session, so it waits for re-approval before an approved-only payroll picks it up. Rates stay a property of the person: there is no rate on a shift, a role or an assignment.

Payroll • each session is priced at the rate that applied, and a rate change asks from when

Payroll now prices every session at the hourly rate the person had on that day, through the same rule the session reports use, so the two can never disagree about what a session was worked at. A person whose rate changed during the period gets one payroll row per rate, each with the hours worked at that rate; a person with one rate gets exactly the row they always got, and the preview lists every rate a person was paid at. Changing a rate, on a person's profile or for a whole group at once, now asks when it applies: from today, or from a specific date. From a date backdates the change to the start of that day, so sessions from that day on count at the new rate and earlier sessions keep the previous one, which is what you want when a birthday moved somebody into a new pay band a week before anyone got round to entering it. A future date is not accepted, and a wrong start date can be corrected by saving the same rate again with the right date.

Reports • group and project session reports break worked hours down by hourly rate

The Sessions tab of a group and of a project, and their CSV and PDF exports, keep the single Worked hours total and now add a Hours by rate table beneath the summary: one row per hourly rate among the people in the period, with hours, sessions, people and, when the summary shows it, overtime. A group with several age bands or pay levels no longer needs to be split into one group per rate just to see how its hours divide. Rows are grouped by the rate itself, never by the person, so three people on the same rate are one row and nobody is named. Sessions-only workers are listed in their own unpriced row, dugnad workers are priced like everyone else, and paid workers who have no rate on their profile appear as Users without a set rate so the table still adds up to the total and a missing rate is visible instead of silently counting as zero. Each session counts at the rate that applied on the day it was worked: changing somebody's rate later never moves their earlier hours into the new row. The table is for your own reporting; the group contact's portal and the report emailed to a group contact do not carry it. Help for Groups and Projects updated in all four languages.