Operational and technical updates to the HR Cluster platform.
Types of changes
AddedNew functionality or modules.
UpdatedImprovements or changes to existing functionality.
CoreMajor architectural, platform-wide, or operational changes.
DeprecatedFeatures scheduled for removal.
RemovedFeatures or functionality removed.
FixedBug fixes and issue resolution.
SecuritySecurity improvements or vulnerability fixes.
2026
AddedUsersDepartmentsProduction Plan
Users • a default department, prefilled where one is asked for
A person who belongs to several departments can now carry a default one, chosen on the Group and Project card on their profile from among the departments they already belong to. Someone in exactly one department needs no choice: that one is their default. Where no default has been chosen for someone in several, nothing is guessed. The Production Plan prefills the default on both places a row is entered, the add row and the sheet, so the operator's own rows land in their department without picking it every time, and a prefill can always be changed or cleared on the row. Choosing a default never changes membership, joining and leaving stay on the department's own Members tab, and a default can never point at a department the person has left: leaving the department clears it.
AddedFormsSettings
Forms • choose what approval mode a new registration form starts with
A new Registration approval card on the Forms card under Settings, Modules decides whether a newly created registration form starts with manual review or automatic approval. Until now every new form started with manual review preselected; that remains the default, and the setting exists for accounts where automatic approval is the norm. Existing forms are untouched, and every form still carries its own mode, changeable as before. A form's approval mode now also shows in its detail summary, where it previously had to be looked up inside the edit dialog.
AddedScheduling
Signup links • an email when a registration needs review
Links that require approval used to rely on somebody remembering to look at the queue. When a registration now lands waiting for review, the person who created the link receives an email saying so, naming the link and when the registration arrived, so a pending registration is seen because someone was told rather than because someone happened to log in. One email is sent per registration.
UpdatedSchedulingForms
Signup links • a registration waiting for review holds the seats it asked for
Approval now answers two separate questions, each with its own setting. The registration form's approval setting decides whether the person needs review before they get an account. The link's setting, relabelled Require shift approval, decides whether shift picks need approval. When both apply there is still only one decision: approving the registration is the approval, and it delivers everything at once. While a registration or a shift request waits for a decision, the seats it asked for are now held: they count against the shift's capacity so nobody else can take them in the meantime, and the schedule board shows held seats as their own marker beside assigned ones. Approving turns the held seats into assignments, creates the account or brings a returning member back, sends the welcome email, and never fails because a seat was taken while the request waited. Rejecting releases every held seat straight away. A returning member's registration through a link now changes nothing about their record until it is approved, so rejecting it leaves them exactly as they were. And someone already signed in who uses a link requiring shift approval files shift requests, rather than a second registration.
UpdatedScheduling
Signup links • shifts you cannot take are accounted for, not silently missing
When picking shifts on a public link, choosing a shift now folds away the shifts that choice makes unavailable, and each day's header gains a control naming how many are folded, so the list stays short while every shift on offer stays accounted for. Unfolding shows each of them greyed out, with the reason it cannot be taken alongside the current picks: the times overlap, or the gap between them is shorter than the required rest. A worker's own shift view works the same way: shifts that do not fit around the ones already held are folded per day with the same control, instead of being left out without a trace, and compatible shifts on a day where one is already held are offered normally.
UpdatedSchedulingSettings
Schedule • whether two shifts can be combined is decided by time alone
Whether one person can hold two shifts now comes down to two time rules, applied the same way everywhere. Shifts that overlap can never be held by the same person, and there is no way to override that. Between shifts that do not overlap, the account can require a minimum rest, set on the Schedule card under Settings, Modules: the default is 8 hours, it can be anywhere from 0 to 48, and 0 turns the rest requirement off. Rest is measured from the end of one shift to the start of the next, in both directions, so taking on an earlier shift still has to leave the required rest before a later shift already held; a gap of exactly the configured rest is allowed. This replaces the one shift per day rule: the calendar date no longer matters, and any number of shifts may share a day as long as each pair passes the two rules. The rules apply wherever someone ends up on a shift, whether they pick it themselves, register through a public link, or a pending request is approved. A manager assigning someone directly can deliberately accept a shorter rest gap, and that acceptance is recorded, but can never assign an overlap. Changing the setting affects future decisions only; nobody is removed from a shift they already hold.
FixedUIMobile
Layout • tables sit inside their card, and dashboard tiles stack on the narrowest phones
Two tables were drawn wider than the card holding them and were cut off on three sides, with the last row clipped along the bottom edge and the text and buttons at either side pressed against the border. This affected the form submission lists, where it sliced a badge and a phone number in half, and the signed contract archive in your own profile, where it cut the last row. Both are now drawn inside their card. On the dashboard, the summary tiles shrank to about 140px on the narrowest phones we support, leaving no room for a figure and its label; below 360px they now stack one per row, and wider screens are unchanged. The public signup pages also place their buttons the same way at every step now, back on the left and continue on the right, rather than moving the main action from one side of the screen to the other between one step and the next.
FixedUILegal
Every page carries the same footer, in the language you are reading
The footer at the bottom of the page was maintained separately for each part of the product, and the copies had drifted apart. Its links were translated on two pages and left in English everywhere else, so the language could change between one page and the next page you opened. Cookie settings, which is how you withdraw or change cookie consent, was missing from the legal pages, where a reader is most likely to go looking for it, and the list of subprocessors appeared on only two pages out of eleven. The separators between the links had also stopped being drawn inside the workspace. There is now one footer with the same links in the same order on every page: terms, privacy, cookies, security, the data processing agreement, subprocessors, cookie settings and the changelog. On the legal pages the links follow the language of the document you are reading, so moving from one legal page to the next keeps you in that language.
FixedUsersScheduling
Users • emailing a shift report keeps the month you were looking at
Sending somebody their shift report by email returned the page to the current month rather than the month whose report had just been sent, so an operator working through an earlier month was dropped into an empty view after every send and had to set the month again each time. The month is now carried through and the page comes back where it was. In the report itself the first row was set in the column-header style while the rest were not, so every sheet opened with one bold row, and several columns were set a size too small. Every row is now set the same way.
UpdatedScheduling
Schedule • shift labels read the same wherever they appear
A shift's role is now dropped from the line beneath its title whenever it only repeats the title, so a shift called Bar with the role Bar no longer prints the word twice, while any difference at all is kept. On the public shift list and in a worker's own shift view, the title, the role and any age requirement share one line, with the remaining detail on a second line, and one separator is used throughout instead of two different ones depending on where you looked. On those worker-facing pages an age requirement is now spelled out beside the title, for example Bar (age 20+): the bare number that used to follow the title read as part of the name to somebody meeting the product for the first time, which is the worst possible field to misread. The operator schedule board keeps its compact form, which suits a dense list read by people who already know the vocabulary. Nothing about who may take a shift has changed.
FixedScheduling
Signup links • going back releases the seat you were holding
While a visitor fills in their details the shifts they picked are held for a few minutes, so nobody else takes the seat while they type. Choosing Back to shift selection now returns those seats straight away, instead of leaving them held until the hold runs out: on a nearly full shift during an open call, that made the shift look full to everybody else for no reason. The countdown beside the hold also shows the real time remaining now. It previously counted its own ticks rather than the clock, so a visitor who switched away to another tab came back to a countdown claiming more time than was actually left, and could lose a filled-in form by submitting it after the hold had in fact expired.
FixedSchedulingForms
Signup links • a registration made through a link is marked as handled
A registration arriving through a signup link created a submission whose outcome was never recorded, so people who had already been welcomed and assigned to their shifts sat in the review queue looking as though nobody had ever looked at them. The outcome is now written when it happens: a registration accepted automatically is marked as such at the moment it is accepted, and one held for approval is marked approved or rejected when somebody decides. A submission that already carries a decision is never overwritten.
FixedScheduling
Signup links • shifts you already hold are shown, not hidden
On a public shift list, shifts the visitor was already assigned to were left out of the list entirely. A returning worker read the gap as a lost signup and booked the near-identical shift beside it, so one person ended up holding both. Shifts you already hold now appear in place, marked as signed up and not selectable, and they hold their day against the one shift per day rule exactly as a new pick does. A visitor who is already assigned to everything they could take now sees their shift list and a confirmation, instead of being pushed back into the registration form.
FixedProduction Plan
Production Plan • the cell you are editing stays in its own column
In the sheet view, clicking into a cell to edit it could draw the editing box away from the cell it belongs to: the description column jumped to the right, across the type column, and the date column shifted as well. Only those two columns were affected, which is why the rest of the grid looked correct. Every cell is now edited where it is drawn. Column widths, the frozen date and description pair, and everything else about the grid are unchanged.
UpdatedProduction Plan
Production Plan • moving a start time takes the deadline with it
Changing a row's start time used to leave its deadline where it was, silently shortening the task. Where a duration is already established, either by a start and deadline pair or by planned hours, the deadline now moves by the same amount and the task keeps its length. Where there is nothing to preserve the previous behaviour is unchanged, and a change that would carry a deadline past midnight leaves it alone, since a deadline stays on its own day. The supplier and label column filters also gain a (none) option, for finding the rows that carry no supplier or no label at all.
AddedProduction Plan
Production Plan • fill a column by dragging, as in a spreadsheet
The sheet view gains the fill handle: the small square in the corner of the cell you are working in. Drag it down or up and that cell's content is copied into every cell it passes, within the same column, on every column including the frozen date and description pair. A filled cell behaves exactly like a pasted one, so a date completes its year and a typed name is resolved to the department, supplier or person it refers to. Dragging never adds rows, so it stops at the last one.
AddedProduction PlanImport
Production Plan • export the plan as a spreadsheet and import it back unchanged
Settings, Export now offers Production plan alongside the shift export: pick a project and a period, and optionally move the dates on by a year for planning the next edition. The file carries the plan's own dimensions, including department, phase, type and priority, and its header row is exactly the column contract the importer reads, so a plan can be exported, edited in a spreadsheet and imported back without losing anything. Priority travels in both directions now, having previously travelled in neither. Rows that mirror a shift are left out, because those belong to the shift export, and the preview says so before you download, together with the few details a spreadsheet cannot represent. The import page also describes its columns from that same contract rather than from a list typed alongside it, so it can no longer advertise a set of columns the importer has moved past.
UpdatedSchedulingImport
Schedule • a new shift starts closed to signup, and spreadsheets carry the setting
Two changes to how a shift's signup availability is decided. A shift created on the Add shift form now starts as Not available for signup, so a shift becomes claimable because somebody chose to open it rather than by default. A choice you make while adding a shift is still remembered, so adding another keeps it. Shift spreadsheets can now carry the setting as well, through two optional columns: one naming the mode, and one listing the groups when the mode is Selected groups. A spreadsheet that does not carry them, which includes every spreadsheet written before they existed, imports its shifts as not available for signup, and you open the ones that should be claimable. A group name that cannot be matched, or that is ambiguous because two groups share it, stops that row rather than being guessed at, and the message names the fuller parent and child spelling to use instead. Exported shift files carry both columns, so an export can be edited and imported back without changing who may sign up. Shifts that already exist are untouched and keep exactly the availability they have.
SecuritySecurityUsers
Improved authorization checks for workspace access
Improved the authorization checks that decide whether a person may open an account workspace. Nothing changes for anyone who is able to sign in today.
AddedFormsScheduling
Forms • a registration from someone who already has an account is set aside
Public registration forms and signup links exist to bring in new people. When a registration now arrives carrying an email address that already belongs to an active or suspended member of the account, it is set aside automatically instead of being processed: that person's record is left exactly as it was, no shift is taken, no link capacity is used, and the submission never becomes review work. The member the address belongs to is told that a registration was received in their name, so a genuine attempt is never lost quietly. The visitor sees the ordinary confirmation, identical to the one everybody else sees, because a public form is reachable by anyone holding the link and must not reveal who does or does not have an account here. For the same reason both public pages now show every visitor the same short note before the form, explaining what to do if they already have an account. Set-aside registrations are kept rather than deleted and can be read on the form's own submissions tab under Voided, marked as already registered, so it is always possible to establish that nothing happened to that person's record. People who were invited but have not finished signing up, and people who were previously removed, are unaffected and register as before. Where one of those reaches review, the reviewer now sees an Existing user badge in the list and a notice beside the Approve button itself, stating that approving updates that member's record, or brings a removed member back, rather than creating a second person.
AddedFormsDashboard
Forms • one queue for every registration waiting for review
Registrations that needed a decision were only visible on the form they arrived through, so a submission on a form nobody happened to open could wait indefinitely. There is now a single review queue covering every form in the account, reached from a Pending review link on the Forms page, and a Pending signups card on the dashboard showing how many are waiting. The queue includes the default registration form, and archived forms as well: a form can be archived with people still waiting on it, and those are exactly the ones that go unnoticed, so they are listed and labelled to explain why they are there. The counts on the Forms page and on each form's own Submissions tab now show how many submissions are still waiting rather than the running total of everything ever received, which is the number an operator actually needs. Session approvals has left the dashboard and stays on its own Approve tab in Clockwork, where it was already presented in full.
FixedLocations
Locations • sending a crew list to everyone survives an interrupted request
Sending a crew list to every location in a subtree did all of its work while you waited, which on a large structure could run for minutes. If that was interrupted, nothing recorded how far it had got, and the only way forward was to send again and mail everyone who had already received it. Each location is now handled as its own queued piece of work, so an interruption resumes where it stopped rather than starting over, a location that fails is retried on its own without disturbing the ones that succeeded, and nobody is mailed the same list twice. Sending to a single location is unchanged and still happens immediately.
FixedLocalization
Norwegian • one consistent word for locations across the product
The Norwegian interface used two different words for a location depending on where you were, and mixed them within single screens. Around seventy phrases across vehicles, accreditation, risk assessments, the schedule, incidents, imports, exports and outgoing email now use one term, with the related compound words and the module name itself brought into line. Ordinary Norwegian expressions that merely contain the older word in an unrelated sense, and postal address fields, are untouched. Nothing changes in the other languages.
UpdatedScheduling
Signup links • a day collapses to the shift you picked
On a public shift list, choosing a shift now folds that day down to just your choice, so a long list stays readable as you work through it. A control on the day lets you open it back up to see the alternatives, and it appears only on a day that has both a pick and something left to hide. Unpicking a shift reopens the day. Shifts you cannot take are treated exactly as before, so this changes only how much is drawn, never what you are able to select.
UpdatedProduction Plan
Production Plan • checklists print as working sheets, not as reports
The checklist documents now begin on the first page instead of opening with a cover, so a printed sheet starts with the work. Each row leads with what the task is, with the time and any other detail on a second line beneath it, which reads faster when scanning a page in the field. Days are banded throughout, including on a single-day sheet, so it is always clear which day a block of work belongs to, and each sheet carries one generation timestamp in its header. Reports keep their covers: this applies to the checklist family only, and the same layout is used whether the sheet is exported by hand or arrives in a morning briefing.