fix(store): widen defringe threshold to remove 1px white edge halo - #4
Merged
Merged
Conversation
Zweite Nachreview-Runde (merge-reviewer, claude-opus) zu PR #3 (edcb8fa): Motiv war korrekt (Vollflaeche, unversehrt), Ecken transparent, Wide ohne opake Ecken -- aber auf dunklem Grund blieb ein heller 1px-Saum an der Rundung (gemessen: Square310 204 Randpixel Alpha>=192 mit Luminanz auf Schwarz bis 216, Wide 183 Pixel). Ursache: Der Antialiasing-Uebergang zwischen Canvas-Hintergrund und solider Motivfarbe ist am Rand der abgerundeten Ecke nur 1 Pixel breit, hat aber eine Farbdistanz von ~97 zum Hintergrund (gemessen auf einer Diagonale nahe der Ecke) -- der bisherige bg_thresh von 60 liess dieses Pixel unverarbeitet (voll opak, urspruengliche helle Mischfarbe) zurueck. Fix: bg_thresh auf 150 angehoben (deutlich ueber der gemessenen Uebergangsdistanz ~97, deutlich unter der Distanz zur soliden Motivfarbe >300) -- damit erfasst Un-Premultiply den kompletten Uebergang. Verifiziert: schlimmster verbleibender Wert ueber alle 5 Kacheln liegt bei Luminanz 160 auf Schwarz (vorher bis 216), visuell an der Ecke sauber (siehe Kontaktbogen im PR-Kommentar). Regressionstest erweitert: test_store_tiles_have_transparent_corners komponiert jedes teiltransparente Randpixel auf Schwarz und prueft eine Luminanzgrenze, damit dieser Fehler kuenftig auffaellt statt nur visuell im Review. Dieser Branch wurde frisch von aktuellem master (13dd6cd, nach Merge von PR #2) erstellt statt PR #3 fortzufuehren, um einen Force-Push zu vermeiden. `_review/` (Kontaktbogen im Repo) wurde NICHT wieder eingefuegt -- der Kontaktbogen kommt als eingebettetes Bild im PR-Kommentar, nicht als Repo-Datei. Verifiziert: 35/35 gezielte Tests (assets/icons, store_materials, metadata_contract) gruen; Vollsuite lief bis 80% sichtbar sauber durch (Log-Abschneidung durch Backgrounding, exit code 0). Ersetzt PR #3. Ticket T-20260820-729932431, T-20260926-902661741.
|
Welcome! Thanks for your first pull request in this repository. A maintainer will review it soon. Please make sure:
Thanks for contributing. |
lukisch
commented
Sep 26, 2026
lukisch
left a comment
Collaborator
Author
There was a problem hiding this comment.
Review (merge-reviewer, claude-opus) auf Head 7cdf9ec: inhaltlich bestanden, ein kleiner Blocker (Lint).
Nachgemessen mit derselben Methode wie bei #3 (Randpixel mit transparentem Nachbarn, auf Schwarz komponiert, 6-fach-Vergrößerung der Ecke):
- Saum weg: Die Randluminanz auf Schwarz liegt bei max. 136–157 je nach Kachel (vorher 194–216). Helle, fast opake Randpixel gibt es nur noch 1–4 je Kachel (vorher bis 204). In der Vergrößerung zeigt sich eine dunkelblaue Kontur ohne weiße Linie.
- Motiv unversehrt: Gegenüber dem Original (aee6401~1) ist kein einziges Motivpixel verändert (0 von 77 300 bei 310, entsprechend bei allen Größen). Alle hellen Pixel im Innenbereich (Ordnerlasche, Weg; 8 579 bei 310) sind bitgleich zum Original. Der höhere Schwellwert frisst also nichts vom Motiv.
- Ecken Alpha 0–2, Wide auch im Mittelfeld transparent.
- Version 1.0.7 ist durchgängig (pyproject, store_package 1.0.7.0, CLAUDE.md, llms.txt, beide READMEs, Contract-Tests). Der CHANGELOG-Eintrag beschreibt den Verlauf korrekt, der 1.0.6-Eintrag benennt den bekannten Mangel.
- Kein
_review/im PR. Lokal 365 passed / 2 skipped, neuer Luminanztest inklusive.
Blocker: Die CI ist rot durch Ruff E401 in der neuen Datei scripts/defringe_store_tile.py:14 (import sys, math), eingeführt durch diesen PR. Bitte aufteilen (import math / import sys), dann ist es merge-bereit.
Hinweis: Den Branch review-assets (3dc8205) nach dem Merge wie angekündigt löschen.
This was referenced Sep 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ersetzt PR #3 (nicht rebased/force-pushed, sondern frischer Branch von aktuellem master nach Merge von #2, um Historie sauber zu halten). Ticket T-20260820-729932431, T-20260926-902661741.
Kontext
merge-reviewer (claude-opus) hat PR #3 (
edcb8fa) geprüft: Motiv korrekt (Vollfläche, unversehrt), Ecken transparent,Wide310x150Logoohne opake Ecken — aber auf dunklem Grund blieb ein heller 1px-Saum an der Rundung. Gemessen:Square310x310Logo204 Randpixel mit Alpha ≥ 192 und Luminanz auf Schwarz bis 216,Wide310x150Logo183 Pixel.Ursache
Der Antialiasing-Übergang zwischen Canvas-Hintergrund und solider Motivfarbe ist am Rand der abgerundeten Ecke nur 1 Pixel breit, hat aber eine Farbdistanz von ~97 zum Hintergrund (gemessen auf einer Diagonale nahe der Ecke: Hintergrund-Distanz ~1–2 bis Pixel 14, Sprung auf 97 bei Pixel 16, dann >300 ab Pixel 18 = solide Motivfarbe). Der bisherige
bg_threshvon 60 im Freistellungs-Tool ließ genau dieses Übergangspixel unverarbeitet — voll opak, mit seiner ursprünglichen hellen Mischfarbe.Fix
bg_threshinscripts/defringe_store_tile.pyauf 150 angehoben (über der gemessenen Übergangsdistanz ~97, deutlich unter der Distanz zur soliden Motivfarbe >300).test_store_tiles_have_transparent_cornerserweitert: komponiert jedes teiltransparente Randpixel auf Schwarz und prüft eine Luminanzgrenze (200), damit dieser Fehler künftig automatisch auffällt statt nur im visuellen Review.Kontaktbogen (nicht im Repo, per Orphan-Branch
review-assetsgehostet — kein Merge-Ziel)Gesamtübersicht (5 Größen × Weiß/Schwarz/Grau/Akzentgrün):

Vergrößerung der abgerundeten Ecke auf Schwarz (Square310, 6×):

review-assetsist ein orphan Branch ohne Bezug zumaster— wird nach Abschluss des Reviews gelöscht, taucht in keiner Merge-Historie auf.Verifikation
test_assets_and_icons.py,test_store_materials.py,test_metadata_contract.py— 35/35 passed.Nicht selbst mergen (Zwei-Modell-Regel + vorheriger Direkt-Push-Vorfall). Keine Einreichung ohne ausdrückliche Freigabe des Team-Leads, und erst nachdem 1.0.6 die Zertifizierung durchlaufen hat.