Site: the devlog, the blog's roro9stack posts in the site's style; Devlog replaces Blog in the navigation
Site / build (pull_request) Successful in 9s

Seven posts imported into site/content/devlog/ with their text unchanged,
links between them pointing to /devlog/, and shortcodes (sign, cast, steps,
asides, folded sections, diagrams, captions) restyled in the site's palette.
The 17 inline SVG diagrams carried <style> blocks and style attributes the
site's Content-Security-Policy refuses: their rules moved to
devlog-diagrams.css, and a diagram's minimum width is a class. An Atom feed
at /devlog/atom.xml.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
2026-10-06 20:51:33 +02:00
co-authored by Claude Sonnet 5.5
parent 2729f2e218
commit 6e54658ba4
61 changed files with 2832 additions and 4 deletions
@@ -0,0 +1,37 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 260" role="img" aria-label="Reading a page bigger than memory. On the card, the page's file of 419 lines. Opening it, one pass records where every 64th line starts, and whether it's inside a preformatted block: 7 entries, 4 bytes each. In memory, a window of about 226 lines, of which the screen shows 8 rows. Scrolling near the end of the window asks for the next window, starting at the index entry before the line on top, so what's on screen stays; near the top, the previous one.">
<defs>
<marker id="gw-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="currentColor"/></marker>
</defs>
<g font-family="JetBrains Mono, ui-monospace, monospace" fill="currentColor">
<text x="16" y="24" font-size="12" font-weight="600">on the card: the page, 419 lines</text>
<rect class="gw-box" x="16" y="36" width="728" height="34" rx="4"/>
<!-- 419 lines over 728 px: 1.737 px a line; ticks every 64 lines (111 px) -->
<g>
<line class="gw-tick" x1="16" y1="70" x2="16" y2="80"/><line class="gw-tick" x1="127" y1="70" x2="127" y2="80"/>
<line class="gw-tick" x1="238" y1="70" x2="238" y2="80"/><line class="gw-tick" x1="349" y1="70" x2="349" y2="80"/>
<line class="gw-tick" x1="461" y1="70" x2="461" y2="80"/><line class="gw-tick" x1="572" y1="70" x2="572" y2="80"/>
<line class="gw-tick" x1="683" y1="70" x2="683" y2="80"/>
</g>
<g font-size="10" class="gw-dim" text-anchor="middle">
<text x="16" y="92">0</text><text x="127" y="92">64</text><text x="238" y="92">128</text><text x="349" y="92">192</text>
<text x="461" y="92">256</text><text x="572" y="92">320</text><text x="683" y="92">384</text>
</g>
<text x="16" y="112" font-size="11" class="gw-dim">index: where every 64th line starts (and if it's in a ``` block): 7 x 4 bytes</text>
<rect class="gw-hot" x="349" y="38" width="393" height="30" rx="3"/>
<rect class="gw-screen" x="420" y="40" width="14" height="26"/>
<text x="356" y="58" font-size="10">in memory: lines 192 to 419</text>
<text x="16" y="150" font-size="12" font-weight="600">in memory: one window</text>
<rect class="gw-hot" x="16" y="160" width="460" height="40" rx="6"/>
<rect class="gw-screen" x="96" y="164" width="70" height="32" rx="3"/>
<text x="104" y="184" font-size="10">screen</text>
<text x="180" y="185" font-size="11">~226 lines, as text in 4 KB chunks</text>
<path class="gw-line" d="M476 180 H520" marker-end="url(#gw-arrow)"/>
<text x="528" y="176" font-size="11">near the end: the next window,</text>
<text x="528" y="192" font-size="11" class="gw-dim">from the index entry before the</text>
<text x="528" y="208" font-size="11" class="gw-dim">line on top, so the screen stays</text>
<text x="16" y="236" font-size="11" class="gw-dim">Near the top: the previous one. The scrollbar follows the line, over the whole page.</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB