- #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>
- #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>
- #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>
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>
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>