Kundenspalte mit Mindestbreite (col-name) und Erledigt/Bestellt ohne Umbruch, damit am Handy und bei 1440 px keine Woerter mitten im Wort brechen.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Reiter statt Filterknoepfe, Statusspalte mit Badge, Stripe-Links, Mail-Zeile und Aktionen (E-Mail senden als Textlink, Zurueckziehen als danger), Spalten Angelegt und Gueltig bis nach Breite ausgeblendet. Mindestbreite der Statusspalte, damit Woerter nicht mitten im Wort brechen. Neues Angebot ohne Icon in der Werkzeugleiste, Hinweis als table-foot.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
`.admin-credential-result span { display: block }` (0,1,1) schlug `.credential` (display: flex,
gap 8 px): "Anzeigen" und "Kopieren" standen ohne Abstand nebeneinander (gemessen 0 px bei 1440
und 390 px). Die Regel gilt jetzt nur noch fuer den Hinweistext im ersten Feld
(`.admin-credential-result > div > span`); die Textlinks stehen 8 px auseinander, der Wert
hat wieder die Textfarbe.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die Tabelle "Mitarbeiterkonten" war bei 1440 px rund 80 px breiter als die Karte, der
Loeschen-Knopf lag hinter dem inneren Rollbalken. Kopieren/Anzeigen stehen jetzt unter
dem Wert (Spalte statt Zeile), nur in .admin-table.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Das Kachelraster entfaellt, jede Art ist ein Abschnitt mit Beschreibung, Funktions-Badges und Zeilen. Der Preview-Punkt wird zum Badge "Preview: <Zustand>", Ticket und Zuordnen sind Textlinks. Zwei CSS-Zeilen (.services-stack) im Block Projekte (P5).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Der Assistent bekommt Brotkrume und Untertitel im Seitenkopf, je Schritt einen Abschnitt, Auswahlzeilen als Knoepfe mit aria-pressed und dem Badge Ausgewaehlt, Felder mit Label-Verknuepfung und keine Icons oder Inline-Stile mehr. Logik, Zustaende und Texte bleiben unveraendert. Vier CSS-Zeilen im Block Projekte (P5) fuer Abstand der Schrittspalte und Kontrast der Kundennummer.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Seite mit PageHeader, Reitern (Zaehler aus projectTabs), Filterzeile und Tabelle (Rollen table/row/cell/columnheader, Zeilenklick ueber isRowActivation)
- Neues Projekt und Projekt bearbeiten als Dialog mit Field/htmlFor; Speichern im Fuss ueber das Attribut form
- Ladetext "Wird geladen …" nur beim ersten Laden (loadedOnce), danach bleibt die Tabelle beim Nachladen stehen
- global.css: Ticket-Zelle bricht lange IDs um, .faint in archivierten Zeilen ohne Kontrastverlust (Block Projekte (P5))
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Kopf mit Brotkrume, Eyebrow (Nummer, Stufe) und Abzeichen unter dem Namen, kein schwarzer Knopf. Uebersicht mit .kv-Zeilen in zwei Spalten, Rueckmeldungen als .msg, Tickets-Reiter als Tabelle mit echten Links (ticketPath) und Zeilenklick ueber isRowActivation. KundenansichtButton ohne Icon, Standard ist jetzt default. Block Kunden (P4) in global.css.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Zeilenklick nur ueber isRowActivation, Link.row-link in der ersten Zelle. CreateCustomerForm bleibt exportiert (Zuordnen-Assistent), dort entfaellt der Umschlag um den Dialog. KOMPAT-Regel .side-logo gestrichen.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Auch drei Kommentare mit dem Altlink-Muster umformuliert (useWorkorders, ticketListUrl, TicketsPage), sonst bleibt die Pruefung auf den Altlink nicht leer.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- 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>
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>
- 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>