- 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>
510 lines
48 KiB
Text
510 lines
48 KiB
Text
# Commit-Hashes vor und nach der Historienbereinigung vom 09.10.2026
|
||
#
|
||
# Die Produktiv-SQL-Dumps (dev/migration 2026/sql) wurden aus allen Commits
|
||
# entfernt; Inhalt und Reihenfolge sind sonst unverändert, die Hashes sind neu.
|
||
# Verweise in der Doku und in Commit-Nachrichten nennen die alten Hashes.
|
||
# Spalten: alt neu Betreff (chronologisch)
|
||
|
||
5b8bdf4 313270b 12-05-2026 Frontend dev
|
||
092ee0e 8bfa378 13-05-2026 Frontend DEV + HUB
|
||
0a3e52d 36810ac 19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration
|
||
9b47296 9844b41 Rebrand Hub+Flux
|
||
d2ba22c 36c6499 create PM v0.5
|
||
e8c47b7 fd1f6bd 22-05-2026 Optimierung der User und Admin Panels
|
||
4bb9094 a8d1228 29-05-2026 Optimierungen Fixes am Code
|
||
0efabaf ba0ee12 Multi-Domain-Asset-Infrastruktur: geteilte Vite-Konfiguration und DomainAssetContext
|
||
a000238 48993f5 User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline
|
||
8d8d957 b2b5ff0 Doku: Status-Sync 11./12.06., Decision-Update Preisstruktur und Phase-9-Plan
|
||
4419d9f 6b0ca3f Phase 9 Block 1: Gelb-Routing Direkt-Live, Slot-Verbrauch bei Veroeffentlichung, Submit-Gate
|
||
d548f4b d2501ca Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN-
|
||
1cd4d8e 9f610f4 P6.6: legacy:grandfather-subscriptions — aktive Legacy-Abos aus dem Rechnungsarchiv migrieren
|
||
894a943 808d94f USt-Behandlung: Netto-Preise, VatResolver und Steuer-Ausweis im MAN-Kreis
|
||
62e6b7e a9dd565 Doku: zentrale Billing-Referenz und Status-Sync Phase 9D
|
||
38fab64 b804dba Phase 9E (Backbone): Stripe-Produkt-Sync und Webhook-Verarbeitung mit STR-Spiegelung
|
||
c8dc99c ed99ee2 Phase 9E (Abschluss): Checkout-Flows und Plan-Kontingent statt Quota-Stub
|
||
23ac8bc 7818c57 Phase 9F: Tarif-Seite mit Stripe-Checkout und Billing Portal
|
||
6a82e2a 5555be4 Buchungs-Seite: Feinschliff nach Review
|
||
8f3261d 840cc0d Checkout: Stripe-Tax-Adressanforderung erfüllen
|
||
bda755f c5907da Admin-Zahlungsmodul: Zahlungs-Übersicht + Tarif-Verwaltung mit Stripe-Sync
|
||
036a534 b126254 Responsive-Härtung: Seiten-Header, Kontextleiste, Stat-Cards
|
||
afcca34 d07b138 User-Panel-Restarbeiten: PM-Guard, Profil-Rework, USt-ID-Prüfung, Buchungspflicht-Adresse
|
||
b714551 6ba260e Profil-Feinschliff: Pflicht-Badges, Fokus-Fix, Submit-Modal auf Switches
|
||
5a8da0c ad75886 PM-Vorschau: Workflow oben + farbig, Metadaten, saubere Inhalts-Typografie
|
||
25ea91d 1f31e10 Verlinkung & Backlinks: systemseitige rel-Auszeichnung (Decision-Update 11.06.)
|
||
a7c30d4 a193097 Titelbild-Upload: Bildrechte in 5 Schritten + große Bildvorschau
|
||
6e0b2b1 5ca76c7 Titelbild: Bildnachweis als Pflichtfeld, Lizenzdetail-Reset bei Typwechsel
|
||
cc7b3c3 ced39dd KI-generierte Bilder: eigener Lizenztyp, Anbieter-Bestätigung, Kennzeichnung
|
||
284d029 b52751f PM-Vorschau: Firma & Pressekontakt zusammengeführt, Sprache als Badge am Portal
|
||
970b490 4052225 PM-Vorschau: Firmen-Kachel im Stil der Firmenübersicht
|
||
ad74133 234772b Doku-Abschluss 12.06.: README-Stand, weiteres/-Index, Next Steps (Phase-2/Magic-Link, Duplicate-Content)
|
||
ec4aa1d ce5d6c9 Detailplan Umsetzungsphase: Launch-Slice aus Decision-Updates + Merkliste
|
||
c804f3b e54f6e2 WS-1: Canonical- & OpenGraph-Meta zentral im Web-Layout
|
||
94cb209 f06650a WS-6: E-Mail-Verifizierung, Auth-Flow-Fixes & Legacy-Rollen-Sicherheitsfix
|
||
980763c c6b2b67 WS-2: Firmen-Scope für PMs & Magic-Link-Zugang für Pressekontakte
|
||
84f7eb3 55d974f Doku: Sicherheits- & Deployment-Hinweise (Auth, Rollen, Verifizierung)
|
||
d98d297 f28b698 Security-Härtung Login & Magic-Link (Review 16.06.)
|
||
f4ca452 512057c Security: 2FA-Bypass beheben & Login-Pfade konsolidieren
|
||
ae79d5b 42b4288 Security: JSON-Login durchläuft die is_active-/Verifizierungschecks
|
||
068a5a4 265d1fd WS-6: Google-Login via Laravel Socialite
|
||
6c6b9e0 fec2148 WS-2: Magic-Link für Firmen & Pressekontakte vereinheitlicht + Schreibzugriff
|
||
fe10adb 46d7ae3 WS-6: Google-Redirect-URI klargestellt (Portal-Domain, .de) + lokaler Testhinweis
|
||
2a62204 6431139 WS-6: Google-Redirect-URI auf Live-Domain pressekonto.com korrigiert
|
||
95007da 9bce9af WS-3: Recht & Compliance – Rechts-Kern (DSGVO/Persönlichkeitsrecht/Melden + Queue)
|
||
6668f49 eaae1e6 WS-3 abgeschlossen dokumentiert: B abgedeckt, A nach Phase 2 verschoben
|
||
be7d179 f87c470 WS-4: Bestandsschutz-Abrechnung – gekoppelte Kündigung + Admin-Sichtbarkeit
|
||
afefa86 c82c237 WS-4: Bestandsschutz im Kundenbereich als echtes Paket darstellen
|
||
a054720 57afcab WS-5: Buchungs-Gate launch-ready – proaktiver Dashboard-Hinweis
|
||
253141c 3a1d2e6 Frontend: Editorial-Relaunch der öffentlichen Strecke + Ausgaben-Routing
|
||
a2ff47e 7dbc238 WS-7: Live-Deployment-Checkliste + WS-6/WS-7 als erledigt dokumentiert
|
||
5a9aab7 97d69a1 Migration: PM-Datum korrekt übernehmen, UUID stabil, Zwei-Phasen-Runbook
|
||
b63cd26 1306849 Credit-Wallet + Ledger + Tier-Preisableitung (Fundament)
|
||
3e88442 460a255 Pruefzaehler + Pruefkontingent (Decision-Update Phase-2 vorgezogen)
|
||
c7a4c8b 0ff874e Boost-Geschaeftslogik (Decision-Update 2.2)
|
||
69411b4 c89589b Proof-PDF + Extra-PM-Verkauf ueber die Credit-Wallet (Decision-Update 2.1/2.3)
|
||
344aac0 bd7022f Wallet-Topup ueber Stripe (Credit-Pakete mit Bonus-Staffel)
|
||
77a4476 31bef7a UI: Credit-Wallet-Hub + Per-PM Add-ons im Backend-Pressekonto
|
||
3c61900 dac8fe0 UI-Feinschliff Buchungen: Tarife oben, Credits darunter, Preisliste, USt.-Modal
|
||
44b6761 2c41711 Veroeffentlichungs-Gate: proaktive Buchungs-Meldung + Schalter test-stabil
|
||
764d56e 7822929 Fix: kein Datenverlust beim 'Buchung auswaehlen' aus dem Submit-Modal
|
||
dd5a937 6a7483e Doku: Credit-Oekonomie in WS-7-Checkliste + Umsetzungsstand im Decision-Update
|
||
82abdf6 0618080 Doku: Umsetzungsstand der Credit-Oekonomie im Decision-Update
|
||
028b059 326ff9b Editorial-Frontend: oeffentliche Unterseiten, Preise & Linkpflege
|
||
5feaa8a 624fca6 Zeitzone Europe/Berlin: unnoetige UTC-Konvertierung entfernt
|
||
e962cc2 bcac326 Fix: Umbrueche bleiben beim Bearbeiten von Legacy-PMs erhalten
|
||
af99189 4ab7460 Status-Widget: immer verfuegbarer Buchungsueberblick in der Topbar
|
||
c43ef6a 7de0db3 Status-Widget: kompakte Topbar statt hoher Header-Leiste
|
||
3da3353 1ff1cc3 WS-8: N+1 entschaerfen und PM-Zugriffsmuster konsolidieren
|
||
1c5eede 1aa4391 WS-8: doppelte Logik konsolidieren (Tags, Kontakt-Query, Billing)
|
||
58b427f 7d03ded i18n: Default-Locale auf Deutsch umstellen (Basis fuer EN-Umschaltung)
|
||
446aada e96a118 Paket-Vorteile: dynamische, im Admin pflegbare Vorteilsliste je Tarif
|
||
474153a f6a8143 Preise-Seite: dynamische Tarif-Vorteile aus dem Plan anzeigen
|
||
1ac5bad 052b214 i18n: Auth-Views vollstaendig uebersetzbar machen (Readiness)
|
||
39f0af7 6cb7b79 Doku: Launch-Vorbereitung 18.06. (Status-Widget, WS-8, i18n, Paket-Vorteile)
|
||
a82964d c7bd940 Optimierung Phase 0: Korrektheit & Security
|
||
a5f3ddd 554a731 Optimierung Phase 1: Aufraeumen / toter Code
|
||
6cc4c2c 0344ac2 Optimierung 2.1: Admin-PM-Editoren nutzen Tags-Trait
|
||
26d5f1a 64349ce Optimierung 2.2: InteractsWithPressReleaseScheduling-Trait
|
||
1ee6710 fa995e3 Optimierung 2.3: formRules() via ProvidesPressReleaseFormRules
|
||
5ed60c1 b41d34e Optimierung 2.4: Kanonische Pre-Submit-Checkliste
|
||
64b16cd 8c53146 Optimierung 2.5: Kontakt-Helfer + tagSuggestionsFor zentralisiert
|
||
5d6a949 83d2ee6 Optimierung 2.6: reprocessAfterContentChange im PressReleaseService
|
||
28e9064 86ba6c1 Optimierung 2.7: Company::scopeSearchByTerm fuer die Admin-Combobox
|
||
af86a16 3a18a2b Optimierung 2.9: HandlesAdminPressReleaseActions::findAdminPR()
|
||
a3b069e 153bac7 Optimierung 2.8: <x-portal.pr-presubmit-check> Blade-Component
|
||
82455c3 6a1240b Doku: Phase 2 im Entwicklungsplan als abgeschlossen markiert
|
||
9ddfab6 dba7691 Optimierung 3.1: Company::scopeAccessibleBy() zentralisiert Firmenzugriff
|
||
2bf431c 4fc46b0 Optimierung 3.2: API-PR-Ownership-Scope + zentrale Eager-Loads
|
||
f2c349a 9a93903 Optimierung 3.3: totes SetDomainUrl entfernt
|
||
9ed429f 31d407d Optimierung 3.4: Performance (Logging terminable, Single-Purchase memoisiert)
|
||
4466858 b255d90 Optimierung 3.5: Kleinere Zentralisierungen (VAT, findByEmail, Waehrung, Provisioning)
|
||
0d0edf1 31e01e4 Optimierung 3.6: Zugriffs-Gates und getrennte Impersonation-Sperre
|
||
6961cac 4c80b93 Doku: Phase 3 im Entwicklungsplan abgeschlossen markiert (3.1-3.3 nachgezogen)
|
||
f20a95f 987a5a2 Optimierung 4.2: Published-Release-Query ueber PressRelease-Scopes zentralisiert
|
||
714a5cd e5a63bc Optimierung 4.1: Web-Portal-/Domain-Kontext extrahiert
|
||
3f68052 7625ec7 Optimierung 4.3/4.4 (Preise): Page-Data-Service + Invokable Controller
|
||
01f3f7f 418a2bc Optimierung 4.3/4.4 (Suche): Page-Data-Service + Invokable Controller
|
||
debcf81 fef6bbc Optimierung 4.3/4.4 (Veroeffentlichen): Page-Data-Service + Invokable Controller
|
||
e36f917 a2179ea Optimierung 4.3/4.4 (Newsrooms): Page-Data-Service + Invokable Controller
|
||
f17e9a9 179dd8e Optimierung 4.3/4.4 (Newsroom-Detail): Page-Data-Service + Invokable Controller
|
||
e19a209 ee74126 Optimierung 4.3/4.4 (Kategorie): Page-Data-Service + Invokable Controller
|
||
f3aa27d e879a38 Optimierung 4.3/4.4 (Release-Detail): Page-Data-Service + Invokable Controller
|
||
241d67c 43c83ca Optimierung 4.3/4.4 (Home): Page-Data-Service + Invokable Controller
|
||
b0353ab 8e0aeda Doku: Phase 4 im Entwicklungsplan abgeschlossen markiert (4.1-4.4)
|
||
54bab7e a8958c1 Optimierung 5.1: Tabellen-Concerns (Sortierung, Volltext-Heuristik, Stats)
|
||
6bf6a09 89842ac Optimierung 5.2 (Teil 1): ProvidesUserFormRules-Concern
|
||
178adb0 69395ef Optimierung 5.3 (Teil 1): Contact::displayName()
|
||
abe9a0a 4067911 Optimierung 5.3 (Teil 2): Category::localizedName()
|
||
8141fe8 dc68404 Doku: Phase-5.3-Fortschritt (displayName/localizedName erledigt, Rest UI-lastig)
|
||
dc4e397 63071a0 Doku: Stand & Wiedereinstieg-Abschnitt im Entwicklungsplan
|
||
be1284d 055fd5c Optimierung 5.3: toten portalBadgeColor()-Helfer entfernt
|
||
1a30b13 c16b0b7 Doku: portalBadgeColor()-Klaerung im Plan vermerkt (toter Code entfernt)
|
||
38884a5 ed1aa07 Perf-Fix: User::accessibleCompanyIds() hydratisiert keine Company-Models mehr
|
||
6a406bf 07d98ed Perf: accessibleBy() nutzt company_id-Subquery statt materialisiertem whereIn
|
||
7d6b97f 580c918 Perf: Status-Counts der PM-Uebersicht via UNION statt OR-GROUP-BY
|
||
6d4965a 83bb2a7 5.4 (Teil 1): <x-portal.page-header> + categories/create umgestellt
|
||
d2d88ed af15e84 5.4 (Teil 2): page-header in categories/* + companies/create,edit umgestellt
|
||
0087489 f3a9c42 Fix: fehlendes .search-wrap-Styling (Suchfeld in /admin/me/firmen unsichtbar)
|
||
0c373f5 2a3b561 5.4 (Teil 3): page-header in users/* + contacts/* umgestellt
|
||
b9811b7 1eb2243 5.4 (Teil 4): page-header size=lg-Variante + press-releases/* + companies/index
|
||
25a4095 27a77bf 5.4 (Teil 5): page-header in roles/* + footer-codes/* + presets/*
|
||
8e90eb2 feda8be 5.4 (Teil 6): page-header in payments/invoices/legal/coupons/reports/newsletter
|
||
ed396eb 077d313 5.4: <x-portal.empty-state> + admin/press-releases/index umgestellt
|
||
8690425 1c75e61 5.4: empty-state auf customer/press-releases + customer/press-kits ausgerollt
|
||
9ee77c8 505852f 5.4: <x-portal.table-pagination> + 13 Wrapper ersetzt
|
||
c829624 587d1fd 5.5: <x-portal.alert> + 6 Flash-Bloecke umgestellt
|
||
fc91f29 b1b832d 5.5: <x-session-status> + 4 Auth-Seiten umgestellt
|
||
2b9d1b6 6b1d84f Doku: 5.4 abgeschlossen + 5.5 Teil-Stand im Entwicklungsplan
|
||
9e6f775 1729e35 5.2: gemeinsamen Firmen-Sync-Kern als User::syncCompaniesWithRoles() gezogen
|
||
dbbf8a4 9fadfe6 5.5: <x-password-input> + 6 Auth-Passwortfelder umgestellt
|
||
7c5518d 1503d3a Fix: rollenlose aktive Nutzer -> Backfill-Command + Import-Nachlauf
|
||
6523a13 0e08d8a 5.5: Auth-Components abgeschlossen (funktional gegengetestet) + Plan-Stand
|
||
dd16bed 55d0804 5.3: PressReleaseStatus::badgeClass() zentralisiert + toten statusColor-Code entfernt
|
||
7803a12 349991a 5.2: User-Formular-Feldraster in Blade-Components (role/billing) extrahiert
|
||
a25355e 90f3245 Plan: Phase 5 vollstaendig abgeschlossen (5.2/5.3/5.5 auf erledigt)
|
||
17b586f db7c1df Perf: customer press-releases-Liste ueber UNION statt OR-Paginate
|
||
26586d4 1a612e0 R0.1: tote Dev-Varianten-Routen entfernt (fehlende Views -> 500 auf BP24)
|
||
fc7213e cb2fe97 Plan: Release-Entwicklungsplan (R0-R6) aus Vier-Achsen-Analyse konsolidiert
|
||
f02adf1 a4184af R0.2: gdpr_consent_at bei allen Registrierungspfaden befuellen (DSGVO)
|
||
c678e3a f9e3c64 R0.3: Newsletter-Sync-Binding config-aware + ehrliche Test-Sync-Meldung
|
||
b64aa9f 17eaa80 R0.4: Seeder produktionssicher (PlanSeeder, keine Fake-Stripe-IDs, Dev-User-Guard)
|
||
8653abd c3db80c R0.5: eigene Fehlerseiten 403/404/419/500/503 (self-contained, domain-aware)
|
||
c9641e9 ad2879d R1.1: Buchungs-Gate geprueft + safe-by-default; Legacy-Buchungspfade festgeschrieben
|
||
f762c5b 54a2e64 R1.3: Quota-Reset als fester Bestandteil des Tarif-Modells festgeschrieben
|
||
36e1907 1e9c2f9 Plan: R0 komplett + R1.1/R1.3 erledigt
|
||
229ac11 a4d054b R2.1: Kontaktformular-Backend (Controller + Mailable + Brand-Empfaenger)
|
||
a4ae82c 4e4aff1 Fix: legal-request-Honeypot nickt Bots wieder still ab
|
||
e90bb3c 9875e7b R2.1 (Web): Kontaktformular auf der Kontakt-Seite aktiviert
|
||
d1f32e0 5226f5d Plan: R2.1 erledigt + naechste Schritte notiert
|
||
66190f2 f6edb4a R2.2: HubPageData - Plan-Katalog + echte Plattform-Kennzahlen fuer die Hub-Landing
|
||
bf81709 8d4b3b5 R2.2/R2.3 (Web): Hub-Landing live-faehig - datengetriebene Tarife, ehrliche Inhalte
|
||
1417753 38d7cca Plan: R2.2/R2.3 erledigt (Hub-Ueberarbeitung + Plan-Katalog-Pipeline verifiziert)
|
||
0acccee 47d03ec Hub (Web): Auth-aware CTAs, Kontakt-Modal statt Mailto, Pruefung-Wording
|
||
603ca73 88d6935 Kontakt: Hub-Domain-Anfragen gehen an die pressekonto-Brand-Adresse
|
||
268332c 515e249 Recht (Web): Vertrag-widerrufen-Button + zweistufiges Widerrufs-Modal im Hub
|
||
4ea3bae 8c0bf00 Recht: Online-Widerruf ohne Login (gesetzlicher Widerrufsbutton) - Backend
|
||
e852416 8001280 Plan: Online-Widerruf (R3.0) erledigt + Follow-ups notiert
|
||
6621b03 d6461f5 Admin: Widerrufe laufen in der Recht-&-Compliance-Queue auf
|
||
c7450da 258502b Hub (Web): statische Seiten (Rechtstexte, API, FAQ ...) rendern das Hub-Geruest
|
||
981be2f 239ec57 Plan: Rechtstexte-Architektur referenziert + Hub-Geruest-Vorarbeit notiert
|
||
8b8f299 1c3a52a Recht: Kuendigungsbutton nach Par. 312k BGB - Backend + Admin-Queue
|
||
6b2356e 52bc534 Recht (Web): Vertraege-hier-kuendigen-Button + Bestaetigungsseite im Hub
|
||
244c2ab 20d5398 Recht: Erloeschensklausel-Checkbox im Publikationsflow (Par. 356 BGB)
|
||
a6c3aa6 b855cbf Plan: Kuendigungsbutton (R3.0b) + Erloeschens-Checkbox (R3.0c) erledigt
|
||
c2d22c6 e9643e6 SEO: host-aware sitemap.xml + dynamische robots.txt je Domain
|
||
dd09663 6e5d67c Web: Marketing-Seiten brand-aware (Titel/Meta) statt 'Business Portal 24'
|
||
2850d0f 7494f19 Plan: R2.4 SEO-Basics erledigt (Sitemap, robots, Meta)
|
||
e4d154c f5bf282 Deploy: .env.example vervollstaendigt + Deploy-Runbook (R5.1/R5.2)
|
||
770fda7 2d1c7aa Web (R4): tote Alt-Frontend-Fragmente entfernt
|
||
7d2a312 d34088e Web (R3.2): Marketing-Platzhalterseiten zurueckgebaut
|
||
03b644e 5537041 Plan: R4.1/R4.2 Aufraeumen + R3.2 Rueckbau erledigt
|
||
46f1829 acb2a19 Doku (R6.6): veraltete migration-2026-Dokus mit Verweis-Banner versehen
|
||
5c2ef28 89550da Security (R6.2): Haertung nach Audit
|
||
27c92d5 f46795b Plan: R6.2 Security-Review + R6.6 Doku-Sync erledigt
|
||
b36ecf7 9c9f7f7 Hub-Inhalte: Claims korrigiert + Widerrufs-UI zurueckgebaut (B2B-only, E2)
|
||
ca777f2 73fc382 Web-Inhalte auf echten Funktionsstand: FAQ, Hilfe, Veroeffentlichen
|
||
136ecc8 0645d1d R3.2: Kontakt-/Ueber-uns-Routen zurueckgebaut, Spoke-Footer bereinigt
|
||
43f563c f3a95c8 API-Doku: echte Referenz statt Fantasie-Features
|
||
c195878 d577ff5 R3.1: Rechtstexte eingebaut — Impressum, AGB v0.6, Richtlinien, Meldeverfahren
|
||
28b5980 545eb52 Preise nach Leistungsbeschreibung v0.2: B2B-Satz, Credit-Anker, Regeln
|
||
110f97d fc13038 T2neu: Archiv-Hinweis vor Submit ersetzt Erloeschens-Checkbox (B2B, E2)
|
||
e2758ff efe7f86 Plan: Hub-Inhalts-Audit + Rechtstexte-Einbau dokumentiert (E2 B2B-only)
|
||
6438444 99ab47b Datenschutzerklaerung v0.3 eingebaut, Cookie-Seite zurueckgebaut
|
||
6f9a68b 8916bcc T1neu: Unternehmer-Pflicht-Checkbox im Checkout, protokolliert mit AGB-Version
|
||
1e15042 f0cd11a Plan: Datenschutz v0.3 + Cookie-Rueckbau + T1neu in R3.1 dokumentiert
|
||
c523224 9832869 System-Mails im pressekonto-CI: zentrales E-Mail-Layout fuer alle Transaktionsmails
|
||
14b1822 9d3eef6 Plan: Tagesabschluss 03.07. dokumentiert (Rechtstexte komplett, T1neu, Mail-CI)
|
||
4f07104 43397ad Zentrale Rechts-E-Mail info@pressekonto.com fuer alle Rechtstexte
|
||
b90e59a 3940d46 Umami-Webanalyse eingebaut, bis zum Go-Live deaktiviert
|
||
7624064 dc2b2b0 Plan: Klaerungsliste Rechtstexte komplett beantwortet (06.07.)
|
||
196f83a 7510e76 E3: Rechtstext-Versionierung in der DB (legal_documents)
|
||
c54c694 0bec71f Ablehnungskategorien live aus der DB (rejection_categories)
|
||
5337a14 61a677a T13: Melde-Links sichtbar unter jeder Pressemitteilung
|
||
979e6b1 2a9be7a T10: DSA-Meldeformulare mit URL-Feld, Vorgangsnummer und Eingangsbestaetigung
|
||
cc77e60 198be38 T12: Depublikations-Checkout mit Tombstone (config-gated)
|
||
361560f fac15f7 Plan: R3.1 komplett — Rechtstexte-System fertig (Suite: 956 gruen)
|
||
9a9e313 90fd171 Depublikations-Preis festgelegt: 35 Euro netto (O6, User 06.07.)
|
||
d0ffe66 d754ef4 QA-Luecke geschlossen: Legacy-Medien-URLs redirecten wieder (301)
|
||
6ef4a0d 73f414e R6.1: QA-Checkliste erstellt, Vorpruefung abgeschlossen
|
||
3364fd1 3cd7395 Fix: Bestandsschutz ohne explizites Vertragsende zaehlte nie als aktiv
|
||
616b784 91992ac Uebernahme bestehender Legacy-API-Integrationen (Keys, Auth, Pfade)
|
||
5200686 387d41a Plan + QA-Checkliste: Legacy-Fixes vom 06.07. dokumentiert
|
||
5d199f0 3320aaa Rechnungsadressen der Bestandskunden aus dem Legacy-Archiv uebernehmen
|
||
b3474a3 bfad13a Spoke-Frontend-Audit: Fake-Inhalte raus, Newsletter-Rueckbau, echte Boersendaten, EN-Lokalisierung
|
||
b53af92 2c7b556 Produktiv-SQL-Dumps enttrackt (Security-Review-Befund R6.2)
|
||
8f90e6f 339ae5d Plan: Adress-Import, Key-Import-Verifikation und Git-Hygiene 06.07. dokumentiert
|
||
08b49a2 1904ea5 Platzhalter-Eintraege ("spaeter") aus der Panel-Seitennavigation entfernt
|
||
9ff0a6c b7bbf6d Panel-Navigation: Buchungen zu Finanzen, neue Gruppe Portale
|
||
62fbafa 15387d0 QA-Befunde A4: 2FA-Bestätigungsschritt + sicherer E-Mail-Wechsel
|
||
af9f238 b42e0e3 2FA-Challenge: Fehlversuch crasht nicht mehr (Route two-factor.login fehlt)
|
||
e7d5d58 4fe0882 QA-Checkliste: A1-A4 manuell abgenommen (07.07., inkl. 2FA-Fixes)
|
||
fa4bc06 d1c9763 Buchungs-Modal: Dark-Mode-lesbare Preistabelle + aufgeraeumtes Layout
|
||
4b7403b 54213ca Stripe Checkout: automatic_tax aktiviert (USt fehlte in der Session)
|
||
4cda4d3 2a8fd01 STR-Spiegelung: USt aus total_taxes lesen (Stripe-API ohne tax-Feld)
|
||
7e571ee 5166fc7 Rechnungsseite: neue STR/MAN-Rechnungen gelistet, STR bei Stripe verlinkt
|
||
6eedaa4 304c581 Checkout: Profil-Rechnungsadresse als Stripe-Rechnungsempfaenger
|
||
256aca6 af15660 Checkout: Wallet-Daten duerfen Profil-Rechnungsadresse nicht ueberschreiben
|
||
9e76e24 b3780e0 Tarifwechsel im Buchungs-Modal: Abo-Swap mit anteiliger Verrechnung
|
||
9a95a69 db65c2e Suche: Volltext-Index + Fix fuer doppelte Alpine-Instanz
|
||
090a893 14994e4 PM-Vorschau: echtes Portal-Design, Direkt-Button und Portal-Switch
|
||
4b7f6d3 388ca0e Downgrade-Vorkehrungen: Kontingent-Sperre beim Tarifwechsel, Gutschriften nicht spiegeln
|
||
ef2b4fe 80e04e2 Downgrades ohne Gutschrift: Tarifwechsel nach unten erst zum Periodenende
|
||
c040f39 c4ccc75 Rechnungs-Seite: Archiv-Filter entfernt, Altsystem-Archiv nur für Bestandskunden
|
||
fcfbbd4 acd241b PM-Editor: Ablehnungsbegründung direkt auf der Bearbeiten-Seite anzeigen
|
||
2a46aed 0f8f0b2 Einreichen-Modal: Panel-Struktur und fixierter Kontingent-Badge
|
||
dfb8de9 9600a4f Add-ons: Modal statt Toast bei fehlendem Credit-Guthaben
|
||
a21d635 d7f17bb PM-Detailseite: Depublikations-Sektion ans Seitenende verschoben
|
||
46ce2c1 930760a single_purchases: type-ENUM um depublication erweitern
|
||
9b55e11 28de92e PM-Detailseite: Direktlinks zur öffentlichen Seite je Portal
|
||
1ef1e13 881a583 Depublikation: abgebrochener Checkout blockiert nicht mehr
|
||
30c407f e457e7a Profilfeld users.agency_name für Übermittler-Attribution
|
||
621fc05 402fa4a legacy:migrate-agency-names: Agentur-Namen → users.agency_name
|
||
365971a a62a5ee PM-Detailseite: Attributions-Zeile Urheber/Übermittler
|
||
56fe5ea 85fddbf Attribution: Übermittler aus users.agency_name statt Agentur-Firma
|
||
0b3c6cc 59ac67a companies:retire-agency-type: Firmen-Typ „Agentur" abschaffen
|
||
26ce254 3ff95bc UI: Agentur-Angaben im Profil, Firmen-Typ-Auswahl entfernt
|
||
c1382ce d57f6b5 Agentur-Attribution: Plan abgehakt, Abnahme-Status 08.07. dokumentiert
|
||
723d51c f6882b6 Depublikation: Kauf als eingelöst markieren, Rechnung & Bestätigungs-Mail
|
||
f8e8f3e fe8bd2b Buchungsseite: Verlauf mit Kauftyp, Erfolgsmeldungen grün
|
||
6c4fd0c 3297179 USt-ID vor jeder Buchung per eVatR gegenprüfen, Stripe-Tax-IDs abgleichen
|
||
1822dcb 74e82eb Form-Hooks: Fehl-Scroll aufs erste Feld bei Live-Validation behoben
|
||
c387048 807fbc1 KI-Kennzeichnung (Art. 50 KI-VO): Pflicht-Deklaration für Text & Bilder
|
||
2882bc4 f11e8aa PM-Editor UX: Kategorie in die Schreibfläche, Bild-Upload als Modal-Flow
|
||
75d7baa a254bbd Depublikation: Credit-Preis auf 35 (O6), Preis-Tests nachgezogen
|
||
c2ec18b ac870a4 Buchungsseite: Buchungs- und Verlaengerungsdatum des Abos aus Stripe
|
||
dc65cfc 07e0bc5 API-Doku: OpenAPI-Spec aus public/ statt geloeschtem docs/ ausliefern
|
||
1ad2e54 6984846 Monitoring (R5.3): Betriebs-Alerts fuer Scheduler-/Queue-Ausfaelle
|
||
ef5de54 c6b5ec8 Release-Doku: Stand 09.07. nachgezogen; Runbook FULLTEXT-Fenster + Monitoring
|
||
72e6a3c fd8e050 Backend-WIP: Kontakt-Queue, Page-Cache, Validierungs-Feedback, i18n
|
||
79658bd d1939f6 Web-Frontend: Umbau Spokes/Hub, Kontakt-Widget (contact-launcher)
|
||
80a37f8 60d0d9b Release-Doku: Commit-Session vermerkt + Wiedereinstieg fuer morgen
|
||
644f860 8f59704 PM-Tracking: Ereignis-Log fuer Aufrufe + Shares (press_release_events)
|
||
34ec14d 34f0e0f Web-Frontend: Aufrufe-Anzeige + Share-Tracking auf der PM-Detailseite
|
||
2ef41a4 0603fe5 R2.5: legal-request-Hinweistexte final (Wortlaut aus Meldeverfahren v0.1)
|
||
bb6a0a0 460e092 QA-Checkliste B-G vertieft (Nachpruefung 10.07.)
|
||
56ea3d0 459b339 Dev-Stack: Queue-Worker lauscht auch auf der classification-Queue
|
||
813cbd2 01e175e R4.3: Karten-Metadaten-Logik als PressRelease-Praesentations-Helper
|
||
9b2409e 3843e53 Web-Frontend: Kartenkomponenten auf PressRelease-Helper umgestellt (R4.3)
|
||
5c91e2e 92af015 API: KI-Deklaration als v1-Pflichtfeld, Legacy-Default fuer /service (Entscheidung 10.07.)
|
||
c778e41 b185985 Web-Frontend: /api-Doku mit KI-Deklarationsfeldern (curl-Beispiele + Hinweis)
|
||
fef4573 5a35242 API-Legacy-Paritaet: Arbeitsdokument mit Alt-Vertrag, Log-Auswertung, Schrittplan
|
||
a3fd361 6a45ebf Legacy-API-Paritaet S1+S2: connektar-Flow verhaltensgleich + KI-Schalter
|
||
2820385 d9f25ae S4: legacy:seed-api-testdata — API-Testkunde nach connektar-Muster
|
||
00f67c4 7a573ca Mail-Routing: API-Einlieferung ueber Status-Log-Quelle erkennen
|
||
de532fe 9cb53b1 API: nicht-numerische Routen-IDs als 404 statt TypeError/500
|
||
3ae57d9 b26dc90 Admin-PM-Liste: KI-Pruefungs-Modal + geschaerfte KI-Prompts
|
||
c883656 93d7f6d Add-ons: Kaufbestaetigung vor Credit-Abbuchung + deutlichere Buttons
|
||
dc2a344 0cda194 KI-Kennzeichnung: 2 Optionen im Submit-Modal + Labels auf Detailseite
|
||
744e87d 0665553 Werbeplaetze reaktiviert: Eigenwerbe-Slots oeffnen das Kontakt-Widget
|
||
bbcdc72 df6b245 Web: Boost-Platzierung auf Start- und Branchenseite ausspielen
|
||
927523c 47c1cac PM-Liste: Hinweis auf laufende Boost-Platzierung unter dem Status
|
||
06d80b2 484e062 KI-Klassifikation: Substanzpruefung gegen Gruen-Durchrutscher
|
||
51da374 d5b8064 E-Mail-Praeferenzen: Opt-out je Mail-Typ + One-Click-Unsubscribe ohne Login
|
||
6e1267f cc61bf2 Add-on-Modal: Pflicht-Schalter + Verlaengerungs-Hinweis bei laufendem Boost
|
||
9d6ef50 6be387c Boost-Buchung invalidiert gecachte Start- und Branchenseiten sofort
|
||
b1be14e 0677728 Doku: Boost-Platzierung offene Punkte (Hero-Slider, Boost-Begrenzung) fuer Montag
|
||
4853d48 0474d22 Boost-Slot-Grenzen (5/3) + Kategorie-Boost zum halben Satz
|
||
7a32c66 6796fa4 Preise-Seite: zwei Boost-Stufen inkl. Slot-Hinweis in der Leistungsnote
|
||
d92e0f6 842d6a2 Doku: Boost-Platzierung entschieden + umgesetzt (Slot-Grenzen, Kategorie-Boost)
|
||
92d1ac2 0cddf5f Add-on-Panel zeigt freie Boost-Plaetze je Stufe
|
||
8657311 4f2be1e PM-Uebersicht: Rubrik unter Portal, Boost-moeglich-Hinweis, gruener Haken
|
||
7b3a4d7 6f96e4a PM-Detailseite: Inhaltspruefung (Gruen/Gelb/Rot) + Qualitaets-Score sichtbar
|
||
b3fdd6f 3295f47 deps: Sicherheits-Updates (Framework/Symfony/Guzzle) einspielen (H6)
|
||
7043ea8 aae4569 billing: Nebenläufigkeit & Idempotenz härten (H4, Stripe, Boost-Slots)
|
||
0b35c3b 6e84266 press-releases: Publish-Rechte, Quota-Races & Slug vereinheitlichen
|
||
000ae93 6250b0b media: PM-Medien privat ausliefern + Vorschau-Signatur (M4, M5, Fix#4/#5)
|
||
299837d 39e13d6 security: Host-Whitelist & Legacy-API-Key-Übergabe härten (H5, M11)
|
||
4078319 77f8f9c security: Rechteausweitung schließen & Admin-Panel feingranular gaten (K1, H1, H2, M8)
|
||
6764fb9 8f517e9 security: Stored-XSS über page_url im Kontaktformular schließen (H3)
|
||
ea8d017 fe1525b auth/mail: Magic-Link-2FA (M1) + Mailversand über die Queue
|
||
1afcc36 5a49292 newsletter: Bestätigung/Ownership beim Re-Abo korrigieren (M7)
|
||
22975e7 23cbd0b performance: Caching, deferred Tracking & externe Timeouts (H7, M12, M13)
|
||
573e4ca 830aca5 admin: Betriebsüberwachung im Backend (Queue-Worker & Deployment-Checks)
|
||
198ce15 e51fe6f chore: persönliche VS-Code-Workspace-Datei aus dem Repo entfernen
|
||
6f6cb13 74f71f7 docs: Audit-Protokoll, KI-Kennzeichnung & Release-Notizen
|
||
a546378 700f5e6 dashboard/errors: Onboarding-Card „Erste Schritte" & Hub-Styling der Fehlerseiten
|
||
244b7ba ce59cbb auth: Selbst-Registrierungen nicht mehr als Legacy-Bestand einstufen
|
||
8a695fd 0b01929 profil: Speichern-Buttons für Persönliche Daten und Konto & Sicherheit
|
||
4cc74c2 67f6906 billing: Stripe-Webhook von der Basic-Auth ausnehmen
|
||
ff2eee0 425467b billing: asynchrone Zahlarten (PayPal, SEPA) korrekt erfüllen
|
||
71b247b e32431e billing: Zahlungsbestätigung per Mail nach jeder Buchung
|
||
f1dcb9c 37bcf73 billing: Blindkopie der Zahlungsbestätigung an LEGAL_CONTACT_EMAIL
|
||
5585a26 a574898 billing: Stripe-Belege auf Deutsch und sprechende Produktnamen
|
||
991af42 3a11963 admin: Aktivitäts-Verlauf unter Reports ▸ Verlauf
|
||
7c252ab a3671ba emails: Portal-Wortmarken im Mail-Header ergänzen
|
||
47f224f 3e85537 web: Kategorie-Badge im Feed bricht auf Mobile sauber um
|
||
6253b36 9c67fc6 docs: Cutover-Runbook für den Go-Live (Legacy-Import & Umschaltung)
|
||
c70e175 dec5249 web: Responsive-/Mobile-Fixes fürs öffentliche Frontend
|
||
379688f 2ea64ad web: Strukturierte Daten (JSON-LD) und SEO-Metas fürs öffentliche Frontend
|
||
b8e2735 07d89a0 web: Preise-Seite zeigt unter Weitere Leistungen nur noch Depublizieren
|
||
50d9208 a130299 billing: Veröffentlichungsnachweis mit Titelbild, Bildrechten und Rich-Text
|
||
4c73ba0 3151b1f legacy: privatize-media überspringt unmigrierte Legacy-Bildzeilen, --prune-missing löscht sie
|
||
2765afe 7971656 legacy: fix-timestamps liest Legacy-Schema-Namen aus der DB-Config statt hartkodiert
|
||
3842fbc 9be4731 billing: Abo-Kündigungen aus dem Stripe-Portal im Aktivitäts-Verlauf
|
||
263f030 22b7bd3 docs: Runbooks auf den echten Migrationsstand nachgezogen (16.07.)
|
||
4668cfc a0c2e66 legacy: --since-Delta für legacy:import + Importer setzen Timestamps wieder korrekt
|
||
c8a292e d212230 docs: Cutover-Delta nutzt --since, Medien-Delta-Hinweis
|
||
622cd4e 5011f28 legacy: API-Key-Import löst E-Mail-gemergte User über legacy_import_map auf
|
||
da189c0 bd4ad85 web: Stale-while-revalidate-Cache für die öffentlichen Seitendaten
|
||
6fcc825 3d10cbf web: Startseiten-Feed cachen + Index gegen Filesort der Feed-Query
|
||
e69ded4 acf6721 web: www-Hosts lösen aufs Apex-Domain-Theme auf statt aufs Portal-Fallback
|
||
fcf8304 42e56a7 web: www-Hosts leiten kanonisch per 301 auf die Apex-Domain
|
||
3d1bf38 58c773b web: Domain-spezifische Favicons und App-Icons für alle drei Marken (R5.4)
|
||
665c94f 6a4c4d8 docs: dev-Doku für den Live-Betrieb neu sortiert — Archiv + Betrieb + Roadmap
|
||
8aba835 783b9da docs: verschobene Doku-Pfade in Code-Kommentaren nachgezogen
|
||
7b27ec5 8743bcb Release: Go-Live Pressekonto (20.07.2026)
|
||
99f10e6 fa30336 docs: R6.5 in der Roadmap abgehakt (Merge nach main + Tag v1.0.0)
|
||
e59e132 e3ce626 admin: PM-Detailseite verlinkt Firma, Autor und Firmen-Benutzer
|
||
33e84af d411e6c admin: Verlauf protokolliert jede versendete E-Mail
|
||
f327853 215cbcb admin: internes Newsletter-Modul mit Filtern, Protokoll und Abmeldung
|
||
80c5f03 ab0030d web: Mail-Abmeldungen landen im Aktivitäts-Verlauf
|
||
3f4679f 37e543e admin: Credits und freie PMs ohne Zahlung gutschreiben
|
||
ed458b6 5bf9f84 admin: Verlauf protokolliert den Gang zur Stripe-Zahlung
|
||
17e22d2 921c533 admin: Benutzer-Übersicht verlinkt die Detailseite zusätzlich zur Schnellansicht
|
||
45dc4ce 9b73972 kunde: PM-Liste zeigt Firmen-Kontext unter der Headline und Bild-Thumbnails
|
||
021ee2d 58c0cc3 admin: Newsletter mit Abmelde-Liste, Follow-up-Filtern und gedrosseltem Versand
|
||
04b49c5 b4b2e01 recht: Meldeverfahren v2 Phasen 1-4 — Re-Sync-Sperre, Anonymisierung, Magic-Link-Intake, Self-Service-Korrektur
|
||
e6eca9c 9afbedd recht: Meldeverfahren v2 Phasen 5+7 — DSGVO-Strukturformular, 10-€-Checkout mit KI-Vorprüfung, Triage & Panel-Modal
|
||
8fc18c2 f8728c5 technik: Volltext-Indizes von press_releases in eine eigene Suchtabelle auslagern
|
||
d14cb84 6a34ab4 technik: Aufrufe über ein Ereignis-Log zählen statt im Request
|
||
2024df9 0c8e94a web: Entfernung mit 410 Gone als Alternative zur Löschung
|
||
48d401e 982de2a api: Ziel-Portal einer Einreichung explizit auflösen statt vom Konto erben
|
||
49182ec e634af0 newsletter: Unzustellbare Adressen aus beiden Empfängerlisten nehmen
|
||
eb1eba4 f6934f5 mail: Anrede an den tatsächlichen Empfänger binden
|
||
e746ded e783adc technik: Statische Analyse wieder aussagekräftig machen
|
||
8d41669 a85f6ba db: Index auf companies.email
|
||
81d9c43 ac4b959 dev: Bestandsaufnahme und Umsetzungsprotokoll zum Code-Durchgang 01.09.
|
||
aab2240 c497628 reports: Basiswerte für die Konversionsmessung (Roadmap 0.1 und 0.2)
|
||
2391c85 748a0d4 reports: Aufrufe nach Alter aufschlüsseln und Basiswerte festhalten
|
||
2691a4d 45f2d90 conversion: Konversionsleiter mit Herkunft auf dem Magic-Link-Token (Block 0)
|
||
e536e52 8df6b9e companies: Trockenlauf zur Newsroom-Konsolidierung (Roadmap 1a.1)
|
||
5d0570b 7c40a0c companies: Tippfehler und Zusätze im Trockenlauf als dieselbe Firma erkennen
|
||
5e46ff9 a0ac32c companies: Adress-Klassifizierung persistieren (Roadmap 1a.2, E1 = 3)
|
||
5e5414a c17e4b9 dev: Live-Trockenlauf der Adress-Klassifizierung protokolliert
|
||
e2f7cf1 8a1e79a dev: scharfer Klassifizierungslauf auf Live protokolliert
|
||
00af8b1 77318dc companies: Aufrufe als Veröffentlichungsnachweis im Altbestand werten
|
||
982bd6e 66d8398 api: Token-Gate erkennt aktive Stripe-Abos
|
||
8b86b88 2aebb9d companies: Zusammenführung im Bestand, rückabwickelbar (Roadmap 1a.3)
|
||
1368e2c f3e7aca dev: Live-Trockenlauf der Zusammenführung protokolliert
|
||
202cf34 235c20c companies: Zusammenführungen zum Nachprüfen auflisten
|
||
cd16fd1 b91f41d dev: Live-Läufe der Zusammenführung protokolliert
|
||
d60f31d 4303266 dev: kompletten Live-Lauf der Zusammenführung protokolliert
|
||
8baca9d 8dad652 api: neue Firmen dem bestehenden Newsroom zuordnen (Roadmap 1a.4)
|
||
0be476b 0f52e9f dev: Block 1a in der Roadmap als erledigt markiert, 1a.4-Entscheidung festgehalten
|
||
abfcd77 a3e0042 newsroom: Seite verschwindet mit der letzten veröffentlichten Meldung (Roadmap 1b.1/1b.5)
|
||
9143cc4 0c1c072 newsroom: Verwaltungszugang „Diesen Newsroom verwalten" (Roadmap 1b.2)
|
||
0101488 7f714fb newsroom: Hinweis „Diesen Newsroom verwalten“ auf der Seite und in der Mail (Roadmap 1b.4, E4)
|
||
079477a a69b021 web: Melden- und Verwaltungsblock auf der Meldungsseite hervorheben
|
||
87f95fb 85b039e newsroom: Beschreibung pflegen, durch die Rot-Ebene geprüft (Roadmap 1b.3)
|
||
0a658bb 8bf40ee mail: zentrale Bounce-Suppression mit Versand-Gate und Circuit Breaker (Roadmap 1b.6, Schritte 1–2)
|
||
e800065 f9c97cc mail: Rückläufer aus dem Bounce-Postfach lesen (Roadmap 1b.6, Schritt 3)
|
||
e84c277 e7e12b9 admin: Mail-Sperrliste, Markierung nicht erreichbarer Newsrooms (Roadmap 1b.6, Schritt 4)
|
||
71d9639 6e159ec deps: Composer- und npm-Pakete innerhalb der Constraints aktualisiert
|
||
fddfd8a 4cefdf7 mail: Bounce-Abruf liest RFC 6533, All-Inkl-Freitext und ganze INBOX
|
||
ada41cb f581e1e mail: Kontakterreichbarkeit - Formpruefung, Domainpruefung, Einlieferer-Bericht
|
||
36691a5 a00f9dc billing: MAN-Rechnungen fuer Ueberweisungskunden bearbeiten, hold-Altlast bereinigen
|
||
09ec866 3ef1b84 customer: Sichtbarkeit belegen - Aufrufe im Verlauf, Newsroom-Uebersicht (Roadmap 1c)
|
||
58bc82a 7fb5a2f billing: tote Null-Pruefungen auf NOT-NULL-Spalten entfernt (phpstan)
|
||
c08c9e5 5f7fbd0 web: Hilfeseite "Was eine gute Pressemitteilung ausmacht", Hinweis in der Ablehnungsmail (Roadmap 1d.1, 1d.2, 1d.6)
|
||
0692d89 13716b9 press-releases: begrenzter Pruefkreislauf mit Admin-Queue (Roadmap 1d.4, E3)
|
||
35db30e 9380937 mail: adressbezogene Abmeldung fuer Empfaenger ohne Konto (Roadmap 1d.3)
|
||
4fd1db7 4dffb13 press-releases: Mail "wird persoenlich geprueft" beim Block, Blade-Guard fuer @php-Bloecke (Roadmap 1d, Nachtrag)
|
||
87ca908 5d8e379 companies: Kurzfelder des Profils ohne Links, Adressen und Spam (NoPromotionalText)
|
||
99ffd01 8ea5e52 companies: Links aus Firmennamen normalisieren — API-Eingang und Bestandsbefehl
|
||
713024b 8cd76df companies: Befehl zum Deaktivieren der Legacy-Linkspam-Registrierungen
|
||
b74f881 b60a28d web: Entitaeten im JSON-LD verknuepft, News-Sitemap und llms.txt (Roadmap 2.1, 2.2, 2.7)
|
||
84ea617 4616bb7 web: Jahresarchiv je Branche, Kategoriebeschreibungen, Portalname im Titel (Roadmap 2.3)
|
||
b6e4bc5 106edb1 web: Transparenzseiten — was kostet, ohne Abo, loeschen/aendern (Roadmap 2.4)
|
||
1fd6d2c c96c8a6 web: Transparenz-Navigation ueber der Headline der Preisseite (Roadmap 2.4)
|
||
6446e19 134af42 web: Unter-Navigation Preise/Transparenz auf allen vier Seiten mit aktivem Punkt
|
||
7088d09 951b6c4 web: Crawler-Abruf-Protokoll und Panel „Auslieferung" ohne Google-Link (Anhang 1: 1c.0, 1c.1, 1c.6)
|
||
6c4618a 6b87282 admin: Indexierungsstatus aus der Search Console, Kundenansicht vorbereitet und zu (Anhang 1: 1c.4, E8)
|
||
f1648a0 3751386 web: Erstquelle-Absatz in der Veröffentlichungsmail, vierte Transparenzseite „kostenlos veröffentlichen" (Anhang 1: 1d, 2.4, E7)
|
||
b44fded 3c6fb69 admin: URL Inspection immer auf en-US abfragen
|
||
10c91ac d9e181a docs: Search Console live, Schlüsseldateien ausgeschlossen, Kontingent erklärt
|
||
447dc4c 87558ab web: Hilfe in der Topleiste neben FAQ; 2.5/E5 geschlossen
|
||
ee267c6 4edb915 web: Doppelveröffentlichung — Prüfsumme, kanonische Zuordnung (aus bis E9), Quellenauskunft, noindex im Portal (Anhang 2)
|
||
4c17a17 5dcaf4e web: E9 und E10 entschieden — Zuordnung aktiv, eine Adresse je statischer Seite, Hub-Portalseiten leiten weiter
|
||
24c1bbf edb2d49 web: Portal-Inhalte sind auf dem Hub nicht mehr erreichbar (Anhang 2, E10)
|
||
0ab53bf 1d76f5a auth: Firmenrechte nur aus nachgewiesener Adresse, 2FA auf allen Login-Wegen (Audit Block 1, Deploy A)
|
||
62202a4 301bca3 auth: automatische Firmenrechte mit Herkunft und Entzug, Nachweis vor Sicherheitsaktionen (Audit Block 1, Deploy C)
|
||
a7f991f eeb1cde newsletter: jeden Empfänger genau einmal, atomarer Start, Wiederanlauf (Audit Block 2, Deploy B)
|
||
f235156 72432fd web/api/ki: Soft Deletes wieder wirksam, Caches bei Firmenwechsel, KI-Ergebnis an Inhalt gebunden (Audit Block 3+4, Deploy D)
|
||
375f4df 9a88e82 billing/dev: Vertragsende in der MAN-Abrechnung, Rechnungslauf ohne Tageskappe, Qualitätsgates (Audit Block 5+6, Deploy E)
|
||
4fa9859 226fb81 dev: Umsetzungsprotokoll und Live-Schritte zum Audit-Entwicklungsplan
|
||
ec6705e 207f103 tests: Kategorie-Portal in den API-Tests festlegen
|
||
c882194 2e8c081 tests: Titel in der MAN-PDF-Adresse festlegen
|
||
fb03fb1 c46dfd3 dev: Protokoll — Gesamtsuite grün, zwei zufallsabhängige Tests festgezurrt
|
||
1cd9fd1 eb95b3b billing: Vertragsablauf bedingt beenden, Kundenmail nachholbar (Block 7, U11/U12)
|
||
235d392 05cf53e security/api/betrieb: Fortify-2FA-Nebenwege gesperrt, Policy nur für aktive Super-Admins, Nachprüfungen aus dem Umsetzungsaudit (Block 7, U08–U10, U13, 7.1, 7.2, 7.5)
|
||
ea68362 082e6bb ki/quota: Hash-Bindung atomar bis in den Publish-Lock, roter Re-Check lehnt ab, Kontingent-Altbestand (Block 7, U02–U04)
|
||
7819527 1c421c0 dev: Umsetzungsaudit vom 18.09. abgelegt, Block 7 mit Abgleich, Entscheidungen E7–E9 und Protokoll im Entwicklungsplan
|
||
3ea9688 c26bdff admin: Bericht „Indexierung & Abrufe" — Rolle Erstquelle/Kopie, Quellenbefund, Crawler-Abrufe; Schlüsselpfad ab Projektwurzel
|
||
b8c6af5 5122624 auth: automatische Firmenzuordnung beim Wegfall der E-Mail-Grundlage entfernen statt senken (Block 7.13, U01, E7)
|
||
2ec6169 85d7c2b betrieb: Logs je Thema in Tagesdateien (billing, ki, monitoring, market); Doku: Duplicate-Content-Decision durch Anhang 2 abgelöst
|
||
b423650 e2ef4de admin: Search-Console-Vorgabe für businessportal24 auf die .com-Property
|
||
d0c7194 9d5e5a0 web: RSS-Feeds je Branche und je Portal (Roadmap 3.1); dev: Sichtung des Ordners, Protokoll-Teile umnummeriert
|
||
23811ad ff75159 web: RSS-Feed je Newsroom, RSS-Übersichtsseite, „RSS" in der Topleiste (Roadmap 3.1, Nachtrag)
|
||
44d0bb6 fc70067 web: Abruf-Protokoll der RSS-Feeds — Reader-Dienst, gemeldete Abonnenten, Admin-Bericht, Panel (Roadmap 3.1)
|
||
e620ef3 2b042d6 web: Datenschutzerklärung — Abschnitt 5a „Eigene Nutzungsstatistiken ohne Personenbezug", Frist 395 Tage (Roadmap 0.7)
|
||
dab14dc eb65802 press-releases: assign-canonicals leert Seiten- und Sitemap-Caches; dev: Live-Lauf 21.09.2026 protokolliert (9.221 Paare)
|
||
f9019ee 1c38c82 reports: Kohortenalter ab Stichtag statt ab --to; legacy:settle-unpaid kennt bereits ersetzte Quellen; dev: Basiswert 0.1 vom Live-System ausgewertet
|
||
5ef123c 2b5960b dev: Basiswert 0.1 abgeschlossen — Kohorte 28–55 Tage am Stichtag 21.09.2026 (Median 122 / 314), Nach-Deploy-Stand
|
||
605d853 6df36c9 dev: Roadmap Block 0 — 0.2 bis 0.6 als erledigt geführt (Stand Protokoll Teil 2)
|
||
b624f80 83cb6e1 assets: Inter (18pt-Schnitte) mit OFL 1.1 für den eingebrannten Bildnachweis (Bildkennzeichnung O4)
|
||
e9bdff3 214aea8 images: Datenmodell, Textarchiv, Herkunftsprüfung und gemeinsamer Uploader für Formular v2 (Bildkennzeichnung Block A)
|
||
40953d6 3d3ddc2 images: Titelbild-Formular v2, Admin-Upload mit Kundenbestätigung, Entfernen mit Sofortlöschung (Bildkennzeichnung Block B)
|
||
65ac72c 24184f1 api: Bildupload v1 unter Formular v2 (Pflichtfelder, Kennung des Wortlauts, Bestätigung mit Token), Legacy-Bildupload abgeschaltet, API-Doku (Bildkennzeichnung Block C)
|
||
2124ffd 9f44546 web/admin/pdf: gemeinsame Bildnachweis-Auflösung, Detailfenster am Artikelbild, Bestätigungsstand in Kunden- und Adminansicht, Wortwahl „automatisierte Prüfung" (Bildkennzeichnung Block D)
|
||
46b89e1 da167b7 images: Lebenszyklus — Veröffentlichungsgate, published_ever_at, Snapshot der veröffentlichten Fassung, Sofortlöschung, Legacy-Bereinigung, Beweiszugriff, Korrekturweg (Bildkennzeichnung Block E)
|
||
0240c14 b5b7041 archive: Beweisarchiv — verschlüsselte Einträge, Legal Hold, Purge mit Tombstone, Restore-Abgleich, Auslöser und Admin-Seite (Bildkennzeichnung Block F)
|
||
62723b5 075d0d9 legal/web: Zustimmungsgate je Dokumentversion (aus bis AGB 0.7), OG-Variante mit eingebranntem Bildnachweis, Nachweis in Teasern (Bildkennzeichnung Blöcke G und H)
|
||
3b613fa 70e15d5 images: press-release-images:regenerate-variants --only=og für den Bestand, Testhelfer eindeutig benannt (Bildkennzeichnung H.1)
|
||
0e5cd20 8bb7049 images: KI-Vorab-Check für Titelbilder — Vision-Sichtung mit definiertem Ausgang je Befund, Admin-Queue, Protokoll und Archiv-Snapshot (Bildkennzeichnung Block K)
|
||
6d558cd bcd02f2 web: KI-Badge am Artikelbild nach rechts unten, damit es das Nachweis-Zeichen links nicht überlappt (Bildkennzeichnung D.2)
|
||
d99f55e aaeee24 admin: Management ▸ Bilder — Liste aller Titelbilder mit PM-Link, Nachweis, Kennzeichnung, Bestätigungsstand und KI-Vorab-Check, Filter nach Sichtung/Zustand/Ausgang (Bildkennzeichnung)
|
||
4e34c3d 34fa342 tests/legal: Testdatenbank-Guard vor den DB-Traits, Flags in phpunit.xml gepinnt, Zustimmung an gezeigte Fassung gebunden (Umsetzungsaudit 25.09.: N22, N06, 5.3)
|
||
48129e9 2a2215b audit: Nacharbeit Umsetzungsaudit 25.09.2026 — Bildfreigabe, Beweisarchiv, KI-Atomarität, Berichte (Block 8, N01–N05, N07, N08, N10–N21, 5.1, 5.2)
|
||
b80cce6 c38bceb dev: Entwicklungsplan Block 8 — Abgleich Umsetzungsaudit 25.09., Entscheidungen E10–E18, Live-Schritte, Protokoll
|
||
97cd8f9 c6543eb dev: Entscheidungen E10–E18 vom Betreiber bestätigt (25.09.2026)
|
||
21e8871 05cd604 dev: Bildkennzeichnung — Deploy 1, 2 und 2b am 28.09.2026 live, Protokoll
|
||
98c465b 80536ab dev: Bildkennzeichnung — Deploy 1b live (Formular v2 an, Testkonto geprüft), Precheck und Gate bleiben aus
|
||
cf07723 1a11fb6 WIP-Schnappschuss vor Migration 2026-09-28 (uncommittete Änderungen von technik/betriebsfixes-2026-09)
|
||
1d417f8 1ccb4a8 auth/security: API-Firmenzuordnung nur für Mitglieder oder Allowlist, Google-Vorabübernahme geschlossen, gemeinsamer Login-Abschluss (Umsetzungsaudit 29.09.: R-01, K-04, K-07, K-08, B-10)
|
||
c2e0b85 d6e49c1 web/seo: Änderungsdatum unabhängig von Aufrufen, EN-URLs in Sitemap und Legacy-API, signierte Bounce-Referenz, Merge/Canonical konsistent (Umsetzungsaudit 29.09.: R-02 bis R-11, N17, N18, OPT-1, OPT-2; 02.10.: O01)
|
||
dfb0513 3dbc3fa tests: gemeinsamer Testhelfer, DB_URL-Guard vor RefreshDatabase, Larastan voller Scope ohne Meldung (Umsetzungsaudit 29.09.: Q-01, Q-02; 02.10.: O02)
|
||
f0eeef0 c82f279 press-releases/jobs: Scheduler respektiert manuelle Prüfung und kommt an Blockaden vorbei, Newsletter-Versand per Schalter gesperrt, kurze Scheduler-Sperren (Umsetzungsaudit 29.09.: K-01, K-02, K-05, K-06, K-09, E9, OPT-8, OPT-9; 02.10.: O06)
|
||
5ec252d f1c0e27 images: nur freigegebene Bilder in Feed und PDF, versionierte Veröffentlichungssnapshots, Bestätigung an das gezeigte Bild gebunden, getrennte Rückhaltegründe (Umsetzungsaudit 29.09.: B-01 bis B-14, N09, OPT-3 bis OPT-5; 02.10.: O03)
|
||
7cd84b2 60650ba archive: Auftragstabelle statt Marker, exklusiver Abschluss, Quarantäne, Restore über Payload-Identität und signierte Exporte, Schlüsselrotation (Umsetzungsaudit 29.09.: A-01 bis A-15, OPT-6, 5.1 d; 02.10.: O04, O05, O07, O08)
|
||
aa47e11 4a7e496 dev: Umsetzungsaudits 29.09. und 02.10., Entwicklungsplan Blöcke 9 und 10 mit bestätigten Entscheidungen E19–E34 und Deploy-Plan, Runbook ergänzt
|
||
2701588 448643b dev: Commit-Hashes der Blöcke 9 und 10 im Protokoll nachgetragen
|
||
f2ed268 2079dfd deps: Composer-Update (Laravel 12.69.3, Livewire 4.4.7, Flux 2.20.1, Fortify 1.40.0), league/commonmark 2.10.3 behebt zwei Advisories; Sentry-SDKs für GlitchTip (sentry/sentry-laravel, @sentry/browser)
|
||
8769a71 d884eb7 monitoring: Betriebsüberwachung Phase 1 — GlitchTip (Server- und Browserfehler), Fehlersignale ohne Exception, /health mit Scheduler-Herzschlag, ntfy-Alarme, fehlgeschlagene Anmeldungen im Verlauf, Umami im Kundenbereich, Versionsnummer
|
||
22b62df 8690165 dev: Monitoring-Plan (Phasen 1–3, Entscheidungen M1–M9, Protokoll), Deploy-Checkliste v1.1.0, Runbook um Versionsdatei und Composer-Schritt ergänzt
|
||
df7ebdc 9a05cb9 mcp: Context7-API-Schlüssel aus .mcp.json und .codex/config.toml entfernt — kommt jetzt aus CONTEXT7_API_KEY
|
||
33dc991 c837ef9 dev: Deploy-Checkliste v1.1.0 — Paket gebaut, Entwicklerdateien aus der Paketliste ausgenommen
|
||
8a64bd7 2dda9ec dev: Deploy-Checkliste — Server braucht kein Git
|
||
b1cec16 984d001 chore: docs/ aus dem Repository — lebt im Obsidian-Vault (Devcontainer-Mount), Q-05 entschieden; entpackte Deploy-Pakete ignoriert
|
||
cd18832 01d68c2 dev: Deploy v1.1.0 am 05.10.2026 live — Protokoll in Deploy-Checkliste, Entwicklungsplan (Blöcke 9/10) und Monitoring-Plan
|
||
f288ab6 1d7ce9e dev: Roadmap — Volt entfernen und auf Livewire-4-Single-File-Components umstellen (Umfang, Schritte)
|
||
4ca099f dd688e5 dev: KAS-Passwort erledigt — SSH-Zugang des Altsystems geändert und deaktiviert, KAS-Hosting bleibt für die Postfächer
|
||
73da704 129de4f deploy: Git-Deploy per Tag — dev/betrieb/deploy.sh, Ablauf und einmalige Umstellung in git-deploy.md, Runbook §10; public/build wird versioniert
|
||
e316734 168a1cd build: Assets für v1.1.1
|
||
2f02acc 17dceec tests: Testsuite meldet nicht mehr an GlitchTip — Sentry-DSNs in phpunit.xml geleert, Wächtertest; Produktions-Logs unter dev/ ignoriert
|
||
16af374 3fd3ac0 fix: Registrierung — Platzhalter serverseitig übersetzt statt als Alpine-Ausdruck (GlitchTip browser-pressekonto 15), Wächtertest; Promise-Ablehnungen mit Typ und Inhalt (10); vertippte artisan-Befehle nicht melden (server-pressekonto 9)
|
||
a90f24a df557e4 search-console: vorübergehende Google-Fehler einmal wiederholt und nur als Warnung protokolliert, Portal-Abbruch nach fünf Fehlern in Folge, Zeitbudget 40 Minuten (GlitchTip server-pressekonto 11–14)
|
||
88b4feb 9e35c73 dev: GlitchTip-Dokumentation (dev/glitch-tip) — Überblick, Meldewege, API-Abruf, Ablauf zur Fehlerbehebung, Regeln, Protokoll der Einträge; Verweis in CLAUDE.md
|
||
072fd62 3a6cb6a dev: GlitchTip-Doku auf Git-Deploy umgestellt (Release-Datei schreibt deploy.sh)
|
||
eb2bf0b 88f343d build: Assets für v1.1.2
|
||
92709d8 2a61122 fix: eigene Flux-Icons ins Repository — macOS-Muster "Icon" in der .gitignore traf bei core.ignorecase auch resources/views/flux/icon/
|
||
79bb6cf 5782297 dev: Git-Deploy live seit v1.1.3 (06.10.2026) — Protokoll, Befunde der Umwandlung, Runbook §10 und GlitchTip-Doku angepasst
|
||
31da9ea 2cde728 livewire: Volt entfernt — Komponenten als Livewire-4-Single-File-Components, Route::livewire(), Livewire::test(); livewire/volt deinstalliert
|
||
a5bf331 6d03d8d billing: Rechnungsversand — PDF im Anhang der Zahlungsmail, optionale Rechnungs-E-Mail, Stripe-Rechnungs-PDF direkt aus dem Kundenbereich
|
||
debf094 da9411b dev: Deploy v1.2.0 (Volt entfernt) im Git-Deploy-Protokoll
|
||
bc5e151 9f806de dev: Git-Deploy — FPM-Reload ohne Passwort getestet, PK_FPM_RELOAD ungesetzt lassen; Nginx-Fehlerlog ausgewertet, process_control_timeout bewusst nicht gesetzt
|
||
06e37c9 2c25eea dev: Monitoring-Plan — Nachtrag fehlgeschlagene Anmeldungen (Befund, Auswertung) und Einrichtung des externen Monitors (Uptime Kuma, ntfy, zweite Ebene)
|
||
0aaee12 05535aa auth: fehlgeschlagene Anmeldungen mit Einstieg (livewire/fortify/two-factor); unbekannte Adressen als Tageszähler statt Verlaufseintrag, Kachel im Systemstatus, Löschfrist 90 Tage
|
||
ce6e8b4 c223daa deploy: Worker-Prüfung am Ende von deploy.sh — monitoring:queue-probe stellt einen Test-Job ein und wartet bis 60 s; ohne Worker Exit 3 mit Hinweis
|
||
dfc7ed1 3b4448a dev: Worker-Ausfall 06.10. dokumentiert — Runbook ohne pauschales queue:retry all, Vorgehen bei stehendem Worker, externer Monitor erledigt (status.adametz.media)
|
||
c385ad9 d083110 dev: Deploy v1.3.2 im Git-Deploy-Protokoll (Worker-Prüfung 4 s, Supervisor enabled)
|
||
2215826 32e1349 dev: Baukasten Git-Deploy und Betriebsüberwachung für andere Laravel-Projekte (dev/git-deploy-monitoring) — Anleitungen, Checkliste, Vorlagen für Laravel, deploy.sh und Monitoring-Server
|
||
d1d2ab3 fd8dd74 ops: Lokale Datenbank gegen fremde Testläufe absichern — DB_* nicht mehr als Container-Umgebung, Agenten-Regel, Testdatenbank-Pflicht im Baukasten
|
||
1c07fcb bae8347 security: Sicherheitsaudit 07.10.2026 (S-01–S-06) behoben, Passkeys und Zweitfaktor-Pflicht für Admins
|
||
5dc3bf5 8045ef1 build: Assets für v1.4.0
|
||
c76e420 af72810 fix: Abgleich der Firmenrechte entzieht Bestandskonten ohne E-Mail-Bestätigung nicht mehr pauschal alle Rechte — memberships:resync-auto mit Probelauf und Notbremse
|
||
6eb7c08 f693226 dev: Deploy v1.4.0 und v1.4.1 im Git-Deploy-Protokoll, Release-Stand im Sicherheitsaudit und Entwicklungsplan
|
||
6d85d29 e77d9e7 feat: API-Zugang endet mit der Buchung, optionales Ablaufdatum für API-Tokens
|
||
7fa310f 3def447 security: Proxy-Vertrauen nur noch lokal, HSTS in Produktion, Tests ohne echte ntfy-Pushes
|
||
0048682 798ae75 dev: Deploy v1.5.0 im Git-Deploy-Protokoll
|
||
35a49cc 077e522 dev: Phase 4 im Sicherheits-Entwicklungsplan auf Stand v1.5.0/v1.6.0
|
||
c751d4e 5dfd622 security: Andere Geräte abmelden, IP-weites Login-Limit, dauerhafte Sperrmarke, Passwortregeln, CSP im Melde-Modus
|
||
f92d1e0 9c4962f build: npm-Advisories für shell-quote und source-map-js behoben
|
||
6a86fa4 65086ca dev: Deploy v1.6.0 im Git-Deploy-Protokoll
|
||
28e78f5 75e206d dev: Imagick als Server-Voraussetzung, Wiedervorlage der Restpunkte im Sicherheits-Entwicklungsplan
|
||
69aaef4 b06f5a8 build: Assets für v1.6.1
|
||
87ad433 bbc2b60 fix: Imagick in der Betriebsüberwachung, Scanner-Anfragen an Livewire als 400, abgebrochene Alpine-Übergänge nicht mehr melden
|
||
43420f0 61f449f dev: Deploy v1.6.1 im Git-Deploy-Protokoll
|
||
64d53a5 010258a build: Assets für v1.7.0
|
||
9cb39b6 b3bcc43 dev: Entwicklungsplan Spamschutz, Wiedervorlage der Nacharbeiten nach dem Deploy
|
||
beae7e2 06d2889 feat: Spamschutz für Kontakt-Widget und Registrierung mit Cloudflare Turnstile
|
||
70ed7d1 35fd2f6 dev: Deploy v1.7.0 im Git-Deploy-Protokoll, Spamschutz-Nacharbeiten erledigt
|
||
3376f01 8e3554b dev: Doku aufgeräumt, neue Roadmap als einzige Liste offener Punkte
|