Leads-Tab zeigt/verfolgt nur noch die Automatisierung; Status & Doku laufen im Akquise-Ticket (WOID-Chip). Alte Notizen bleiben read-only sichtbar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Vorschau-Button (Auge, primary) je Lead -> previewUrl der deployten Website
- previewUrl live gejoint (Lead->Kunde per E-Mail->websiteProjects status deployed/ready); Preview haengt an anderem Repo als lead.repoUrl -> Kunden-Join
- attachWoids -> attachLeadLinks (haengt jetzt woid + previewUrl an)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Maps/Website/Repo nur noch Icon (title/aria-label bleiben)
- WOID je Lead als klickbarer Chip -> /tickets?woid= (Lead->Kunde->Akquise-Ticket, live in useLeads gejoint)
- useWorkorders: woid server-seitig filterbar (macht den bisher wirkungslosen WOID-Filter nutzbar)
- TicketsPage: ?woid= Deep-Link liest Param, filtert ueber alle Status
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Leads parken jetzt nach Schritt 3 am Anreicherungs-Gate, bis die taegliche
Cloud-Routine Bilder/Logo/Text-Feinarbeit liefert (POST /webklar-hook/enrich).
PipelineBar zeigt dafuer ein eigenes Label statt des (manuell)-Fallbacks.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Neue Seite /leads unter CRM: Lead-Karten (Score, Google-Bewertung,
Website-Status, Kontakt, Maps/Website/Repo-Links), KPI-Zeile,
Status-Workflow (neu/kontaktiert/interessiert/gewonnen/abgelehnt),
Notizen, Portal-Zugangsdaten
- Sucheinstellungen (Branche, Staedte oder ganz Deutschland, max. Leads
pro Stadt, Mindestbewertung, E-Mail-Pflicht, Website-Kriterium,
Zusatzhinweise) -> Appwrite leadSettings, gelesen von der Routine
ueber webklar-hook /config
- Ersetzt die Excel-Masterliste als Lead-Ansicht
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Aktualisieren-Button ohne Text-Label, konsistent zur Toolbar; Spinner
auch beim Hosten. Tooltips via title/aria-label.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Dritter Aktions-Button neben Bearbeiten/Vorschau: stoesst fuer bereits
gehostete/deployte Projekte den Deploy erneut an (updateWebsiteProject
mit gleichem Typ), damit eine ueberarbeitete Website neu geladen wird.
Spinner waehrend der Aktualisierung.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Sync/Neu als Icon-Buttons (Tooltip statt Text), Sync-Icon dreht beim Laden
- Textsuche nach Titel/Subdomain/Repo
- Filter nach Kunde (Dropdown)
- Filter nach Mitarbeiter (ueber zugeordnetes Ticket -> assignedTo)
- alle Filter kombinierbar mit der bestehenden Kategorie-Auswahl
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Karten zeigen fuer Hosting-Typen (Preview/Website/Vorlage) einen Status:
gehostet (ready/deployed) vs nicht deployt (synced etc.)
- nicht-deployte Projekte: Button "Jetzt hosten" -> deployt via PATCH-Route
(setzt status=deployed/ready), danach funktioniert die Preview
- deployte Projekte zeigen weiterhin den Preview-Link
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Kunden:
- Neues Feld customers.archived; Archivieren/Wiederherstellen-Button in der
Kundendetailseite, 'Archiviert'-Badge
- CustomersPage: vierter Filter-Tab 'Archiviert'; archivierte Kunden aus
Alle/Leads/Feste Kunden ausgeblendet, nur im Archiv-Tab sichtbar
Tickets:
- Status-Mehrfachauswahl per Checkbox im Filterbereich; Default alle Status
ausser 'Closed' (= archiviert). 'Standard' / 'Alle inkl. Archiv' Shortcuts
- useWorkorders: Statusfilter serverseitig via Query.equal(array) statt
Client-Filter nach dem Limit (behebt Bug, bei dem archivierte Tickets die
neuesten Slots belegten und aktive verdraengten)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Git-Pushes erzeugen Worksheets mit automatischer Endzeit (Push-Zeitpunkt),
aber ohne Startzeit. Neu:
- WorksheetList: Pille 'Zeit offen' + Button 'Zeit nachtragen' bei
GIT-Worksheets ohne Startzeit/Arbeitszeit
- EditWorksheetTimeModal: Startdatum/-zeit erfassen, Arbeitszeit wird live
berechnet (inkl. Uebernacht-Logik), speichert via updateWorksheet und setzt
isComment=false, damit der Eintrag in der Arbeitszeit-Statistik zaehlt
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Zwei Kundenstufen: Lead (potenziell) und fester Kunde; Lead braucht nur
Unternehmen + E-Mail und erzeugt automatisch ein Akquise-Ticket
- Akquise-Worksheet-Ergebnis (In Kontakt/Zugesagt/Abgesagt) sichtbar in WSIDs;
"Zugesagt" macht den Lead automatisch zum festen Kunden, "Abgesagt" -> verloren
- Kunde wird nur in Appwrite gepflegt und automatisch als InvoiceNinja-Client
angelegt/aktualisiert (beim Upgrade bzw. bei Datenpflege)
- Rechnungen nur fuer feste Kunden mit vollstaendigen Daten (Strasse/PLZ/Stadt)
- Kundenliste mit Stufen-Filter, neue Rechnungs-/Adressfelder
Co-authored-by: Cursor <cursoragent@cursor.com>
Projekt-Zuweisung, README-Anzeige und Admin-API-Hooks ins Repo committen, damit deploy.sh die Änderungen nicht mehr verwirft.
Co-authored-by: Cursor <cursoragent@cursor.com>
.env.development/.env.production und zentraler isDemoMode verhindern
leere VITE_APPWRITE_PROJECT_ID nach git clone ohne lokale .env.
Co-authored-by: Cursor <cursoragent@cursor.com>
Leitet /v1 an ticket.webklar.com weiter und dokumentiert .env.local,
damit Session-Cookies auf localhost wie auf dem Server funktionieren.
Co-authored-by: Cursor <cursoragent@cursor.com>
Nutzt String-Collection-IDs, ticket.webklar.com/v1 als Default und
korrigiert isAdmin sowie Session-Handling für Same-Origin-Login.
Co-authored-by: Cursor <cursoragent@cursor.com>