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> |
||
|---|---|---|
| .. | ||
| assets | ||
| icons | ||
| index.html | ||
| manifest.webmanifest | ||
| registerSW.js | ||
| sw.js | ||
| workbox-9c191d2f.js | ||