103 Commits

Author SHA1 Message Date
loki d75df6db1a chore: add playwright-mcp snapshots to gitignore
Build & Push Docker Image / build (push) Successful in 3s
2026-05-20 22:53:35 +02:00
loki 9cbda65ab0 fix: all booking endpoints create new slots for parallel rendering
Build & Push Docker Image / build (push) Successful in 13s
- POST /api/public/bookings: creates new slot instead of reusing
- POST /api/bookings/manual: creates new slot instead of reusing
- POST /api/slots (with customer): creates new slot for the booking
- POST /api/public/book-slot: already fixed previously
- All 4 endpoints now produce parallel slot blocks
2026-05-20 22:45:09 +02:00
loki 4a731ab5c6 fix: overlap check only counts slots with bookings
Build & Push Docker Image / build (push) Successful in 15s
2026-05-20 21:29:35 +02:00
loki 827bf2a12b fix: book-slot always creates new slot for parallel rendering
Build & Push Docker Image / build (push) Successful in 13s
2026-05-20 20:48:30 +02:00
loki c383638f34 fix: use dayCap instead of slot.max_bookings for capacity check in public API
Build & Push Docker Image / build (push) Successful in 30s
2026-05-20 20:21:27 +02:00
loki daa84f947e fix: slot click shows info panel, edit modal via button only
Build & Push Docker Image / build (push) Successful in 13s
2026-05-14 22:23:52 +02:00
loki a7d5d7894d feat: Outlook-style overlap layout for calendar slots
Build & Push Docker Image / build (push) Successful in 11s
- Replaces exact-time grouping with overlap-based column algorithm
- Slots auto-assigned to narrowest possible columns
- Outlook-style rendering: overlapping slots get smaller widths
- Same algorithm for admin and customer views
2026-05-14 22:17:28 +02:00
loki c466415c33 fix: darker blue background for slot blocks
Build & Push Docker Image / build (push) Successful in 10s
2026-05-14 20:54:11 +02:00
loki f7b218650d fix: calendar slot blocks blue background instead of white
Build & Push Docker Image / build (push) Successful in 11s
2026-05-14 20:49:16 +02:00
loki 9810ea536c fix: booking card background light blue instead of white/gray
Build & Push Docker Image / build (push) Successful in 11s
2026-05-14 20:20:22 +02:00
loki f4b232935b fix: reaktivieren button in green to match its positive action
Build & Push Docker Image / build (push) Successful in 33s
2026-05-14 19:51:00 +02:00
loki 827eb724fc feat: slot click opens edit, status buttons for all states, manual entry without email
Build & Push Docker Image / build (push) Successful in 14s
2026-05-14 18:52:21 +02:00
loki 401b701a52 feat: remove max_bookings, add batch create for all supporters
Build & Push Docker Image / build (push) Successful in 11s
2026-05-14 15:22:03 +02:00
loki 922d892f5a fix: customer calendar same side-by-side layout as admin
Build & Push Docker Image / build (push) Successful in 10s
2026-05-13 23:28:16 +02:00
loki 491ec0cbc4 fix: nullish coalescing operator precedence in overlap.ts
Build & Push Docker Image / build (push) Successful in 13s
2026-05-13 23:11:23 +02:00
loki f91d9754b1 feat: parallel slots side by side, overlap counting by capacity
Build & Push Docker Image / build (push) Failing after 9s
2026-05-13 22:58:06 +02:00
loki 794d85a4be feat: add 'Slot zur gleichen Zeit' button in detail panel
Build & Push Docker Image / build (push) Successful in 10s
- New button opens create-modal with pre-filled date + start_time
- Makes duplicating slots for multiple supporters one click away
2026-05-13 21:34:07 +02:00
loki e7e93d74e5 fix: admin calendar shows capacity per day, no sub-blocks for free slots
Build & Push Docker Image / build (push) Successful in 13s
- Backend: dailyCapacities includes ALL dates (blocked + slot dates)
- Admin calendar slot blocks:
  - Title bar with slot name
  - Booking rows only for existing bookings/blocked slots
  - No 'Frei' sub-blocks shown
- Customer calendar unchanged (still shows Frei/Belegt/Ausstehend/Bestätigt)
- Capacity header (± controls) now visible for all week days
2026-05-13 21:27:25 +02:00
loki 56ea1a6364 feat: daily capacity per day with ± controls in calendar header
Build & Push Docker Image / build (push) Successful in 13s
- New daily_capacity table with date-based overrides
- Default = COUNT of it_support users (dynamic)
- Backend: GET/PUT/DELETE /api/capacity/:date
- Backend: POST /api/capacity/batch for multiple dates
- Slots API returns dailyCapacities map alongside slots
- Public API: new slots get day_capacity as max_bookings
- WeekCalendar header: − N + ✕ capacity controls per day
- SlotsPage: capacity mutations + passes to calendar
- WeekCalendar slot blocks use day capacity for maxB
2026-05-13 20:47:04 +02:00
loki 6032630a4b fix: overlap check against ALL slots, not just those with bookings
Build & Push Docker Image / build (push) Successful in 1m0s
2026-05-13 00:08:05 +02:00
loki e6fbdd036d feat: prevent overlapping bookings across slots on same day
Build & Push Docker Image / build (push) Successful in 12s
2026-05-12 22:35:55 +02:00
loki 224ff7c583 fix: only push latest tag, remove sha revision
Build & Push Docker Image / build (push) Successful in 10s
2026-05-12 21:34:27 +02:00
loki 7ef3ac331f fix: clear hover badge when mouse enters slot block area
Build & Push Docker Image / build (push) Successful in 12s
2026-05-12 21:01:40 +02:00
loki de5f7c6e99 fix: prevent hover highlight from bleeding through slot blocks
Build & Push Docker Image / build (push) Successful in 10s
2026-05-12 20:12:14 +02:00
loki cb95f5c89c fix: customer calendar hover effects, cursor-pointer on all buttons
Build & Push Docker Image / build (push) Successful in 11s
2026-05-12 19:57:24 +02:00
loki 0c0289ed7a fix: remove 'Slot auswählen' placeholder panel, calendar full width
Build & Push Docker Image / build (push) Successful in 10s
2026-05-12 19:39:52 +02:00
loki c313f11e07 feat: better wrapping for overlapping bookings in calendar
Build & Push Docker Image / build (push) Successful in 11s
- Flex-wrap with 33% width when max_bookings > 3
- Customer mode: flex-wrap prevents unreadably narrow blocks
- Admin mode: wraps into rows, shows borders between blocks
- Container height adapts to wrapped rows
- Hover effects preserved on wrapped blocks
2026-05-12 19:21:24 +02:00
loki 2a3647fc1f fix: add status-colored hover effects to calendar slot blocks
Build & Push Docker Image / build (push) Successful in 11s
- Slot container: hover ring + shadow (blue for free, red for blocked/booked)
- Sub-blocks: hover brightness+shadow for visual feedback
2026-05-12 18:24:03 +02:00
loki f3e235897f fix: status-colored hover border on booking cards, remove duplicate Tag blocken button
Build & Push Docker Image / build (push) Successful in 12s
2026-05-12 17:36:07 +02:00
loki 72af40bf07 fix: remove transparent overlay from modal completely
Build & Push Docker Image / build (push) Successful in 11s
2026-05-12 17:14:43 +02:00
loki e4d29452e2 fix: remove backdrop blur from modal overlay
Build & Push Docker Image / build (push) Successful in 11s
2026-05-12 17:01:16 +02:00
loki df6d67b8a5 feat: add PUID/PGID support with docker-entrypoint.sh
Build & Push Docker Image / build (push) Successful in 12s
2026-05-12 00:08:31 +02:00
loki bacac8ed8b fix: run container as non-root user (node)
Build & Push Docker Image / build (push) Successful in 20s
2026-05-12 00:00:41 +02:00
loki bf6e80ad25 fix: move badge and copy icon to right column, use SVG link icon
Build & Push Docker Image / build (push) Successful in 10s
2026-05-11 23:53:17 +02:00
loki 9cd0817f15 feat: technician assignment + webhooks (Slack/Teams)
Build & Push Docker Image / build (push) Successful in 12s
- Backend: assigned_to column on slots + GET /api/users
- SlotForm: technician dropdown to assign IT/AM staff
- SlotsPage: shows assigned technician name in detail panel
- Webhooks table + CRUD routes (POST/GET/PUT/DELETE /api/webhooks)
- Webhook sender with Slack-compatible format
- Webhooks triggered on booking.created/confirmed/cancelled
- Settings: new Webhooks tab with add/list/toggle/delete
- DB: webhooks table with migrations
2026-05-11 23:20:33 +02:00
loki fe11521054 fix: rename button to 'Buchung Link kopieren'
Build & Push Docker Image / build (push) Successful in 10s
2026-05-11 20:18:16 +02:00
loki 8418d7bab6 fix: toast message text and z-index visibility
Build & Push Docker Image / build (push) Successful in 10s
2026-05-11 20:11:19 +02:00
loki 2c08046fb3 fix: URL kopieren button with toast popup instead of emoji
Build & Push Docker Image / build (push) Successful in 13s
2026-05-11 19:43:48 +02:00
loki 715b61ce58 feat: booking link copy, customer history, email templates
Build & Push Docker Image / build (push) Successful in 13s
- Copy booking link buttons in Slot panel and Bookings list
- Customer history modal from Slot panel (📋 icon)
- Backend: GET /api/bookings supports customer_email filter
- Backend: new GET/PUT /api/email-templates
- DB: email_templates table with 3 default templates
- Email transporter reads templates from DB with {{var}} placeholders
- Settings: new E-Mail tab with template editor + preview
- Placeholders: app_name, customer_name, slot_title, slot_date, start_time, end_time, booking_url
2026-05-11 19:04:45 +02:00
loki f2ae74d699 fix: seed runs Better-Auth migrations before creating admin user
Build & Push Docker Image / build (push) Successful in 13s
2026-05-11 00:03:37 +02:00
loki 72c7a2d9db fix: inline SQL schema in database.ts (no file dependency)
Build & Push Docker Image / build (push) Successful in 3s
2026-05-10 23:49:16 +02:00
loki ee0ab9fd96 fix: copy schema.sql to server/dist/db in Docker build
Build & Push Docker Image / build (push) Successful in 7s
2026-05-10 23:39:20 +02:00
loki 0acd654c5f feat: auto-seed admin user on first start (Docker-ready)
Build & Push Docker Image / build (push) Successful in 12s
- New server/src/seed.ts creates admin user via auth API if not exists
- Called from index.ts after app.listen
- Configurable via env: ADMIN_EMAIL, ADMIN_PASSWORD, ADMIN_NAME, ADMIN_ROLE
- Defaults match existing test account (admin@test.de / Test1234!)
- Settings table already seeded via schema.sql INSERT OR IGNORE
2026-05-10 23:22:22 +02:00
loki 929c985e51 fix: add cc_email and notes to manual booking and slot+booking creation
Build & Push Docker Image / build (push) Successful in 14s
2026-05-10 23:09:58 +02:00
loki 2412c7da1d fix: CC email receives same notification emails as customer
Build & Push Docker Image / build (push) Successful in 12s
2026-05-10 22:48:34 +02:00
loki d8cc5543de fix: show notes and CC email in admin bookings panel
Build & Push Docker Image / build (push) Successful in 12s
2026-05-10 22:34:29 +02:00
loki be81071e5a feat: customer notes and CC email for IT department
Build & Push Docker Image / build (push) Successful in 12s
- DB: bookings table gets cc_email and notes columns (with migration)
- Backend: all booking endpoints accept cc_email and notes
- Customer booking form: CC email field + notes textarea
- Email templates updated to show sender from CC config
2026-05-10 22:22:51 +02:00
loki e561416675 feat: expanded settings with working hours, booking rules, app name
Build & Push Docker Image / build (push) Failing after 8s
2026-05-10 22:16:47 +02:00
loki 683309eb94 feat: create slot + direct customer booking in one step
Build & Push Docker Image / build (push) Successful in 14s
- Backend POST /api/slots accepts optional customer fields (name, email, company, location)
- When customer data provided: creates slot + booking simultaneously
- Frontend SlotForm: toggleable 'Kunde direkt zuweisen' section
- IT/AM can create slot and immediately assign a customer
2026-05-10 21:31:13 +02:00
loki 4e12b4ac49 feat: selected cell stays highlighted after click in customer calendar
Build & Push Docker Image / build (push) Successful in 10s
2026-05-10 20:48:21 +02:00