<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>@agntn/puzzles changelog</title>
    <link>https://puzzles.agntn.dev/changelog</link>
    <atom:link href="https://puzzles.agntn.dev/changelog.xml" rel="self" type="application/rss+xml"/>
    <description>Every release of @agntn/puzzles: new puzzles and collections, solves, fixes and breaking changes.</description>
    <language>en</language>
    <lastBuildDate>Fri, 25 Sep 2026 15:24:57 GMT</lastBuildDate>
    <item>
      <title>v0.23.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-23-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.23.0</guid>
      <pubDate>Fri, 25 Sep 2026 15:24:57 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.22.0...v0.23.0&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Archive quizchain blocks 2 to 5 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/265&quot;&gt;#265&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Sortable rosters on UTable (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/267&quot;&gt;#267&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;errors:&lt;/strong&gt; Did you mean b1000/135? (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/268&quot;&gt;#268&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add ktimesg (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/271&quot;&gt;#271&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Iamabananaamaa GIF puzzle (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/273&quot;&gt;#273&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Landing roster of collections (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/274&quot;&gt;#274&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Wickex YouTube puzzle (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/275&quot;&gt;#275&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Verify console on the landing (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/277&quot;&gt;#277&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add iamabananaamaa/caesar (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/279&quot;&gt;#279&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Serve mcp from src inside a checkout (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/281&quot;&gt;#281&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Record file on the console shell (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/283&quot;&gt;#283&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add picture_puzzle (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/284&quot;&gt;#284&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain/6 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/287&quot;&gt;#287&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain/7 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/289&quot;&gt;#289&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Landing registry as a manifest map (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/290&quot;&gt;#290&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain/8 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/291&quot;&gt;#291&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Custom collection panel in two files (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/293&quot;&gt;#293&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;registry:&lt;/strong&gt; Type built-in collection lookups (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/295&quot;&gt;#295&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; One design system across the site (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/296&quot;&gt;#296&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Reject an empty collection filter (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/280&quot;&gt;#280&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; AoiNakamoto asked r/Bitcoin (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/282&quot;&gt;#282&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;parts:&lt;/strong&gt; Mark keys rebuilt from a recipe (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/294&quot;&gt;#294&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactors&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;dataset:&lt;/strong&gt; Drop @noble/hashes (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/269&quot;&gt;#269&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;verify:&lt;/strong&gt; &lt;strong&gt;Breaking:&lt;/strong&gt; Rename verifyPuzzle to verify (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/288&quot;&gt;#288&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Chore&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Apply automated updates (&lt;a href=&quot;https://github.com/agntn/puzzles/commit/515377e&quot;&gt;515377e&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Tests&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;fixtures:&lt;/strong&gt; Give the refresh tests 30 s (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/286&quot;&gt;#286&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.22.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-22-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.22.0</guid>
      <pubDate>Wed, 23 Sep 2026 20:34:08 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.21.3...v0.22.0&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Zden/level_5 claimed (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/254&quot;&gt;#254&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Puzzle lists join the instruments (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/255&quot;&gt;#255&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain/4 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/258&quot;&gt;#258&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain/5 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/260&quot;&gt;#260&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; One dossier per puzzle page (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/262&quot;&gt;#262&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Performance&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;verify:&lt;/strong&gt; &lt;strong&gt;Breaking:&lt;/strong&gt; Load keys on the first verification (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/259&quot;&gt;#259&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Zden/demobit_2018 has no capture (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/253&quot;&gt;#253&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Pin example results to the dataset (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/256&quot;&gt;#256&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Counts come from the library (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/261&quot;&gt;#261&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Build&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Lint, test and pack through Vite+ (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/252&quot;&gt;#252&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.21.3</title>
      <link>https://puzzles.agntn.dev/changelog#v0-21-3</link>
      <guid isPermaLink="false">@agntn/puzzles@0.21.3</guid>
      <pubDate>Tue, 22 Sep 2026 20:45:51 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.21.2...v0.21.3&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Playground on the dossier instruments (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/238&quot;&gt;#238&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Page a long list (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/239&quot;&gt;#239&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add book_quiz (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/241&quot;&gt;#241&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; The playground runs the author tools (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/242&quot;&gt;#242&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Archive the satoshi_birthday_quiz thread (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/243&quot;&gt;#243&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/246&quot;&gt;#246&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Collection pages open on a dossier (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/247&quot;&gt;#247&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain/2 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/250&quot;&gt;#250&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add quizchain/3 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/251&quot;&gt;#251&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Dust prints as 1e-8 (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/244&quot;&gt;#244&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;The skill follows the hint contract (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/245&quot;&gt;#245&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Skills ask the tools and ship with the package (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/248&quot;&gt;#248&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.21.2</title>
      <link>https://puzzles.agntn.dev/changelog#v0-21-2</link>
      <guid isPermaLink="false">@agntn/puzzles@0.21.2</guid>
      <pubDate>Tue, 22 Sep 2026 14:11:59 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.21.1...v0.21.2&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Credit Level 4's winner (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/224&quot;&gt;#224&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Codex key from Zden (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/225&quot;&gt;#225&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Browse puzzles without repeats (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/227&quot;&gt;#227&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;dataset:&lt;/strong&gt; List the puzzles of one chain (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/228&quot;&gt;#228&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;dataset:&lt;/strong&gt; Look a puzzle up by its address (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/230&quot;&gt;#230&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add mineshop (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/231&quot;&gt;#231&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add satoshi_birthday_quiz (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/236&quot;&gt;#236&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;authors:&lt;/strong&gt; Sourced records, one page each (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/237&quot;&gt;#237&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;balance:&lt;/strong&gt; 18 decimals outrun a double (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/229&quot;&gt;#229&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;errors:&lt;/strong&gt; A miss names what does exist (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/232&quot;&gt;#232&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Overlapping imports lose the dataset (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/234&quot;&gt;#234&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Preserve the cited source tweets (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/226&quot;&gt;#226&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.21.1</title>
      <link>https://puzzles.agntn.dev/changelog#v0-21-1</link>
      <guid isPermaLink="false">@agntn/puzzles@0.21.1</guid>
      <pubDate>Mon, 21 Sep 2026 21:49:04 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.21.0...v0.21.1&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; TORCHED H34R7S painting (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/215&quot;&gt;#215&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Give tool results a compact panel (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/216&quot;&gt;#216&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; White paper wallet key (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/219&quot;&gt;#219&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Movie Enigma's original rules (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/222&quot;&gt;#222&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Say what each list status means (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/217&quot;&gt;#217&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; A missing id was loading keys (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/218&quot;&gt;#218&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;registry:&lt;/strong&gt; Retain loader registrations (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/220&quot;&gt;#220&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;verify:&lt;/strong&gt; Hex must not change a WIF verdict (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/221&quot;&gt;#221&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Chore&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Apply automated updates (&lt;a href=&quot;https://github.com/agntn/puzzles/commit/2369ec1&quot;&gt;2369ec1&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.21.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-21-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.21.0</guid>
      <pubDate>Mon, 21 Sep 2026 12:15:57 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.20.3...v0.21.0&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Dug's student treasure hunt (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/204&quot;&gt;#204&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Genesis wallet and its hints (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/206&quot;&gt;#206&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Refresh landing fixtures (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/211&quot;&gt;#211&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; RushWallet's missing video hint (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/214&quot;&gt;#214&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Performance&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Speed up discovery and stats (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/213&quot;&gt;#213&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactors&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; &lt;strong&gt;Breaking:&lt;/strong&gt; Reserve solver for people (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/203&quot;&gt;#203&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.20.3</title>
      <link>https://puzzles.agntn.dev/changelog#v0-20-3</link>
      <guid isPermaLink="false">@agntn/puzzles@0.20.3</guid>
      <pubDate>Sun, 20 Sep 2026 14:35:40 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.20.2...v0.20.3&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Decred Autonomy puzzle (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/197&quot;&gt;#197&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Janus 33*bbb hint (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/199&quot;&gt;#199&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; LuckyLurker vaults and hints (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/202&quot;&gt;#202&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;dataset:&lt;/strong&gt; Keep export hashes consistent (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/195&quot;&gt;#195&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;verify:&lt;/strong&gt; Skip unsupported address kinds (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/196&quot;&gt;#196&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; 1bitcoin claim was 777 sats (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/201&quot;&gt;#201&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Pin prose counts to the registry (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/200&quot;&gt;#200&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.20.2</title>
      <link>https://puzzles.agntn.dev/changelog#v0-20-2</link>
      <guid isPermaLink="false">@agntn/puzzles@0.20.2</guid>
      <pubDate>Sat, 19 Sep 2026 20:25:06 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.20.1...v0.20.2&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;docs:&lt;/strong&gt; Collection pages list their hints (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/186&quot;&gt;#186&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Zden/level_5 hints (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/187&quot;&gt;#187&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Add a hints command (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/188&quot;&gt;#188&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Zden hints the author published (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/189&quot;&gt;#189&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Zden solver images (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/192&quot;&gt;#192&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add ledger_donjon (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/193&quot;&gt;#193&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;dataset:&lt;/strong&gt; Collection rows count every status (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/190&quot;&gt;#190&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Hints report the hint assets too (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/191&quot;&gt;#191&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;dataset:&lt;/strong&gt; Handle non-string puzzle ids (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/194&quot;&gt;#194&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.20.1</title>
      <link>https://puzzles.agntn.dev/changelog#v0-20-1</link>
      <guid isPermaLink="false">@agntn/puzzles@0.20.1</guid>
      <pubDate>Sat, 19 Sep 2026 13:41:44 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/agntn/puzzles/compare/v0.20.0...v0.20.1&quot;&gt;Compare changes&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add movie_enigma (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/178&quot;&gt;#178&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Record hints and what confirms them (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/183&quot;&gt;#183&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; B1000 carries its author's hint (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/185&quot;&gt;#185&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Show the whole record in puzzles_show (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/162&quot;&gt;#162&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;chains:&lt;/strong&gt; Check txids through @agntn/chains (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/163&quot;&gt;#163&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Print domain errors as one line (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/164&quot;&gt;#164&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;parts:&lt;/strong&gt; Make the Key builder immutable (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/166&quot;&gt;#166&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Freeze the record a factory builds (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/170&quot;&gt;#170&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;dataset:&lt;/strong&gt; Memoized views refuse a rewrite (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/173&quot;&gt;#173&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collection:&lt;/strong&gt; Resolve only canonical queries (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/176&quot;&gt;#176&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Keep the verify crypto out of --help (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/179&quot;&gt;#179&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;tools:&lt;/strong&gt; Link the hints and the solver asset (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/180&quot;&gt;#180&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactors&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;verify:&lt;/strong&gt; Let @agntn/keys derive addresses (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/165&quot;&gt;#165&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Chore&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add &lt;code&gt;renovate.json&lt;/code&gt; (&lt;a href=&quot;https://github.com/agntn/puzzles/commit/9a47cd9&quot;&gt;9a47cd9&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Remove &lt;code&gt;CLAUDE.md&lt;/code&gt; (&lt;a href=&quot;https://github.com/agntn/puzzles/commit/da6bde5&quot;&gt;da6bde5&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;CI&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;publish:&lt;/strong&gt; Install the docs before pnpm test (&lt;a href=&quot;https://github.com/agntn/puzzles/pull/161&quot;&gt;#161&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.20.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-20-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.20.0</guid>
      <pubDate>Fri, 18 Sep 2026 09:36:52 GMT</pubDate>
      <description>&lt;h3&gt;Changed&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Rename the package to &lt;code&gt;@agntn/puzzles&lt;/code&gt; and the binary to &lt;code&gt;puzzles&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Rewrite the package as an ESM TypeScript library built around classes.&lt;/li&gt;&lt;li&gt;Define puzzles as typed &lt;code&gt;PuzzleSpec&lt;/code&gt; records built by a factory per chain and read through &lt;code&gt;Puzzle&lt;/code&gt; methods. Collections hold the resulting instances.&lt;/li&gt;&lt;li&gt;Read puzzle fields through methods: &lt;code&gt;puzzle.address()&lt;/code&gt; instead of &lt;code&gt;puzzle.address&lt;/code&gt;, and the same for every other field.&lt;/li&gt;&lt;li&gt;Serialize without null placeholders. Absent data means no key at all, which also drops &lt;code&gt;address.chain&lt;/code&gt; and the always-empty &lt;code&gt;witness_program&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Build addresses, keys, transactions, assets, and parties with constructors from &lt;code&gt;src/core/parts.ts&lt;/code&gt;, including a chained &lt;code&gt;Key&lt;/code&gt; builder.&lt;/li&gt;&lt;li&gt;Split the data model: &lt;code&gt;src/core/puzzle.ts&lt;/code&gt; holds the puzzle contract and chain bases, &lt;code&gt;src/core/parts.ts&lt;/code&gt; holds the pieces.&lt;/li&gt;&lt;li&gt;Rename the &lt;code&gt;Author&lt;/code&gt; and &lt;code&gt;Solver&lt;/code&gt; types to one &lt;code&gt;Party&lt;/code&gt; type.&lt;/li&gt;&lt;li&gt;Move lookup, balance, and verification behavior onto the abstract &lt;code&gt;Collection&lt;/code&gt; contract.&lt;/li&gt;&lt;li&gt;Replace the Rust CLI and build pipeline with pnpm, strict TypeScript, Vitest, and obuild.&lt;/li&gt;&lt;li&gt;Rebuild the CLI on citty with one module per command and a new &lt;code&gt;collections&lt;/code&gt; command.&lt;/li&gt;&lt;li&gt;Adopt the agntn project template: Node.js 24+ baseline, TypeScript 7, oxlint/oxfmt, obuild, changelogen, and the shared GitHub workflows.&lt;/li&gt;&lt;li&gt;Rename the base error class from &lt;code&gt;BohaError&lt;/code&gt; to &lt;code&gt;PuzzlesError&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Replace the &lt;code&gt;collections&lt;/code&gt; array with a lazy manifest registry. &lt;code&gt;builtins&lt;/code&gt; lists &lt;code&gt;{ key, load }&lt;/code&gt; entries, a collection module is imported on the first lookup for its key, and importing the package loads no records. &lt;code&gt;collectionKeys()&lt;/code&gt; and &lt;code&gt;hasCollection()&lt;/code&gt; stay synchronous. The views that need instances are asynchronous: &lt;code&gt;collections()&lt;/code&gt;, &lt;code&gt;getCollection()&lt;/code&gt;, &lt;code&gt;requireCollection()&lt;/code&gt;, &lt;code&gt;all()&lt;/code&gt;, &lt;code&gt;get()&lt;/code&gt;, &lt;code&gt;requirePuzzle()&lt;/code&gt;, &lt;code&gt;selectPuzzles()&lt;/code&gt;, &lt;code&gt;stats()&lt;/code&gt;, &lt;code&gt;dataVersion()&lt;/code&gt; and &lt;code&gt;dataset()&lt;/code&gt;. &lt;code&gt;registerCollection()&lt;/code&gt; takes an instance or a &lt;code&gt;{ key, load }&lt;/code&gt; entry.&lt;/li&gt;&lt;li&gt;Publish every collection as its own entry, &lt;code&gt;@agntn/puzzles/collections/&amp;lt;key&amp;gt;&lt;/code&gt;, with its class and canonical instance. The root entry no longer re-exports them.&lt;/li&gt;&lt;li&gt;Build one bundle for the library, CLI, MCP server, tools and collections. They share one registry, no entry embeds a second copy of anything, and typebox is inlined for a faster MCP start.&lt;/li&gt;&lt;li&gt;Enforce the argument limits the tool schemas declare inside the executors too. An unknown status, a fractional or out-of-range &lt;code&gt;limit&lt;/code&gt;, or an too long identifier, collection key or API key throws &lt;code&gt;InvalidArgumentError&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Build the Pi and MCP parameter schemas once from &lt;code&gt;facts&lt;/code&gt; in &lt;code&gt;packages/shared/puzzles-tool-schemas.ts&lt;/code&gt;. The OMP extension rebuilds them from the host TypeBox build, labels itself and renders sanitized call lines.&lt;/li&gt;&lt;li&gt;Load the shared tool executors in the extensions through literal &lt;code&gt;import()&lt;/code&gt; specifiers, so OMP's compiled loader can see the dependencies, and type them from &lt;code&gt;src/&lt;/code&gt; instead of &lt;code&gt;dist/&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Sanitize control characters out of MCP error text and quote the echoed name of an unknown tool.&lt;/li&gt;&lt;li&gt;Derive &lt;code&gt;BalanceError&lt;/code&gt; from &lt;code&gt;PuzzlesError&lt;/code&gt;, so one base class covers every failure the package raises.&lt;/li&gt;&lt;li&gt;Turn &lt;code&gt;dataVersion&lt;/code&gt; into a lazily computed function instead of a generated constant.&lt;/li&gt;&lt;li&gt;&lt;code&gt;Balance&lt;/code&gt; derives &lt;code&gt;decimals&lt;/code&gt; from its chain, so the constructor takes the chain and the two amounts only.&lt;/li&gt;&lt;li&gt;&lt;code&gt;Collection.verify()&lt;/code&gt; and &lt;code&gt;verifyById()&lt;/code&gt; are asynchronous and load the verification crypto on first use, which keeps it out of CLI startup. &lt;code&gt;verifyPuzzle()&lt;/code&gt; stays synchronous.&lt;/li&gt;&lt;li&gt;&lt;code&gt;hasPrivateKey()&lt;/code&gt; and verification read one &lt;code&gt;secretOf()&lt;/code&gt; resolver, so a seed record with only a derivation path or an xpub no longer counts as a known private key.&lt;/li&gt;&lt;li&gt;Drop the &lt;code&gt;bits&lt;/code&gt; filler from the 38 records outside b1000. &lt;code&gt;bits&lt;/code&gt; marks a search space width only, so &lt;code&gt;keyRange()&lt;/code&gt; is undefined elsewhere and the validation gate checks every declared width.&lt;/li&gt;&lt;li&gt;Agent tool names, titles, descriptions, parameter constraints, and the status list live once in &lt;code&gt;src/tool-operations.ts&lt;/code&gt;. The tools import the library directly instead of receiving it, and the Pi and OMP extensions load that one module before registering.&lt;/li&gt;&lt;li&gt;The validation gate decrypts BIP38 payloads with Node's native scrypt, pinned to the BIP-38 test vectors, instead of the &lt;code&gt;bip38&lt;/code&gt; package.&lt;/li&gt;&lt;li&gt;Fetch balances through &lt;code&gt;@agntn/explorers&lt;/code&gt; from &lt;code&gt;puzzle.balance()&lt;/code&gt;: Mempool for Bitcoin and Litecoin, Etherscan V2, Dcrdata and the Arweave gateway. Collections forward &lt;code&gt;balance(query)&lt;/code&gt; to the puzzle. The providers load on the first lookup. &lt;code&gt;BalanceOptions&lt;/code&gt; takes &lt;code&gt;apiKey&lt;/code&gt;, &lt;code&gt;baseUrl&lt;/code&gt; and &lt;code&gt;timeout&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Read chain names, symbols, decimals, explorer bases and address format rules from &lt;code&gt;@agntn/chains&lt;/code&gt; instead of local tables. Bitcoin links now point at blockstream.info and Litecoin links at litecoinspace.org. &lt;code&gt;parseChain()&lt;/code&gt; accepts the &lt;code&gt;@agntn/chains&lt;/code&gt; aliases.&lt;/li&gt;&lt;li&gt;&lt;code&gt;Puzzle.key()&lt;/code&gt; and &lt;code&gt;PuzzleSpec.key&lt;/code&gt; are typed &lt;code&gt;Readonly&amp;lt;Key&amp;gt;&lt;/code&gt;: a record hands the builder to its factory and never mutates it.&lt;/li&gt;&lt;li&gt;Lint and format follow the shared &lt;code&gt;@agntn/ox&lt;/code&gt; policy: exported functions carry typed JSDoc, object parameters are &lt;code&gt;Readonly&lt;/code&gt;, and &lt;code&gt;docs/&lt;/code&gt; is checked like the rest of the repository.&lt;/li&gt;&lt;li&gt;&lt;code&gt;pnpm test:packed&lt;/code&gt; packs the tarball and runs the library, the MCP server, both extensions and the CLI bin from the packed layout, in CI and before publish. &lt;code&gt;pnpm test:live&lt;/code&gt; runs the provider roundtrips. Unit tests never reach them, because &lt;code&gt;fetch&lt;/code&gt; is stubbed to fail there.&lt;/li&gt;&lt;li&gt;A Docus site under &lt;code&gt;docs/&lt;/code&gt;, published at puzzles.agntn.dev. A guide, one page per collection with a facts strip read off the library, and one page per puzzle with its record, transactions, key material, assets and live balance. The landing walks fourteen records in the browser. The playground runs the real tool executors and the worker's balance route.&lt;/li&gt;&lt;li&gt;Print one discovery row from &lt;code&gt;puzzles collections&lt;/code&gt; and &lt;code&gt;puzzles_collections&lt;/code&gt; alike, &lt;code&gt;key: N puzzles, N solved, N unsolved, by author&lt;/code&gt;, through &lt;code&gt;formatCollection()&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Round the per currency prize totals of &lt;code&gt;stats()&lt;/code&gt; to eight decimal places, so the CLI, the tools and the docs print &lt;code&gt;1058.06884913 BTC&lt;/code&gt; instead of float carry.&lt;/li&gt;&lt;li&gt;Load the verification crypto in &lt;code&gt;puzzles_verify&lt;/code&gt; on the first call, the way &lt;code&gt;Collection.verifyById()&lt;/code&gt; does, so registering the tools in MCP, Pi or OMP costs no secp256k1.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fixed&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;puzzles --help&lt;/code&gt; no longer loads the MCP SDK: the &lt;code&gt;mcp&lt;/code&gt; command imports the server when it runs.&lt;/li&gt;&lt;li&gt;Refresh lazy dataset views, identifier lookups, statistics, and data versions when a collection is registered or replaced.&lt;/li&gt;&lt;li&gt;Resolve historical aliases without inheriting Object prototype properties.&lt;/li&gt;&lt;li&gt;Export the documented &lt;code&gt;passphrase()&lt;/code&gt; key builder and don't count a WIF passphrase alone as a private key representation.&lt;/li&gt;&lt;li&gt;Declare &lt;code&gt;sideEffects&lt;/code&gt; as the CLI entry only, which is correct once the registry seeds itself instead of relying on collection modules registering on import.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Added&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Regression tests for all six puzzle factories, optional fields, and registry mutations.&lt;/li&gt;&lt;li&gt;MCP server (&lt;code&gt;puzzles mcp&lt;/code&gt;) plus Pi and OMP extensions sharing one tool implementation.&lt;/li&gt;&lt;li&gt;Data validation gate as tests, covering identifiers, chain agreement, address formats, key derivation, BIP38 payloads, claimed public keys, and asset paths.&lt;/li&gt;&lt;li&gt;&lt;code&gt;isValidAddress(chain, address)&lt;/code&gt; for chain-aware address format checks.&lt;/li&gt;&lt;li&gt;&lt;code&gt;selectPuzzles({ collection, status, withPubkey })&lt;/code&gt;, the one puzzle selection the CLI and agent tools share.&lt;/li&gt;&lt;li&gt;&lt;code&gt;collectionSummaries()&lt;/code&gt; and the &lt;code&gt;puzzles_collections&lt;/code&gt; agent tool, which print the same rows as &lt;code&gt;puzzles collections&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;&lt;code&gt;InvalidArgumentError&lt;/code&gt; for arguments that break the shared tool contract.&lt;/li&gt;&lt;li&gt;&lt;code&gt;secretOf(keyData)&lt;/code&gt;, the private key representation a key record exposes.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Removed&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;The generated &lt;code&gt;data/generated.jsonc&lt;/code&gt; artifact, the &lt;code&gt;src/generated/&lt;/code&gt; module and the generator script. Use &lt;code&gt;dataset()&lt;/code&gt; or &lt;code&gt;puzzles export&lt;/code&gt; instead.&lt;/li&gt;&lt;li&gt;Per-collection subpath exports. Import collections from the package root.&lt;/li&gt;&lt;li&gt;Puzzle images from the published tarball, which drops it from 38 MB to under 3 MB. &lt;code&gt;assetUrl()&lt;/code&gt; still resolves them from the repository.&lt;/li&gt;&lt;li&gt;The Rust sources, &lt;code&gt;PKGBUILD&lt;/code&gt;, AUR and crates.io workflows, and the &lt;code&gt;justfile&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;The local balance adapters, &lt;code&gt;fetchBalance()&lt;/code&gt;, &lt;code&gt;fetchPuzzleBalance()&lt;/code&gt;, and the &lt;code&gt;fetch&lt;/code&gt; and &lt;code&gt;baseURL&lt;/code&gt; options. Stub &lt;code&gt;globalThis.fetch&lt;/code&gt; in tests instead.&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.19.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-19-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.19.0</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;rushwallet:&lt;/strong&gt; Add 30 RushWallet brainwallet contest puzzles (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/152&quot;&gt;#152&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;b1000:&lt;/strong&gt; Change &lt;code&gt;135&lt;/code&gt; to solved (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/159&quot;&gt;#159&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.18.1</title>
      <link>https://puzzles.agntn.dev/changelog#v0-18-1</link>
      <guid isPermaLink="false">@agntn/puzzles@0.18.1</guid>
      <pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;warp:&lt;/strong&gt; Backfill keys + passphrases + KDF salt + schema fixes (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/153&quot;&gt;#153&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Fix README and skill drift (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/151&quot;&gt;#151&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Remove unused #[allow(dead_code)] annotations&lt;/li&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.18.1&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.18.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-18-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.18.0</guid>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add currency field for non-native token prizes (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/143&quot;&gt;#143&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;balance:&lt;/strong&gt; Add Arweave balance fetching (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/144&quot;&gt;#144&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;arweave:&lt;/strong&gt; Add weave9 puzzle (100 DAI on Ethereum) (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/145&quot;&gt;#145&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;warp:&lt;/strong&gt; Add WarpWallet challenge collection (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/149&quot;&gt;#149&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Bug Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Reject unknown collections in list (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/137&quot;&gt;#137&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;search:&lt;/strong&gt; Honor case-sensitive fields (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/139&quot;&gt;#139&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;search:&lt;/strong&gt; Match chain symbols (BTC, LTC, XMR, DCR) (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/142&quot;&gt;#142&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;balance:&lt;/strong&gt; Add Decred support (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/140&quot;&gt;#140&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;search:&lt;/strong&gt; Include currency field in search results (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/146&quot;&gt;#146&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;verify:&lt;/strong&gt; Pass BIP39 passphrase to seed derivation (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/147&quot;&gt;#147&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactor&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collection:&lt;/strong&gt; Centralize dispatch registry (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/141&quot;&gt;#141&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.18.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.17.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-17-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.17.0</guid>
      <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add Display and FromStr for Chain and Status (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/122&quot;&gt;#122&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;verify:&lt;/strong&gt; Implement verify_puzzle with chain dispatch (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/123&quot;&gt;#123&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Add Chain::address_explorer_url and Puzzle::explorer_url (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/129&quot;&gt;#129&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;hash_collision:&lt;/strong&gt; Add solved() iterator (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/126&quot;&gt;#126&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;balance:&lt;/strong&gt; Add Litecoin balance fetching (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/127&quot;&gt;#127&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;skills:&lt;/strong&gt; Add agent skills (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/133&quot;&gt;#133&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Bug Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Support ballet in author command (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/120&quot;&gt;#120&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Use PUZZLES.len() instead of hardcoded count() (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/124&quot;&gt;#124&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Accept mixed-case hex in Chain::is_valid_txid (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/125&quot;&gt;#125&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add vusi and kangaroo to related tools&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Testing&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;I32 IntoPuzzleNum edge cases (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/121&quot;&gt;#121&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Cover format_duration_human_readable edge cases&lt;/li&gt;&lt;li&gt;Cover Chain::is_valid_txid across all formats (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/128&quot;&gt;#128&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Cover Chain methods (explorer URLs, symbol, name, ALL) (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/130&quot;&gt;#130&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Remove community section from README.md&lt;/li&gt;&lt;li&gt;Add PR lint caller&lt;/li&gt;&lt;li&gt;Update README.md&lt;/li&gt;&lt;li&gt;Update AGENTS.md&lt;/li&gt;&lt;li&gt;Add clippy config (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/135&quot;&gt;#135&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.17.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.16.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-16-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.16.0</guid>
      <pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;arweave:&lt;/strong&gt; Add Arweave collection (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/111&quot;&gt;#111&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactor&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;chain:&lt;/strong&gt; Multichain prep (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/109&quot;&gt;#109&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;zden:&lt;/strong&gt; Normalize names to snake_case (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/114&quot;&gt;#114&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.16.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.15.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-15-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.15.0</guid>
      <pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Add search command (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/94&quot;&gt;#94&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;build:&lt;/strong&gt; Embed data version at build time (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/97&quot;&gt;#97&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Add verify command (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/98&quot;&gt;#98&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;data:&lt;/strong&gt; Migrate from TOML to JSONC (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/101&quot;&gt;#101&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Add pubkey validation for claimed puzzles (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/103&quot;&gt;#103&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Add export command (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/106&quot;&gt;#106&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactor&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;scripts:&lt;/strong&gt; Migrate from TOML to JSONC (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/104&quot;&gt;#104&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;scripts:&lt;/strong&gt; Unified typed address structs (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/108&quot;&gt;#108&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Standardize badges and add community section&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.15.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.14.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-14-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.14.0</guid>
      <pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;zden:&lt;/strong&gt; Add private key for Level 1 puzzle (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/81&quot;&gt;#81&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;build:&lt;/strong&gt; WIF validation at build time (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/93&quot;&gt;#93&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Other&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;zden:&lt;/strong&gt; Add private key for Level 2 puzzle (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/85&quot;&gt;#85&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;zden:&lt;/strong&gt; Add Level 3 private key (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/87&quot;&gt;#87&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactor&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;pubkey:&lt;/strong&gt; Rename key to value and use inline TOML tables (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/83&quot;&gt;#83&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Update AGENTS.md metadata to current commit&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.14.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.13.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-13-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.13.0</guid>
      <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collection:&lt;/strong&gt; Add Ballet challenge (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/76&quot;&gt;#76&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;data:&lt;/strong&gt; Add WIF format to solved puzzles (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/79&quot;&gt;#79&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; Update README.md version during release&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Sync AGENTS.md with Ballet collection addition&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.13.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.12.1</title>
      <link>https://puzzles.agntn.dev/changelog#v0-12-1</link>
      <guid isPermaLink="false">@agntn/puzzles@0.12.1</guid>
      <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Bug Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;package:&lt;/strong&gt; Exclude assets from crates.io package&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.12.1&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.12.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-12-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.12.0</guid>
      <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;solvers:&lt;/strong&gt; Add &lt;code&gt;retired_coder&lt;/code&gt; (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/71&quot;&gt;#71&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;assets:&lt;/strong&gt; Add puzzle assets support (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/74&quot;&gt;#74&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add Related Tools section with vuke and vgen&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.12.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.11.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-11-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.11.0</guid>
      <pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;address:&lt;/strong&gt; Add Address struct (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/60&quot;&gt;#60&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add Key struct (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/61&quot;&gt;#61&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cli:&lt;/strong&gt; Add human-panic for friendly crash reports (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/62&quot;&gt;#62&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;balance:&lt;/strong&gt; Add Ethereum API support (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/63&quot;&gt;#63&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;scripts:&lt;/strong&gt; Add Decred API support (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/64&quot;&gt;#64&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;address:&lt;/strong&gt; Add SegWit support (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/67&quot;&gt;#67&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;address:&lt;/strong&gt; Add Taproot (P2TR) address type support (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/68&quot;&gt;#68&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;bitaps:&lt;/strong&gt; Add mnemonic challenge (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/69&quot;&gt;#69&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add bitimage puzzle collection (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/70&quot;&gt;#70&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactor&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;solver:&lt;/strong&gt; Extract solvers to dedicated TOML file (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/72&quot;&gt;#72&lt;/a&gt;) (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/73&quot;&gt;#73&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Sync AGENTS.md with zden collection&lt;/li&gt;&lt;li&gt;Update outdated code references&lt;/li&gt;&lt;li&gt;Sync AGENTS.md with recent changes&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add &lt;code&gt;context7.json&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.11.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.10.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-10-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.10.0</guid>
      <pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;zden:&lt;/strong&gt; Add visual crypto puzzles (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/57&quot;&gt;#57&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;data:&lt;/strong&gt; Add timestamps to dates (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/59&quot;&gt;#59&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.10.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.9.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-9-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.9.0</guid>
      <pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add claim_txid accessors and explorer URLs (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/43&quot;&gt;#43&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add solver information for solved puzzles (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/51&quot;&gt;#51&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Testing&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add pubkey to h160 validation (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/41&quot;&gt;#41&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;balance:&lt;/strong&gt; Add coverage for balance feature (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/42&quot;&gt;#42&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Add private-key-to-address derivation verification (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/45&quot;&gt;#45&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.9.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.8.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-8-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.8.0</guid>
      <pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add transaction history (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/34&quot;&gt;#34&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.8.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.7.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-7-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.7.0</guid>
      <pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add KeySource enum for key derivation semantics (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/33&quot;&gt;#33&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;author:&lt;/strong&gt; Add Author struct for collections (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/36&quot;&gt;#36&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Update AGENTS.md with code map and testing info&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add &lt;code&gt;deepwiki&lt;/code&gt; badge&lt;/li&gt;&lt;li&gt;Ad &lt;code&gt;deepwiki&lt;/code&gt; badge&lt;/li&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.7.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.6.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-6-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.6.0</guid>
      <pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Generalize key_range (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/30&quot;&gt;#30&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add solve_time field (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/32&quot;&gt;#32&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.6.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.5.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-5-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.5.0</guid>
      <pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add h160 field for P2PKH addresses (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/17&quot;&gt;#17&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add script_hash for P2SH (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/22&quot;&gt;#22&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ci:&lt;/strong&gt; Integrate autofix.ci for automatic formatting (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/23&quot;&gt;#23&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactor&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;data:&lt;/strong&gt; Rename btc field to prize in TOML files (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/25&quot;&gt;#25&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add gsmg collection to AGENTS.md&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.5.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.4.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-4-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.4.0</guid>
      <pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add Chain enum (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/15&quot;&gt;#15&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add pubkey_format field (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/16&quot;&gt;#16&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.4.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.3.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-3-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.3.0</guid>
      <pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;collections:&lt;/strong&gt; Add GSMG puzzle collection (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/10&quot;&gt;#10&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.3.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.2.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-2-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.2.0</guid>
      <pubDate>Tue, 30 Dec 2025 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add start_date field (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/7&quot;&gt;#7&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;puzzle:&lt;/strong&gt; Add source_url field (&lt;a href=&quot;https://github.com/agntn/puzzles/issues/8&quot;&gt;#8&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.2.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>v0.1.0</title>
      <link>https://puzzles.agntn.dev/changelog#v0-1-0</link>
      <guid isPermaLink="false">@agntn/puzzles@0.1.0</guid>
      <pubDate>Tue, 30 Dec 2025 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;Bug Fixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Limit version sed to package section only&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Other&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Crypto bounties, puzzles and challenges data library&lt;/li&gt;&lt;li&gt;Update balances from mempool.space API&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Refactor&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Move hash_collision data to TOML source of truth&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Reorder README sections - CLI before Library&lt;/li&gt;&lt;li&gt;Add boha list without args to README&lt;/li&gt;&lt;li&gt;Add detailed puzzle list to Collections section&lt;/li&gt;&lt;li&gt;Fix b1000 puzzle status breakdown&lt;/li&gt;&lt;li&gt;Add CONTRIBUTING.md&lt;/li&gt;&lt;li&gt;Add AGENTS.md project knowledge base&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Styling&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Fix formatting in cli.rs&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Miscellaneous Tasks&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Track Cargo.lock for reproducible builds&lt;/li&gt;&lt;li&gt;&lt;strong&gt;release:&lt;/strong&gt; V0.1.0&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
