siegb.dev

Notes

Things I learned today, in one or two sentences. The bar here is deliberately low. If a note keeps coming back, it graduates into a proper entry.

This month12notes filed

October 2026

  • A pubDate is UTC midnight

    A pubDate like 2026-10-09 parses as UTC midnight, which is 8:00 in Manila, so a post merged earlier that day waits for the next deploy.

    astro
  • clone turns off text-wrap: pretty

    In Chrome, one inline box with box-decoration-break: clone makes its whole paragraph skip text-wrap: pretty. My code chips cloned, so paragraphs with a chip could end on a lone word.

    css
  • Justified text vs code chips

    Browsers justify one line at a time, and a code chip can’t hyphenate or break, so a long chip that won’t fit opens wide gaps in the line before it. My posts are ragged now.

    css
  • Teleporting a cloud session home

    claude --teleport <session-id> pulled a Claude Code cloud session into my Mac’s terminal, with its branch checked out and the whole conversation loaded.

    workflow
  • claude plugin validate audits a mod

    claude plugin validate reads a Claude Code mod’s source and prints every event it handles and every API call it makes, so I run it on any mod before installing it.

    claude-code
  • Linux hands Chrome a substitute font

    On Linux, a font family that isn’t installed can still come back from fontconfig as something else: "Apple Symbols" drew as FreeSans in my figure script. I list the fonts I actually have first.

    fonts
  • The status line JSON already had my limits

    My old bash status line could have shown context use and both plan limits all along: Claude Code’s statusLine JSON carries context_window.used_percentage and rate_limits.

    claude-code
  • Carry the engine's hint row

    At PromptHint, the terminal draws its own hint row above whatever a mod returns, and the engine node in the mod’s tree draws as nothing. Leave it out anyway and the hint row disappears.

    claude-code
  • /clear and a reload forget different things

    /clear empties a mod’s $.state but keeps its module variables, and a hot reload does the opposite. So my status line compares against $.state, never against what it remembers writing.

    claude-code
  • git symbolic-ref works on any git

    git branch --show-current needs git 2.22, while git symbolic-ref -q HEAD names the branch on any version and prints nothing on a detached HEAD.

    git
  • My terminal font had no reload arrow

    MonoLisa, Cascadia Mono and Consolas all lack ↻, so the terminal drew it small from a fallback font. My status line marks a reset with ◷ now.

    fonts
  • $.ui.status isn't a status line

    The mods API’s $.ui.status draws ⚠ my-mod: … in the warning colour, so my status line draws in the hint line under the prompt instead, with ui.render on PromptHint.

    claude-code

September 2026

  • Body's overflow goes to the viewport

    overflow-x: clip on body is handed to the viewport, so body itself clips nothing, and the ghost 07 still let phones scroll sideways. It sits in its own clipping layer now.

    css
  • bun test runs in UTC

    bun test runs in UTC unless TZ is set, so a date helper that read local time instead of UTC still passed. Pinning the test file to America/Los_Angeles makes that mistake fail.

    testing
  • Fontsource subsets download together

    Fontsource’s per-subset CSS files have no unicode-range, so importing latin and latin-ext for one face downloads both. I ship latin only and let the metric-matched fallback cover the rest.

    fonts
  • 1fr has an auto minimum

    A grid track sized 1fr won’t shrink below its content, so one long nowrap note title widened its whole column. min-width: 0 on the column lets it fade out instead.

    css
  • :hover sticks after a tap

    On touch screens a tap leaves :hover applied, so the menu’s gold close button turned ink the moment it opened under my finger. Hover colours live inside @media (hover: hover) now.

    css
  • LCP can be a faint numeral

    I expected the headline to be the new home’s LCP element, but it’s the faint 07 behind it. LCP goes by size, not by how much an element matters.

    performance
  • My redesign loop with Claude Code

    The Colophon redesign runs on one loop with Claude Code: brainstorm, spec, plan, execute. The Claude Design export’s desktop artboards render exactly in headless Chrome, so I check every page against the drawing.

    workflow
  • Tailwind v4 owns .container

    Tailwind v4 ships its own container utility with breakpoint max-widths, and it overrode my .container. The Colophon’s page column is called .frame instead.

    tailwind
  • Headless Chrome won't go narrow

    Headless Chrome won’t lay out a window narrower than about 500px, so a 430px screenshot crops a wider page and fakes an overflow bug. Phone checks set the viewport through Puppeteer instead.

    testing

July 2026

  • Astro 7 backgrounds itself for agents

    Astro 7 notices when a coding agent like Claude Code runs astro dev and moves the server to the background. Under the Cloudflare adapter that crashed on every request, so my dev script sets ASTRO_DEV_BACKGROUND=0.

    astro

June 2026

  • Stop the dev server before building

    A flaky ERR_DISPOSED in astro build got likelier with the dev server running, since two Miniflare runtimes were competing. I stop the dev and preview servers before every build now.

    cloudflare

April 2026

  • No native binaries on Cloudflare

    The Cloudflare adapter builds every route for Workers, prerendered ones too, so @resvg/resvg-js and its native binary can’t be imported in an Astro page. OG images come from a Bun script that runs before astro build.

    cloudflare