Bug: Darstellungsfehler im Texture Tab #82

Closed
opened 2026-09-13 19:08:53 +02:00 by admin · 1 comment
image.png

frame borders und teilweise labels werden außerhalb des viewports angezeigt

<img width="2523" alt="image.png" src="attachments/47918bcf-bbd7-470e-9783-e81738417a3a"> frame borders und teilweise labels werden außerhalb des viewports angezeigt
2.7 MiB
admin added this to the Development project 2026-09-13 19:08:53 +02:00
admin moved this to Next in Development on 2026-09-13 19:09:04 +02:00
admin added the high-priority label 2026-09-13 19:09:21 +02:00
Owner

Umgesetzt in 4f240a5, der Picker-Zwilling in 03c4323, Wiki 8916a38.

Die Ursache war eine andere als "Labels rechnen falsch"

Dein Screenshot zeigt nicht verrutschte Rahmen, sondern eine Maske am falschen Knoten. Im Texture-Tab war nur das Bild maskiert (imageLayer.mask = clip); Schachbrett, Rahmen, Anfasser und Namensplatten hingen ungeclippt daneben und wurden beim Zoomen über die Nachbarpanels gemalt.

Der dunkle Block über der Assets-Liste ist die Grundfläche des Schachbretts: checker.ts zeichnet rect(x, y, w, h) in voller Bildgröße und begrenzt nur die hellen Felder auf das Widget. Gemessen, nicht hergeleitet — die Gegenprobe nennt exakt die Farben aus deinem Bild: #1a1c21 (Schachbrett-Grund) und #4fd18b (Rahmen), dazu drei Framenamen 646 px neben dem Tab.

Fix

Alles, was die Ansicht bewegt, liegt jetzt in einem maskierten Container — genau das Muster, das WorldViewport und AnimationCanvas schon benutzen. Kein Kulling von Hand, keine neue Rechnung. Als Regel im Wiki unter Architecture festgehalten.

Ein zweiter Fund, den erst der Messlauf zeigte

Die Konsole des Laufs trug eine Pixi-Deprecation: der Bild-Picker (+ -> Texture) baut jede Kachel als Graphics mit Kindern — derselbe Fehlgriff, den ich am selben Tag im Font-Picker repariert, dessen Zwilling ich aber stehen gelassen hatte. Ebenfalls behoben, mit derselben Wache wie dort (Konsole leeren, Picker öffnen, keine "Deprecation"-Zeile). Eigener Commit, weil disjunkte Dateien.

Geprüft, nicht behauptet

./check.sh === CHECK EXIT 0 ===, 887 Tests
e2e GM_STEPS=10,12,13 ALL PASSED - 74 Checks (70 + 4 neue), Exit 0, frisch geseedet gegen index-e4RY47p6.js
Angesehen Screenshot der gezoomten Ansicht: Blatt sauber am Tab abgeschnitten, Assets-Panel und Tab-Leiste frei, Konsole ohne Pixi-Warnung
Zähler 784 (CI-Basis 780 aus Task 31 gegengelesen, plus 4)

Eine Gegenprobe, die an drei Stellen beißt (beide Fixes stumpf, neu gebaut): genau 3 FAIL — die Pixelprobe (#1a1c21/#4fd18b neben dem Tab), die Namensprobe (646 px daneben) und die Picker-Wache; die übrigen 71 bleiben grün. Der Screenshot dieses kaputten Laufs ist dein Fehlerbild in klein: Schachbrett über dem ganzen linken Panel, grüne Linien quer durchs Fenster.

Die Wache vor den Pixelproben ist Absicht: ein eigener Check stellt fest, dass das Zoomen das Blatt wirklich über alle Ränder schiebt — ohne ihn würden die Proben nichts messen und ewig grün leuchten.

Ein Fund am Messgerät, der nichts mit dem Bug zu tun hat

Mein erster Beleglauf war rot (19 FAIL) — weil ich e2e.mjs ohne seed-e2e.mjs gefahren habe und er gegen die Reste der Gegenproben lief (16 fertige Frames, #ff00ff statt Textur). Kein Produktfehler; der Lauf oben ist der wiederholte mit frischem Seed.

Offen, aber nicht mitgefixt

GraphCanvas hat denselben Zuschnitt halb: der Knoten-Layer ist maskiert, das band (Marquee und Drop-Vorschau) nicht. Ein Marquee, das über den Rand gezogen wird, malt danach vermutlich über den Inspector. Im Code sichtbar, nicht gemessen — deshalb hier nur als Hinweis statt als stiller Mitfix.

Umgesetzt in **4f240a5**, der Picker-Zwilling in **03c4323**, Wiki **8916a38**. ## Die Ursache war eine andere als "Labels rechnen falsch" Dein Screenshot zeigt nicht verrutschte Rahmen, sondern **eine Maske am falschen Knoten**. Im Texture-Tab war nur das *Bild* maskiert (`imageLayer.mask = clip`); Schachbrett, Rahmen, Anfasser und Namensplatten hingen ungeclippt daneben und wurden beim Zoomen über die Nachbarpanels gemalt. Der dunkle Block über der Assets-Liste ist die **Grundfläche des Schachbretts**: `checker.ts` zeichnet `rect(x, y, w, h)` in voller Bildgröße und begrenzt nur die *hellen* Felder auf das Widget. Gemessen, nicht hergeleitet — die Gegenprobe nennt exakt die Farben aus deinem Bild: `#1a1c21` (Schachbrett-Grund) und `#4fd18b` (Rahmen), dazu drei Framenamen **646 px** neben dem Tab. ## Fix Alles, was die Ansicht bewegt, liegt jetzt in *einem* maskierten Container — genau das Muster, das `WorldViewport` und `AnimationCanvas` schon benutzen. Kein Kulling von Hand, keine neue Rechnung. Als Regel im Wiki unter *Architecture* festgehalten. ## Ein zweiter Fund, den erst der Messlauf zeigte Die Konsole des Laufs trug eine Pixi-Deprecation: **der Bild-Picker** (`+ -> Texture`) baut jede Kachel als `Graphics` mit Kindern — derselbe Fehlgriff, den ich am selben Tag im *Font*-Picker repariert, dessen Zwilling ich aber stehen gelassen hatte. Ebenfalls behoben, mit derselben Wache wie dort (Konsole leeren, Picker öffnen, keine "Deprecation"-Zeile). Eigener Commit, weil disjunkte Dateien. ## Geprüft, nicht behauptet | | | |---|---| | `./check.sh` | `=== CHECK EXIT 0 ===`, **887 Tests** | | e2e `GM_STEPS=10,12,13` | **ALL PASSED - 74 Checks** (70 + 4 neue), Exit 0, frisch geseedet gegen `index-e4RY47p6.js` | | Angesehen | Screenshot der gezoomten Ansicht: Blatt sauber am Tab abgeschnitten, Assets-Panel und Tab-Leiste frei, Konsole ohne Pixi-Warnung | | Zähler | **784** (CI-Basis 780 aus Task 31 gegengelesen, plus 4) | **Eine Gegenprobe, die an drei Stellen beißt** (beide Fixes stumpf, **neu gebaut**): genau **3 FAIL** — die Pixelprobe (`#1a1c21`/`#4fd18b` neben dem Tab), die Namensprobe (646 px daneben) und die Picker-Wache; die übrigen 71 bleiben grün. Der Screenshot dieses kaputten Laufs ist dein Fehlerbild in klein: Schachbrett über dem ganzen linken Panel, grüne Linien quer durchs Fenster. Die Wache **vor** den Pixelproben ist Absicht: ein eigener Check stellt fest, dass das Zoomen das Blatt wirklich über alle Ränder schiebt — ohne ihn würden die Proben nichts messen und ewig grün leuchten. ## Ein Fund am Messgerät, der nichts mit dem Bug zu tun hat Mein erster Beleglauf war rot (19 FAIL) — weil **ich** `e2e.mjs` ohne `seed-e2e.mjs` gefahren habe und er gegen die Reste der Gegenproben lief (16 fertige Frames, `#ff00ff` statt Textur). Kein Produktfehler; der Lauf oben ist der wiederholte mit frischem Seed. ## Offen, aber nicht mitgefixt `GraphCanvas` hat denselben Zuschnitt **halb**: der Knoten-Layer ist maskiert, das `band` (Marquee und Drop-Vorschau) nicht. Ein Marquee, das über den Rand gezogen wird, malt danach vermutlich über den Inspector. Im Code sichtbar, **nicht gemessen** — deshalb hier nur als Hinweis statt als stiller Mitfix.
admin moved this to Done in Development on 2026-09-13 21:18:45 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#82