runRotaSync: only protect today's timesheet row when it has real clocked-out hours (hours > 0), so stale ?/0h rows and empty rows are healed by the next rota sync without needing manual intervention. runTimesheetSync: revert to SKIP for today when no completed shifts — writing an empty row was overwriting the rota schedule with nothing. Frontend: fetch wfShifts for the full week after a timesheet pull (not just up to today), so future rota rows aren't dropped from state. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| index-B7_UXJgZ.css | ||
| index-BdIiqds1.js | ||