Room bookings were not constrained to meeting rooms: the booking form listed every room type and the server accepted any valid room id.
Contracts already filtered private offices/coworking desks on create/edit, but an older draft contract with an invalid meeting-room link could still be activated.
The recent invoice lifecycle page also had a small Prettier ordering drift.
Changes
Booking room options now only include meeting rooms.
Booking create/edit actions now reject non-meeting-room ids server-side.
Contract room type filtering now uses a shared server constant and activation re-validates linked rooms, so meeting rooms cannot be activated on contracts.
Removed the previous booking-vs-contract conflict helper because the type boundary makes it unnecessary.
Formatted the merged invoice detail page line flagged by Prettier.
Verification
pnpm check
pnpm exec eslint src/lib/server/scheduling.ts 'src/routes/dashboard/clients/[id]/bookings/+page.server.ts' 'src/routes/dashboard/clients/[id]/contracts/+page.server.ts' 'src/routes/dashboard/invoices/[id]/+page.svelte'\n- pnpm exec prettier --check src/lib/server/scheduling.ts 'src/routes/dashboard/clients/[id]/bookings/+page.server.ts' 'src/routes/dashboard/clients/[id]/contracts/+page.server.ts' 'src/routes/dashboard/invoices/[id]/+page.svelte'\n- pnpm build\n\nNote: full pnpm lint is still blocked by pre-existing unrelated lint/formatting issues in src/lib/components/first-admin-form.svelte, src/lib/components/organization-switcher.svelte, and generated worker types.
## Review finding
- Room bookings were not constrained to meeting rooms: the booking form listed every room type and the server accepted any valid room id.
- Contracts already filtered private offices/coworking desks on create/edit, but an older draft contract with an invalid meeting-room link could still be activated.
- The recent invoice lifecycle page also had a small Prettier ordering drift.
## Changes
- Booking room options now only include meeting rooms.
- Booking create/edit actions now reject non-meeting-room ids server-side.
- Contract room type filtering now uses a shared server constant and activation re-validates linked rooms, so meeting rooms cannot be activated on contracts.
- Removed the previous booking-vs-contract conflict helper because the type boundary makes it unnecessary.
- Formatted the merged invoice detail page line flagged by Prettier.
## Verification
- pnpm check
- pnpm exec eslint src/lib/server/scheduling.ts 'src/routes/dashboard/clients/[id]/bookings/+page.server.ts' 'src/routes/dashboard/clients/[id]/contracts/+page.server.ts' 'src/routes/dashboard/invoices/[id]/+page.svelte'\n- pnpm exec prettier --check src/lib/server/scheduling.ts 'src/routes/dashboard/clients/[id]/bookings/+page.server.ts' 'src/routes/dashboard/clients/[id]/contracts/+page.server.ts' 'src/routes/dashboard/invoices/[id]/+page.svelte'\n- pnpm build\n\nNote: full pnpm lint is still blocked by pre-existing unrelated lint/formatting issues in src/lib/components/first-admin-form.svelte, src/lib/components/organization-switcher.svelte, and generated worker types.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Review finding
Changes
Verification
013b81879ctoa6818607c8fix: block bookings for contracted roomsto fix: enforce room type scheduling rules