Changelog

Automatisch aus unseren Releases generiert — zuletzt: Juli 2026

Juli 2026

Neuapp:Gate Orgs nav behind "Orgs entdecken" opt-in (FMB-31)8cb9cb4
Neuapp:Member event calendar + next-3 preview on termine (FMB-33)99cbcf7
Neuapp:Hide unused Add-ons nav entry behind feature flag (FMB-32)db5140d
Behobendb:Materialize column-default drift + harden CI migration gate (FMB-69)6173704
Neubuilder:Drag fields & templates from palette into canvas (FMB-56)6491b2f
Neuverein:Trainer session-swap admin decision + mail (FMB-37-D4)35887be
Neuverein:Trainer session-swap model + trainer self-service (FMB-37-D3)dc6900e
Neuverein:Enforce trainer availability + absence with override in assign UI (FMB-37-D2)7170b12
Neuverein:Trainer absence ranges (blackout) self-service (FMB-37-D1)9718517

Juni 2026

Neuorg:Advisory trainer-availability indicator in event assign UI (FMB-37-C3)568359d
Neuorg:Trainer weekly availability model + self-edit (FMB-37-C2)a9a0019
Neuorg:Trainer weekly calendar of own sessions (FMB-37-C1)24cde35
Neuorg:Member phone contact for trainers (FMB-37-B3)ea4b248
Neuorg:Trainer notes per member (FMB-37-B2)cf48f19
Neuorg:Tap check-in from roster + no-show marker (FMB-37-B1)b88b6cf
Neuorg:Trainer dashboard (today/next/stats) + role landing (FMB-37-A)0c0d85f
Neuorg:Dashboard overview + card-order approvals + embedded settings (FMB-24/25/26)5909324
Behobensecurity:Audit + document public karten route, pin anti-IDOR scope (FMB-43)d1586af
Neunav:Pending-actions count badge in sidebar + mobile header (FMB-22)8990d55
Neuorg:Training card — large QR, print view, Apple Wallet pass (env-gated)c0570e9
Neuorg:Training card payment + unit usage history6191a2c
Neuorg:Auto-archive past events read-only, deletion still allowed596bf6c
Neuapp:In-app feedback/bug-report widget -> GitHub issue (FMB-28)586872f
Neuui:Central toast/notification system + wire key app flows (FMB-18)d7d5e71
Neuorg:Drag-and-drop reorder for org locations (sortOrder)7686e77
Behobenbrand:Extend color linter to raw neutrals + migrate hits to tokens (FMB-47)6f48844
Behobenweb:SEO polish — OG type, square org logo, legal sitemap (FMB-49)99f1fc4
Behobenweb:Add id="vorschau" anchor to product preview section (FMB-48)7ae7ed8
Neubuilder:Live form-link availability check before saving (FMB-20)f24255e
Neuapp:Include templates in builder palette search (FMB-19)9ef8464
Neuapp:Auto-open new-form dialog from onboarding step 02a5f325
Behobenapp:Confirm dialog before deleting a template (FMB-21)76a076e
Neuauth:Friendly register CTA on failed login, enumeration-safe (FMB-27)ab401e0
Neusecurity:CSP + security headers, CORS, rate-limits (FMB-1 code part)3142557
Neuweb:SEO basics — sitemap, robots, JSON-LD, per-page metadata (FMB-15)5693b4a
Neuweb:Separate simple-forms vs org/verein tracks on landing (FMB-12)f90329e
Neuweb:Unify + strengthen pricing/ownership messaging (FMB-11)1272ab5
Behobenui:Destructive button raw text-white -> danger-fg token (FMB-39)695365b
NeuIntroduce semantic versioning v0.1.0 + version display (FMB)928029d
Neuforms:Link public-form header logo to marketing site (FMB-5)ac5c020
Neuapp:Resume onboarding tour after first form (FMB-8)7fb2820
Neuforms:Powered-by-Footer als einladendes CTAd6cbf0a
Behobenui:Replace raw colors with dark-safe tokens (FMB-6)1c304ab
Neuforms:Plan-aware Powered-by footer + dark mode + brand polish3203546
Neuops:Eigener Mail-Container (boky/postfix) + CRON_SECRET in Compose; Runbook aktualisiertbf78d4c
Neuorg-dept:Member-seitiger Abteilungs-Filter für Termine (D2-T5)bd8c01d
Behobenorg:Akzentfarbe-Default auf Brand-Amber (#E8590C) statt rohem Blaucd07c95
Neuorg-domain:UI CustomDomainManager auf Billing-Seite083b194
Neuorg-domain:Middleware routet verifizierte Custom-Domains (Node-Resolve, fail-open)523608a
Neuorg-domain:Cert-ask Endpoint (Caddy On-Demand-TLS)2969907
Neuorg-domain:Set/verify/remove Routen (Owner-gated)46737b8
Neuorg-domain:RequireOrgOwner Helper09f1f55
Neuorg-domain:Pure-Logik normalize/txtRecordName/hasVerifyToken2b7dfbb
Neudb:Org customDomain Felder (additive Migration)c11c1a7
Behobenbrand:Shrink sidebar logo so it fits next to the theme toggleb7c9e11
Neuorg-dept:Admin-Seiten für Leiter gegated + abteilungs-gefiltert [D2]f3fbdbe
Neuorg-dept:Leiter sehen reduzierte Verwaltung (Layout/Sidebar) [D2]9351d84
Neuorg-dept:Mutations-Routen department-aware (Leiter dürfen ihre Abteilung) [D2]cd6ef7e
Neuorg-dept:Require-department-manage Helper + Tests (D2)24e3ca1
Neuorg-dept:Abteilungs-Filter für Termin-Liste (D1.2)b7ba5cd
Neuorg-dept:Abteilungs-Selector in Kartentyp-/Standort-Formularen (D1.2)5cdf362
Neuorg-dept:Optionaler Abteilungs-Wunsch beim Beitritt (+ Hinweis)4a47803
Neuorg-dept:Optionale Abteilungs-Zuordnung (Routen + Termin-Formular)97a0e6d
Neuorg-dept:Admin-Seite Abteilungen + Sidebara05c9cc
Neuorg-dept:Department-CRUD + Mitglieder-Zuordnung Routenbdd919f
Neuorg-dept:CanManageDepartment + reine Entscheidung84a0249
Neudb:Department + DepartmentMember + nullable departmentId (additive)64712b9
Neubrand:Wire FormsMaker logo into apps (component + favicons)fbbf389
Neubrand:FormsMaker logo set — icon, lockup, favicon (SVG)a67bfba
Neuweb:Replace code mockups with real product screenshots in 3D framesd9fa0c8
Neuorg-rem:Teilnehmerliste je Termin (RSVP-Sicht)1021bf6
Neuorg-rem:Unsubscribe-Endpunkt (Opt-out)e300c84
Neuorg-rem:RSVP-Endpunkt (Ich komme / Absagen) ohne Loginc2358e2
Neuorg-rem:Cron-Route event-reminders (idempotent)106fa1b
Neuorg-rem:SendEventReminder Mailcaaa15c
Neuorg-rem:DueReminderOffset Pure-Logik9aae9fc
Neudb:Reminder-/RSVP-Felder + BookingReminder (additive Migration)ee3410d
Neuorg-wl:Admin-Policy „Warteliste verlassen" im Event-Formularfd74c2b
Neuorg-wl:Member-Button „Warteliste verlassen"7c8ae3e
Neuorg-wl:WAITLISTED über Cancel-Route verlassbar (Policy-geprüft)02287d2
Neuorg-wl:EvaluateWaitlistLeave Pure-Logik185b373
Neudb:WaitlistLeavePolicy + Event-Felder (additive Migration)1f7b245
Behobenapp:Drop redundant edge admin-role gate; rely on DB-backed requireAdmin658fb01
Behobenorg:Marken-Token text-primary-fg statt rohem text-white910d8ca
Neuorg:Dashboard-Style Sidebar-Shell für Org-Bereichea2b362
Neuweb:Rework product mockups + collapsible FAQ accordion049a546
Behobenorg-u4:Defense-in-depth org scope on Meine-Buchungen querya686140
Neuorg-u4:Berichte in Admin-Navigation verlinkend1f8a3f
Neuorg-u4:Berichte + CSV-Export (Termin-/Mitglieder-Report)6a6347c
Neuorg-u4:Meine-Buchungen + Wartelisten-UI (Member)c529b08
Neuorg-u4:Warteliste rückt bei Absage nach (FIFO + Mail)671f9b0
Neuorg-u4:Buchung auf Warteliste bei vollem Termin5828ebf
Neuorg-u4:Warteliste FIFO-Logik063c9b2
Neudb:BookingStatus.WAITLISTED (additive Enum + Migration)0d20137
Behobenorg-u3:CSV-Injection-Schutz in toCsv (führende Formelzeichen)882b9ec
Neuorg-u3:CSV-Export Mitglieder/Buchungen0544937
Neuorg-u3:PageHeader-Audit (Kartentypen, Standorte, Verrechnen, Mitglieder)21c07a9
Neuorg-u3:Karten — ausgestellte Karten Liste mit Suche/Filter + PageHeader159b4ac
Neuorg-u3:Termine — Suche/Filter/Pagination + PageHeader0c7e1c0
Neuorg-u3:KPI-Kacheln + PageHeader auf Org-Übersicht2b7876b
Neuorg-u3:PageHeader-Layout-Patternbbc58fa
Neuorg-u3:Termin-Such-/Filter-Param-Logik30b6ff1
Neuorg-u3:CSV-Serialisierung4bb4ffe
Neuapp:Cap + test Stripe charge pagination in recurring-revenue aggregationf19739e
Neuweb:Forward incoming UTM params onto register links (cross-domain attribution)414cec2
Neuapp:Forward UTM/referrer from register form into signup attributiondcd0701
Neuapp:Unified admin shell + Übersicht/Verkäufe/Marketing pages (drop old admin-metrics)4de0bfe
Neuui:SVG chart primitives (StatCard, BarChart, LineChart, FunnelChart)b9b0638
Neuapp:Admin-marketing aggregation (funnel, conversion, login activity, attribution)aa7f1e0
Neuapp:Admin-sales aggregation (MRR, active ABOs, one-time + Stripe revenue, cached summary)5098ed5
Neuapp:Emit ORG_CREATED + CHECKOUT_STARTED/COMPLETED analytics events6ea1aa8
Neuapp:Emit FORM_CREATED analytics event8317607
Neuapp:Emit ONBOARDING_COMPLETED analytics event1110cb2
Neuapp:Capture first-touch UTM/referrer + SIGNUP event at registration2903954
Neuapp:Record a LoginEvent on every successful sign-inf2e4bf6
Neuorg-u2:Verständlichkeit & Onboarding — Glossar, Hilfe, Setup-Assistent, Empty-Statese4a9483
Neuapp:Best-effort tracking helpers (recordLogin, track)5e9790e
Neudb:LoginEvent + AnalyticsEvent tables + signup attribution fieldsf34cdad
Neuorg-u1:Mitglieder-Verwaltung — Detailseite, Suche, Sammel-Freigabe95bd514
Neuapp:Onboarding flow for new users (3 steps + organizations)39627ea
Neuweb:Brand illustrations in landing audience-weiche cardsc78b59e
Behobenverein:Org-Feature Branding — ThemeToggle im Org-Shell + rohe Grautöne → Design-Tokens (Dark-Mode-fähig)96607a6
Neuweb,app,forms:Branded Werkbank favicon (icon.svg) for all appsd064702
Behobendb:Migration löscht Check-ins auf Gast-Karten vor Member-Delete92ec680
Neuweb,app:Branded error boundaries with error-generic illustrationa47708c
Neuverein:Join-Flow registrierungs-only + alle Gast-Referenzen entfernt77aa72c
Neudb:Gast-Konzept aus OrgMember entfernen (registrierungs-only)2082d04
Neuweb,app:Branded 404 not-found pages with error illustrationbdc702a
Neuweb:Branded OG/social share images + metadata wiringc93a646
Neuapp:Branded empty-state illustration for "no organisations"e6af267
Neuapp:Branded empty-state illustration for "no submissions yet"9fbc980
Neuapp:Theme-adaptive empty-state illustration (transparent light/dark variants)d34fe2c
Behobenforms:Dispatch.ts getRegistry → [] (zehnerkarte-Import entfernt)ea27566
Behobenforms:Altes Zehnerkarte-Addon aus apps/forms entfernen16bec60
Neuverein:Nav-Verdrahtung (Trainer-Link + Admin-Sub-Nav) + Dead-Code (sendCardPurchaseEmail) raus [Phase G]81c8b5b
Neuverein:Verrechnen-UI (owed-Check-ins auf neue Karte) [Phase F Stream 3]ba56990
Neuverein:Trainer-Scanner-UI (BarcodeDetector+Fallback, Feedback-Panel) + Deckungs-Liste [Phase F Stream 2]5117628
Neuverein:Check-in (scan-lookup, Abbuchung/EXHAUSTED, owed-Override) + Verrechnen-API [Phase F Stream 1]752139c
Neuapp:Branded empty-state illustration for "no forms yet"fe340ee
Neuverein:Member-Buchungs-UI (Buchen/Absagen/Kalender) [Phase E Stream 3]4bbaf01
Neuverein:ICS-Generator + Kalender-Links + Bestätigungsmail + ICS-Download [Phase E Stream 2]8e1af63
Neuverein:Buchung + Absage (book-Guards, cancel je Policy, approve-cancel) [Phase E Stream 1]698f5e4
Behobenverein:Publish idempotent (bereits PUBLISHED = No-Op) + orgId-scoped updateddbf0cd
Neuverein:Member-Termin-Liste + Org-Übersicht (Tabelle, Policy/Status-Badges) [Phase D Stream 3]15964b0
Neuverein:Termine CRUD/Publish(+Free-Guard)/Cancel/Duplizieren (API + Admin-Form) [Phase D Stream 2]f2b7fd7
Neuverein:Standorte CRUD + Bereiche (API + Admin-Seite) [Phase D Stream 1]17b9397
Neuforms:Clarity polish — described file upload, contained card, legible inputs8f69d76
Neuverein:Karten-Seiten (kaufen/anfragen, meine-karten QR, Admin-Queue+Direktanlage) [Phase C Stream 3]b62d9e6
Neuverein:Card-Orders + Karten-Ausstellung (Anfrage/Confirm/Direktanlage, Snapshot, qrToken) [Phase C Stream 2]fa6a9d9
Neuverein:Kartentypen CRUD (API + Admin-Seite) [Phase C Stream 1]71a267d
Behobenbuilder:Duplicate field preserves label, options, config, requirede219def
Behobenverein:Type=button auf approve/reject-Buttons (a11y)e0f5878
Behobenverein:Stripe success/cancel-URL nutzt Org-Slug (Billing-Seite liegt unter [slug], nicht id)2d6bef7
Neuforms:Rework forms.formsmaker.de to the Werkbank design system + brand guidelines275aaac
Neuverein:Org-Billing-Seite + Upgrade (schließt Spec-0-Wiring)1a61339
Neuverein:Admin-Mitglieder-Seite (Genehmigung)6fc25da
Neuverein:Org-Landing Mitglieds-Status-Banner6f3f75f
Neuverein:Org-Shell-Layout + TrialBanner-Mount + Active-Gated149520
Behobenverein:Approve/reject nur auf PENDING-Mitglieder (kein Überschreiben/Wiederbeleben)0fc32c1
Neuverein:Mitglieder approve/reject API + Free-Tier-Guard4fe3b4d
Neuverein:Öffentlicher Selbst-Beitritt → PENDINGaf53033
Neuverein:Membership Pure-Logik (Join-Status + Approve-Guard)b26d7d2
Neuverein:Phase-A Pure-Logik — org-active, card-coverage, deduction, cancellation, booking-capacity (11 Tests)5dd8062
Neudb:Verein Spec-1 Kernmodelle (Cutover alte Karten-Modelle)67f1432
Neubuilder:Field presets, reusable form templates, resizable palette + UI fixesd619746
Neudb:Migration verein_org_status_subscription + Backfill bestehender Orgs→ACTIVEa3953c8
Neuweb:Verein-Produkt Landing /verein335d88c
Behobenverein:Trial-Banner Dismiss-Buckets an Spec-Schwellen (14/7/3/1/0) angleicheneb25d81
Neuverein:Trial-Banner Komponente29bc964
Neuverein:Admin-Freigabe-Queue + aktive Trials UI06cf783
Neuverein:Webhook pflegt OrgSubscription169b43e
Neuverein:Stripe-Checkout monthly/lifetime4fd83ae
Behobenverein:Approve/reject → 404 statt 500 bei unbekannter Org (P2025)fbf6907
Neuverein:Admin-API Trial verlängern50198df
Neuverein:Globale Admin-Freigabe API (approve/reject)3a096db
Neuverein:Org-Erstellung pending + Owner-Org-Guardd39d321
Neudb:OrgStatus + OrgSubscription für Verein-Produkteb9361f
Neuverein:Extend-trial — Trial-Verlängerung (rein)8dd6e94
Neuverein:Trial-reminder — Resttage + eskalierender Banner-State0020087
Neuverein:Effektiver Org-Plan Resolver36a3613
Neuverein:Stripe-Preis-Mapping + Enve015558
Neuverein:Org-lifecycle — Owner-Org-Guard + Trial-Start4b00fb4
Neuverein:Limits — Termin-/Mitglieder-Guards5086169
Neuverein:Effective-plan — Trial→Free lazy60fccbc
Neuverein:Plan-config — Tiers + Free-Tier-Limits7bf6bec
Neuapp:Stripe live/sandbox observability — key-mode helper, /api/stripe/health, clearer checkout errorsf06a602
Behobenapp:Atomic refund downgrade in webhook; send actual consent value09196a6
Neuweb:/widerruf page + enable 14-day money-back guarantee copy16b90dd
Neuapp:Self-service refund button within the 14-day windowf440ebb
Neuapp:§356 immediate-provision consent at one-time checkout8338030
Neuapp:/api/stripe/refund — owner self-service 14-day Lifetime refund2659ee5
Neuapp:Record purchases + §356 consent; reconcile refunds in webhooke41a006
Neuapp:Refund eligibility helper (14-day Lifetime guarantee, tested)935a221
Neudb:Purchase model for one-time purchases, §356 consent + refund stateb253ee5
Behobenapp:Exclude next/font config from coverage (restore 55% threshold)8728506
Neuapp:Tokenize remaining UI primitives + join page; arrows to Lucidefe790ba
Behobenapp:Replace non-existent shadcn -foreground classes; trainer scanner uses spotlight tokenfeaf540
Neuapp:Addons, admin, mobile nav on tokense5913f3
Neuapp:Organisations + zehnerkarte admin on tokens1fce4bd
Neuapp:Builder cluster on tokens + amber insertion accentafc023b
Neuapp:Submissions cluster on tokens3d96e2a
Neuapp:Dashboard cluster on tokens, de-emoji2ecaecc
Neuapp:Lifetime-first billing + plan-gating on tokens5d55be8
Neuapp:Auth screens on tokens + TrustSeal at logind1449ea
Neuweb:OG/Twitter metadata slots (image slots pending)8bf9c01
Neuweb:Legal + wiki adopt shared chrome and tokens1011ee6
Neuweb:Changelog as engineering-log timeline8349264
Neuweb:Rebuild pricing page lifetime-first with Sparrechner + FAQ78d80f5
Behobendesign:Add non-inverting spotlight token; dark Trainingskarten + graphite CTA band stay dark in both modes122bb1b
Neuweb:Rebuild landing in Werkbank, lifetime-first + conversion5d9819c
Neuweb:Conversion components (TrustBar, AudienceWeiche, Sparrechner UI, MietenVsBesitzen, PricingCards)0fae355
Neuweb:Retoken + de-emoji product mockups, frame in AppWindow720f4bd
Neuweb:Shared marketing nav, footer, sticky CTAed51d06
Neuweb:Lifetime-first pricing order + honest anchor copy9004c7e
Neuweb:Abo-vs-Lifetime Sparrechner calc (tested)be1d096
Neudesign:Token-clean browser-chrome mockup (dark-safe surfaces)0a76a67
Neuui:Curated Lucide icon barrel (shared vocabulary, replaces emoji)8942c8d
Neuui:Eyebrow + SectionHeading typographic primitives0a06f28
Neuui:AppWindow product-window chrome on tokens13f67c9
Neuui:TrustSeal certification chip on seal tokens6d843f6
Behobendesign:Sidebar logout hover uses danger token (dark-mode safe)0d274bf
Neudesign:Migrate app sidebar to dark-ready semantic tokens9a91d69
Neudesign:Migrate shared UI primitives to semantic tokens51a68f7
Behobenui:ThemeToggle renders resolved-theme icon on first paint (no dark-default flash)903410c
Neudesign:Wire token bg, fonts and theme provider into both root layoutsabd6f78
Neudesign:Add next-themes provider + shared ThemeToggle92ee8ba
Neudesign:Add Sora/Inter/JetBrains Mono via next/font3cbcb8c
Neudesign:Map semantic tokens + amber ramp + radius/shadow/fonts in tailwind base665f6e5
Neudesign:Add Werkbank semantic token layer (light+dark)47cbbc8
Neubilling:New pricing model, Stripe lifetime/extra-form, pricing page + changelogf255d5a
Behobenapp:Single root layout — stop HierarchyRequestError on cross-tree nav464f85a
Behobenorg:Logged-in users join organisations with their account, not as guesta94caee
Behobenorg:Add root layout with html/body to public org portal treec7d5d78
BehobenHarden returnUrl validation, pass orgId + semantic field fallbacks to addons037b1aa
BehobenResolve demo blockers — org routing, form unlock, addon wiring, emails63fa754
Behobenbuilder:Compact Pro feature-gate buttons in toolbarfddfe8e
Neuadmin:LastLoginAt tracking, owned-org delete guard, admin route tests5bb8413
Neuadmin:Expand user management, consolidate orgs nav, conditional add-ons4f90dbd
Behobenbuilder:ExactOptionalPropertyTypes for installedAddonId0b1671e

Mai 2026

Behobenux:Zuletzt-bearbeitet, aria-attribute, vorschau-tabf3579a0
Behobenapp:Reduce session polling and add form name validation58dda91
NeuKarten-Verkauf für registrierte User4bfd79d
Neuzehnerkarte:Stripe purchase flow for Zehnerkarte6e99a58
Behobenux:Usability fixes from UX audit9ec98a5
NeuAdd qa:swarm script to root package.jsoneda7827
NeuOrg form path URLs — [orgSlug].formsmaker.de/[path] with editable prefix UIa969c1f
Neuapp:Show public form URL in org forms admin (subdomain or org/f/id fallback)4e14596
Behobenapp:Strip formPassword from GET, validate returnUrl, check API responses in OrgFormsClient73dc75a
Neuforms:Add visibility gate (PASSWORD + MEMBERS_ONLY) to form rendererc521548
Neuapp:Verify-member page for MEMBERS_ONLY form access8cba5ff
Neuapp:Org subdomain visibility filtering + password unlock page67b0cee
Neuapp:Org forms admin page with assign/create/visibility/passwordc343417
Neuapp:Add POST /api/org-form-unlock for password gate41ec079
Neuapp:POST assign/create + DELETE unlink for org forms991712f
Neuapp:Extend PATCH /api/forms/[id] with visibility + password; allow org admin2177c51
Neuapp:Add form-access-cookie utility for visibility gates78bc9e1
Neudb:Add FormVisibility enum + visibility + formPassword to Form67a210d
Neuweb:Add wiki pages - organisationen, trainingskarten, kontof5bfdd8
Neuweb:Add wiki pages - export, benachrichtigungen, ki-generatord18df49
Neuweb:Add wiki pages - bedingte-logik, veroeffentlichen, einreichungenc45cc08
Neuweb:Add wiki overview page, erste-schritte, builder977223f
Neuweb:Add wiki layout with sticky sidebar navigationda19488
Neuweb:Add WikiStep and WikiCallout shared components9633ea3
Neuweb:Rebuild landing page with mockups, add-ons showcase, org spotlighta809077
Neuweb:Add CSS product mockup components (form-builder, submissions, trainingskarten, org-dashboard)d8b60e2
Neuzehnerkarte:Add GrantTab, SettingsTab, TabTooltip, HelpTab components24c1911
Behobenzehnerkarte:Async/await fetch pattern + HTTP status check in CheckInsTab + MemberCardsTab8519d0e
Behobenzehnerkarte:Add AbortController, clear error on retry, extract LOW_STOCK_THRESHOLDbabdc78
Behobendemo:All demo-readiness issues — params async, QR URL, self-delete guard, grant route551ec6b
Behobentrainingskarten:Card-types GET → 422, link-form accepts any user form, DELETE org-scoped, middleware API passthroughc3922f1
Behobenmiddleware:Add org join, discovery & invite routes as public paths537f3f1
Neuorg:Vollständige Org-Verwaltung — Member-CRUD, Settings, Discovery, FormAddon-Fix93c7e68
Behobenorg:Org admin fully functional — addons installierbar + navigierbar6cc44e6
Behobenforms:Remove cross-app webpack import that broke Docker build6f31ce0
Behobensp3:IDOR on card page, XSS in email HTML, cardTypeId org-scope, div/zero, error states, atomic grant6a2757b
Neusp3:Complete admin tabs — Mitglieder-Karten, Check-ins, Gratis-Zuweisung593ce6f
Neusp3:Org-aware grant API — member or guest + card via event bus7de1a3c
Neusp3:Org email branding — header, logo, accent color375b6d7
Neusp3:Org admin dashboard tabs — KPIs, Kartentypen, Check-ins, PIN-Settings799e225
Neusp3:Member card portal — /karten + /karte/[token]7e0ecaa
Behobensp3:HMAC-signed trainer session cookie, mandatory org auth, rate-limit trainer-auth47fe508
Behobensp3:Settings API for trainer PIN, trainerId in check-in, mandatory org check3ce4530
Neusp3:Trainer app with org auth (FormsMaker session + PIN)5d7103a
Neusp3:Trainer PIN auth — bcrypt, lockout, session cookieea4dd24
Neusp3:Org-aware TrainingCard schema + orgMemberId in handler + org-check utility352e38c
Behobensp2:Atomic IDOR guards, invite token in GET removed, OWNER invite blocked, try/catch on DB calls8c71810
Behobensp2:Join-form shows one-click for authenticated users, guest fields for guests6f32b57
Neusp2:Member management API, invite + join flows, subdomain home pageca526b6
Behobensp2:Handle P2002 slug race → 409, strip Stripe fields from responsedb4df5b
Behobensp2:Add locale prefix to org dashboard redirect61bd810
Neusp2:Org create API, check-slug, dashboard pages, sidebar linke9703d3
Behobensp2:OnDelete constraints, env-based domain, slug sanitization, indexes, reserved slugs191da73
Neusp2:Organization/OrgMember/OrgInvite schema + subdomain middleware + slug validation0f378ad
Behobensp1:Retry loop on cardNumber collision, fix grant-form success message, delete error feedbackb703978
Neusp1:Grant API, CardTypesTab, GrantForm, handler reads CardType sessions1a55dcf
Behobensp1:Export CardTypeInput, validate in PATCH, add try/catch, fix test description402fd10
Neusp1:CardType CRUD API + validation testsdabab29
Behobensp0:IDOR fix in FormAddon API + zehnerkarte config tabc996ce0
Neusp0:Settings add-on page, builder addon tab, admin dashboard (T10/T11/T14/T15)ada0d59
Behobensp0-sp3:Public paths in middleware, ownerName in checkin, QR code display, IP rate-limit64ba987
Neusp0:Check-in API + trainer app + public card viewd9eb7eb
Behobensp0:Safe registry fallback — require() → dynamic import in addon dispatch6610834
Neusp0:Integrate event-bus in submit route + install/uninstall/list addon API5287c4d
Behobensp0:Zehnerkarte handler — remove qrToken from email, race-condition retry, parallel config fetch618e51d
Neusp0:Zehnerkarte handler + QR utils + tests1a69385
Behobensp0:Event-bus — timeout protection, Promise.allSettled, safe logEvent, more testsa85c071
Neusp0:Add-on types, registry, event-bus + testsfc5a739
Behobensp0:Add onDelete Cascade, AddonEvent indexes, CardType relationfa5dbe3
Behobensp0:Add @@unique([orgId, addonId]) to InstalledAddon5891b71
Neusp0:Add addon infrastructure DB schema — InstalledAddon, FormAddon, AddonEvent, TrainingCard, CardType9b4528c
Neubuilder:W22 undo/redo — BuilderShell integrationbcf282a
Neuw22:Add Command interface and builder command implementationsdbd74ce
Behobenw17:Use slice(0,10) for dateFrom comparison consistencye8c3fd0
Neuw17:Add text search and date range filter to submissions view483288a
Neuw42:Show MULTI_CHECKBOX options and restrict operators in ConditionBuilderd99786f
Neuw42:Add INCLUDES/NOT_INCLUDES operators for MULTI_CHECKBOX conditions2e67fc8
Neuinfra:Persist file uploads via Docker named volume (K10)8e2bd47
Behobenapp:Add SessionProvider — resolves client-side crash on useSessionce2d5b9
NeuK12 Account löschen + K13 E-Mail-Verifizierung + K14 Mobile Sidebar + K15 Passwort-Reset45cdb17
Behobenux:60+ UX fixes — auth, dashboard, builder, forms, accessibilityf34f8e5
NeuK13 email verification + K15 password reset flow27c6c93
NeuK12 account deletion (GDPR) + K14 mobile sidebar6fd6cbf
Behobenapi:Fix TypeScript error in form duplicate — null JsonValuece42e2e
Behobenbuilder:K6-K9 W23-W38 builder UX fixes8bdf7ea
Behobendashboard:W10-W15 W18-W19 W49-W52 dashboard UX fixes2d82051
Behobenauth:W1 W3-W9 W53 auth UX and navigation fixes20d60f1
Neunav:Add logout button and user info to sidebard60177e
Neuforms:Comprehensive field validation with real-time blur feedback7a5039d
Behobenauth:Restore login and CRUD by bypassing intlMiddleware on API routes8db9238
Neuinfra:Add Stripe env vars to docker-compose app service83c0b20
Behobenstripe:Warn on unknown price ID, refresh dashboard after checkout9115da3
Neustripe:Checkout success banner on dashboard — auto-dismiss in 5sa5aca2c
Neustripe:Subscription section in settings — plan badge, portal button, cancel warning170f636
Neustripe:Upgrade modal — PRO/BUSINESS checkout buttons with loading statec434b96
Behobenstripe:Retrieve full subscription in webhook updated handlerfbdef85
Neustripe:POST /api/stripe/webhook — handle checkout, update, delete events97be947
Neustripe:POST /api/stripe/portal — create Customer Portal sessiond55a517
Behobenstripe:Null-check checkout url, validate APP_URL env varb7c9014
Neustripe:POST /api/stripe/checkout — create Checkout Session11c7b56
Neuapp:Stripe SDK instance and price/plan helpers9757eb2
Neudb:Add stripe subscription fields to Subscription model439b666
Behobenapp:Move middleware to src/ and rewrite without next-auth for Edge Runtime2156d23
Behobenapp:Fix middleware Edge Runtime incompatibility — use edge-safe auth config539b4a8
Behobenapp:Add qrcode dep + fix ShareModal exactOptionalPropertyTypes error32274ff
Neuapp:Admin system metrics — users by plan, total forms, submissions, 7-day trend9794c55
Neuapp:Export templates — save/load named field selections for Excel export0a34112
Neuforms:Multi-page wizard with PAGE_BREAK splitting and per-page validation92b62c5
Neuforms:Async rate limiter with Upstash sliding window + in-memory fallbackfeaf250
Neuforms:SIGNATURE canvas componentf5e48f0
Neuforms:Real FILE upload endpoint + FileField component0ea5d4e
NeuShare modal with QR code, direct link, and iframe embed2b5a2f1
NeuEditable name + email in settingsafd5064
NeuSubmission detail modal + per-row deletef0f22ac
NeuCursor-based pagination for submissions (50 per page)3acb03a
Neubuilder:Dirty-state warning, pending count, title revert, email gate fix20d7b27
NeuHMAC preview route for FREE users without subdomain59a0d53
Neu/f/[formId] fallback route + direct links + publish URL feedback152d2ea
Neuux:Register flash, login banner, form-limit upgrade modal6d13dde
BehobenTasks 1-4 — headers() await, APP_URL env var, delete loading state, admin middleware guarda878157
Neuplan:Plan enforcement + upsell UI for FREE tiere7bace8
Neuapp:Password change in settings page45e8f8b
Neuapp:Admin panel with user management and plan overrideddee59b
Neuapp:Dashboard submissions overview + settings page46144d1
Neuforms:Custom 404 page — Formular nicht erreichbar + Zurück zur Website1aa7acb
Neuapi:Subdomain conflict 409 + cron expire FREE subdomains after 7d inactivitya737009
Neuforms:Brand header, progress bar, spinner submit, success animationee39e9e
Neubuilder:Field cards with type icons + canvas empty state5f7ad35
Neubuilder:Field palette icons + 2-column grid layoutc582a12
Neuapp:Form cards with status strip, subdomain badge, cleaner actions04ee4c5
Neuapp:Dashboard stats bar, search filter, polished empty state9df29c9
Neuapp:Sidebar icons + submissions/settings nav items19c92b7
Neuweb:Redesign marketing page with nav, features, pricing, footer37f9fc1
BehobenExtract subdomain from Host header instead of X-Subdomain1cebed3
BehobenForms Prisma engine + builder save button + publish confirmation2ff95e4
NeuFix builder field loading + add subdomain/link/preview to toolbarc9771db
BehobenCopy Prisma query engine into standalone runner stage17dc15a
BehobenCorrect wildcard nginx regex formmaker.de → formsmaker.dee1a3c35
BehobenAdd linux-musl-openssl-3.0.x binaryTarget for Alpine containers19b5f5e
BehobenRemove broken prisma binary COPY, use npx for migrate deploydc149e0
BehobenCorrect domain formmaker.de → formsmaker.de in web, seed, dev-login480ed4f
BehobenAdd openssl to runner, add initial migration, run migrate on startup0454762
NeuAdd dev-only login bypass (no password required in development)a28cdd8
BehobenResolve TypeScript build errors in form renderer and submissionsaff186b
NeuAdd submissions link to FormCard and i18n keys37a4b3a
NeuAdd submissions list page and table (apps/app)64a1d1c
NeuAdd submissions GET API (apps/app)321b713
NeuAdd public form page with subdomain lookup (apps/forms)b960eca
NeuAdd FormRenderer with validation and conditional logic (apps/forms)8717fb5
NeuAdd FieldRenderer for all 25 field types (apps/forms)cb6f3f8
NeuAdd condition engine for field visibility (apps/forms)eea3a3c
NeuAdd submission POST API with rate limiting (apps/forms)954a36f
BehobenResolve TypeScript build errors in form builder25bb6b8
NeuAdd ConditionBuilder UI and conditions API2b619d1
NeuAdd ConfigPanel with per-field type settingsf33f326
NeuAdd BuilderCanvas with DnD sortable fields5bc65f8
NeuAdd FieldPalette with grouped field types3ed2959
NeuAdd BuilderShell with toolbar and 3-column layout5f109c3
NeuAdd builder page routing and full-screen layoutd2f5f92
NeuAdd field-groups metadata for builder palettedb1e3c1
NeuAdd fields CRUD and reorder APIc3260f3
NeuDashboard forms list with create/deletee0bc99b
NeuAdd forms CRUD API (list, create, get, update, delete)cb19ab1
NeuAdd sidebar nav to app layoutfd42242
NeuAdd Dialog, Select, Switch, Textarea, Separator to packages/ui09bb3a9
NeuAdd @dnd-kit dependencies for form builderbf402d0
BehobenCorrect domain to formsmaker.de, sync compose file on deploy8474b49
BehobenLogin to ghcr.io on VPS before docker compose pull9a9d59b
BehobenAdd missing apps/app/public directory9492a28
BehobenCorrect ghcr.io org name dommstein-ai → doomsteinai5c95b3d
BehobenAdd missing public dirs and clean up forms Dockerfile COPY052c0dd
BehobenNginx HTTP-only until SSL cert is provisioned4c2ebb2
NeuAdd Docker, CI/CD, Nginx, and fix TypeScript build errors86ca81d
BehobenUse NextAuthRequest type in middleware for portable types754fa2f
BehobenAdd tailwindcss as devDep in packages/config for type resolution155c321
BehobenAdd loadMessages() to i18n package, avoid dynamic template import27ac3ff
BehobenAdd wildcard export to i18n package for dynamic imports66ccef6
BehobenRename next.config.ts to next.config.mjs (Next.js 14 compat)8da3ac7
BehobenAuth middleware locale extraction, email normalization, signIn redirect0d40ea1
NeuScaffold apps/web and apps/forms8263c44
NeuAdd Auth.js v5 with credentials + Google OAuth74828ec
NeuScaffold apps/app with Next.js 14 and next-intl20fe11a
NeuAdd shared UI components package843d4ca
NeuAdd i18n package with DE/EN messages5b3652c
BehobenStrengthen db schema (indexes, condition integrity, seed guard)16f89bf
NeuAdd db package with Prisma schema, client, and helpersde558a4
NeuAdd shared types packaged34c66a
BehobenCorrect shared config (DOM types, JSX, eslint plugins, full color scale)d7c72c3
Changelog — FormsMaker