Rooms panel floor-plan upload
Venue staff can upload a room floor plan only after the room exists. The form shows pending, saved, error, and unknown states, serializes upload with save/remove, and will not replace a newly finalized URL with a stale text field. Late responses from another room are ignored. Legacy external URLs remain editable. The upload flow does not request client notifications; no live operation was exercise
Venue staff can upload a room floor plan only after the room exists. The form shows pending, saved, error, and unknown states, serializes upload with save/remove, and will not replace a newly finalized URL with a stale text field. Late responses from another room are ignored. Legacy external URLs remain editable. The upload flow does not request client notifications; no live operation was exercised in this lane. The rooms list does not auto-merge parent `initialRooms` after a local save. Peer edits from another session appear after a full page reload; **Reload and review** is available when a save is uncertain. That is the recovery tradeoff, not a live shared list. An uncertain save keeps Edit, Close, Cancel and new writes locked until reload. A confirmed partial create adopts the saved room identity rather than creating it twice. Both settings-tab and locations-page callers supply the trusted venue and its locations. Root integration separates the server database error classifier from the browser's unknown-transport fallback and extracts the presentational room list to keep files within the repository size limit. Backend capacity rules and the existing shared room/media cores are unchanged by this UI packet. Native Business room authoring remains an unfinished companion.
Separate review schedules and clearer previews
Configure internal and public review schedules independently; a cadence preview does not promise message delivery.