From 36cbdd061dd80f6dcba306bbb46eb79dfe94f764 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Wed, 11 Nov 2026 01:56:24 -0500 Subject: [PATCH] Rack: brush panel holds up at rack size The bristles were hundreds of hard strands, which aliased into flat stripes at normal rack size. Each row is now shaded root to tip with a faint strand texture over it, so the panel looks the same at any size. Co-Authored-By: Claude Opus 5.5 --- static/fronts.js | 20 +++++++++++++++----- static/style.css | 3 ++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/static/fronts.js b/static/fronts.js index 63dc928..77db066 100644 --- a/static/fronts.js +++ b/static/fronts.js @@ -120,17 +120,25 @@ const RACK_FRONTS = { 'uacc-brush-1u': { label: 'UniFi Rack Panel Brush 1U (UACC-Rack-Panel-Brush-1U)', units: 1, width: 1100, height: 105, draw() { - // Bristle tufts: thin strands of varying shade, deterministic so the drawing never flickers - const strands = (y0, y1, seed) => Array.from({ length: 300 }, (_, i) => { + // Bristles: each row is shaded root to tip (dark where it leaves the frame, lighter where the + // two rows meet), with a faint strand texture on top. Strong individual strands alias into hard + // stripes at rack size, so the texture stays low-contrast and the shading carries the look. + const strands = (y0, y1, seed) => Array.from({ length: 160 }, (_, i) => { const n = (i * 7919 + seed * 104729) % 97; - return ``; + return ``; }).join(''); const slot = x => ` `; return ` + + + + + + @@ -142,8 +150,10 @@ const RACK_FRONTS = { + + ${strands(31, 53, 1)}${strands(54, 76, 2)} - `; + `; }, }, diff --git a/static/style.css b/static/style.css index 09dcfd0..23dcd59 100644 --- a/static/style.css +++ b/static/style.css @@ -1646,4 +1646,5 @@ body.fp-marks-off .fp-svg .fp-mark { display: none; } .ub-frame-shadow { fill: #8c8e93; } .ub-frame-bevel { fill: #f1f2f3; } .ub-opening { fill: #0d0e10; } -.ub-seam { fill: #050506; } +.ub-seam { fill: #050506; opacity: .8; } +.ub-strand { fill: #000; }