<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>开发日志 — Writing</title>
    <description>Web, AI and automation. Notes from practice.</description>
    <link>https://delvecraft.top/blog</link>
    <language>en</language>
    <atom:link href="https://delvecraft.top/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pointer-responsive glass needs boundaries</title>
      <link>https://delvecraft.top/blog/pointer-glass-with-boundaries</link>
      <guid isPermaLink="true">https://delvecraft.top/blog/pointer-glass-with-boundaries</guid>
      <pubDate>Thu, 12 Nov 2026 00:00:00 GMT</pubDate>
      <description>Local coordinates, separate decorative layers, and explicit stop conditions keep a small glass interaction manageable.</description>
      <category>Web</category>
      <category>Interaction Design</category>
      <category>Performance</category>
    </item>
    <item>
      <title>From source material to a blog post</title>
      <link>https://delvecraft.top/blog/local-writing-static-publishing</link>
      <guid isPermaLink="true">https://delvecraft.top/blog/local-writing-static-publishing</guid>
      <pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate>
      <description>Let an agent verify and organize source material into Markdown, then use the web editor to review, illustrate, and publish it.</description>
      <category>astro</category>
      <category>Content Management</category>
    </item>
    <item>
      <title>A missing card does not make a draft private</title>
      <link>https://delvecraft.top/blog/drafts-need-route-boundaries</link>
      <guid isPermaLink="true">https://delvecraft.top/blog/drafts-need-route-boundaries</guid>
      <pubDate>Tue, 10 Nov 2026 00:00:00 GMT</pubDate>
      <description>Draft filtering must cover detail routes, feeds, and language links, with separate checks for old output and public images.</description>
      <category>astro</category>
      <category>Content Management</category>
    </item>
    <item>
      <title>Write the stop conditions before the animation</title>
      <link>https://delvecraft.top/blog/animation-needs-stop-conditions</link>
      <guid isPermaLink="true">https://delvecraft.top/blog/animation-needs-stop-conditions</guid>
      <pubDate>Mon, 09 Nov 2026 00:00:00 GMT</pubDate>
      <description>Treat a frame loop as a resource that wakes, settles, and is released when it is no longer useful.</description>
      <category>Web</category>
      <category>Interaction Design</category>
      <category>Performance</category>
    </item>
    <item>
      <title>Content images need a stable path and useful context</title>
      <link>https://delvecraft.top/blog/content-images-need-context</link>
      <guid isPermaLink="true">https://delvecraft.top/blog/content-images-need-context</guid>
      <pubDate>Sun, 08 Nov 2026 00:00:00 GMT</pubDate>
      <description>Keep uploads portable, distinguish informative images from decoration, and account for unoptimized public assets.</description>
      <category>Web</category>
      <category>Content Management</category>
    </item>
    <item>
      <title>Building a bilingual site on Astro 7: the parts nobody warns you about</title>
      <link>https://delvecraft.top/blog/astro-7-bilingual-site</link>
      <guid isPermaLink="true">https://delvecraft.top/blog/astro-7-bilingual-site</guid>
      <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
      <description>Astro makes i18n look like a config flag. The config is the easy part — here are the four things that actually broke.</description>
      <category>astro</category>
      <category>i18n</category>
      <category>seo</category>
    </item>
  </channel>
</rss>
