Files
unique/CHANGELOG.md
T
rzen 9858abedc2 initial: four-collection content pipeline for unique.rzen.dev
A small Astro + MDX blog for delightful, daily-use finds. The architecture
separates capture from publication and supports reuse:

- find/    captured items, hidden from indexes
- finds/   editorial superposts referencing find slugs in a grid
- reviews/ full-length writeups; can graduate from a find via fromFind
- posts/   regular essays

Three project-local skills under .claude/skills/ drive the pipeline:
daily-finds (capture-only sweep across sources.json), build-finds (draft
a thematic superpost), build-review (graduate a find).

sources.json carries 47 curated feeds with per-source fetch strategy
(webfetch / curl / skip) so Cloudflare-blocked sites and Reddit JSON
endpoints are handled deterministically. /sources renders a 3-column
card stream with a "Recent finds" cross-reference per source.

Seeds: 17 reviews and one superpost referencing 5 finds.
2026-05-03 11:48:03 -04:00

5.3 KiB

Changelog

May 2026

  • Restructure into a four-collection content pipeline: find (captured items, hidden from indexes), finds (editorial superposts that reference find slugs in a Pinterest-style grid), reviews (existing — gains optional source and fromFind fields for graduations), and posts (existing, generic essays)
  • New routes /find/<slug>/ (direct URL only — finds don't appear on home, tag, or category pages) and /finds/<slug>/ (superpost detail with intro + grid)
  • New components: FindCard, FindsGrid, Backlinks, SourceBadge
  • /sources cards gain a "Recent finds" sub-list per source — the one cross-cutting surface where individual finds are visible
  • Find pages show "Featured in:" backlinks computed at build time from any superpost referencing them; review pages show "← First surfaced…" when promoted from a find
  • New project-local skills under .claude/skills/: daily-finds (capture-only — no theme detection, no candidate post, no winner pick), build-finds (editorial superpost author), build-review (find → review graduation)
  • sources.json gains per-source fetch strategy (webfetch / curl / skip) with optional fetchUrl override; 11 sources switch to curl with a Safari User-Agent (Cool Material, MoMA Design Store, StyleForum, Atlas Obscura, etc.); 9 marked skip after Cloudflare JS challenges and active anti-bot defeats both WebFetch and curl
  • New /sources page (3-column card stream listing every source with its type, cadence, topics, and notes)
  • Migrate the seed daily-finds post: extract 5 candidates into individual find files, slim the superpost to just the intro paragraph, move from posts/ to finds/
  • Initial sources.json curated across macOS apps, useful tools, gifts, clothing, travel, and general-delight feeds (47 sources)
  • Daily-finds capture log at daily-finds.log.md; new-source nominations queued at candidate-sources.md
  • Initial blog scaffold with Astro 5 (content collections, no client JS)
  • Base layout with light/dark theme via prefers-color-scheme
  • Index page listing posts by date (newest first)
  • Per-post page with title, date, category, optional external link, tags
  • Auto-generated category and tag listing pages
  • Seed content: 12 posts on delightful Mac apps (Cotypist, Folder Peek, DockDoor, TypeWhisper, Hyperkey, AntiNote, FluxMarkdown, Monocle, Alcove, Shottr, MiddleDrag, LinearMouse)
  • Switch to MDX (@astrojs/mdx) for post bodies
  • Restructure into two content types: reviews (name + subtitle + body) and posts (title + body, empty for now)
  • Unified entry helper (src/lib/entries.ts) and shared EntryList component so the home, category, and tag pages render a mixed chronological feed across collections
  • Reviews route moved to /reviews/<slug>/; review detail pages show name as <h1> with subtitle as a tagline beneath
  • Index entries now show two lines for reviews (bold name + muted subtitle), single line for posts
  • Migrate the 12 seed entries from src/content/posts/*.md to src/content/reviews/*.mdx with the new schema
  • Add 5 new reviews: Ice (interface), AltTab (interface), Mac Mouse Fix (input), Homerow (input), Tot (writing)
  • Establish media convention at src/assets/reviews/<slug>/ for real screenshots/clips downloaded from each app's site
  • Add visuals to 15 of 17 reviews (mp4 demos, animated gifs, or App Store screenshots), with one-line italic captions naming what's shown
  • Style images and videos in review pages: max-width 100%, centered, soft border-radius; italic-only paragraphs auto-render as captions
  • Use import …?url for animated GIFs (cotypist, flux-markdown) to bypass Sharp and preserve animation
  • linearmouse and middledrag intentionally have no visual: linearmouse.app is JS-only with no scrapeable demo and the repo carries no screenshots; the artginzburg/MiddleDrag repo cited in the review no longer exists
  • Rewrite all 17 reviews — informative, concise, no sales tone; longer reviews lead with a pre-review blockquote summary
  • Style .body blockquote as a confident lead (accent left-border, no italics, foreground color) on review and post detail pages
  • Add optional linkText field to reviews: overrides the external-link label (e.g. "Visit in App Store" or "Visit on GitHub"); defaults to the link's hostname with www. stripped
  • Sample a Pinterest-like 3-column tile stream at /grid/ (CSS column-count masonry, no JS); responsive to 2 cols / 1 col on narrow viewports
  • src/lib/hero.ts maps slug → hero asset (image or video) so the grid can render visuals; reviews without media (linearmouse, middledrag) become text-only tiles with an accent gradient
  • Add wide prop to BaseLayout for pages that need a wider max-width than the default reading column
  • Floating "grid view →" link from the home page; the main index keeps its plain list layout
  • Add a CSS-only scroll-snap carousel for reviews with multiple visuals: each <figure> slide carries its own <figcaption>; pure CSS, no client JS; thin scrollbar visible on desktop, swipe on touch
  • Expand 8 reviews into multi-slide carousels with downloaded media — antinote (5), typewhisper (6), dockdoor (3), shottr (3), folder-peek (3), homerow (3), ice (3), tot (2); 28 slides total across the site
  • Limit the home page index to the 12 most recent entries across all collections; older entries remain reachable via /grid/, categories, and tags