<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Elezea — releases</title><description>Rian van der Merwe&apos;s blog</description><link>https://elezea.com/</link><item><title>discogs-mcp v3.2.0 — Catalog-wide search</title><link>https://elezea.com/2026/04/discogs-mcp-v3-2-0/</link><guid isPermaLink="true">https://elezea.com/2026/04/discogs-mcp-v3-2-0/</guid><description>Adds `search_discogs` for catalog-wide queries beyond your own collection, plus two real-world accuracy fixes: owned-marker correctness across pressings, and…</description><pubDate>Sun, 19 Apr 2026 19:58:22 GMT</pubDate><content:encoded>&lt;p&gt;Adds &lt;code&gt;search_discogs&lt;/code&gt; for catalog-wide queries beyond your own collection, plus two real-world accuracy fixes: owned-marker correctness across pressings, and exact genre/style matching.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2&gt;What&apos;s new&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;search_discogs&lt;/code&gt; tool&lt;/strong&gt; — search the full Discogs catalog, not just your collection. Default type is &lt;code&gt;master&lt;/code&gt; so album lookups don&apos;t return duplicate pressings. Results get a ✓ marker when you already own them.&lt;/li&gt;
&lt;li&gt;Tool lists in README, marketing page, &lt;code&gt;auth_status&lt;/code&gt;, and &lt;code&gt;server_info&lt;/code&gt; refreshed with grouped categories (Search, Collection, Folders, Custom Fields, Diagnostics).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Exact genre/style matching&lt;/strong&gt; (&lt;a href=&quot;https://github.com/rianvdm/discogs-mcp/issues/17&quot;&gt;#17&lt;/a&gt;) — substring matching caused &lt;code&gt;music&lt;/code&gt; to match &lt;code&gt;Non-Music&lt;/code&gt;, flipping the filter to OR mode and returning unrelated releases. Now uses exact equality per release.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Release-result owned-marker is now strict on &lt;code&gt;release.id&lt;/code&gt;.&lt;/strong&gt; Previously, owning one pressing of an album marked every other pressing as owned too, because &lt;code&gt;isOwned()&lt;/code&gt; matched on &lt;code&gt;master_id&lt;/code&gt; first. Caught by real-world dogfood on &amp;quot;Christian Scott Stretch Music&amp;quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Under the hood&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Root &lt;code&gt;CLAUDE.md&lt;/code&gt; for Claude Code auto-discovery; removed stale &lt;code&gt;development/CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;GitHub release workflow auto-cross-posts to &lt;a href=&quot;http://elezea.com&quot;&gt;elezea.com&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;&lt;br&gt;&lt;hr&gt;Thanks for still believing in RSS! Feel free to &lt;a href=&quot;https://elezea.com/contact&quot;&gt;get in touch&lt;/a&gt;.</content:encoded><author>Rian van der Merwe</author></item><item><title>tldl v2.2.0 — RSS-first monitoring and audio-URL dedup</title><link>https://elezea.com/2026/04/tldl-v2-2-0/</link><guid isPermaLink="true">https://elezea.com/2026/04/tldl-v2-2-0/</guid><description>Two meaningful changes since v2.1.0. tldl now detects new podcast episodes directly from RSS feeds with conditional GETs instead of relying on Podcast Index…</description><pubDate>Sun, 19 Apr 2026 18:59:50 GMT</pubDate><content:encoded>&lt;p&gt;Two meaningful changes since v2.1.0. tldl now detects new podcast episodes directly from RSS feeds with conditional GETs instead of relying on Podcast Index re-crawls, so episodes typically land in the queue within minutes of publication. A second fix catches episodes that get retitled or have their GUIDs regenerated after publication — a surprisingly common pattern in the wild.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2&gt;What&apos;s new&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RSS-first monitoring.&lt;/strong&gt; The monitor now fetches RSS feeds directly with &lt;code&gt;If-Modified-Since&lt;/code&gt; / &lt;code&gt;If-None-Match&lt;/code&gt; headers, queues full episode metadata without a Podcast Index round-trip, and falls back to PI only on RSS errors. Detection lag drops from &amp;quot;hours&amp;quot; (PI re-crawl cadence) to &amp;quot;minutes&amp;quot; for feeds that update frequently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;POST /admin/rebuild-index&lt;/code&gt;.&lt;/strong&gt; Backfill endpoint now populates &lt;code&gt;audioUrl&lt;/code&gt; on every existing index entry so the new dedup check works retroactively.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Silent duplicate episodes.&lt;/strong&gt; Episodes that publishers edited after publishing — new title, regenerated GUID, or both — used to slip past dedup and get transcribed twice. A new audio-URL dedup signal (origin + pathname, query-stripped, lowercased) catches them. Confirmed against a real-world retitle where Lenny&apos;s Podcast re-published an episode with a different title + GUID, and 100 historical near-duplicates silently deduped on the first force-check after deploy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Under the hood&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Queue messages carry full episode metadata when the source is RSS, so the consumer branches on &lt;code&gt;rssSourced&lt;/code&gt; and skips Podcast Index + iTunes enrichment entirely on that path.&lt;/li&gt;
&lt;li&gt;New &lt;code&gt;audioUrl&lt;/code&gt; field on &lt;code&gt;EpisodeIndexEntry&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Monitor cron cadence tuned to every 2 hours — RSS conditional GETs keep the feed-scan cost low, and most monitored feeds don&apos;t publish often enough to justify the previous 30-minute cadence.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;&lt;br&gt;&lt;hr&gt;Thanks for still believing in RSS! Feel free to &lt;a href=&quot;https://elezea.com/contact&quot;&gt;get in touch&lt;/a&gt;.</content:encoded><author>Rian van der Merwe</author></item></channel></rss>