bf0c728818
fix(entries): reject create/update of intervals in the future
...
- Add ErrFutureDay sentinel error
- CreateInterval: rejects if startDayKey > todayKey (400)
- Update: rejects if new start_time moves entry to a future day (400)
- Handler maps ErrFutureDay → 400 Bad Request for both endpoints
- Add TestCreateIntervalRejectsFutureDay
- Add TestUpdateRejectsMoveToFutureDay
- UI already gates this via dayCapabilities (canAddInterval=false,
canEditEntries=false for future days), but server now enforces it too
2026-04-30 19:09:22 +02:00
9d6233b116
feat: add manual interval creation and inline entry editing
...
- Service: CreateInterval() validates same-day, end>start, day not closed
- Service: Update() now rejects edits on closed-day entries (ErrDayAlreadyClosed)
- Handler: POST /api/entries creates a completed interval with explicit times
- API client: entries.createInterval(startMs, endMs, note)
- Utils: parseTimeInput / toTimeInput helpers for HH:MM <-> unix ms
- Today page: '+ Add interval' form (time pickers + optional note)
- Today page: pencil button on each entry opens inline edit row (start/end/note)
- Tests: TestCreateInterval, TestCreateIntervalEndBeforeStart,
TestCreateIntervalCrossesMidnight, TestUpdateRejectsClosedDay
2026-04-30 17:45:02 +02:00
2055a46dee
feat(m6): CSV export, Makefile, README, single-binary build
2026-04-30 16:48:44 +02:00
4a328ad6cc
feat(m5): PWA service worker, offline Dexie store, outbox, sync endpoints
2026-04-30 16:47:27 +02:00
df04d9d7a9
feat(m4): SvelteKit frontend - today, week, history, settings views
2026-04-30 16:45:00 +02:00
d0ef0387f2
feat(m3): week close, overtime/undertime delta, frozen settings snapshot
2026-04-30 16:39:42 +02:00
4a0e0c8318
feat(m2): settings history, close day, holiday/vacation/sick marking
2026-04-30 16:37:56 +02:00
3aa068efd2
feat(m1): backend scaffold - entries CRUD, start/stop, auth, migrations
2026-04-30 16:35:06 +02:00