- Abschnittsabstand .page section + section entfaellt bei nebeneinander stehenden Abschnitten (Planboard, Finanzen, Rechtliches, Services, Kunde Uebersicht)
- .field bekommt im Altbestand (.page) wieder 12 px Abstand, neue Container (Dialog, field-row, kv) bleiben ohne
- .page.admin-page statt .admin-page, damit 1480 px Breite gegen .page gewinnt
- Fokusring von .tab und .nav-item innen, damit Scroll-Container ihn nicht abschneiden
- readonly bei .input und .textarea hinterlegt grau
- .kpi-grid (LiquidityHead) wieder nebeneinander bis P7
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Weisses Geruest (.shell, feste Seitenleiste, Dokument-Scroll), Menue als Textliste mit Zaehlern und Serverpuls-Punkt, Schublade mit Scrim und Esc auf dem Handy, Logo-Komponente und Favicon. Footer, Einklappen (lib/sidebar.js) und das alte Menue-CSS (.side*, .app-*) sind entfernt.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Umsetzungsplaene je Paket mit gemeinsamen Regeln (env.sh/check.sh,
Gate-Schema, CSS-Reihenfolge, TP2-Pruefung vor jedem Paket) und den
Schnittstellen aus P1. Gegen Spec und untereinander geprueft (zwei
Pruefer, Korrekturrunde, Nachpruefung).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Steriles Weiss, kaum Rahmen, kaum Icons, Akzent Schwarz, Ticket als
eigene Seite. Pakete P0-P10, jedes einzeln ueber ein Tag live.
Gegen den Code geprueft (4 Pruefer + Gegenpruefung, 66 Befunde
eingearbeitet).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Das Textform-Formular (Haken, Datum, Weg, Chat-Vorlage) gilt wie beim Terminplaner auch
fuer den Webshop, wenn das Portal im Feld shop textformNoetig meldet. Kaestchentext und
Chat-Vorlage nennen die Unterlagen des Webshops, die Fassung und die Erklaerungen, die das
Portal im Nachweis speichert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Webshop als Funktion im Reiter Funktionen (Aktionen wie beim Terminplaner), Panel je Projekt mit Anfrage,
Entscheidung mit Begruendung, Stripe-Status und Zahlen; Karten Leistungsbeschreibung und AVV Webshop.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Der Test der Karten-Schlüssel prüft jetzt die Appwrite-Grenze für eigene
Dokument-IDs (36 Zeichen) statt 64.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Das Setup-Skript legt drei weitere Karten an (sort 7 bis 9, liveUrl = Alias-Seiten
ohne Fassungsdatum). Es legt nur Karten an (idempotent); Ausfuehrung mit API-Key
und Upload der Versionen macht der Inhaber.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Im Dialog "Terminplaner ohne Zahlung aktivieren?" erscheinen, wenn das Portal
termine.textformNoetig meldet, der Haken (Leistungsbeschreibung und AVV in
der Fassung, Ausschluss Gesundheitsbereich), das Datum der Zustimmung und der
Weg (Chat | E-Mail) sowie die Textvorlage fuer den Chat mit Kopierknopf
(versionierte Adressen aus dem Portal). "Ja" bleibt gesperrt, bis alles
stimmt (canSubmitTextform mit minDate = Fassung); der Rumpf traegt
textformDate und textformChannel. News und Abschalten bleiben unveraendert.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Vorlagen stehen absichtlich nur in der Ansicht "Vorlagen" (Admins). Nach
dem Speichern als Vorlage fiel das Projekt deshalb kommentarlos aus
"Aktive Projekte" (SHK-vorlage, 04.10.2026).
- nach dem Bearbeiten in die Ansicht wechseln, in der das Projekt jetzt
steht, mit Hinweis ("steht jetzt unter Vorlagen")
- Suche zeigt Treffer in ausgeblendeten Ansichten (Vorlagen, Archiv) mit
Klick zum Wechseln
- Hilfen viewShowing / matchesSearch / hiddenMatches in lib/projectList.js
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Projekte-Seite holt neue/archivierte Repos selbst ab (vorher bis zu 10 Minuten unsichtbar)
- Import-Drossel: nach einem Fehler sofort neuer Versuch
- Zuordnen-Assistent nennt den Status einer vorhandenen Preview
- Ticket "Neues Projekt": ungueltige Subdomain wird abgewiesen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Neues Projekt (Projekte-Seite): Repo-Name blieb nach dem ersten
Buchstaben der Subdomain stehen ("m" statt "musterfirma")
- Ticket "Projekt waehlen": archivierte Repos nach Flag ausblenden, nicht
nach status (reaktivierte fehlten, archivierte wurden angeboten)
- Projektliste: "Aktive Projekte" + neue Ansicht "Alle inkl. Archiv";
Liste wird auch nach einem Anlege-Fehler neu geladen
- Kundenauswahl: "Kein Kunde" entfernt Kunde und Ticket wirklich (mit
Rueckfrage); beim Kundenwechsel bleibt kein fremdes Ticket haengen
- Zuordnen-Assistent ueberschreibt eine vorhandene Website nicht mehr
- Neues Projekt am Ticket bekommt die Art Website
- Umlaute in Subdomains wie im Portal (mueller statt m-ller)
- Preview-Block nur mit gespeicherter Subdomain; archivierte Projekte
erst reaktivieren, bevor sie bearbeitet werden
- Repo-Import beim Aufklappen hoechstens einmal pro Minute
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Kunden haben Konten im selben Appwrite-Projekt und konnten sich mit ihrem
Portal-Passwort im Ticketsystem anmelden; dabei entstand sogar automatisch ein
employees-Eintrag.
- lib/staffAccess.js: Zugang nur mit Label "mitarbeiter" oder "admin"
- AuthContext: Konto ohne Label -> Sitzung sofort beenden, Hinweis aufs
Kundenportal (Login, Neuladen, nach dem 2FA-Code); employees-Eintrag nur
noch fuer Mitarbeiter
- setup-legal.mjs: Rechte nur fuer die Labels (ein erneuter Lauf oeffnet
nichts mehr fuer "users")
Die eigentliche Sperre sind die Appwrite-Rechte (Kundenportal
scripts/mitarbeiter-zugang.mjs --rechte).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Zeile Terminplaner zeigt den siteKey aus der Antwort des Portals in kleiner Schrift mit fester
Breite und einem Kopierknopf (copyText aus CopyableCredential, mit Ersatzweg ohne Zwischenablage).
Damit braucht der Einbau (Schritt L4 des Pilots) keinen Datenbankzugriff mehr.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Gespraech startet nicht neu, wenn der Kundenname nachlaedt (Entwurf bleibt, kein verwaister Timer)
- Neue Nachricht an Kunde: erst die eindeutige Beschriftung Name · E-Mail · Kd.-Nr. oeffnet
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>