Commit graph

9 commits

Author SHA1 Message Date
4d531b43b8 Add iOS install hint + Apple PWA meta tags
iOS Safari has no beforeinstallprompt API, so the portal's Install
button (?install=1) silently did nothing there. IosInstallHint now
shows Share -> Add to Home Screen steps on Safari, or a prompt to
switch to Safari first if opened in another iOS browser/in-app
webview (those can't install PWAs on iOS at all).

Also added apple-mobile-web-app-title + apple-touch-icon so the
home screen icon isn't a page screenshot.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 14:12:12 +00:00
a4c83332ef Add missing PWA icons
Manifest referenced icon-192.png/icon-512.png but the icons directory
was empty, so Chrome failed installability and only offered a
home-screen shortcut instead of a full installable PWA.
2026-07-29 17:22:22 +00:00
056b4d6e80 Scope PWA manifest to app's own path instead of origin root
Every installed PWA claimed scope "/", so Android link-capturing routed
navigation for any app on the shared origin into whichever PWA had it.
2026-07-29 13:46:58 +00:00
4cce6507bc Revert Open category back to Operations (autocorrect typo) 2026-07-26 12:47:56 +00:00
056680999c Collapse Departments and Assignees pickers in the event form
Both lists grow with staff/department count and were always fully
expanded — matches the History section's existing collapsible pattern,
showing a summary of the current selection when closed.
2026-07-26 09:17:22 +00:00
d6542f4503 Filter Workforce departments to the configured location
getAllDepartments() was pulling every department across all Workforce
locations, not just this hotel's — mirrors the location_id filter wages'
fetchAllDepartments() already uses.
2026-07-26 09:05:04 +00:00
ca0dc9b070 Add recurring events, push notifications, config sync — and mobile layout fixes
Recurring event editing (rrule) with this/all occurrence scope, web push
subscriptions (VAPID) with a cached config layer for notification settings,
and email delivery via nodemailer.

Also fixes the calendar view never actually stacking on mobile: the
Calendars filter column used flex:1 with minWidth:0 on its sibling, so
flex-wrap never triggered regardless of viewport width, squeezing the grid
and view switcher into a sliver next to a fixed 220px sidebar. Adds a
proper mobile breakpoint that stacks the layout, scrolls the week grid
horizontally instead of compressing it, and enlarges touch targets.
2026-07-25 23:04:59 +00:00
dad3cc472c Move calendar into Open sidebar category with noticeboard/maintenance 2026-07-25 21:43:48 +00:00
bf5557d277 Add calendar app — shared events calendar with departments, staff tagging, bank holidays and two-way phone sync
Fastify/Postgres backend + React frontend matching the stack's app conventions, plus
a hand-rolled RFC 4791 CalDAV server (caldav-adapter turned out Koa-only in practice)
so calendars subscribe as genuine two-way sync in Apple/Google/Outlook. v1 scope:
multiple colour-coded calendars, department/staff event tagging via live Workforce
lookups, month/week/day/list views, dashboard, file attachments, activity log, and
an auto-synced UK bank holidays calendar. Verified end-to-end locally against real
Postgres: REST CRUD, CalDAV discovery/PROPFIND/REPORT/PUT/sync-collection, all-day
date handling, system-calendar write protection, and activity logging across both
the web and CalDAV write paths.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 16:36:37 +00:00