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>
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>
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>
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>
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>
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>
Der Aktivieren-Dialog von Terminplaner, Webshop und Buchungskalender bietet als Weg zusätzlich WhatsApp an (Portal nimmt whatsapp an). Die Website-Analyse bleibt bei Chat oder E-Mail.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
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>
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>
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>
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>
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>
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>