Fix: “Update available” badge stayed visible after auto-upgrade of the Pro plugin — the update_plugins site transient was not cleared after the upgrade, so WordPress kept showing the stale notice until the next WP-Cron run (12h). Transient is now cleared + re-checked after upgrade completes.
New: “First Activated” date in Support Info — shows when the plugin was first activated, included in the copyable support text. Marked as “(estimate)” for installs predating this version.
Internal: First-activation timestamp is sent to the license server with the next license check (Pro plugin) for free-to-paid analytics.
New: SMS notification infrastructure — hooks for SMS sending on appointment create, cancel, reschedule, decline
New: SMS log table for tracking sent messages
New: Options filter hook (vollstart_adesk_options) for Pro plugin to register additional settings
Internal: makeOption() now public for extensibility
1.0.6 – 2026-04-20
New: vollstart.com branding footer in admin
New: Pro onboarding banner with license key focus when Pro installed but not licensed
New: Pro JS dynamic loading — adeskButton, adeskModal buttons array, beforeRender/afterRender hooks, getHelpers API
1.0.5 – 2026-04-16
New: Auto-upgrade Pro plugin after valid license key is saved — no more manual “Update” click needed
New: CAPTCHA / Anti-Spam for booking form (Pro) — Honeypot field, minimum form time, and Google reCAPTCHA v3. User can enable any combination. All checks run server-side with generic error messages that do not reveal which check failed.
New: Honeypot anti-spam — hidden field that bots fill in but humans cannot see. No external service, GDPR-compliant, zero configuration.
New: Minimum form time — reject bookings submitted faster than a configurable threshold. Bots submit instantly, humans need a few seconds.
New: Google reCAPTCHA v3 — invisible score-based CAPTCHA. Configurable threshold (default 0.5). Requires free Google API keys. Note in options: sends visitor IP to Google.
Improvement: Option descriptions now shown below the input field (was below the label). Matches POS Desk layout.
Improvement: Option key shown on its own line below the label (was inline next to label).
Improvement: Pro badge on CAPTCHA section heading and all CAPTCHA option labels
Fix: Options sections after File Upload (CAPTCHA, Google Calendar, Advanced) rendered outside the card — caused by Purge button breaking the div nesting
New: Phasen-Tracking feature planned for POS Desk Gastronomie tier (roadmap)
New: “More Plugins by Vollstart” submenu page — discover other free plugins from the same team
New: Queue TV display — option to show ticket number on the left and service desk name on the right (reversed layout for portrait orientation)
New: Print button for queue tickets — backend queue table, plus optional print button and auto-print on kiosk after ticket pull (two new global options)
Fix: Queue auto-skip timezone bug — cutoff was calculated with wrong timezone offset, either never firing or firing immediately. Now uses MySQL DATE_SUB for timezone-safe comparison.
Fix: Queue number restart bug — numbers restarted from 001 after ticket deletions because COUNT(*) was used instead of MAX(queue_number)
Fix: Queue table status column — when a staff is serving a ticket, the table now shows the correct status from the staff card as source of truth
1.0.4 – 2026-04-11
Fix: German translations not loading — loadTextDomain() was empty, load_plugin_textdomain() now called correctly
Fix: 262 untranslated strings in de_DE, de_AT, de_CH now translated
Fix: POT file regenerated from current source (1241 strings)
Fix: de_CH uses “ss” instead of “ß” throughout (Swiss German standard)
1.0.3 – 2026-04-11
New: Google Calendar Sync (Business tier) — push bookings to Google Calendar, read busy times to prevent double bookings
New: Per-calendar Google Calendar assignment in calendar settings
New: OAuth2 connect/disconnect/test UI in Options
New: Appointment::updateMeta() for extensible appointment metadata
New: Admin AJAX extension filter for Pro/Business plugin actions
New: Pro/Business tier badges on options — shows which license tier each feature requires
New: Customer Files section in customer detail view with upgrade teaser — actual implementation in Pro plugin (Business tier)
New: Customer Files section in Files admin tab with upgrade teaser — lists all customer files across the site (Business tier, Pro plugin)
New: vollstart_adesk_customer_delete_all_data action hook for Pro/Business cleanup during GDPR delete
New: vollstart_adesk_customer_pdf_after_notes filter hook — Pro/Business can inject content (e.g. customer files) into customer PDF
New: Appointment change history — audit log of status changes, reschedules, and file uploads/deletes. Shown in appointment detail view.
New: Delete button per file in appointment detail view
New: Bulk customer export — download all customers as JSON (basic fields, compatible with import)
New: Customer PDF / profile print — printable customer profile with contact, overview stats, appointment history, and notes
New: Professional PDF header with business info (name, address, phone, email) and WordPress custom logo fallback
New: QR code embedded in appointment PDF header (check-in code, replaces previous inline version)
New: Client-side file validation before upload — checks allowed extensions and max size from global settings
New: CSV export for customer change history — download button inside the change history box
New: Appointment ID shown in customer appointment history table and in customer PDF
New: Central fmtDateTime() / fmtDate() helpers on Main class — single source of truth for WP-aware datetime formatting
Improvement: Customer detail view redesigned — Contact + Overview cards side by side (50/50), appointment history full width below
Improvement: Contact fields (email, phone, notes) shown even when empty
Improvement: All DataTables action columns right-aligned consistently
Improvement: PDF layout uses HTML table header, full-width body (no max-width), left-aligned table headers
Improvement: Notes row always visible in customer PDF (— when empty)
DB: new table appointment_history
Rename: “File Manager” card is now “Appointment Files” (to distinguish from new Customer Files section)
New: DEBUG badge in admin header when WP_DEBUG is active
Fix: PDF download crashed due to undefined constant (VOLLSTART_ADESK_VERSION → VOLLSTART_ADESK_PLUGIN_VERSION)
Fix: Same undefined constant bug on rating page stylesheet
Fix: PDF generation crashed on appointments with array-valued custom fields (multi-select/checkbox)
Fix: Auto-repair also catches “table doesn’t exist” errors (not only “unknown column”) so new tables are created automatically
External Services: documented Google Calendar API usage in readme
1.0.2 – 2026-04-07
Fix: Booking page button now uses current slug from options (not stale cached value)