Highlights
- Managers can clock in - a manager (or owner) who also holds a worker seat now gets a header toggle between the admin area and their own shift/clock-in view, so they can punch in and out like any other staff member.
- Choose a role when adding staff - the Add/Edit staff form now lets you pick Manager or Employee, and that role carries through the person's invite to their live account.
- Live On Shift status - once a staff member clocks in, the rota shows them as On Shift with their real clock-in time instead of a Late badge, and the card reflects the actual times worked.
- Timesheet pagination - the timesheets list now pages (10 at a time by default, newest first) with a choice of how many rows to show per page.
- Edit approved timesheets - editing an approved timesheet sends it back for approval automatically; Reject now only appears while an entry is still pending.
- Fairer break deduction - unpaid break time is floored at the shift's scheduled break, so skipping (or barely tapping) the break button no longer inflates paid time.
Changes
Features
- feat(employees): choose a manager/employee role when adding staff; the role carries through to the invite.
- feat(access): managers with a worker seat can clock in via a header Admin / My shifts switch.
- feat(rota): live On Shift status with the staff member's real clock-in/out times.
- feat(clock): floor the unpaid break at the scheduled break.
- feat(timesheets): paginate the list (newest first) with a selectable page size.
- feat(timesheets): edit an approved timesheet back to pending; reject only while pending.
- feat(insights): count on-shift staff towards punctuality and label weeks by number.
Fixes
- fix(rota): day-view badges reflect the shift's real tags, and areas follow the company setup order.