Commit graph

30 commits

Author SHA1 Message Date
ad65e41395 Register Lightbulb icon for lights
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 12:33:57 +00:00
e3b47f6e19 Register UserCheck icon for tablet-checkin
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 17:37:01 +00:00
969c557f18 Register CloudSun (weather) and ListChecks (tasks) icons in AppIcon
AppIcon.tsx whitelists imported Lucide icons rather than doing a dynamic
lookup, so both apps' sidebar/dashboard icons were silently rendering
nothing -- same gotcha as the earlier 'Register Gauge icon for plant' fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 14:37:21 +00:00
d1b253a00c Register Gauge icon for plant, remove stale duplicate AppIcon.js
AppIcon.js was a stale, tracked, out-of-sync compiled duplicate of
AppIcon.tsx (missing Zap/Thermometer too) sitting next to the real
source. Since imports use bare 'from ./AppIcon' with no extension,
Vite's default resolve order picks .js before .tsx, so it may have
been silently shadowing the real source. Removed it so there's a
single source of truth, and added Gauge (plant's icon) there.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-29 09:32:34 +00:00
dd49d00a84 Widen calendar summary query window from 7 to 30 days
A 7-day window meant "next week"-type events could miss both the Mine
fetch and the All backfill entirely, since they queried the same range.
The Upcoming list is still capped by UPCOMING_LIMIT, so this doesn't
flood the dashboard — it just means events further out get a chance.
2026-07-28 15:41:00 +00:00
8320ae8789 Backfill dashboard calendar summary to a minimum of 3 events
When the Mine tab has fewer than 3 relevant events in range, top it up with
the earliest not-mine events from All (Today + Upcoming combined), rendered
in italics so it's clear they aren't personally assigned.
2026-07-28 12:54:21 +00:00
0b8fed2e96 Add calendar summary to dashboard; default portal to 1hr inactivity timeout
Dashboard now shows today's and upcoming events (mine or all, toggle) for
users with calendar app access. Also gives the portal shell a 1-hour
inactivity default for devices that have never been configured, instead of
following child apps into an unlimited 30-day session — that's why the
dashboard could sit logged in for days without prompting. An explicit "Off"
choice in Admin Settings still overrides it (now written as mins=0 instead
of clearing the cookie, so it's distinguishable from "never configured").
2026-07-28 12:45:29 +00:00
709e83b6d5 Register Zap and Thermometer icons for utilities and hvac apps
Both apps were seeded in auth/src/db.js with icon names not present
in AppIcon's iconMap, so the sidebar/dashboard rendered no icon.
2026-07-26 22:07:17 +00:00
25afbc726a Register CalendarDays icon so the Calendar app shows a sidebar icon 2026-07-25 21:43:53 +00:00
d2603bca99 Fix session-expiry redirect losing return-to-app + wire up inactivity timer
Login.tsx only read the return path from router state, which a hard
cross-document navigation (a child app bouncing the whole shell here
on session expiry) can never carry — so re-authenticating always
landed on the Dashboard instead of back in whatever app you were
using. Login.tsx now also accepts a ?from= query param for that case.

Also wired up AuthGate's inactivity auto-logout timer, which was
defined (getInactivityMs) but never actually called — so the
per-device timeout configurable in Admin Settings had no effect.
Disabled for installed PWAs as intended.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 17:07:21 +00:00
58b64c5450 Add DollarSign to AppIcon map (wages app icon)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-23 10:01:12 +00:00
f89600a135 Force desktop width on AdminMonitor — admin tool not suited to mobile layout
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 09:37:56 +00:00
b3c02adf76 Add PageShell — collapsed sidebar strip on Dashboard and all admin pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 09:15:12 +00:00
24b08012e8 Use UtensilsCrossed icon for Table Bookings app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-15 17:41:13 +00:00
e7063049f0 Add Armchair to AppIcon map for Table Bookings app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-15 17:33:29 +00:00
2b4de33289 Re-check session on tab focus to fix stale user name in sidebar footer
If a different user logs into a child app while the portal tab is open,
the portal cookie changes but the in-memory user state goes stale. Now
AuthGate re-fetches /api/auth/me on visibilitychange and focus events,
updating state only when the user identity actually changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-15 10:48:52 +00:00
f36fd83196 Replace hotel emoji on login screen with Lucide Hotel icon; add sidebar scrollbar styles
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:17:51 +00:00
567e5bf73e Add History icon to AppIcon registry
Portal sidebar was rendering nothing for the history app entry because
History was missing from the Lucide icon map.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-13 15:44:36 +00:00
af810f14c7 Configurable inactivity timeout — disabled automatically in PWA/standalone mode 2026-07-13 12:29:03 +00:00
b280d391e8 Add shared device inactivity timeout to AuthGate 2026-07-13 11:53:06 +00:00
9a7d7dd5b4 Add Monitor icon to AppIcon map for KDS app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-12 12:48:57 +00:00
905a447760 Fix issue #7: add Wrench and BarChart2 to portal AppIcon map
Maintenance (Wrench) and Reports (BarChart2) icons were missing from
the hardcoded iconMap, causing those app tiles to show no icon.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 12:10:05 +00:00
7667551f07 feat(portal): collapsible sidebar in app frame
When an app is open, the sidebar collapses to a 44px strip with a
chevron button. Clicking it opens the full sidebar as a fixed overlay
with a backdrop that closes on click. Also closes automatically when
the user interacts with / navigates within the iframe (window blur).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 15:56:04 +00:00
b08291aefe Add CalendarClock to AppIcon map (hk-planner icon)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 14:29:58 +00:00
fa32ea84ee Add self-registration, role management, and department mapping UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 00:24:05 +00:00
e9cd40c80a Add Settings admin page and settings service proxy
Wire /admin/settings route and sidebar link; proxy /settings/api/ to the
new settings service at 10.10.10.116. Admin can configure integration
credentials and manage Newbook room ordering from the portal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 18:56:27 +00:00
affb1368ac Add category grouping to sidebar and dashboard
Sidebar now renders uncategorised apps flat and categorised apps in
collapsible accordion sections; active category stays expanded. Dashboard
groups tiles under category section headings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 18:26:09 +00:00
092c4fda31 Restyle to light content theme with Lucide icons
- index.css: light body (#f4f5f7), white cards, sidebar stays dark navy
- AppIcon.tsx: Lucide icon lookup component for app tiles and nav
- Sidebar.tsx: Lucide nav icons (LayoutGrid, Users, Activity, LogOut)
- Dashboard.tsx: white cards with shadows, coloured Lucide app icons
- AdminMonitor.tsx: light theme throughout, Lucide tab icons,
  better status colours for light backgrounds

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 18:09:51 +00:00
87043ba6af Make hotel name configurable via VITE_HOTEL_NAME build arg
Defaults to 'Number Four at Stow'. Replaces hardcoded 'Hotel Number Four'
and 'HNF Manage' in sidebar, login page, and browser title. Other hotels
set VITE_HOTEL_NAME in their /opt/portal/.env before rebuilding.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 17:47:47 +00:00
b54081113b Initial commit: portal 2026-07-01 12:09:54 +00:00