Decision-Update Changelog, Stufen 1 bis 3:
- changelog:collect liest die Commits zwischen zwei Tags und legt aus den
Zeilen Changelog:/Public: Entwürfe an (ganze Nachricht, nicht nur der
Trailer-Block); ohne Changelog-Zeile intern, Sicherheit als eine
Sammelzeile je Release, Sicherheitsbegriffe im Titel stufen hoch, ohne
Public-Satz ein markierter Vorschlag aus dem Titel; idempotent.
- changelog:backfill trägt die Neuerungen seit dem Relaunch als Entwurf nach.
- Admin ▸ Changelog (settings:manage): gegenlesen, bearbeiten, Rubrik,
artikelwürdig, freigeben/verwerfen, Tag gesammelt freigeben, Eintrag von Hand.
- pressekonto.com/changelog und /changelog/feed (RSS), auf den Portalen
301 zum Hub; Kundenmenü „Was ist neu“ mit Neu-Kennzeichen (14 Tage).
Changelog: Neu
Public: Unter pressekonto.com/changelog steht, was sich auf pressekonto, presseecho und businessportal24 ändert – auch als RSS-Feed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Roadmap 6.18, Entscheidung 14.10.2026: Der Pressekontakt überarbeitet eine
abgelehnte API-Meldung über den Anmeldelink selbst und gibt sie erneut zur
Prüfung frei; die Ablehnungsmail sagt das jetzt so. Kostenlos, weil ein Slot
erst bei der Veröffentlichung und einmal je Meldung verbraucht wird.
Behoben: Das Mail-Routing las die Herkunft aus dem LETZTEN Review-Übergang.
Nach einer Wiedereinreichung im Kundenbereich galt die Meldung nicht mehr als
API-Meldung, und Veröffentlichungs- bzw. Ablehnungsmail wären an das Konto
des Einlieferers (connektar) gegangen statt an den Kontakt. Jetzt zählt jeder
Review-Übergang aus der API, wie schon in der Indexierungsauswertung.
Changelog: Verbessert
Public: Wird eine Pressemitteilung abgelehnt, die über einen Verteiler kam, kann der Pressekontakt sie selbst überarbeiten und kostenlos erneut einreichen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Roadmap 6.17. Veröffentlichungs- und Ablehnungsmails zu API-Meldungen gehen
an Pressekontakt oder Firmen-E-Mail — Empfänger ohne (bekanntes) Konto. Die
Mail sagte „in Ihrem Konto … mit Passwort oder Magic-Link“, gelesen wurde
„geht nicht“. Jetzt ein Kasten mit der Adresse und dem Knopf „Anmeldelink
anfordern“: signierter Link (30 Tage, Adresse verschlüsselt) auf /zugang,
ein Klick schickt den Anmeldelink, die Anmeldung landet auf der Meldung.
Ablehnung zu API-Meldungen: nur ansehen, neu eingereicht wird auf dem
ursprünglichen Weg. Kunden mit Konto: Knopf „Im pressekonto öffnen“.
Stufen 2 und 3 des Trichters messen die neue Seite mit.
Changelog: Verbessert
Public: Wer eine Veröffentlichungs- oder Ablehnungsmail bekommt, erhält mit einem Klick einen Anmeldelink an genau diese Adresse – ohne Konto und ohne Passwort.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Im Backend heißt der Datensatz weiter „Firma“, öffentlich ist er der
Newsroom. Kunden- und Admin-Firmenseite heißen „Firma & Newsroom“ und zeigen
unter dem Namen die Newsroom-Links je Portal oder den Hinweis, dass der
Newsroom erst mit der ersten Meldung erscheint (Company::publicNewsroomLinks).
Changelog: Verbessert
Public: Die Firmenseite im Kundenbereich verlinkt jetzt direkt auf den öffentlichen Newsroom.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Statt einer grauen Textzeile in der Profilbox derselbe Kasten wie unter jeder
Meldung (maskierte Adresse, Knopf „Anmeldelink anfordern“), jetzt als
gemeinsame Komponente. Mobil direkt unter dem Profil, am Desktop oben in der
Seitenleiste; der doppelte Kasten „Eigenen Newsroom starten“ entfällt.
Roadmap 6.17: 7 Firmen öffneten die Verwaltungsseite, eine forderte an.
Changelog: Verbessert
Public: Auf jeder Newsroom-Seite führt ein eigener Kasten zum kostenlosen Verwaltungszugang – mit der Adresse, an die der Anmeldelink geht.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Roadmap 6.1/6.16: Block 1 bis 3 mit Ist, zeitanteiligem Soll, Schwelle und
Status, Trichter seit 17.09., Transparenzseiten aus Umami. Neue Befehle
growth:report und umami:report. Zugang über UMAMI_API_* (View-only-Benutzer).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Roadmap 6.16. Bisher stand jede Einlösung ohne Firma im Trichter (Stufe
"Magic Link eingelöst" immer 0 Firmen), zwischen Mail-Klick und Einlösung
fehlten "Verwaltungsseite geöffnet" und "Anmeldelink angefordert", und
die Erstbuchung stand immer auf organic. Die Leiter hat jetzt sieben Stufen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Anschreiben mit Bitte, Vorrang, Lesereihenfolge und vollständiger
Dateiliste der Anlage 7 (nur Belege, keine Arbeitsnotizen). BN-01: doppelte
.env-Einträge bereinigt, kurzzeitig abgeschaltete Rechtebestätigung wieder
aktiv, keine Uploads in der Lücke.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OpenAI: Zero Data Retention derzeit nicht beantragbar; DSE-Entwurf nennt die
Standardbehandlung der API (kein Training, bis zu 30 Tage
Missbrauchserkennung) und mögliche Verarbeitung in den USA auf Basis von
SCCs, keine EU-Datenresidenz. Alle Dienstleisterverträge bestehen seit vor
dem Go-Live; die Belege sind Neuausfertigungen vom 13.10.2026. Hetzner
Anlage 1 erweitert. Frage 5 um die Impressumsangabe nach § 18 Abs. 2 MStV
ergänzt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Screenshots und Verträge geprüft und in nachweise/ zusammengeführt;
Binärdateien per .gitignore ausgeschlossen (vertraulich, Kunden- und
Organisationsnummern, Größe). Vertragsübersicht mit Fassungen, Daten und
Drittlandgrundlagen. Versandfassung: DPF-Status Cloudflare vom 13.10.2026,
OpenAI-DPA unterzeichnet am 13.10.2026. Juli-Zahlen auf Live bestätigt.
Protokollzeile v1.9.0 im Git-Deploy-Dokument.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Auf 390 px Breite lag das Schild „Gebuchte Platzierung“ über dem
Bildnachweis oben rechts. Der Nachweis sitzt auf Mobil jetzt unten rechts im
freien Rand unter der Meta-Zeile (ab sm unverändert oben rechts). Die
Erklärung am Schild ist rechtsbündig und stößt nicht mehr an den Bildrand.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nachher-Liste vom 13.10.2026: ein Admin-Konto mit Passkey und TOTP,
Super-Admin, keine Editoren, Zugänge außerhalb der Anwendung nur beim
Inhaber. Versandfassung D3 und Klärung U13 nachgezogen. Tinker-Befehl für
die Juli-Kampagnen nutzt status->value (Enum).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Versandfassung mit Codeabgleich vom 13.10. korrigiert (Zugriffsprotokoll
des Beweisarchivs als Ziel, Admin-Bestand, Juli-Mails mit Zahlen und
Empfängerregel, C2PA als geplant, Gate-Dialog heute), Anlage 6 abgelegt.
Neuer Ordner rechtliches/nachweise mit Checkliste, Juli-Mailtexten,
OpenAI-Endpunkten, BN-01-Vorlage und BN-02-Ablauf inklusive Notfallzugang.
Vorfassungen, Codeauswertung, To-do-Liste und Rückfragen nach
archive/rechtliches-2026-10. Deploy-Notiz archive/betrieb/deploy-v1.9.0.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Admin ▸ Pressemitteilung zeigt laufende Boosts; „Boost beenden“ verlangt
einen Grund und billing:manage, beendet laufende und angeschlossene
Zeiträume, verwirft die Seiten-Caches und protokolliert „Boost beendet“.
Credits werden nicht zurückgebucht.
audit:admins listet alle Konten mit Rechten über den Kundenbereich hinaus
(Super-Admin, Rollen außer customer/api-only, direkte Permissions), auch
gesperrte und gelöschte, als Markdown mit 2FA, Passkeys, Tokens und letztem
Sitzungswiderruf. E-Mail standardmäßig nur mit Domain (Nachweis BN-02).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Label „Gebuchte Platzierung“ (en „Booked placement“) statt „Top-Platzierung“
auf Start- und Branchenseite. Die Erklärung „Das Unternehmen hat diesen Platz
gebucht …“ erscheint am Desktop beim Überfahren und auf Mobil per Tipp, ohne
den umgebenden Link zu öffnen; Screenreader lesen sie mit. Kopfzeile über dem
Aufmacher „Aktuell“ statt „Top-Auswahl“ (automatische Auswahl, keine
Redaktion). Preisseite nennt die Kennzeichnung (Rechtspaket U10).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nachtrag zu v1.8.0, beim Prüfen nach dem Deploy gefunden: Meta-Beschreibungen
und Taglines der drei Marken (config/domains.php), Tarifvorteil „Starter“ im
PlanSeeder, Platzhalter im Admin. Der Wächtertest prüft jetzt auch config/
und database/seeders/. Live steht der Tarifvorteil in der Datenbank und wird
im Admin geändert (Seeder überschreibt sonst alle Tarifdaten).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Decision-Update Bildrechte 3.6 / Plan D.6: keine Siegel- oder
Redaktionszusage. Startseiten-Meta, CTA, Veröffentlichen-Seite (DE/EN),
Preisseite, Dashboard. „Qualitätsgeprüft seit 2012“ war sachlich falsch →
„Im Archiv seit :year“. Wächtertest gegen Rückfälle (Roadmap 3.7).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Der Endpunkt legte Abos ohne Bestätigungsweg an, die Spezifikation versprach
ein Double-Opt-in; seit dem Go-Live kein Aufruf. Antwortet jetzt mit 410,
die Ability ist für neue Tokens nicht mehr wählbar (Roadmap 4.3).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Beide Tabellen hatten keine Frist; activity_events trägt Namen und Adressen
im Klartext, api_usage_logs IP und User-Agent. MassPrunable, täglich 04:05
über model:prune, Fristen in config/monitoring.php (Roadmap 4.2).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ErrorReportScrubber entfernt die Daten aller Breadcrumbs und bereinigt ihre
Nachrichten; Livewire-Breadcrumbs standardmäßig aus — das SDK hängt dort
Formularwerte und Properties an (Roadmap 4.9). Bestand in GlitchTip geprüft:
keine Formular- oder Passwortdaten.
- SessionRevocation::legacyCachedMark() entfernt (Übergang bis v1.6.0)
Changelog: Sicherheit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Liste „Aktive Sessions“ las die sessions-Tabelle, Live speichert Sessions
in Redis — sie war immer leer. Jetzt: „Dieses Gerät“ (seit wann angemeldet)
und die letzten fünf Anmeldungen mit Anmeldeweg aus dem Aktivitätsverlauf,
ohne IP; Kachel „Anmeldungen in 30 Tagen“ (Roadmap 4.1).
Changelog: Verbessert
Public: Die Sicherheitsseite zeigt Ihre letzten Anmeldungen und wie Sie sich jeweils angemeldet haben.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- git-deploy.md Abschnitt G: Rotieren, Sichern, Umschreiben, Prüfen,
Hash-Zuordnung, Push, Server, Forgejo/NAS, lokales Aufräumen
- Protokoll: Speicherbereinigung in Forgejo und auf dem NAS erledigt,
keine weiteren Klone, Live-Schlüssel bereits rotiert
- Agenten-Regel: keine personenbezogenen Daten oder Schlüssel ins Repository
- Roadmap: 1.1 und 1.2 erledigt, Context7 und lokales MySQL-Root unter 1.3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Zuordnung alter zu neuen Commit-Hashes in dev/archive/commit-map-2026-10-09.txt
- Git-Deploy-Protokoll: Eintrag und einmaliger Server-Abgleich (Tags mit
--force holen, gc), Speicherbereinigung in Forgejo und auf dem NAS
- README und Roadmap 1.1/1.4 nachgeführt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- dev/roadmap.md neu: alle offenen Punkte aus Plänen, Audits und Protokollen,
gegen Code und Git abgeglichen (Stand v1.7.0)
- Abgeschlossenes ins Archiv: 2026-09-01 → archive/2026-09-nutzergewinnung,
2026-09-11-audit → archive/2026-09-audit, lagacy-rechnungen →
archive/legacy-rechnungen, Deploy-Protokoll v1.1.0, Umami-Snippets,
Go-Live-Roadmap vom 20.07.
- Aktiv bleiben eigene Ordner bildrechte/ (Plan Fassung 2, Decision-Update)
und changelog/ (Decision-Update Changelog)
- dev/README.md als Ordnerkarte neu, Verweise und zwei Code-Kommentare auf
die neuen Pfade
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Turnstile für Gäste und unbestätigte Konten (TurnstileVerifier,
<x-turnstile>); ist Cloudflare nicht erreichbar, wird durchgelassen und
im Verlauf, in der Kontakt-Queue und in der Betriebsüberwachung markiert
- Inhaltsfilter des Kontaktformulars (fremde Links, Floskel mit
Seitentitel, Zeichensalat, Sperrliste, Absenden unter 3 Sekunden);
Treffer landen in der Spam-Quarantäne ohne Mail, Löschung nach 30 Tagen
- Admin: Filter „Spam“, Sammelaktion, „Kein Spam“ holt die Mail nach
- Registrierung lehnt Zufallsnamen ab; users:prune-bot-registrations
(täglicher Lauf erst mit USERS_PRUNE_BOT_REGISTRATIONS=true)
- contact-messages:quarantine-spam für den Altbestand
- CSP erlaubt challenges.cloudflare.com, Log-Kanal spam
- Datenschutzerklärung: Abschnitt 6a Cloudflare Turnstile (Vorschlag)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>