- A vacant room spans into adjacent vacant days (left/right border removed, card extends into the margin) exactly like multi-night bookings
- An occupied room adjacent to a vacant day shows a grey 'vacant' sliver bracket on that side (previously no bracket rendered at all when the neighbouring day was empty)
- previous_status falls back to 'vacant' when nothing occupied yesterday; next_status falls back to 'vacant' when nothing occupies tomorrow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Future dates: departure time sliver only shows for late checkouts (after default_checkout_time, default 11:00) — on future days every in-house booking is still 'arrived' so the time was showing on every card
- Sliver bracket widens to 19px when a time is shown and the time renders vertically (writing-mode) to fit the narrow space
- Clean/dirty site status pill only shows when viewing today — it reflects current state, meaningless on other dates
- NewBook task pill, task dots, and category header task/dirty badges hidden on future dates
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- FilterBar split into CategoryFilterBar / StatesFilterBar / StatFilterBar — each independently toggleable from the controls bar (Categories Filter / States Filter / Stats Filter), visibility persisted to localStorage
- Control buttons are now individual rounded buttons with a 6px gap (removed the merged/segmented styling that left a missing border)
- Category group headers span the full width with top/bottom borders only; 37px side padding keeps the header text aligned with room card content
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Cog button in date bar toggles controls bar visibility (persisted to localStorage)
- Controls bar: [Flat List][Categories] view toggle | [States Filter][Stats Filter] filter visibility toggles | [Reset View]
- Flat list view renders all visible rooms sorted numerically by name, no category headers
- States/stats filter bars independently show/hide based on controls bar toggles
- All view preferences (controlsVisible, viewMode, statesFilterVisible, statsFilterVisible) persist across page refreshes
- Semantic flow filters: 'arriving'/'departing' each match back-to-back rooms too; 'back-to-back' as exact match
- Filter chip counts use semantic union logic to match filter behaviour
- Guest name extraction tries guests[0].firstname+lastname (NewBook field names)
- booking_locked normalised: '0'/'1' strings handled explicitly (JS truthy fix)
- Category sort order pulled from settings global_config via internal HTTP endpoint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Settings page: add overflow-y:auto + flex:1 so content scrolls within
page-content (which has overflow:hidden)
- Checkout time: move departure time out of B2B card stats row and into
the left-bracket sliver, matching original plugin behaviour:
- Only shown while prev booking status is still 'arrived' (not yet
checked out); collapses to normal bracket once NewBook flips to
'departed'
- Positioned absolutely over the ::before left bracket area
- Remove the forced 'departed' override on prev_status — let NewBook's
real status drive bracket colour so the sliver shows correctly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace CSS grid with the original plugin's vertical list + 23px margin
bracket system. Each card has a 2px border coloured by booking status;
data-previous-status / data-next-status drive C-bracket pseudo-elements in
the 23px gutter; data-spans-previous/next remove the corresponding border
and collapse the margin to extend the card across days.
Card interior is restructured: header row (room number, flow badge, lock,
nights counter, site-status pill), guest info row, and stats row (time
pill, bed-type pill, task-status bordered pill). Category headers now match
the original's sticky bordered style with edge-extending pseudo-elements.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
NewBook-connected daily housekeeping planner. Replaces the hotelhubmodule-housekeeping-dailylist
WordPress plugin. LXC 120 · 10.10.10.120:3080 · slug: room-planner.
- 3-day booking window (yesterday/today/tomorrow) fetched live from NewBook
- Task completion ticks back to NewBook; room status patches NewBook directly
- 23px border sliver CSS system for adjacent-day booking status
- 3-state filter cycling (off→inclusive→exclusive) for categories and flow types
- Stat filters for outstanding tasks and clean/dirty status
- Rolling 48h activity log with checkout/checkin/status/tasks events
- newbook_pings event bus for future NewBook poller integration
- Room modal with permission-gated guest/rate/notes, task checkboxes, status buttons
- Placeholder sections for future linen-count and routine-tasks modules
- Settings page: task type colours, twin/extra-bed detection, category exclusions
- Mobile-first layout (sidebar desktop, compact top bar mobile)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>