diff --git a/public/banners/authentik-css-greater-than-bug.png b/public/banners/authentik-css-greater-than-bug.png new file mode 100644 index 0000000..891abea Binary files /dev/null and b/public/banners/authentik-css-greater-than-bug.png differ diff --git a/public/og/authentik-css-greater-than-bug.png b/public/og/authentik-css-greater-than-bug.png new file mode 100644 index 0000000..b4f355e Binary files /dev/null and b/public/og/authentik-css-greater-than-bug.png differ diff --git a/scripts/banner-gen/generate.mjs b/scripts/banner-gen/generate.mjs index b4e60fa..1ca03f0 100644 --- a/scripts/banner-gen/generate.mjs +++ b/scripts/banner-gen/generate.mjs @@ -1220,6 +1220,74 @@ BANNERS['five-step-ai-roadmap-what-i-actually-run'] = { ], }; +BANNERS['calibrating-intel-quick-sync-hevc-quality'] = { + titlebar: "unraid - qsv calibration", + lines: [ + { t: 'prompt', text: "$" }, { t: 'cmd', text: "library_run.py --tier qsv --force-tier qsv" }, + { t: 'dim', text: "host UHD 770 idle - the Win11 VM only has the 3060" }, { t: 'dim', text: "sources read-only over SMB - sha256 unchanged" }, + { t: 'err', text: "ICQ 18/20/22 FAIL size: 176.8% / 141.8% / 107.6%" }, { t: 'prompt', text: "$" }, + { t: 'cmd', text: "ICQ 26 -preset medium" }, { t: 'ok', text: "61.0% of source video - mean SSIM 0.9960 - 5.6x realtime" }, + { t: 'hl', text: "cliff between 28 and 30 - fast == medium, byte for byte" }, { t: 'dim', text: "shipped: qsv_quality = 26, qsv_preset = medium" }, + ], + flow: [ + { n: '1', label: "prove the iGPU" }, + { n: '2', label: "rank on excerpts" }, + { n: '3', label: "confirm full files" }, + { n: '4', label: "ship 26 / medium" }, + ], +}; + +BANNERS['docker-reported-exit-0-the-oom-killer-disagreed'] = { + titlebar: "root@nas - the oom killer", + lines: [ + { t: 'prompt', text: "$" }, { t: 'cmd', text: "docker logs traefik-hide-v2ray" }, + { t: 'dim', text: "notification: container stopped unexpectedly" }, { t: 'err', text: "docker inspect: ExitCode 0, OOMKilled=false" }, + { t: 'prompt', text: "$" }, { t: 'cmd', text: "dmesg | grep -i oom-killer" }, + { t: 'ok', text: "Memory cgroup out of memory: Kill process 615 (traefik)" }, { t: 'hl', text: "25,976 IPs / 50k lines - 33,636x403 - 16,082x429" }, + { t: 'dim', text: "512M -> 2g + memswap_limit 2g (swap off on purpose)" }, { t: 'dim', text: "peak 18 min later: 210 MB - a stopgap, not a fix" }, + ], + flow: [ + { n: '1', label: "read Docker state" }, + { n: '2', label: "read dmesg" }, + { n: '3', label: "count the flood" }, + { n: '4', label: "raise the cap" }, + ], +}; + +BANNERS['the-dialog-opened-in-7-seconds-my-script-waited-5'] = { + titlebar: "root@win11 - the dialog was open", + lines: [ + { t: 'prompt', text: "$" }, { t: 'cmd', text: "cron linkedin-daily-post" }, + { t: 'dim', text: "dialog +1.8s - buttons +2.8s - editor +7.2s" }, { t: 'err', text: "script slept 5s, looked once: 'dialog did not open'" }, + { t: 'prompt', text: "$" }, { t: 'cmd', text: "poll(node=editor, timeout=40s)" }, + { t: 'ok', text: "submitted - the composer closing is the proof" }, { t: 'hl', text: "click ignored 75s, identical click accepted in 2s" }, + { t: 'dim', text: "13 tests pin the staged mount + the swallowed click" }, { t: 'dim', text: "72h approval TTL vs a 12-day queue: silent ticks" }, + ], + flow: [ + { n: '1', label: "click start a post" }, + { n: '2', label: "poll for the editor" }, + { n: '3', label: "submit once" }, + { n: '4', label: "confirm it closed" }, + ], +}; + +BANNERS['authentik-css-greater-than-bug'] = { + titlebar: "auth.hoelee.com - brand css", + lines: [ + { t: 'prompt', text: "$" }, { t: 'cmd', text: "authentik - System - Brands - Custom CSS" }, + { t: 'dim', text: "rule accepted, stored, injected, served, parsed" }, { t: 'err', text: "ul.pf-c-list > li:last-child - no effect" }, + { t: 'prompt', text: "$" }, { t: 'cmd', text: "document.styleSheets brand-css cssRules" }, + { t: 'ok', text: "ul.pf-c-list u003e li - the > became literal text" }, { t: 'hl', text: "invalid selector in a list = the whole rule is discarded" }, + { t: 'dim', text: "fix: a descendant selector, one character deleted" }, + ], + flow: [ + { n: '1', label: "rule it out: shadow DOM" }, + { n: '2', label: "grep the injected css" }, + { n: '3', label: "blame specificity" }, + { n: '4', label: "read cssRules" }, + ], +}; + // ---------- read frontmatter ---------- const postPath = join(ROOT, 'src', 'content', 'posts', `${slug}.md`); let category = 'devops'; diff --git a/scripts/og-gen/generate.mjs b/scripts/og-gen/generate.mjs index 82c4a83..4316d9b 100644 --- a/scripts/og-gen/generate.mjs +++ b/scripts/og-gen/generate.mjs @@ -372,6 +372,26 @@ TERMINALS['five-step-ai-roadmap-what-i-actually-run'] = `