Was ist neu

Changelog — frisch aufgeschrieben.

Features, Fixes, Polish, Security, Breaking Changes — chronologisch und mit Kategorie-Tag. Was wir für die Beta-Fotografen gebaut, gefixt oder geschliffen haben.

2. Juni 2026 // Polish

Admin-Navigation aufgeräumt: 5 Bereiche statt 18 flacher Items

Die Admin-Hauptnavigation ist jetzt deutlich übersichtlicher.

Statt 18 flacher Settings-Einträge gibt es oben in der Topbar nur noch fünf klare Bereiche:

  • Galerien — Galerie-Liste, Sammlungen, Email-Vorlagen, Event-Feed, Papierkorb (deine tägliche Werkzeugkiste)
  • Print-Shop — Bestellungen, Provider, Katalog
  • Marketing — Marketing-Kampagnen + Endkunden-Erinnerungs-Mails (jetzt unter einem Hub)
  • Studio — Verträge, Fragebögen, Lightroom-Integration, Migration-Tool (alle Pro-Tools zusammen)
  • Einstellungen — gruppiert in vier logische Cluster: Studio-Identität, Bezahlung & Rechnungen, Speicher & Domain, Sicherheit & Daten

Rechts oben gibt es jetzt ein ?-Dropdown mit FAQ, Changelog, Status-Page und Logout. Die "Was ist neu"-Pille ist dort eingezogen — der ungelesen-Indikator (grüner Punkt) bleibt sichtbar.

Alle URLs bleiben unverändert — deine Bookmarks funktionieren weiter. Nur die Gruppierung ist neu. Auf Mobile gibt es ein Burger-Menü oben rechts.

2. Juni 2026 // Feature

Rabatt-Codes: Kategorie- & Plan-Beschränkungen + Backstop-Cron

Discount-Codes lassen sich jetzt strukturiert beschränken — kein rohes JSON mehr, sondern Checkboxen.

Im Admin → Einstellungen → Rabattaktionen findest du beim Anlegen eines Codes neue Checkbox-Gruppen:

  • Print-Kategorien (Photograph-Codes): Fotobücher, Wandbilder, Kalender, Kissen, Phone-Cases, Tassen, Postkarten. Anhaken = Code gilt nur für diese Auswahl. Leer = Code gilt für alle Print-Bestellungen.
  • Plan-Tiers (Platform-Codes, nur Kevin sichtbar): Trial, Core, Founding Core, Pro. Anhaken = Code nur einlösbar wenn Photograph zu einem dieser Plans wechselt. Leer = gilt für alle Plan-Wechsel.

Bestehende Codes ohne Restrictions verhalten sich unverändert — kein Migrations-Aufwand für deine laufenden Aktionen.

Versucht ein Kunde einen Code auf eine nicht-erlaubte Kategorie anzuwenden, bekommt er eine klare Meldung („Code gilt nicht für diese Produkt-Kategorie") statt einer kryptischen Stripe-Fehlermeldung erst nach dem Submit.

Backstop-Cron gegen verlorene Reservierungen. Wenn ein Kunde im Checkout den Tab schließt und Stripe weder das completed- noch das expired-Event sendet (z. B. Webhook-Endpoint kurz down, Quota-Drop), blieb bisher der Code-Slot bis in alle Ewigkeit reserviert. Ein Code mit max_uses=10 und 10 abgebrochenen Checkouts wäre faktisch ausgeschöpft, obwohl niemand bezahlt hat.

Frames trackt ab jetzt jede Reservation in einer eigenen Tabelle und ein nightly Cron-Job (api/cron/discount-cleanup) released alle Reservierungen, die nach 24 Stunden weder committed noch released wurden. Damit „heilen" sich Code-Slots automatisch — egal wie launisch das Stripe-Webhook-Wetter gerade ist.

2. Juni 2026 // Polish

Komplette Test-Infrastruktur: Vitest + Playwright + GitHub Actions

Frames hat ab sofort eine durchgehende automatisierte Test-Pipeline. Jeder Push und jeder Pull-Request gegen main löst auf GitHub Actions drei Jobs aus:

  • Unit-Tests (Vitest) — pure Funktionen ohne DB: Discount-Code-Validation, Marketing-Trigger-Resolver (2. Sonntag im Mai, letzter Freitag im November, Anniversary-Toleranz), Reminder-Intervalle, XRechnung-XML-Generator (inkl. §19-Kleinunternehmer-Pfad), Cron-Secret-Validation (Bearer + Query, constant-time-compare).
  • Integration-Tests (Vitest gegen Postgres-Container) — Migration-Runner läuft alle Migrations sauber durch + prüft dass keine Changelog-Entries eine ungültige Category haben (das hätte den heutigen category=change-Bug verhindert). Gallery-IDOR-Defense gegen die echte DB.
  • E2E-Smoke (Playwright) — Dev-Server startet, Landingpage liefert HTML, Login-Route ist erreichbar.

Lokal nutzbar. Mit npm test läuft die Unit-Suite in unter einer Sekunde. npm run test:e2e startet Dev-Server + Playwright lokal. npm run test:all macht das volle Programm.

Coverage-Stand. 38 Unit-Tests passing, Integration-Tests hängen an einer Test-DB (TEST_DATABASE_URL), E2E-Smoke + zwei TODO-Stubs für Login und Gallery-Pick die in Phase 2 fertig werden (brauchen Mailer-Mock + Storage-Mock).

Was die Tests verhindern werden. Den heutigen Migration-Outage (category=change statt feature), IDOR-Lücken in requireOwnedGallery, kaputte Marketing-Trigger an Datumsgrenzen (Schaltjahr, DST), XML-Wohlgeformtheits-Brüche in XRechnung, Cron-Endpoints die ohne Auth callable wären.

Doku: docs/TESTING.md. CI-Workflow: .github/workflows/test.yml.

2. Juni 2026 // Security

Mehr Login-Sicherheit: Sessions werden bei jedem Auth-Schritt rotiert

Defense-in-Depth gegen Session-Fixation. Nach jedem Login, Signup, Magic-Link-Consume und 2FA-Verify löscht Frames die vorher gesetzte Session-Row in der Datenbank und stellt eine frische Session-ID aus.

War vorher nur ein theoretisches Risiko — Frames setzt keine Pre-Auth-Cookies, also gab es nie eine „untergeschobene" Session, die ein Angreifer kapern könnte. Trotzdem ist Session-Rotation bei Auth-Stufenwechseln Best-Practice (OWASP ASVS V3.2.1), und jetzt geschlossen.

Was sich für dich ändert: nichts. Login fühlt sich identisch an. Die alte Session-Row verschwindet sauber aus der DB statt als Orphan zu verrotten — kleiner Bonus für die Hygiene unserer Session-Tabelle.

Technisch. Neuer Helper discardPreAuthSession(cookies) in src/lib/server/sessions.ts wird in allen vier Auth-Pfaden aufgerufen, bevor createPhotographerSession die neue Session erzeugt. Bei DB-Fehler bleibt der Login funktional — die orphan Row läuft via expires_at automatisch aus.

2. Juni 2026 // Feature

Verträge: echter PDF-Download statt Browser-Drucken

Signierte Verträge lassen sich jetzt als echte PDF herunterladen — direkt aus dem Admin, ein Klick, fertig.

Vorher konnten Photographen nur die HTML-Print-Page öffnen und mussten über den Browser-Dialog „Als PDF speichern" gehen. Das war funktional, aber fummelig — auf manchen Browsern landete der Header doppelt, auf anderen rutschte der Audit-Trail auf eine eigene Seite, und auf Mobile war es de-facto unmöglich.

Jetzt gibt es unter Admin → Verträge → [Vertrag öffnen] den Button Download PDF. Frames erzeugt das PDF serverseitig (pdfkit, kein Headless-Browser) mit:

  • Vertragstext aus dem eingefrorenen sent_body_md-Snapshot (Markdown wird in Headings, Listen und Bold-Text übersetzt).
  • Signatur-Bild — das SVG vom Sign-Canvas wird sauber als 480×140-PNG ins PDF eingebettet.
  • Audit-Trail-Block mit IP, Browser, Zeitstempel (ISO-8601 + lokale Zeit), Rechtsgrundlage (Art. 6 (1) f DSGVO) und Hinweis auf die 10-jährige Aufbewahrungspflicht (§147 AO, §257 HGB).
  • Footer mit Studio-Name, Vertrags-Kurz-ID und Seitenzahl auf jeder Seite.

Stil wählbar. Unter Admin → Einstellungen → Studio-Tools gibt es eine neue Auswahl:

  • Editorial (Default) — Times-Roman/Italic, dezent, passt zum Frames-Look.
  • Sachlich — Helvetica, hochkontrast, klassisches Behörden-Layout. Für alle die ihren Vertrag bei Finanzamt oder Anwalt einreichen.

Sicherheit. Der Download-Endpoint prüft photographer_id — fremde Vertrags-IDs liefern 404, keine 401, damit Existenz-Probing nicht funktioniert. Drafts und versendete Verträge geben 400 (kein Sinn für unsignierte Texte).

Die alte HTML-Print-Page bleibt erhalten — wer lieber browser-druckt oder vorher per Preview gegenlesen will, kann den Link „Drucken / Als PDF speichern" weiter nutzen.

2. Juni 2026 // Feature

Print-Shop: Multi-Bild-Editor live — Fotobücher direkt aus der Galerie bestellbar

Multi-Bild-Editor für Fotobücher ist live. Bisher konnte deine Kundin im Print-Shop nur Einzel-Bild-Produkte bestellen (Wandbild, Tasse, Phone-Case, Kissen). Multi-Image-Produkte (Fotobuch, Kalender, Postkarten-Set) zeigten den Hinweis „Multi-Bild-Editor folgt in Kürze" und blockierten den Submit.

Jetzt: Eine neue Route /<studio>/<galerie>/print-book öffnet einen vollwertigen Bild-Picker. Deine Kundin sieht links das komplette Galerie-Raster, klickt Bilder an, baut die Reihenfolge per Up/Down-Buttons. Rechts läuft eine Live-Vorschau der gewählten Reihenfolge mit Index-Badges, dazu die Min/Max-Validierung pro Produkt (Fotobuch z. B. 12–50 Bilder, Kalender 12–13, Postkarten-Set genau 8). Mehrfach-Auswahl desselben Bildes ist erlaubt — Cover plus Mitte ist ein klassisches Buch-Pattern.

Tab-Bar wie im Single-Image-Shop schaltet zwischen Fotobuch / Kalender / Postkarten-Set; Default ist die höchste AOV-Gruppe (Fotobuch, „Beste Erinnerung"-Badge). Versand-Quote, Rabatt-Codes, Stripe-Checkout und die Bestätigungs-Mail funktionieren identisch zum Single-Image-Flow.

Provider-Submission: Für Prodigi-Fotobücher wird pro gewähltem Bild ein eigener printArea-Slot belegt (page-1, page-2, …) — Prodigi rendert das Buch direkt aus diesen URLs, kein PDF-Generation auf unserer Seite. Kalender und Postkarten-Set sind UI-seitig nutzbar, die Provider-Submission ist aktuell noch als Stub markiert und wirft eine sprechende Fehlermeldung; das Mapping kommt in Sprint 2c.

Galerie-Seite: Wenn Photograph die Fotobuch-Kategorie aktiv hat, erscheint unter der Bilder-Übersicht ein „Fotobuch bestellen"-CTA, der direkt in die neue Route springt. Der Single-Image-Print-Flow (/print/<file_id>) bleibt unverändert — Wandbilder, Tassen, Kissen und Phone-Cases bestellt der Kunde weiter wie gehabt aus der Lightbox.

Hinweis Photographen: Wenn du Fotobuch / Kalender / Postkarten unter Admin → Print-Shop → Welche Produkte anbieten? deaktiviert hast, bleibt die neue Route 404 — die Filterung auf print_shop_disabled_categories greift identisch zur Single-Image-Page.

2. Juni 2026 // Feature

Album-Proofing mit mehreren Reviewern (Brautpaar + Brautmutter + …)

Bisher hatte ein Album genau einen Reviewer — typischerweise das Brautpaar als Einheit über die recipient_email der Galerie. Ab heute kannst du pro Album mehrere Reviewer parallel einladen. Jeder bekommt einen eigenen Token-Link, jeder entscheidet eigenständig pro Spread, und du wählst, ob die finale Freigabe Konsens oder Mehrheit braucht.

  • Opt-in pro Album: im Admin → Galerie → Album findest du den Block „Reviewer" mit Toggle „Multi-Reviewer aktivieren". Default ist aus — bestehende Alben verhalten sich unverändert.
  • 1–5 Reviewer pro Album mit Name + Email. Jeder bekommt einen eigenen unguessbaren Token-Link (analog Vertrags-Signaturen) und sieht nur seine eigenen Decisions.
  • Approval-Modus wählbar: Alle müssen zustimmen (Default, sicherer — jeder Reviewer muss jeden Spread approven) oder Mehrheit reicht (schneller bei vielen Reviewern).
  • Status pro Spread aggregiert: im Admin siehst du pro Spread wie viele Reviewer schon approved/Änderung gewünscht/ausstehend haben. Der Gesamt-Album-Status respektiert den gewählten Modus.
  • Audit-Trail erweitert: jede Entscheidung wird mit Reviewer-Name + Email + Timestamp in album_activity festgehalten.

Backward-Compat ist garantiert: solange das Toggle aus ist, läuft die alte Logik (Galerie-Cookie + recipient_email) unverändert. Wer Album-Proofing hat (Pro-Plan, Founding Core, Trial), hat auch Multi-Reviewer ohne extra Toggle.

2. Juni 2026 // Feature

Frames-Rechnungen jetzt als XRechnung-XML — fertig für die B2B-Pflicht 2027

Frames generiert ab sofort auf Wunsch deine Subscription-Rechnungen im DACH-standardisierten E-Invoice-Format XRechnung (UBL 2.1, CIUS-XRechnung 3.0). Ab Januar 2027 ist das Format für B2B-Rechnungen in Deutschland Pflicht — und für Lieferungen an Behörden gilt es heute schon.

Was du davon hast:

  • Jeden Monat (oder Jahr) automatisch eine maschinen-lesbare XRechnung-XML in deinem Posteingang, parallel zur Standard-PDF.
  • Importierbar in alle gängigen Buchhaltungs-Tools (DATEV, lexoffice, sevDesk, Buchhaltungsbutler, BMD, Candis …).
  • Kleinunternehmer-konform: bei aktivem §19-Status setzen wir Steuersatz 0 % + den Pflicht-Vermerk im VAT-Breakdown automatisch.
  • Optional Leitweg-ID-Feld für Photographen, die direkt an Behörden weiterleiten.

Wie du es aktivierst: Admin → Einstellungen → Rechnungs-Daten → E-Rechnung. Drei Optionen:

1. Standard-PDF (Default) — wie bisher, nichts ändert sich. 2. XRechnung-XML — die UBL-XML kommt zusätzlich zur PDF per Mail. 3. ZUGFeRD-Hybrid (Beta) — eigentliches hybrides PDF/A-3 mit eingebetteter XML kommt in Phase 2; aktuell fällt diese Option auf XRechnung-XML zurück.

Die Generierung passiert im Stripe-Webhook invoice.payment_succeeded und wird in einer Audit-Tabelle nachgehalten — die Übersicht findest du unter Admin → Einstellungen → E-Rechnungen (sobald du das Format umgestellt hast).

Plan-Gate: Pro und Founding Core. B2B-Photographen sind typischerweise Pro — wer Core nutzt, kann jederzeit upgraden.

2. Juni 2026 // Feature

Migration-Tool kann jetzt in jeden Cloud-Storage schreiben

Das Migration-Tool importiert Pixieset/Picdrop/Scrappbook-Galerien in dein Frames — und legt die Bilder in deinem eigenen Cloud-Storage ab. Bisher ging das nur für Google Drive, Dropbox und S3-kompatible Endpoints. Ab heute auch für die restlichen vier:

  • OneDrive (Microsoft Graph): PUT /me/drive/items/{folder}:/{filename}:/content mit conflictBehavior=rename. Folder-Anlage über POST /me/drive/items/{parent}/children.
  • Box: Upload via upload.box.com/api/2.0/files/content (Multipart). Folder-Anlage mit sauberem 409-Fallback — wenn der Ziel-Ordner schon existiert, finden wir ihn im Parent-Listing wieder, statt einen Dummy-Fehler zurückzugeben.
  • pCloud: POST /uploadfile?folderid=&filename=&nopartial=1. Folder-Anlage über createfolderifnotexists — idempotent, kein "Ordner existiert bereits"-Fehlerpfad nötig.
  • WebDAV (Nextcloud, ownCloud, generisch): PUT für Datei, MKCOL für Ordner. Akzeptiert 405 als "Ordner existiert bereits" und macht weiter, statt abzubrechen.

Was bleibt unsupported: iCloud-Shared-Albums. Apple bietet kein offizielles Upload-API, und die Reverse-Engineering-Pfade über icloud.com brechen regelmäßig — das ist nicht der Pfad auf dem wir Foto-Migrationen für dich aufbauen. iCloud bleibt read-only (lesen von geteilten Alben).

Damit ist Sprint 2b des Migration-Tools abgeschlossen. Egal in welchem Cloud-Speicher du deine Bilder hostest — wenn Frames damit reden kann (Drive/Dropbox/S3/OneDrive/Box/pCloud/WebDAV), kann das Migration-Tool deine Konkurrenten-Galerien direkt dort ablegen.

2. Juni 2026 // Feature

Migration-Tool: Picdrop-Import (Beta)

Picdrop-Import ist live — Beta. Sprint 3 schaltet den DACH-Lieblings-Konkurrenten scharf. Du kannst deine Picdrop-Galerien jetzt direkt in dein Frames-Studio überführen, ohne sie Galerie-für-Galerie neu anzulegen. Bilder werden vom Picdrop-CDN in Original-Auflösung gezogen und in deinen Frames-eigenen Storage (Google Drive, Dropbox, S3) hochgeladen — Frames hostet weiterhin nichts selbst.

Warum Beta? Picdrop hat kein offizielles API und keine dokumentierten Endpoints. Der Adapter nutzt Reverse-Engineering: er versucht zuerst JSON-Endpoints (best-effort), fällt dann auf HTML-Scrape des Dashboards zurück, mit mehreren Pattern-Strategien (__NEXT_DATA__-JSON-Blob, Owner-Gallery-Links, Detail-Links). Wenn Picdrop ihre HTML-Struktur zwischen heute und morgen ändert, brauchen wir kurz für ein Adapter-Update — du bekommst eine sprechende Fehlermeldung statt eines Silent-Fails.

Picdrop-Setup für dich: Logge dich bei picdrop.com ein → DevTools (F12) → ApplicationCookies → https://picdrop.com → kopiere den gesamten Cookie-Header als Single-Line-String. Im Frames-Wizard Admin → Migration → Neue Migration wählst du „Picdrop", fügst den Cookie ein, optional deinen Studio-Slug (falls Auto-Discovery nichts findet), wählst Ziel-Storage und optional einen Root-Ordner. Frames listet deine Picdrop-Galerien, du wählst welche importiert werden, der Cron-Worker zieht Batch für Batch.

Pro importierter Galerie wird ein eigener Subfolder im Photograph-Storage erstellt und am Ende eine Frames-Galerie als DRAFT angelegt (cryptic Slug, nicht öffentlich). Du prüfst Style/Layout/Cover in den Galerie-Settings und schaltest dann live. Wie bei Pixieset wird der Cookie AES-256-GCM-verschlüsselt gespeichert und nach Job-Ende nicht weiter genutzt.

Was noch kommt: Sprint 4 = Scrappbook-Adapter + SEO-Landings „Von Picdrop zu Frames wechseln". Pic-Time und ShootProof sind danach geplant.

2. Juni 2026 // Feature

Reminder + Marketing-Mails: Pro-Feature & Custom-Domain-Links

Endkunden-Erinnerungs-Mails und Marketing-Kampagnen sind jetzt offiziell ein Pro-Feature (auch in Founding-Core und Trial enthalten). Photographen im Core-Plan können den Empfänger pro Galerie weiterhin hinterlegen, der automatische Versand bleibt aber pausiert — beim Upgrade auf Pro läuft alles ohne weitere Konfiguration sofort wieder an.

Mail-Links zeigen jetzt auf deine Custom-Domain. Hast du unter Admin → Einstellungen → Domains eine eigene Domain (z. B. bilder.studio-mueller.de) aktiv geschaltet, werden die Galerie-Links in allen Reminder- und Marketing-Mails automatisch auf deine Domain umgeschrieben. Endkunden sehen ausschließlich deine Marke — Frames bleibt unsichtbar.

Was bleibt auf der Plattform-Adresse? Der 1-Click-Abmelde-Link (/g/unsubscribe/<token>) ist eine zentrale Route und wird bewusst nicht umgeschrieben. So funktioniert der Unsubscribe-Link auch noch, wenn du deine Custom-Domain später entfernst oder wechselst — kein Endkunde sitzt mit einem toten Abmelde-Link da.

Nichts zu tun für dich: Bist du auf Pro / Founding-Core / Trial, läuft alles wie bisher. Hast du eine aktive Custom-Domain, profitierst du ab sofort von den Domain-Links — alte Galerien inklusive.

2. Juni 2026 // Feature

Print-Bestellungen erstatten — auf Knopfdruck, voll oder anteilig

Endkunde reklamiert wegen Druckschaden? Bestellung doppelt aufgegeben? Du kannst Print-Bestellungen jetzt direkt aus dem Admin erstatten — voll oder anteilig, mit Audit-Trail und Mail-Benachrichtigung an den Endkunden.

Wo: Admin → Print-Shop → Bestellungen → <Bestellung öffnen> → Block „Erstattung" → Button „Erstatten…"

Was passiert:

  • Confirmation-Modal pflicht — kein versehentlicher Klick. Du gibst Betrag in EUR ein (leer = vollständige Erstattung) und optional einen Grund/Notiz für den Endkunden.
  • Stripe-Refund wird auf dem original Payment-Intent ausgelöst — Rückbuchung auf das ursprüngliche Zahlungsmittel des Endkunden. Gutschrift erscheint je nach Bank in 5–10 Werktagen.
  • Endkunden-Mail geht automatisch raus (Voll- vs. Teilrückerstattung mit korrektem Wording, plus deine Grund-Notiz wenn gesetzt).
  • Audit-Trail persistiert auf der Order: Wer hat wann wieviel erstattet, mit Stripe-Refund-ID als Audit-Link ins Stripe-Dashboard.
  • 180-Tage-Fenster (Stripe-Limit) — Refund-Button blendet sich für ältere Bestellungen automatisch aus.

Order-Detail-Page ist neu: Die bisherige Liste verlinkt auf eine vollständige Detail-Seite mit Status-Timeline, Lieferadresse, Bestell-Items (Produkt, Bild, Größe, Menge, Preis, Lab-Kosten), Provider-Tracking, Stripe-Referenzen, Refund-Audit und einem Mini-Audit-Log mit allen Lebenszyklus-Events.

Defense in Depth: Der bestehende Stripe-Webhook (charge.refunded) bleibt aktiv und synchronisiert externe Refunds aus dem Stripe-Dashboard zurück in Frames. Egal wo der Refund ausgelöst wird — Admin-UI oder Stripe — die Order bleibt in einem konsistenten Status.

2. Juni 2026 // Feature

Vier neue Landing-Pages für Wechsler: Pixieset, picdrop, Scrappbook, Pic-Time

Du googelst „Pixieset Alternative DSGVO" oder „von picdrop wechseln"? Frames hat jetzt eigene Landing-Pages dafür — vier ehrliche Vergleichsseiten, eine pro Konkurrent, alle unter /wechseln/<name>.

Was drin steht:

  • Hero + drei Differenzierer pro Konkurrent (was Frames anders macht, ohne Marketing-Geschwurbel)
  • Vergleichstabelle Frames vs Konkurrent mit 12+ Features (DSGVO, eigener Storage, Editorial-Themes, Print-Shop, Album-Proofing, Marketing-Automation, eSignature, Custom-Domain, Pricing). Wo der Konkurrent besser ist, steht das auch drin — Pixieset hat eine native Mobile-App, Pic-Time hat Story-Slideshows, picdrop hat den stärkeren Auswahl-Workflow. Wir lügen unsere Vergleichstabelle nicht schön.
  • 4-Schritte-Migration-Anleitung mit konkurrenten-spezifischem Cookie-Hinweis und realistischer Zeitangabe (500 Bilder = 25–90 min je nach Quelle)
  • Was übernommen wird (Galerie-Struktur + Bilder in Original-Auflösung) und was frisch startet (Picks, Kommentare, Watermarks, Bestellungen)
  • Pricing-Teaser mit Founding-Core-49-€/Jahr-Hinweis und Link zum Preisrechner
  • 6 FAQ pro Page zu den typischen Wechsel-Fragen

Concierge-Migration als Alternative: du schickst uns deine Konkurrenten-Credentials per sicherer Übertragung, wir lassen den Import-Job für dich laufen. Beta-Nutzer bekommen Concierge kostenfrei.

Footer-Verlinkung: Neue Spalte „Wechseln" im Marketing-Footer mit Links zu allen vier Pages. SEO-Setup pro Page: Title, Meta-Description, Canonical, Open-Graph, Twitter-Cards, JSON-LD-Structured-Data.

Damit ist Migration-Tool Sprint 4 von 4 fertig — Framework (Sprint 1), Pixieset-Adapter (Sprint 2), Picdrop+Scrappbook (Sprint 3), Wechsler-Landings (jetzt). Photographen googeln, Frames rankt, Migration-Tool importiert.

2. Juni 2026 // Feature

Migration-Tool: Pixieset-Import + echter Storage-Upload

Pixieset-Import ist live. Sprint 2 schaltet den ersten echten Konkurrenten-Adapter scharf — du kannst deine Pixieset-Galerien jetzt direkt in dein Frames-Studio überführen, ohne sie hand-für-hand neu anzulegen. Bilder werden vom Pixieset-CDN in Original-Auflösung gezogen und in deinen Frames-eigenen Storage (Google Drive, Dropbox, S3) hochgeladen — Frames hostet weiterhin nichts selbst.

Echter Upload-Pfad statt Stub: Sprint 1 hatte den Storage-Upload als Stub. Sprint 2 implementiert uploadImage() und createFolder() am StorageProvider-Interface für die drei meistgenutzten Provider (Google Drive files.create multipart, Dropbox /2/files/upload, S3-kompatibel PutObject). OneDrive, Box, pCloud und WebDAV folgen in Sprint 2b mit dokumentierten TODO-Stubs — wer einen davon nutzt, bekommt eine klare Fehlermeldung statt eines Silent-Fails. iCloud-Upload bleibt permanent unsupported (Apple bietet kein API).

Pixieset-Setup für dich: Logge dich bei pixieset.com ein → DevTools (F12) → ApplicationCookies → kopiere den gesamten Cookie-Header. Im Frames-Wizard Admin → Migration → Neue Migration wählst du „Pixieset", fügst den Cookie ein, wählst Ziel-Storage und optional einen Root-Ordner. Frames listet deine Pixieset-Collections, du wählst welche importiert werden, der Cron-Worker zieht Batch für Batch.

Pro importierter Galerie wird ein eigener Subfolder im Photograph-Storage erstellt und am Ende eine Frames-Galerie als DRAFT angelegt (cryptic Slug, nicht öffentlich). Du prüfst Style/Layout/Cover in den Galerie-Settings und schaltest dann live.

Was noch kommt: Sprint 2b = die fünf restlichen Provider-Uploads (OneDrive/Box/pCloud/WebDAV, iCloud bleibt read-only). Sprint 3 = Picdrop + Scrappbook. Sprint 4 = SEO-Landing-Pages „Von Pixieset zu Frames wechseln".

2. Juni 2026 // Feature

Migration-Tool: Foundation für Pixieset/Picdrop/Scrappbook-Wechsler

Wechsle zu Frames, ohne deine Galerien hand-zu-hand neu anzulegen. Sprint 1 von 4 legt das Framework, mit dem du Galerien aus Pixieset, Picdrop, Scrappbook, Pic-Time und ShootProof direkt in dein Frames-Studio überführen kannst. Bilder werden vom Konkurrenten geladen und in deinen Frames-eigenen Storage (Drive, Dropbox, S3, …) hochgeladen — Frames hostet nichts selbst.

Drei-Phasen-Lifecycle: Discovery (Frames listet deine Quell-Galerien auf) → Auswahl (du wählst pro Galerie, ob importiert werden soll) → Import (Background-Worker zieht Bilder Batch für Batch, retry-bar, abbrechbar). Pro Migration siehst du Live-Progress (Anzahl Bilder, fehlgeschlagene Items, Fehler-Log).

Pro Studio aktivierbar: Admin → Einstellungen → Migration-Tool. Standardmäßig aus, damit das Menü nicht für Studios überladen ist, die nie migrieren. Pro/Founding-Core/Trial enthalten das Feature — Core nicht (Core-Studios brauchen es nicht).

Sprint 1 — was funktioniert: Vollständiger Framework-Lifecycle, atomare Status-Transitions (race-safe), AES-256-GCM-Verschlüsselung der Source-Credentials, Cron-Worker-Pattern, und der Concierge-Adapter (manueller Import via uns, du gibst Bild-URLs als JSON-Manifest ein). Damit ist das Framework end-to-end testbar und wir können schon manuelle Migrationen für Wechsler durchführen.

Was in den nächsten Sprints kommt: Sprint 2 = Pixieset-Adapter (Session-Cookie + bekannter Endpoint), Sprint 3 = Picdrop + Scrappbook, Sprint 4 = SEO-Landing-Pages „Von X zu Frames wechseln". Storage-Upload-Pfad ist in Sprint 1 noch Stub — wird mit dem ersten echten Adapter scharf geschaltet.

2. Juni 2026 // Feature

Brand-Akzent: deine Farbe in den Editorial-Themes

Deine Brand-Farbe in den 9 Editorial-Themes. Die Theme-Defaults bleiben — graphit-schwarz bei Modern, gold-rot bei Salon, kreide-weiß bei Atelier. Wenn dein Studio aber eine eigene Akzent-Farbe pflegt (dusty rose, forest, slate), kannst du sie jetzt als Override über alle Galerien legen ohne den Editorial-Charakter zu kicken.

Globaler Default: Admin → Einstellungen → Branding. Hex-Farbe für Akzent (z.&nbsp;B. #b07a72), optional separate Dark-Mode-Variante. Toggle aus = kein Override (Default). Live-Vorschau-Mockup zeigt Light + Dark direkt im Settings.

Pro Galerie überschreibbar: Galerie → Einstellungen → Grunddaten → Brand-Akzent (Override). Drei Modi: Photograph-Default nutzen (Standard), eigene Farbe für diese eine Galerie, oder explizit Theme-Default erzwingen (Photograph-Default ignorieren — praktisch wenn dein dusty rose nicht zum Kino-Theme passt).

Was bewusst NICHT überschrieben wird: Hintergründe, Schriften, Borders, Frame-Mat — die Editorial-Identität pro Theme bleibt erhalten. Nur --accent und die daraus berechnete --accent-soft-Variante (10% Alpha) werden ersetzt. So bleiben die 9 Themes visuell ehrlich und du bekommst trotzdem den Brand-Touch.

Sicherheit: Hex-Werte werden server-side gegen ^#[0-9a-fA-F]{6}$ validiert — keine CSS-Injection-Vektoren.

2. Juni 2026 // Feature

Galerien als <iframe> auf eigener Website einbetten

Galerien embedden. Jede Galerie kann jetzt pro Wunsch als <iframe> auf einer fremden Website laufen — WordPress-Seite, Squarespace-Block, eigene HTML-Landingpage. Photograph aktiviert Embed pro Galerie, kopiert den fertigen Snippet, fertig.

Wo: Admin → Galerie → Einstellungen → Zugriff → Toggle „Embed". Default aus aus Privatsphäre-Gründen. Sobald aktiv, erscheint auf der Galerie-Detail-Seite ein neuer Block „Einbetten" mit Layout-Dropdown (Grid/Masonry), Theme-Override (Galerie-Theme oder einer der Frames-Themes) und „Code kopieren"-Button.

Sicherheit: Passwort- und PIN-geschützte Galerien sind unabhängig vom Toggle nicht embeddable — der Auth-Flow ist in fremden iframes (Third-Party-Cookies, Storage-Partitioning) nicht zuverlässig. Wer Embed will, schaltet Passwort/PIN ab. Die CSP-Regel frame-ancestors gilt nur für /embed/-Routen — der Admin-Bereich und normale Galerie-Views bleiben mit X-Frame-Options: DENY Clickjacking-geschützt.

Embed-URL: https://app.frames.photo/embed/<slug> — optional mit ?layout=masonry und ?theme=editorial. Embed-Views laden ohne Header/Footer/Nav und sind noindex (kein doppelter SEO-Content).

2. Juni 2026 // Feature

Studio-Tools: eSignatur-Verträge & Pre-Shoot-Fragebögen

Verträge und Fragebögen sind live (Pro-Feature, opt-in). Neuer Bereich unter Admin → Einstellungen → Studio-Tools — zwei Toggles, einer für Verträge, einer für Fragebögen. Beide sind standardmäßig aus, damit nichts in deinem Workflow auftaucht das du nicht willst.

eSignatur-Verträge

  • Vertrag im Markdown-Editor schreiben oder aus einer eigenen Vorlage duplizieren.
  • Empfänger eintragen, „Zur Signatur senden" — Brautpaar bekommt eine Mail mit Link in deinem Branding.
  • Endkunde liest im Browser, unterschreibt per Touch oder Maus auf einem Canvas, akzeptiert den DSGVO-Hinweis und ist fertig.
  • Audit-Trail mit IP, Browser und Timestamp wird als technischer Echtheits-Nachweis gespeichert (Art. 6 (1) f DSGVO).
  • Du bekommst Mail-Benachrichtigung, siehst Signatur und Audit-Trail im Admin und kannst die unterschriebene Fassung als PDF speichern (Browser → Drucken → „Als PDF speichern").
  • Vertragstext wird beim Senden eingefroren — was unterschrieben wurde, kann danach nicht mehr verändert werden.

Pre-Shoot-Fragebögen

  • Fragen-Schema mit 6 Typen: Kurztext, Langtext, Single-Choice, Multi-Choice, Datum, Ja/Nein. Pro Frage Pflicht-Flag.
  • Vor dem Shooting Link rausschicken, Brautpaar füllt im Browser aus.
  • Du siehst alle Antworten gebündelt im Admin — keine Mail-Pingpong, kein Formular-PDF, kein OCR.
  • Vorlagen-Bibliothek pro Studio: einmal „Hochzeitsfragebogen 2026" definieren, beliebig oft duplizieren.

Sicherheit

  • Token-basierte Endkunden-Links (32-Byte Random, unguessbar).
  • Sign-/Submit-Aktionen sind race-safe — Doppel-Submit per Reload führt zu sauberem 409 statt Duplikat.
  • Pro-Plan: Trial, Founding Core und Pro. Bestehende Photographen sehen nichts neues, solange sie die Toggles nicht aktivieren.

Phase 2 (Backlog): Drag&Drop-Frage-Builder statt JSON-Editor, echter PDF-Renderer mit Puppeteer, Vertrag automatisch an Galerie binden + bei Veröffentlichung mitverschicken, Multi-Signatur (Braut + Bräutigam einzeln).

2. Juni 2026 // Feature

Drei neue Schalter für mehr Kontrolle

Drei neue Schalter für mehr Kontrolle. PWA-„App"-Installation pro Galerie ein-/ausschaltbar (default an), Print-Shop-Produkt-Kategorien pro Photograph wählbar (Phone-Cases nicht jeder Brand-Look, kein Problem mehr), „Galerie ist bereit"-Mail-Template pro Studio anpassbar mit {var}-Substitution und Live-Vorschau.

PWA pro Galerie: Admin → Galerie → Einstellungen → Zugriff → Toggle „Galerie als App installierbar". Default an. Aus = klassische Browser-Bookmark, kein App-Icon, kein Manifest. Praktisch für kurzlebige Galerien oder wenn das Cover-Bild nicht zum App-Icon taugt.

Print-Shop-Kategorien: Admin → Print-Shop → Block „Welche Produkte anbieten?". Sieben Toggles (Fotobuch, Wandbild, Kalender, Kissen, Phone-Case, Tasse, Postkarte). Deaktivierte Kategorien verschwinden aus dem End-Kunden-Checkout. Default ist alles an — neue Kategorien sind forward-compatible automatisch aktiv.

Custom „Galerie ist bereit"-Mail: Admin → Einstellungen → E-Mail-Templates. Subject und Body in eigener Tonalität, mit Variablen-Platzhaltern wie {recipient_name}, {gallery_name}, {gallery_url}, {image_count}, {password_hint}, {studio_name}. Live-Vorschau-Block zeigt die Mail mit Dummy-Werten — gerendert mit dem echten Mail-Renderer, nicht mit einer JS-Approximation. „Auf Default zurücksetzen"-Button bringt das Standard-Frames-Editorial-Wording zurück.

2. Juni 2026 // Feature

Album-Proofing: Spread für Spread, ohne PDF-Pingpong

Album-Proofing ist live (Pro-Feature). Neuer Bereich pro Galerie unter Admin → Galerie → Album. Statt PDFs hin und her zu schicken, baust du das Album direkt im Browser.

Workflow:

  • Du legst pro Galerie ein Album an (Name, Format, Seitenzahl).
  • Du lädst die Spreads (Doppelseiten als Bild-Exports aus InDesign/Canva) hoch — beliebig viele, in Reihenfolge.
  • „Zur Freigabe senden" schaltet das Album für dein Brautpaar frei und schickt eine Mail mit deinem Branding.
  • Dein Brautpaar öffnet das Album im Browser, scrollt Spread für Spread, gibt pro Doppelseite Feedback: Annehmen oder Änderung wünschen mit Kommentar.
  • Du siehst den aggregierten Status live im Admin (Fortschrittsbalken, Spread-Liste, Aktivitäts-Feed).
  • Du revidierst gezielt: „Spread ersetzen" lädt eine neue Datei, setzt Status zurück auf Ausstehend, Revisions-Zähler +1.
  • Sobald alle grün sind: Finaler „Album final freigeben"-Button — danach sind keine Änderungen mehr möglich, du kannst in Druck.

Audit-Trail: Jede Spread-Bewertung, jede Revision, jede Freigabe ist mit Timestamp und Akteur (Photograph oder Endkunde mit Email) dokumentiert. Falls dein Brautpaar später behauptet „das hab ich nie freigegeben" — du hast es schriftlich.

Mails: Drei Templates in deinem Branding — Album bereit zur Durchsicht (an Endkunde), Änderungswunsch (an dich, mit Spread-Nr + Kommentar), Final freigegeben (an dich, mit Spread-Count).

Phase 2 (kommt später): echter Page-Flip mit Physics-Animation, PDF-Export der finalen Spreads, Auto-Submission an Print-Shop nach Approval, mehrere Reviewer pro Album (z. B. Brautpaar + Mutter).

2. Juni 2026 // Feature

Marketing-Kampagnen: automatische Aktions-Mails an deine Kundinnen

Marketing-Kampagnen sind live (Pro-Feature). Neuer Bereich unter Admin → Marketing-Kampagnen. Du legst Trigger-basierte Aktions-Mails an Endkundinnen-Galerien an — Frames cron-läuft täglich und verschickt automatisch mit deinem Branding und deinem SMTP.

Vier Trigger-Typen:

  • Festes Datum (jährlich) — z. B. 15. November Weihnachts-Aktion
  • Beweglicher Feiertag — Muttertag (2. Sonntag im Mai), Black Friday (letzter Freitag im November), 1. Advent
  • N-ter Jahrestag des Anlasses — z. B. 1. Hochzeitstag, Marketing-Tonalität als Ergänzung zum sentimentellen Reminder-Cron
  • Anlass-Alter-Fenster — z. B. Familien-Shootings 6–24 Monate alt

Segment-Filter: Anlass-Typen (Hochzeit, Taufe, Maternity, Familie), Mindest-Bildauswahl, Cooldown („nicht öfter als alle X Tage").

Vorlagen zum ein-Klick übernehmen: Muttertag, Weihnachten, Black Friday, Erstes Hochzeitsjubiläum.

Variablen-Substitution im Template: {recipient_name}, {gallery_url}, {gallery_name}, {discount_code}, {discount_value}, {photographer_name}, {anniversary_years}, {event_date}.

Optional verknüpfter Rabatt-Code: Wähle einen deiner Print-Shop-Codes aus Rabattaktionen — Frames blendet ihn in der Mail prominent ein.

DSGVO: Mails gehen nur an Empfängerinnen mit aktivem Opt-in („Erinnerungs-Mails erlauben" in der Galerie). Jede Mail hat einen 1-Click-Abmelde-Link. Volume-Schutz: max 500 Mails pro Photograph pro Tag.

2. Juni 2026 // Feature

Galerien als „App" am Home-Bildschirm

Galerien als „App" am Home-Bildschirm. Jede Galerie kann jetzt von deinen Kundinnen wie eine echte App aufs Handy gelegt werden — das App-Icon zeigt das Cover-Foto. iOS Safari + Android Chrome zeigen automatisch die „Zum Home-Bildschirm hinzufügen"-Option. Beim Tippen öffnet sich die Galerie im Standalone-Modus ohne Browser-Chrome. Bisher mussten Endkunden umständlich Lesezeichen anlegen oder die URL merken.

2. Juni 2026 // Feature

Apple Pay, Google Pay & SEPA aktiviert

Apple Pay, Google Pay & SEPA aktiviert. Im Print-Shop und beim Plan-Upgrade akzeptieren wir jetzt zusätzlich zur Kreditkarte: SEPA-Lastschrift, Sofort, Apple Pay (Safari/iOS) und Google Pay (Chrome). Mobile-Konversion steigt typischerweise um 20–30 %, DACH-User bevorzugen SEPA bei Beträgen >50 €. Die Auswahl erscheint automatisch je nach Gerät und Browser im Stripe-Checkout — keine Konfiguration nötig. Subscriptions akzeptieren Kreditkarte + SEPA (Sofort ist von Stripe für Abos ausgeschlossen).

2. Juni 2026 // Feature

Endkunden-Reminder + 7 neue Print-Shop-Kategorien

Zwei größere Erweiterungen, die der Anlass-Daten-Foundation aus dem gleichen Tag folgen:\n\nAutomatische Erinnerungs-Mails an deine Kundinnen. Cron läuft täglich und schickt branded-Mails zu definierten Intervallen — Hochzeiten: 1, 5 und 10 Jahre danach; Taufen/Baby-Shootings: 6 Monate, 1 und 3 Jahre; Maternity: 1. Geburtstag des Kindes; Familien-/Portrait-Shootings: jährlicher Update-Reminder. Unter Admin → Einstellungen → Erinnerungs-Mails kannst du pro Intervall einzeln aktivieren/deaktivieren und einen eigenen Intro-Text pro Anlass-Typ hinterlegen. Live-Vorschau zeigt dir die generierte Mail. Jede Mail bekommt automatisch einen 1-Click-Unsubscribe-Link — DSGVO-Pflicht-Anforderung.\n\nPrint-Shop-Catalog: 7 Kategorien statt nur Wandbilder. Über Prodigi sind jetzt verfügbar: Fotobücher (Layflat & Hardcover, A4/Quadratisch, 26–50 Seiten), Wandbilder (Foto-Print, Canvas, gerahmt), Wandkalender (A4/A3), Kissen, Phone-Cases (iPhone & Samsung), Tassen und Postkarten-Sets. Die End-Kunden-Checkout-Page sortiert nach durchschnittlichem Bestellwert — Fotobücher bekommen ein „Beste Erinnerung"-Badge. Multi-Image-Produkte (Fotobuch, Kalender, Postkarten) folgen mit Bild-Picker in einer späteren Phase; Single-Image-Produkte (Wandbild, Tasse, Phone-Case) sind sofort bestellbar.\n\nKevin extern: Coolify-Cron für /api/cron/event-reminders täglich (z. B. 11:00 UTC) anlegen mit Authorization: Bearer $CRON_SECRET-Header.

2. Juni 2026 // Feature

Galerie per Mail, Anlass-Erinnerung & Rabattaktionen

Drei frische Bausteine für den Kundenkontakt — alle in dieser Welle live:\n\nGalerie per Mail senden. Im Admin → Galerie findest du jetzt unter dem Share-Link einen Button „Galerie per Mail senden". Sobald du in den Grunddaten den Empfänger-Kontakt hinterlegt hast, geht die Mail mit deinem Branding und deinem SMTP raus — Frames bleibt im Hintergrund.\n\nAnlass-Daten & Reminder-Vorbereitung. Pro Galerie kannst du jetzt Anlass-Typ (Hochzeit, Taufe, Maternity, Familien-Shooting) und Anlass-Datum hinterlegen. Mit Endkunden-Kontakt und ausdrücklichem DSGVO-Opt-in baut Frames daraus später automatische Erinnerungs-Mails (z. B. zum 1. Hochzeitstag). Opt-in ist Pflicht, 1-Click-Unsubscribe-Link in jeder Mail.\n\nRabattaktionen für den Print-Shop. Unter Admin → Einstellungen → Rabattaktionen (Pro-Feature) legst du Codes wie BRAUTPAAR-15 an: Prozent oder fix, Gültigkeitszeitraum, max. Einlösungen. Im Print-Shop-Checkout deiner Kundinnen erscheint ein Code-Feld. Race-safe gegen Doppelt-Einlösung, Stripe-Coupon wird lazy beim ersten Apply erzeugt.

1. Juni 2026 // Feature

Wall-Art-Preview: dein Bild im Raum

Kunden können ein Galerie-Bild jetzt direkt in einem von vier Raum-Mockups (Wohnzimmer, Schlafzimmer, Esszimmer, Arbeitszimmer) und in vier Druck-Größen (30×40, 50×70, 70×100, 100×150 cm) ansehen — als Verkaufs-Hilfe für gerahmte Prints. Skalierung passt sich an die echten Bild-Proportionen an; bei Hochformat-/Querformat-Mismatch wird die Druck-Orientierung automatisch gedreht.\n\nAktivieren: Galerie → Einstellungen → Zugriff → "Wall-Art-Preview". Default ist AUS. Kunden sehen dann im Lightbox den Button "An die Wand".

1. Juni 2026 // Polish

Founding-Expiry läuft jetzt automatisch

Ein neuer Cron (/api/cron/founding-expiry) prüft täglich, welche Founding-Core-Plätze in den nächsten 30 Tagen ablaufen, und schickt eine einmalige Vorwarnung. Sobald der 24-Monats-Zeitraum erreicht ist, stellt der Cron den Plan automatisch auf Core um — bei aktiver Stripe-Subscription wird das Subscription-Item dort sauber umgehängt (mit Proration), ansonsten wird der Plan lokal geflippt. Idempotenz via admin_events (founding_expiry_warning_sent, founding_expired).\n\nWas Photographen sehen: 30 Tage vor Ablauf eine Mail mit Datum und Preis-Hinweis. Am Ablauftag eine Bestätigungs-Mail. Kein manuelles Eingreifen nötig.

1. Juni 2026 // Feature

Print-Shop (Beta) — Foundation steht

Frames bekommt einen Druck-Verkauf. Phase 1 ist die Architektur-Foundation: Schema für Provider-Verbindungen, Produkt-Katalog und Order-Lifecycle steht. Photographen können unter Admin → Print-Shop jetzt vier Druck-Anbieter sehen: Prodigi (Standard, günstig), WhiteWall (Fine-Art-Premium), Saal Digital (DACH-Klassiker für Hochzeit/Familie) und Picanova (Canvas + Geschenkartikel).\n\nWas schon geht: Verbindungen anlegen, Markup pro Provider einstellen (Standard 30%), Produkt-Katalog durchstöbern mit Filter nach Provider und Kategorie. Lab-Preise zeigen wir mit deinem Markup direkt als Endkundenpreis an, damit du sofort siehst was Kunden zahlen würden.\n\nWas Phase 2 bringt: Echte API-Anbindung an die Provider (sobald Reseller-Accounts angelegt sind), Endkunden-Checkout im Photograph-Brand, Stripe-Connect für die automatische Geld-Aufteilung Lab/Plattform/Photograph, Webhook-Tracking für Versand-Status. Bis dahin sind alle Provider-Calls Stubs — bestellen kann noch niemand.\n\nPro-Feature (inkl. Founding Core und aktive Trial). Wer mit-testen will: schreib uns an kevin@frames.photography.

31. Mai 2026 // Feature

Webhooks für Slack, Zapier und Make.com (Pro)

Frames kann jetzt Galerie-Events an deine eigenen Systeme schicken. Pro-Feature, auch für Founding-Core-Lifetime-Plätze freigeschaltet.\n\nSechs Events stehen bereit: Galerie geöffnet (max 1×/h pro Besucher), Pick gesetzt oder geändert, Auswahl abgeschlossen, Kommentar zu einem Bild, Download erfolgt, Galerie läuft in 7 oder 1 Tag(en) ab.\n\nEinrichtung in 30 Sekunden: Admin → Webhooks → URL eintragen (z. B. Slack Incoming-Webhook, Zapier-Hook oder Make.com-Trigger), Events auswählen, fertig. Frames signiert jeden Payload mit HMAC-SHA256 und legt das Hex-Digest in den Header x-frames-signature — du verifizierst die Echtheit serverseitig mit deinem Signing-Secret.\n\nRobust: 5 Sekunden Timeout pro Lieferung, kein Sofort-Retry (das nächste Event ist die Retry-Chance), nach 50 Fehlversuchen pausieren wir den Webhook automatisch — kein Spam wenn dein Receiver mal eine Stunde down ist. Jeder Versuch landet im Delivery-Log, das du im Admin pro Subscription aufklappen kannst (HTTP-Status, Response-Zeit, Error-Snippet).\n\nSSRF-Schutz: Webhook-URLs müssen in Production https sein und dürfen nicht auf private IP-Ranges zeigen (10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 127.0.0.0/8, IPv6-Loopback und Link-Local).

31. Mai 2026 // Feature

Onboarding-Mail-Sequenz für neue Photographen

Neue Photographen bekommen jetzt automatisch eine 5-Mail-Sequenz über 14 Tage — ruhig, editorial, ohne Marketing-Pathos:\n\n- Tag 0 — Willkommen: Drei Schritte zur ersten Galerie (Speicher, Theme, Upload).\n- Tag 2 — Speicher: Nudge zur Google-Drive- oder S3-Anbindung; personalisiert, falls schon verbunden.\n- Tag 5 — Theme & erste Galerie: Push zum Galerie-Wizard, mit Theme-Tipps, falls noch keine Galerie steht.\n- Tag 9 — Kundenerlebnis: Passwort, Auswahl-Workflow, Wasserzeichen — die Details, die Vertrauen schaffen.\n- Tag 13 — Feedback & Roadmap: Bitte um Feedback und Ausblick auf kommende Features.\n\nIdempotent über Timestamp-Spalten auf photographers, max. eine Mail pro Photograph pro Cron-Lauf. Opt-Out jederzeit über den Link am Mail-Ende oder direkt unter Einstellungen → ?onboarding_opt_out=1.

31. Mai 2026 // Feature

Pricing-Page live: Founding Core, Core, Pro + Preisrechner

Drei klare Pakete, alle Preise brutto inkl. MwSt., voll transparent:

Founding Core — 49 €/Jahr (Einführungspreis): Die ersten 50 Beta-Photographen bekommen Core-Funktionsumfang zum vergünstigten Einführungspreis.

Core — 7,90 €/Monat oder 59 €/Jahr: Für Solo-Photographen mit eigenem Speicher. 30 aktive Galerien, 5 Sammlungen, alle Themes, Email-Templates, Statistiken.

Pro — 12,90 €/Monat oder 99 €/Jahr: Für Studios mit eigener Marke. Unbegrenzte Galerien und Sammlungen, eigene Domain, abschaltbares Frames-Branding, mehrere Marken-Presets.

Dazu gibt es einen interaktiven Preisrechner auf /pricing: Du wählst Paket, Zahlungsweise und Speicheranbieter (Mainstream-Cloud oder günstiges Object-Storage) und siehst sofort Gesamtkosten plus Vergleich mit picdrop oder Scrappbook. Inklusive Capacity-Anzeige: „Reicht für ungefähr 80 Hochzeiten" macht abstrakte 2 TB greifbar.

Intern: Plan-Namen umbenannt (Klein → Core, Groß → Pro). Alle bestehenden Beta-Tester wurden automatisch auf Founding Core gehoben.

31. Mai 2026 // Feature

Sammlung & Einzelgalerie sauber getrennt

Klare Trennung zwischen Sammlung-Modus und Einzelgalerie-Modus:\n\nSammlung hat jetzt ein eigenes Theme. Wenn du eine Galerie aus einer Sammlung heraus aufrufst (von der Sammlung-Übersicht), übernimmt sie das Theme der Sammlung und bekommt eine Geschwister-Navigation (← Sammlungsname →) im Header — du kannst direkt zur nächsten oder vorherigen Galerie innerhalb der Sammlung springen.\n\nEinzelgalerie behält ihr eigenes Theme. Wenn jemand eine Galerie direkt aufruft (Bookmark, geteilter Link), zeigen wir das in der Galerie hinterlegte Theme und keinen Zurück-Link zur Sammlung — die Galerie existiert komplett eigenständig.\n\nTechnisch: Sammlung-Klicks setzen ?via=<sammlung-slug> an den URL. Direkter Aufruf ohne diesen Parameter bleibt standalone. Beide Wege sind über reine URL bookmarkbar.

31. Mai 2026 // Polish

Vier Themes runderneuert (Salon · Folio · Atelier · Album)

Die vier Galerie-Themes Salon, Folio, Atelier und Album haben eine komplett neue optische Sprache bekommen. Editorial, Modern, Clean, Kino und Magazin bleiben unverändert.\n\nSalon wechselt von dunklem Walnut zu warmem Cream mit dusty-pink Akzent. Tiles wirken jetzt wie gerahmte Werke an einer Galerie-Wand — mit Paper-Mat, dezentem Schatten und minimaler Rotation pro Tile (Salon-Hang-Gefühl). Cormorant Garamond Italic für Headlines.\n\nFolio wird ein echtes Monograph: Pure-White-Hintergrund, Playfair Display für Titel, jedes Bild bekommt eine eigene "Seite" mit Roman-Numeral darunter — wie ein gedrucktes Photo-Buch beim Durchblättern.\n\nAtelier verliert die Museums-Passepartouts und wird ein persönliches Photographen-Moodboard: warmes Ivory, Polaroid-artige Paper-Cards mit Kraft-Tape-Streifen oben, dezente Schatten und minimale Rotation. Fraunces Italic.\n\nAlbum bekommt einen Champagne-Hintergrund, abgerundete Tile-Cards (6px Radius) mit weichem Schatten und Cormorant Italic — wie ein gedrucktes Hochzeitsalbum aufgeschlagen.\n\nAlle Themes haben Light- UND Dark-Mode-Varianten. Bestehende Galerien übernehmen den neuen Look automatisch — Theme-Auswahl unter Einstellungen.

31. Mai 2026 // Feature

Jahres-Rabatt, Auto-Reminder, Geo-Analytics & neues Hilfe-Center

Vier Sachen auf einmal:\n\nJahres-Rabatt. Im Plan-Wechsel-Dialog (/admin/billing) kannst du jetzt zwischen monatlicher und jährlicher Zahlung wählen. Jährlich = zehn Monatspreise statt zwölf — du sparst zwei Monate pro Jahr.\n\nAuto-Reminder bei Galerie-Ablauf. Galerien mit Ablaufdatum lösen automatisch eine Erinnerungs-Mail aus — sieben Tage und einen Tag vor dem Stichtag. Mit Direktlink zur Galerie-Bearbeitung. Verlängert sich nicht automatisch, du behältst die Kontrolle.\n\nHerkunft & Geräte in der Galerie-Statistik. Auf der Galerie-Detail-Seite siehst du jetzt zusätzlich die Top-Länder, Top-Geräte und Top-Browser deiner Besucher. Alles aus anonymisiertem User-Agent + Cloudflare-Country-Header — kein Tracking-Profil, keine Drittanbieter.\n\nHilfe-Center mit Suche. Neue Route /docs mit zwölf Artikeln in sechs Kategorien (Erste Schritte, Storage, Galerien, Branding, Abrechnung, Beta) plus Volltextsuche. Die FAQ bleibt für die häufigen schnellen Fragen, das Hilfe-Center geht in die Tiefe.

31. Mai 2026 // Feature

Backend-Stil wählbar + Warteliste-Verwaltung

Zwei kleine Wünsche eingebaut: Du kannst jetzt in den Einstellungen unter „Backend-Stil" zwischen Editorial (Frames-Standard mit italics + Cream) und Clean (Inter überall, neutrale Farben, reduziert) umschalten. Für alle die's persönlicher oder schlichter mögen.\n\nUnd: die Plattform-Admin-Seite hat jetzt eine richtige Warteliste-Verwaltung unter /platform/waitlist — alle Einträge mit Status (wartend / eingeladen / registriert / abgelehnt), interne Notizen, Filter, und Action-Buttons um den Workflow zu durchlaufen.

31. Mai 2026 // Feature

Galerie duplizieren mit einem Klick

Du kannst jetzt jede Galerie 1:1 kopieren — in der Galerie-Detail-Ansicht gibt es einen neuen Block „Galerie duplizieren". Die Kopie übernimmt Theme, Layout, alle Settings, die Storage-Verbindung, Watermark-Override und Zugriffs-Flags. Kommentare, Auswahl und Analytics starten frisch. Slug wird automatisch auf {slug}-kopie gesetzt (mit Nummerierung bei Mehrfach-Kopien). Praktisch wenn du eine Vorlage für eine Galerie-Art etablierst.

31. Mai 2026 // Feature

Zwei neue Themes: Kino + Magazin

Frames hat zwei neue Galerie-Themes bekommen. Kino ist die cinematische Vorhang-Variante — schwarzer Letterbox-Hintergrund, gedimmtes Brass als Akzent, das Bild leuchtet wie projiziert. Ideal für Mode-Editorials, Akt, Konzert, Cinematic-Hochzeit. Magazin ist die asymmetrische Zeitschriften-Doppelseite — Heavy-Display-Serif, Drop-Caps am Section-Anfang, Vermillion-Akzent für Pull-Quote-Borders. Ideal für editoriale Strecken mit Text-Anteil: Reportage, Foodfotografie mit Rezept, Architektur mit Werk-Notizen, Heritage-Hochzeiten. Beide Themes funktionieren in Light- und Dark-Mode und stehen ab sofort im Galerie-Settings-Picker zur Auswahl. Damit umfasst die Theme-Library 9 Themes.

31. Mai 2026 // Polish

Rechtliches aktualisiert (Impressum, Datenschutz, AGB)

Impressum, Datenschutzerklärung und AGB wurden auf den aktuellen Frames-Stand gebracht: vollständige Anbieter-Angaben (luckyCONCEPT / Kevin Luck, Hannover, USt-IdNr. DE310812706), detaillierte Auflistung aller Auftragsverarbeiter (Hostinger Frankfurt, Stripe, alle freigeschalteten Storage-Provider, EU-SMTP-Fallback), klare Trennung zwischen Photograph:innen- und Endkund:innen-Daten, Hinweis auf verschlüsselte OAuth-Token-Speicherung (AES-256-GCM) sowie Kündigungs- und Datenexport-Regeln in den AGB. Texte sind als anwaltlich noch zu prüfender Entwurf markiert.

30. Mai 2026 // Feature

Pro-Galerie-Wasserzeichen + Social-Sharing-Previews

Pro Galerie kannst du das Wasserzeichen jetzt überschreiben — dezenter, anders positioniert, oder komplett aus. Geteilte Galerie-Links zeigen bei WhatsApp, Twitter, LinkedIn und Slack ein echtes Cover-Vorschaubild mit Studio-Namen — passwortgeschützte Galerien bleiben dabei neutral (keine Bild-Leaks).

30. Mai 2026 // Feature

Status-Page ist live

Unter /status (bald auch status.frames.luckyconcept.cloud) seht ihr jetzt den Live-Zustand aller Frames-Systeme: Web App, Datenbank, Storage-Anbindungen, E-Mail-Versand und Stripe-Webhooks. Mit 90-Tage-Uptime-Bar pro System und einer Chronologie aller aktuellen und vergangenen Vorfälle — komplett öffentlich, kein Login nötig.

30. Mai 2026 // Feature

Beta-Code-Gate und 4-Step-Onboarding

Frames startet in die geschlossene Beta: Über BETA_MODE lässt sich auf der Signup-Strecke ein Code-Gate aktivieren, das Codes aus /platform/beta-codes verlangt. Frisch registrierte Photographen werden außerdem durch einen 4-stufigen Willkommens-Wizard geführt (Willkommen → Storage verbinden → Theme/Layout-Defaults → Erste Galerie), bevor sie auf das Dashboard landen.

30. Mai 2026 // Feature

Editorial-Mails für Galerie-Veröffentlichung, Kundenauswahl und Zahlung

Die drei wichtigsten Benachrichtigungen kommen ab sofort im neuen Editorial-Look: Cream-Hintergrund, Newsreader-Italic-Headlines, Hairline-Borders. Die "Auswahl abgeschlossen"-Mail an dich landet bereits automatisch im neuen Style. Die "Zahlung erhalten"-Mail wird nach jeder erfolgreichen Stripe-Buchung verschickt — mit direktem Download-Link zur Rechnung. Die "Galerie veröffentlicht"-Mail an deine Endkunden ist als Render-Helper bereit; der UI-Trigger im Galerie-Zugriff-Tab folgt im nächsten Schritt.

30. Mai 2026 // Feature

8 Speicher-Anbieter sind voll verbunden

WebDAV (Nextcloud, ownCloud), OneDrive und Box sind ab sofort verbindbar — zusätzlich zu Drive, Dropbox, iCloud, pCloud und S3-kompatibel. Für jeden Anbieter gibt es eine Schritt-für-Schritt-Anleitung unter Verbindungen → Setup-Hilfe.

30. Mai 2026 // Feature

S3-kompatibler Speicher: Backblaze, R2, AWS und mehr

Du kannst jetzt deinen eigenen S3-kompatiblen Storage anbinden — Backblaze B2, Cloudflare R2, AWS S3, Wasabi und alle anderen Anbieter mit S3-API.

Im Gegensatz zu Drive/Dropbox/iCloud/pCloud konfigurierst du das selber mit deinen API-Schlüsseln. Vorteil: volle Kontrolle, oft günstiger, Backblaze + R2 haben einen kostenlosen Tier.

30. Mai 2026 // Polish

Frames-Logo ist live

Das Frames-Wordmark ersetzt jetzt überall den Text-Schriftzug — im Admin, auf der Website und auf den Galerien als Fallback. Wenn du dein eigenes Brand-Logo gesetzt hast, ändert sich für deine Kunden natürlich nichts: deins gewinnt.

30. Mai 2026 // Polish

Pakete und Preise versteckt bis Launch

Auf der Website gibt es bis zum Launch keine konkreten Pläne oder Preise mehr zu sehen. Wir testen mit einer Beta-Kohorte, alle bekommen die volle Plattform mit 14-Tage-Trial. Pakete und Preise verkünden wir kurz vor Launch.

30. Mai 2026 // Feature

Echte Beispielbilder auf der Website

Statt Stock-Bildern zeigt die Demo jetzt zwei zusammenhängende Shoots — Hochzeit und Fashion — als KI-generierte Beispiele. Du kannst beide Shoots in jedem Theme und Layout durchspielen.

30. Mai 2026 // Polish

Preise bewusst noch offen

Wir nehmen die konkreten Preise vorerst von der Website. Klein und Groß bleiben als Pläne sichtbar mit allen Features — die Beträge geben wir bekannt, sobald die Beta abgeschlossen ist. Beta-Photographen bekommen einen Bonus-Tarif.

30. Mai 2026 // Polish

Salon heller, Album minimaler, KI-Hinweise dezenter

Salon ist freundlicher: Walnut-Hintergrund leicht heller, statt der Brass-Ecken eine schlanke Brass-Hairline am Bild, mehr Platz zwischen den Bildern.

Album verzichtet jetzt komplett auf Foto-Ecken und Schatten — das Bild liegt clean auf Cremepapier, italic Numeral-Caption bleibt.

KI-Plakette und Demo-Hinweis sind deutlich zurückhaltender.

30. Mai 2026 // Feature

Sammlungen mit eigenem Theme + Back-Navigation

Sammlungen bekommen jetzt ihr eigenes Theme und Layout — alle Galerien darin sehen automatisch gleich aus. Pro Galerie kannst du es aber weiterhin überschreiben.

Außerdem: aus jeder Untergalerie kommst du jetzt mit einem Klick zurück auf die Sammlungs-Landing.

30. Mai 2026 // Polish

KI-Transparenz auf der Marketing-Site

Alle Beispielbilder auf der Website sind jetzt klar als KI-generiert gekennzeichnet — kleine KI-Plakette in der Ecke jedes Bildes plus ein Hinweis im Footer. Transparenz vor Marketing-Hochglanz.

30. Mai 2026 // Feature

Themes-Polish: Album ersetzt Streifen, Atelier + Salon poliert

Streifen ist raus — stattdessen Album: cremepapier mit Fotoecken und handschriftlicher Caption, persönlich und warm.

Atelier zeigt sich aufgeräumter — Nº01 statt PLATE I., mehr Whitespace zwischen Bildern, ruhigerer Mosaic-Rhythmus.

Salon bekommt Brass-Fotoecken statt dunkler Holzrahmen.

Alle Captions und Pick-Buttons sitzen jetzt durchweg gleich — keine Layoutbrüche mehr beim Theme-Wechsel.

30. Mai 2026 // Feature

Themes und Anordnungen abgestimmt + Streifen neu

Jedes Theme bekommt seine Lieblings-Anordnungen — passende Layouts sind hervorgehoben, weniger passende mit dezentem Hinweis markiert. Wählen kannst du weiterhin alles.

Streifen ist von Grund auf neu: zeitgenössisches Cinema-Editorial statt vintage-Sepia. Monotypografie, Timecode-Captions, warm-bronze Akzent.

30. Mai 2026 // Feature

Klein-Paket: 30 Galerien + 5 Sammlungen

Das Klein-Paket umfasst jetzt 30 aktive Galerien (vorher 3) und 5 Sammlungen als Landingpages. Realistisch für ein Jahr Hochzeits- oder Portrait-Geschäft — ohne sofort upgraden zu müssen.

30. Mai 2026 // Polish

Doppelunterstreichungen entfernt

Editorial sauberer: wo bisher eine Hairline UND ein aktiver Status-Strich übereinander lagen, bleibt jetzt nur noch der präzisere Status-Strich. Betrifft Lightbox-Toolbar, Tab-Strips und mehrere kleine Kanten.

30. Mai 2026 // Polish

Analytics konsolidiert

Kunden-Liste und Stille-Sessions-Aufräumen wandern in den Analytics-Block. Ein Klick, alles übersichtlich — statt drei separate Cards. Chevron-Indikator ist deutlicher sichtbar.

30. Mai 2026 // Security

Brute-Force-Schutz für Logins

Login-Versuche sind jetzt auf 5 pro 15 Minuten begrenzt — pro Email und pro IP. Außerdem Spam-Schutz für Feedback-Submits, Waitlist-Anmeldungen und OAuth-Verbindungen.

30. Mai 2026 // Feature

Frames Beta ist live

Die ersten Photographen sind drin. Wenn du Bugs findest oder etwas vermisst: nutze den Feedback-Button unten rechts in deinem Admin — die Mail landet direkt bei mir.

30. Mai 2026 // Feature

Standard-Darstellung pro Account

In deinen Account-Einstellungen kannst du jetzt ein Standard-Theme und eine Standard-Anordnung wählen. Neue Galerien starten direkt mit deiner Vorauswahl — pro Galerie weiterhin überschreibbar.

30. Mai 2026 // Fix

Migration 0025: Dead-Lock behoben

Die Multi-Tenant-Constraints-Migration hängte sich beim Self-Backfill auf. Sie macht den Backfill jetzt selbst — sauber, ohne Lock.

30. Mai 2026 // Feature

Themes v2: sieben Visual-Identitäten

Editorial, Salon, Folio, Atelier, Streifen, Clean, Modern — jede Wahl färbt die ganze Galerie: Hintergrund, Schrift, Rahmen, Lightbox. Du wählst pro Galerie eine eigene Stimmung.

30. Mai 2026 // Feature

Themes auf die ganze Public-Galerie ausgeweitet

Dein gewähltes Theme bestimmt jetzt auch Hero, Footer und Lightbox deiner öffentlichen Galerie — nicht mehr nur den Bildraster. Eine Galerie, eine konsistente Atmosphäre.

30. Mai 2026 // Feature

FAQ + Transparenz-Hinweise

"Wo bleiben meine Bilder?", "Was kostet das?", "Was passiert wenn ich kündige?" — alles offen aufgeschrieben unter /faq. Keine Marketing-Antworten.

30. Mai 2026 // Feature

Feedback-Button im Admin (unten rechts)

Ein Tap, ein Satz Text, optional Screenshot — die Nachricht landet direkt bei Kevin. Kein Support-Portal, kein Ticket-System dazwischen.

30. Mai 2026 // Feature

Drive, Dropbox & pCloud verbinden

Drei Storage-Provider voll integriert. iCloud nur über geteilte Alben (Apple bietet keine Foto-API). Dropbox-Beta ist auf 5 Verbindungen plattformweit begrenzt, bis wir Production-Status haben.

30. Mai 2026 // Feature

pCloud als vierter Storage-Provider

pCloud-Lifetime-Plan-Nutzer aufgepasst: ihr könnt euer Konto jetzt direkt verbinden. EU- und US-Endpoints werden automatisch erkannt.

30. Mai 2026 // Feature

Unterordner werden zu Sektionen

Hat dein Drive-Ordner Unterordner (zB. Standesamt / Kirche / Feier)? Frames erkennt sie und schlägt sie als Galerie-Sektionen vor — ein Klick, fertig strukturiert.

30. Mai 2026 // Security

Magic-Link-Login + 2FA für Platform-Admins

Kein Passwort mehr nötig — Login per Magic-Link via E-Mail. Platform-Admins müssen zusätzlich TOTP-2FA einrichten.

30. Mai 2026 // Polish

Einstellungen sauber in fünf Tabs

Konto, Brand, Versand, Tarif, Zugang. Schluss mit Mega-Page-Scrollen — alles dort, wo du es vermutest.

30. Mai 2026 // Feature

Multi-Tenant-Foundation: Photographer-Konten

Frames ist jetzt SaaS: jeder Photograph hat sein eigenes Konto, seine eigenen Galerien, seine eigenen Storage-Verbindungen. Photograph-Slug landet in der URL: frames.de/dein-name/galerie-slug.

29. Mai 2026 // Feature

Sieben Anordnungen für deine Bilder

Raster, Mauerwerk, Liste, Säule, Mosaik, Kontaktbogen. Wähle die Anordnung, die zu deiner Serie passt — beim Klick wird sofort gespeichert.

29. Mai 2026 // Polish

Set-Erstellung im Modal statt Browser-Prompt

Schluss mit dem hässlichen prompt()-Dialog. Sets werden jetzt in einem richtigen Modal angelegt — mit Vorschau und Auto-Save.

29. Mai 2026 // Polish

Auto-Save im Anordnungs-Picker

Du klickst die Anordnung an, sie wird gespeichert — ohne Submit-Button. Spinner zeigt dir an, wann der Server fertig ist.

29. Mai 2026 // Feature

Email-Vorlagen für deine Kunden

Einladung, Erinnerung, Auswahl-fertig — passe die Templates an deinen Ton an. Frames schickt sie für dich.

29. Mai 2026 // Feature

Wasserzeichen für deine Galerien

Lade ein Logo oder einen Text als Watermark hoch — kombinier es mit Draft-Modus, um Vorab-Looks rechtssicher zu teilen.

29. Mai 2026 // Feature

Sets, Scribbles & Annotationen

Gruppiere Bilder in Sets, lass Kunden mit Scribbles direkt aufs Bild markieren, sammle Annotationen pro Foto — Auswahl wird zur Konversation.