Commit Graph
100 Commits
Author SHA1 Message Date
ClaudeandClaude Sonnet 5.5 e3c7a22ae2 Workers P3: Pult-Daten des Prüfstands nur auf Wunsch (pult: true), damit die bisherige Skript-API unverändert bleibt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 10:23:48 +00:00
ClaudeandClaude Sonnet 5.5 2ed2201b22 Workers P3: Prüfstand um Freigabe, Interessenten-Panel, Anhalten-Rückfrage und Handy erweitert
Echte Seite WorkersPage im Prüfstand (Austausch-Module für Anmeldung, Mitarbeiterliste und Sitzungs-JWT), Skript-API mit Pult, Aktionen und Interessent samt Schaltern für 409, 400, Ausfall und Leerzustand, vier neue Szenarien (Freigabe, Interessent, Anhalten, Handy), jedes Szenario läuft für sich, und der Szenario Desktop bestätigt jetzt die Rückfrage vor dem Anhalten.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 10:20:29 +00:00
ClaudeandClaude Sonnet 5.5 686db61e1c Workers P3: Interessenten-Panel im Pult
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 09:59:11 +00:00
ClaudeandClaude Sonnet 5.5 f8f8df2cbd Workers P3: Reiter Freigabe mit Kopieren & öffnen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 09:47:38 +00:00
ClaudeandClaude Sonnet 5.5 777d5272bf Workers P3: Nachträge aus der P2-Endprüfung (Kennungen, JWT-Sperre, Abmelden, Bestätigung)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 09:36:00 +00:00
ClaudeandClaude Sonnet 5.5 c6c022678f Workers P3: reine Pult-Logik für den Reiter Freigabe
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 09:27:49 +00:00
ClaudeandClaude Opus 5.5 c6f7c74c52 Übersicht: Routen-Form wie gebaut (path/access/run, Fehler werfen HttpError)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 09:22:31 +00:00
ClaudeandClaude Opus 5.5 d732494eee Workers P2: Betriebsanleitung nach der Endprüfung (Merge statt Rebase, Ausfall-Probe, Testlauf mit Concurrency 2, Rücknahme ohne Merge-Commit, Handy-Entscheidung)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 05:51:34 +00:00
ClaudeandClaude Sonnet 5.5 aceb558564 Workers P2: Prüfstand um Ausfall-Szenario erweitert (503, 401-Folge, hängende Verbindung, versteckter Tab)
Endprüfung P2. Die Zustände des Boards bei Ausfall des Dienstes und der Wechsel zwischen sichtbarem und verstecktem Tab
waren nur über Quelltext-Muster geprüft. Der Prüfstand (?fault=none|down|session|hang) schaltet jetzt den echten
API-Client hinter eine Fetch-Weiche (scripted-fetch.js, mit Node-Tests). Szenario F in shot.cjs prüft im Browser:
Hinweis mit „Neu laden“ bei 503 beim Öffnen und Rückkehr, Warnzeile „Verbindung gestört“ im Betrieb, versteckter Tab
(keine Abrufe, keine Bilder, beim Zurückkehren sofort beides), dauerhaftes 401 (höchstens ein frisches JWT, Meldung
„Anmeldung abgelaufen“, Erholung ohne neues Anmelden) und eine Antwort, die nie kommt (Zeitgrenze). Das Handy-Szenario
prüft zusätzlich Auswahl aus der Liste (Karte im Fenster, Fokus) und Fokus nach „Karte schließen“.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 05:41:03 +00:00
ClaudeandClaude Sonnet 5.5 84fb37a98e Workers P2: Auswahl aus der Liste holt die Karte ins Bild und setzt den Fokus (Handy und Tablet)
Endprüfung P2. Unter 1100 px steht die Karte über der Liste mit 19 Einträgen, aus der man wählt (die Liste ist dort die
Alternative zur Leinwand). Ein Klick in der Liste änderte nichts Sichtbares: die Karte öffnete sich oberhalb des
Fensters, Screenreader hörten nichts, und „Karte schließen“ ließ den Fokus ins Leere fallen.

Bei neuer Auswahl nimmt jetzt der Name in der Karte den Fokus (tabIndex -1), und liegt der Kartenanfang außerhalb des
Fensters, wird die Karte an den oberen Rand geholt (scroll-margin-top: unter der festen Leiste der Handy-Ansicht 64 px).
„Karte schließen“ gibt den Fokus an den Listeneintrag des Workers zurück.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 05:41:03 +00:00
ClaudeandClaude Sonnet 5.5 9ebc562c83 Workers P2: Zeitgrenze je Abruf und Sperre für frische JWTs nach einer 401-Folge
Endprüfung P2. Ein Abruf auf toter Verbindung (Rechner im Ruhezustand, Netzwechsel) blieb offen, und die
Feed-Schleifen laufen mit einem Abruf je Schleife: die Seite stand still und zeigte veraltete Daten als aktuell.
createWorkersApi bricht jetzt jeden Versuch (JWT holen, senden, Antwort lesen) nach 20 s mit "Der Hustler-Dienst ist
gerade nicht erreichbar." (status 0) ab, auch wenn fetch oder createJWT das Signal nicht beachten.

Außerdem erzwang jede 401-Antwort ein frisches createJWT, bei dauerhaftem 401 etwa 16 bis 20 Mal je Minute und Tab.
Appwrite begrenzt createJWT je Nutzer; das Limit hätte auch Serverpuls, Finanzen und Vorschauen gesperrt. Nach einer
401-Folge (frisches JWT wird ebenfalls abgelehnt oder lässt sich nicht erzeugen) gibt es 2 Minuten lang kein frisches
JWT mehr, die Meldung "Anmeldung abgelaufen" bleibt; Erfolg hebt die Sperre auf.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 05:34:51 +00:00
ClaudeandClaude Sonnet 5.5 820ccd510d Workers P2: Sichtprüfung im Browser – Schilder über den Figuren, Raumtitel über den Möbeln, Zoomknöpfe unten, Abstand der Meldung
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 04:55:51 +00:00
ClaudeandClaude Sonnet 5.5 d67f8cc471 Workers P2: Prüfstand mit Skript-API und Playwright-Abnahme
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 04:55:51 +00:00
ClaudeandClaude Sonnet 5.5 0b78379b9b Workers P2: Fehlergrenze um die Routen, damit ein fehlender lazy-Chunk nicht die ganze Oberfläche leert
Ein alter Tab nach einem Deploy fordert den Seiten-Chunk mit altem Hash an, nginx liefert die index.html, der Import schlägt fehl und React räumte ohne Boundary den gesamten Baum ab. RouteErrorBoundary hält Menü und Rahmen, zeigt den Hinweis mit Knopf „Seite neu laden“ und räumt den Fehler beim Pfadwechsel weg.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 04:34:35 +00:00
ClaudeandClaude Sonnet 5.5 7ddd60e59b Workers P2: Seite /hustler (lazy), Menü „Hustler“ statt Leads, Stil und Schrift Pixelify Sans
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 04:27:51 +00:00
ClaudeandClaude Sonnet 5.5 a6f1b0c56d Workers P2: Bühne (StrictMode-fest) und Board mit Pausenschalter
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 04:20:35 +00:00
ClaudeandClaude Sonnet 5.5 319e731d0e Workers P2: Szene bekommt flush() für die Rückkehr in den Tab
Die Bühne beruhigt die Regie beim Zurückkehren (alles zu Ende gespielt, alle heim, Aufzug und Effekte leer); im Standbild zeichnet flush() ein Bild.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 04:20:35 +00:00
ClaudeandClaude Sonnet 5.5 e6bc2d938a Workers P2: Einstellungs-Dialog für Admins
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 04:05:30 +00:00
ClaudeandClaude Sonnet 5.5 f2975e26f0 Workers P2: Kennzahlen, Worker-Karte mit Spur und Worker-Liste
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 03:58:22 +00:00
ClaudeandClaude Sonnet 5.5 85b5f3cedb Workers P2: Formularlogik der Einstellungen (Prüfung, Patch nur Geändertes)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 03:51:40 +00:00
ClaudeandClaude Sonnet 5.5 f4ce410345 Workers P2: Engine-Rauchtest (19 anklickbar, 150 s Ereignisfeed)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 03:46:47 +00:00
ClaudeandClaude Sonnet 5.5 cb31d1476b Workers P2: mountTower (Größe, 30-fps-Schleife, Eingabe, Kamera, Lebenszyklus)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 03:37:47 +00:00
ClaudeandClaude Sonnet 5.5 ad8ee9afe2 Workers P2: Regie 2 (Schritte, Aufzugfahrten, Rückstau-Kappung, Wachhund)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 03:14:55 +00:00
ClaudeandClaude Sonnet 5.5 e69c4355bd Workers P2: Regie 1 (Agenten, Snapshot ohne Animation, Posen, Leerlauf)
Dazu drawSideBubble in sprites.js: Ottos seitliche Blase braucht das Raster des Kontexts.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 02:53:59 +00:00
ClaudeandClaude Sonnet 5.5 1aabbef3ab Workers P2: Archiv-Spot auf den ersten Aktenschrank, Teamfarbton auch im grauen Raum
Der Effektort spots.archiv lag auf Arne (x 130, y 231) statt auf einem gezeichneten Schrank; er sitzt jetzt in der Mitte der obersten Schublade des ersten Aktenschranks (x 148). Graue Räume behalten den Teamfarbton (Alpha 0,10) unter der Grautönung; das Schild ersetzt dort weiter den Titel (Platz). Neue Tests: Zeichnung trifft den Spot für pult, tresor, archiv; grauer Raum mit Tint ohne Titel.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 02:41:35 +00:00
ClaudeandClaude Sonnet 5.5 8555453a74 Workers P2: Räume nach kind, Pokal-Seiten, graue Räume, Gebäudehülle
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 02:29:57 +00:00
ClaudeandClaude Sonnet 5.5 fb331de1a6 Workers P2: Aufzug mit Abbruch und Reset
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 02:16:47 +00:00
ClaudeandClaude Sonnet 5.5 38261ecdd8 Workers P2: Effekt-System mit Obergrenze
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 02:10:37 +00:00
ClaudeandClaude Sonnet 5.5 c27f0b600b Workers P2: Layout als Daten (10 Etagen, 19 Plätze) und Kamera mit Umkehr-Transformation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 02:04:07 +00:00
ClaudeandClaude Sonnet 5.5 514469d93c Workers P2: Engine-Requisiten und Branchen-Icons
Möbel und Requisiten aus der Vorlage (Schreibtisch, Monitor mit Schalter an/aus, Aktenschrank, Pflanze, Münze, Pokal, Stempel, Radar, Briefkasten, Tresor, Waage), neu Ablagekorb, Schild und die acht 7x7-Branchen-Icons mit drawIcon.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:58:15 +00:00
ClaudeandClaude Sonnet 5.5 d44b28368d Workers P2: Engine-Sprites (Raster, Figuren mit Posen, Text, Blasen)
Raster je Kontext in einem WeakMap (setGrid/px/tint), Figuren mit den Posen stand, type, coffee und sleep, Graustufe für nicht angeschlossene Worker, Warnzeichen, Text und Sprechblasen mit Klemmung in die Canvas-Breite. Aufzeichnender Test-Kontext in tests/unit/helpers/fakeCtx.mjs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:50:40 +00:00
ClaudeandClaude Sonnet 5.5 67df2fd902 Workers P2: Feed-Stillstand bei dichten Ereignissen behoben (Sprung hinter die Spitze)
Der Dienst liefert bei events(after) die ältesten pageLimit Einträge ab after - 5 s. Mit mehr als 200 Einträgen im Fenster kam mit after = jüngster ts immer dieselbe, schon bekannte Seite und das Neuere nie an. Eine volle Seite ohne neues Ereignis setzt jetzt eine Abrufmarke hinter die Spitze (cursor + 5 s, bei erneutem Stillstand + 1 ms), die über Runden hinweg gilt.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:41:30 +00:00
ClaudeandClaude Sonnet 5.5 0bfad0ae0b Workers P2: Feed-Steuerung und Hooks (Zustand 15 s, Ereignisse 5 s)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:34:20 +00:00
ClaudeandClaude Sonnet 5.5 97fdfbfcf0 Workers P2: API-Client mit deutschen Fehlertexten
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:26:07 +00:00
ClaudeandClaude Sonnet 5.5 66fe0f38ef Workers P2: eventToSteps verwirft Schritte ohne Ziel bei fehlender workerId
fx() setzt 'to' jetzt immer, sobald ein drittes Argument übergeben wird; stepIsValid prüft 'to' per Object.hasOwn. Ereignis 'eingang' ohne workerId liefert keinen Umschlag ohne Ziel mehr.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:22:51 +00:00
ClaudeandClaude Sonnet 5.5 3386e91916 Workers P2: Ereignis-Logik (Dedup, reduceEvents, eventToSteps)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:19:21 +00:00
ClaudeandClaude Sonnet 5.5 79be67706c Workers P2: Anzeige-Logik (Formate, Kacheln, safeLink, Spur-Zeilen)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:13:13 +00:00
ClaudeandClaude Sonnet 5.5 92ee4bfbad Workers P2: Roster-Spiegel und gemeinsame Fixture
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 01:10:18 +00:00
ClaudeandClaude Opus 5.5 7b1342fbb1 Workers P1: Betriebsanleitung und Übersicht nach der Endprüfung (zwei Appwrite-Schlüssel, nginx-Zone, Erwartungstexte, countersJson 16000, Verträge für P2–P6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:47:57 +00:00
ClaudeandClaude Opus 5.5 11e4280a92 Hustler: Name in der Oberfläche, Budget höchstens 150 $/Monat (6 $/Tag) mit hartem Deckel
Kenso, 17.10.: "150 € im Monat max", "nenne es Hustler". Technische
Namen (workers*) bleiben.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 20:26:42 +00:00
ClaudeandClaude Opus 5.5 740089c997 Workers-Pläne abgeglichen: Ergänzungen in der Übersicht, Harvey-Ideen H1–H5, Graue-Worker-Regel, Plattform-Folgeantworten (P4-T34)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 19:52:13 +00:00
ClaudeandClaude Opus 5.5 96a9226435 Workers: Teilpläne P1–P6 (Fassung nach Einzelprüfung, vor dem Abgleich)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 18:31:01 +00:00
ClaudeandClaude Opus 5.5 fb64c6fe39 Workers-Übersicht: IMAP-Lesestand festgelegt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 17:11:04 +00:00
ClaudeandClaude Opus 5.5 dbfbf36b08 Workers: Plan-Übersicht und gemeinsame Schnittstellen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 17:10:25 +00:00
ClaudeandClaude Opus 5.5 775087a8f3 Workers-Spec freigegeben
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 16:56:15 +00:00
ClaudeandClaude Opus 5.5 2ed462bec1 Workers-Spec: Kensos vier Entscheidungen eingetragen (Kaufweg, Angebot, Budget, Domain)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 16:55:11 +00:00
ClaudeandClaude Opus 5.5 6fdeb10523 Workers-Spec: Ergebnisse der Builder-Prüfung eingearbeitet, 4 offene Entscheidungen markiert
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 16:53:19 +00:00
ClaudeandClaude Opus 5.5 823f64961b Workers: Design-Spec (Entwurf zur Freigabe)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 16:45:54 +00:00
ClaudeandClaude Sonnet 5.5 f11fd0bb25 Funktionen: News im Abo-Modell in Einrichtung ohne "Aktivieren (ohne Zahlung)" (Abschlussprüfung W2)
Das Portal antwortet darauf immer mit 409 bereits_eingeschaltet. Erkannt wird das Abo-Modell am Marker unlockedBy (abo, projekt) der Funktion; bei fehlendem Ticket steht "Ticket nachlegen" an der Stelle.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 21:17:35 +00:00
ClaudeandClaude Sonnet 5.5 8685411a93 Stundenkonto: Vorschuss bei beendetem Abo als "verfällt, wird nicht berechnet" anzeigen (Abschlussprüfung W1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 21:16:45 +00:00
ClaudeandClaude Sonnet 5.5 1742fb254d Funktionen: Warnung der Aufbauphase, Abo-Beginn mit Datum, Texte für abgeschaltet und bereits eingeschaltet
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:05:46 +00:00
ClaudeandClaude Sonnet 5.5 06166221ec Funktionen: Abrechnung der Einrichtung wählen, Abo-Fehler anzeigen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:55:05 +00:00
ClaudeandClaude Sonnet 5.5 8f75276c54 Funktionen: Preis entfernt, Abrechnung und Abo-Fehlertext als reine Logik
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:48:34 +00:00
ClaudeandClaude Sonnet 5.5 dce7c3e53a Stundenkonto und Vorschuss am Einrichtungs-Ticket und beim Kunden
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:45:39 +00:00
ClaudeandClaude Sonnet 5.5 f0d39f2eee Arbeitsblätter: Abo-Vorgabe bei Einrichtungs-Tickets
Bei Tickets mit einrichtungAbrechnung 'abo' steht "Vom Abo-Stundenkonto abziehen" im Dialog von Anfang an auf an (auch wenn der Abo-Status erst nach dem Öffnen ankommt), beim Nachtragen der Zeit eines Git-Blatts wird countsToPlan beim ersten Eintragen gesetzt. 'projekt', Kommentare und Kunden ohne Wartungs-Abo bekommen keine Vorgabe; ein von Hand abgehakter Haken bleibt aus.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:36:34 +00:00
ClaudeandClaude Sonnet 5.5 5e59ad44bd Kundenliste: Schalter Kundenart fehlt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:32:04 +00:00
ClaudeandClaude Sonnet 5.5 58bb956645 Lead zum festen Kunden nur mit Kundenart
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:28:20 +00:00
ClaudeandClaude Sonnet 5.5 463aaf1066 Kunden: Kundenart ist beim Anlegen Pflicht
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:23:28 +00:00
ClaudeandClaude Sonnet 5.5 cbf4b265e0 Leads: Kundenart ist beim Anlegen Pflicht
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:18:10 +00:00
ClaudeandClaude Sonnet 5.5 45b2b145b0 Kundenart: Prüfung, Texte und Segment-Schalter
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 13:11:52 +00:00
Claude dc4df16cab Buchungskalender: origin/test zusammenführen 2026-10-07 15:48:07 +00:00
ClaudeandClaude Sonnet 5.5 d01a804cea Kontrolle: Projektname in der Projektliste behält overflow-wrap anywhere
Mit break-word weitete ein langer Projektname ohne Umbruchstelle die Seite auf (Handy 390 px);
nur Beträge und Nebenzeilen wechseln zu break-word und nowrap.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:27:06 +00:00
ClaudeandClaude Sonnet 5.5 8faf61e8bb Kontrolle: fehlenden Import useOhneProjektAbs im Rechnungsdialog ergänzt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:23:28 +00:00
ClaudeandClaude Sonnet 5.5 514d1c2d4e Kontrolle: Wortbruch in schmalen Spalten nur noch bei Bedarf, Beträge brechen nie um
overflow-wrap: anywhere wird break-word (Projektname 'Fachanwaltsseiten' bricht nicht mehr
mitten im Wort); Beträge und Stunden der Projektliste stehen auf white-space: nowrap,
damit das Eurozeichen nicht allein steht.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:20:05 +00:00
ClaudeandClaude Sonnet 5.5 4b184f744f Kontrolle: AB ohne Projekt im Rechnungsdialog für Anzahlung und Schluss wählbar
Der Server (rechnungsbau.js, baueAbRechnung) nimmt Anzahlung und Schlussrechnung ohne
Projekt an. Unter 'Ohne Projekt' lädt der Dialog die ABs des Kunden ohne Projekt und
ihre Rechnungen; frei bleibt die Vorgabe.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:19:35 +00:00
ClaudeandClaude Sonnet 5.5 79f230ea2c Kontrolle: Rechnungsdialog zeigt bei Stripe-Ausfall keine Beträge und keine Vorgabe
Bei stripeOk false steht 'Stripe nicht erreichbar – Beträge unbekannt' statt 'bereits berechnet
0,00 €', und es wird keine Rechnungsart vorgeschlagen.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:19:17 +00:00
ClaudeandClaude Sonnet 5.5 07d36f64e9 Kontrolle: Abschnitt Aufträge lädt auch bei ausgefallenen Projektkonten
Scheitert getProjektkonten, wird die Auftragsliste trotzdem geholt; kommt sie, bleibt der
Abschnitt bedienbar und der Fehler der Projekte steht eigens daneben.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:18:03 +00:00
ClaudeandClaude Sonnet 5.5 b556a459bb Kontrolle: Rechnungsdialog weist auf die fehlende Steuernummer hin
Nicht sperrender Hinweis (§ 34a UStDV), solange financeSettings.steuernummer leer ist;
die Einstellungen werden einmal geladen, bei einem Ladefehler erscheint kein Hinweis.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:17:29 +00:00
ClaudeandClaude Sonnet 5.5 dec7bea7d2 Kontrolle: Rechnungsdialog übernimmt das Zahlungsziel der gewählten AB
Bei Anzahlung, Schlussrechnung und Aufwand wird 'Zahlungsziel in Tagen' mit
auftrag.zahlungszielTage vorbelegt (sonst 14); eine Eingabe des Nutzers bleibt.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 15:17:08 +00:00
ClaudeandClaude Sonnet 5.5 b7b3e834f8 Merge auftraege/w2-auftraege: Auftrags-UI (Strang W2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:48:55 +00:00
ClaudeandClaude Sonnet 5.5 05170068bc Merge auftraege/w1-rechnungen: Rechnungs-UI (Strang W1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:48:49 +00:00
ClaudeandClaude Sonnet 5.5 fbd3990e64 Projektkonto: Kommentar in projektkontoView ohne Raute-Beispiel (Hygienesuche)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:46:17 +00:00
ClaudeandClaude Sonnet 5.5 af43c70288 Rechnungsdialog: alter InvoiceCreateModal entfällt, RechnungDialog ersetzt ihn überall
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:46:02 +00:00
ClaudeandClaude Sonnet 5.5 f89ecec8ff Arbeitsblätter: Abzeichen „abgerechnet (Rechnungsnummer)“ für alle, Warnung beim Ändern der Zeit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:45:56 +00:00
ClaudeandClaude Sonnet 5.5 62b64bb357 Auftragsbestaetigung: Prueffunde behoben (Zeilenraster ohne Tabellenrahmen, Radiotexte umbrechen, Auswahl Projekt zuordnen nicht abgeschnitten)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:45:37 +00:00
ClaudeandClaude Sonnet 5.5 65526ca9b3 Rechnungstabelle: Spalten Projekt und Art, Knopf Rechnung schreiben öffnet den neuen Dialog
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:44:40 +00:00
ClaudeandClaude Sonnet 5.5 2aa4abeadb Rechnung schreiben: neuer Dialog mit Projektwahl, Zusammenfassung, Art, Aufwand mit Vorschau, Anzahlung und Schlussrechnung
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:43:17 +00:00
ClaudeandClaude Sonnet 5.5 746244a4a6 Auftragsbestaetigung: Dialog Schritt 4 (Vorschau, Entwurf speichern, Senden mit Rueckfrage und Sperre)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:36:59 +00:00
ClaudeandClaude Sonnet 5.5 5060d150ea Auftragsbestaetigung: Dialog-Schritte 1 bis 3 (Projekt, Auftrag, Zahlung und Termine)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:35:49 +00:00
ClaudeandClaude Sonnet 5.5 8ab78b7b2c Rechnungsdialog: Bausteine für Projektzusammenfassung, Positionen, Vorschauzeilen und Arbeitsblattauswahl
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:35:04 +00:00
ClaudeandClaude Sonnet 5.5 3650573445 Auftragsbestaetigung: Liste mit Status, Zusatzzeilen, Aktionen und Projekt zuordnen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:34:47 +00:00
ClaudeandClaude Sonnet 5.5 6a5f943034 Rechnungsdialog: Zustand mit Reducer, Appwrite-Lesezugriffe und Hooks für Projektkonto, Vorschau und weitere Tickets
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:34:22 +00:00
ClaudeandClaude Sonnet 5.5 8b055a5d42 Auftragsbestaetigung: Listenlogik (Status, Aktionen, Meldungen, Fehlerklassen, Sperre) und PDF-Hilfe mit Tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:33:28 +00:00
ClaudeandClaude Sonnet 5.5 0f1dbabd98 Rechnungsdialog: Anfragekörper, Vorschau-Status, Zeilentexte und Absenden mit Doppelklick-Sperre samt Tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:33:21 +00:00
ClaudeandClaude Sonnet 5.5 e37c0a664e Rechnungsdialog: Logik für Projektwahl, Rechnungsarten, Auftragsbestätigungen und Arbeitsblätter mit Tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:32:20 +00:00
ClaudeandClaude Sonnet 5.5 cc95018083 Projektkonto: Projektliste mit Vereinbart, Berechnet, Noch offen und Zeit, Knöpfe Rechnung und Auftragsbestätigung
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:31:35 +00:00
ClaudeandClaude Sonnet 5.5 45dd73d8cc Auftragsbestaetigung: Dialoglogik (Parser, Validierung, Nutzlast, Zahlungsplan-Vorschau) mit Tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:31:31 +00:00
ClaudeandClaude Sonnet 5.5 241f7cdec6 Projektkonto: Anzeigelogik für Zeilen, Rechnungsspalten und Abzeichen „abgerechnet“ mit Tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:29:30 +00:00
ClaudeandClaude Sonnet 5.5 674cce26f0 Kundenart in der Kunden-Uebersicht und Steuernummer in den Finanz-Einstellungen (Helfer mit Tests)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:28:49 +00:00
ClaudeandClaude Sonnet 5.5 99ab4bd47b Kundenseite: Reiter „Aufträge und Rechnungen“ zeigt den neuen Container, CustomerInvoices entfällt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:25:28 +00:00
ClaudeandClaude Sonnet 5.5 8f90fdc05a Aufträge und Rechnungen: Container des Kundenreiters und vier Platzhalter für W1 und W2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:25:22 +00:00
ClaudeandClaude Sonnet 5.5 e1c9b57249 Aufträge und Rechnungen: frische Kundenart und Rückmeldungen nach Rechnung und Auftrag (mit Tests)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:24:47 +00:00
ClaudeandClaude Sonnet 5.5 312705efc4 Aufträge und Rechnungen: Laden und Ladezustand des Reiters als reine Funktionen (mit Tests)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:24:20 +00:00
ClaudeandClaude Sonnet 5.5 e7bd146641 Kundenreiter „Rechnungen“ heißt jetzt „Aufträge und Rechnungen“ (id bleibt invoices)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:24:03 +00:00
ClaudeandClaude Sonnet 5.5 e116e804e3 Finanzen-API: Projektkonten, Auftragsbestätigungen (samt Projekt zuordnen), Rechnungsvorschau und abgerechnete Arbeitsblätter (Pfade rein und getestet)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:23:39 +00:00
ClaudeandClaude Sonnet 5.5 eaf9fce1bc Finanzen-Anfrage: Dateien lesen (as: 'blob'), z. B. das PDF einer Auftragsbestätigung
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 14:23:05 +00:00
ClaudeandClaude Opus 5.5 d2883018fc Kunden: Reiter "Abgesagt", Absage eintragen und Warnung vor Doppelten
- Kundenliste mit Reiter "Abgesagt" (vorher nur unter "Alle"), rotes Abzeichen,
  Suche auch nach Telefon
- Kundenseite: "Absage eintragen" fuer Leads (Grund freiwillig); Vermerk
  "Abgesagt am TT.MM.JJJJ (Name): Grund" oben in die Notizen, offene
  Akquise-Tickets auf "Abgesagt"; roter Hinweis "nicht erneut anrufen" und
  "Wieder als Lead fuehren"
- Neuer Lead (jetzt mit Telefon) und Neuer Kunde gleichen live mit allen
  Kunden ab (auch archivierte/abgesagte): Name ohne Rechtsform, E-Mail,
  Firmen-Domain (ohne Freemailer), Telefon; Abgesagte rot und zuerst,
  Knopf heisst dann "Trotzdem anlegen"
- Uebersicht wird nach Speichern neu aufgebaut (key), damit kein alter
  Notizstand den Vermerk ueberschreibt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 16:01:21 +00:00
ClaudeandClaude Opus 5.5 5d8130e8ef Tickets: Standardansicht zeigt alle Arten, auch Akquise-Tickets
Bisher startete die Liste mit dem Art-Filter "Auftraege", der Akquise-Tickets
ausschliesst. Neue Kunden bekommen ein Akquise-Ticket, das dann unter Tickets
nicht zu finden war. Standard ist jetzt "Alle Arten"; "Auftraege (ohne Akquise)"
bleibt als Filter waehlbar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:42:02 +00:00
ClaudeandClaude Sonnet 5.5 fa1ce2c4cb Design: Serverpuls-Projekttabelle (Sortierkoepfe und Zeilen als Buttons, Deltas als Farbe)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 14:43:53 +00:00
ClaudeandClaude Sonnet 5.5 ab4a300e70 Design: Serverpuls-Kopf mit Text-Badge, Warnungen als Zeilen, Kacheln als Kennzahlen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 14:43:53 +00:00