Commit graph

7 commits

Author SHA1 Message Date
25d6323aa4 Differentiate arrived vs arriving-today in Rooms Accessible View
A confirmed booking for today that hasn't checked in yet is accessible —
staff can get in before the guest arrives. Previously it was lumped with
in-room guests and greyed out.

Backend: classifyBookingStatus() splits NewBook 'staying' bookings by
status string (normalised). Statuses containing 'arriv', 'inhouse' or
'checkedin' → occupied; everything else → arriving. /api/occupancy now
returns both occupied_site_ids and arriving_site_ids.

Frontend:
- Occupied rooms: greyed out + 'Occupied' badge (guest physically in room)
- Arriving today: normal display + amber 'Arrival today' badge (access now,
  prioritise before guest checks in)
- Chip label shows 'Rooms (X free • Y arriving • Z occupied)' breakdown

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 12:29:26 +00:00
3fc23eaecc Fix #5 category in search results, rename rooms chip (#6)
- #5: SearchSelect now shows the area/category as a muted right-aligned
  label on every dropdown item — visible at a glance whether a result is
  a Room, Kitchen, Garden etc. Typing the category name already filtered
  correctly; the label makes it clear without needing to read the group header.
  Applies to both the new-task location picker and the asset location picker.
- #6: Rename 'Rooms view' chip to 'Rooms Accessible View' to better convey
  that it shows which rooms staff can actually access right now.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 12:34:22 +00:00
2a2b14029a Fix issues #2 #5 #6 #8: fuzzy search, rooms-view, asset edit button
- #2 #5: SearchSelect now splits query into words — each word must appear
  anywhere in label or group, so '101' matches 'Room 101' and 'room 101'
  matches too (multi-word, order-independent)
- #6: Rooms-view chip replaces 'Unoccupied rooms only'. When active:
  filters task list to rooms category only, fetches live occupancy, and
  shows occupied-room tasks greyed out with an 'Occupied' badge — so small
  jobs (bulb changes etc.) are still visible without being buried. Category
  chips hide while rooms-view is on to avoid conflict.
- #8: Rooms-view chip shows total rooms count + free count
  e.g. 'Rooms (5 • 3 free)'. Category chip counts stay as-is (full
  count) and hide when rooms-view is active.
- #3/#4 follow-up: Add pencil edit button on every asset table row so
  users can edit an asset directly without opening the detail modal first.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 12:26:43 +00:00
859874f614 Fix issues #2-#6 and #8: searchable pickers, occupancy filter, asset UX, counts
- #2 #5: Replace plain <select> location pickers in NewTask and Assets with
  SearchSelect combobox — full-text search across name and category group
- #3: Add "Unknown" checkbox on asset install date — disables the field and
  saves null instead of leaving an ambiguous blank
- #4: Add inline "Add service task" form in asset detail modal — creates a
  recurring template pre-linked to the asset without leaving the page
- #6: Fix unoccupied rooms filter — was always empty because (a) list_type
  was 'all' instead of 'staying' and (b) only checked b.site_id but NewBook
  returns booking_site_id on most account configs
- #8: Add open-task count badges to category filter chips on Summary page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 12:09:57 +00:00
2a3a226131 Fix 400 on NewBook sync and run-due: send empty JSON body
Fastify rejects POST requests that carry Content-Type: application/json
but an empty body (JSON.parse('') throws). Both no-body POSTs now send {}.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 11:10:14 +00:00
3289a31027 Remove NewBook room blocking — app never writes to NewBook
Unsellable flag is in-app visibility only; staff mark rooms out of
order in NewBook through their own process. NewBook use is now
read-only (room sync + occupancy filter).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 21:37:52 +00:00
6ca395097e Maintenance log book app — initial scaffold
Multi-department fault log: NewBook-synced room locations + manual
locations with categories, six-state task flow (submitted/in progress/
hold-parts/hold-later/temporary fix/fixed), photos per stage, priorities
with unusable flag and per-task NewBook out-of-order push, costs on
resolve, comment/audit thread, recurring task templates with
note-to-template carryover, asset register, contractor register with
document attachments, staff/contractor allocation, occupancy-aware
summary filter, searchable history with CSV export, email notifications.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 21:28:57 +00:00