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.
5.3 KiB
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 optionalsourceandfromFindfields for graduations), andposts(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 /sourcescards 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.jsongains per-sourcefetchstrategy (webfetch/curl/skip) with optionalfetchUrloverride; 11 sources switch to curl with a Safari User-Agent (Cool Material, MoMA Design Store, StyleForum, Atlas Obscura, etc.); 9 markedskipafter Cloudflare JS challenges and active anti-bot defeats both WebFetch and curl- New
/sourcespage (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/tofinds/ - Initial
sources.jsoncurated 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 atcandidate-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) andposts(title + body, empty for now) - Unified entry helper (
src/lib/entries.ts) and sharedEntryListcomponent 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/*.mdtosrc/content/reviews/*.mdxwith 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 …?urlfor 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/MiddleDragrepo 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 blockquoteas a confident lead (accent left-border, no italics, foreground color) on review and post detail pages - Add optional
linkTextfield to reviews: overrides the external-link label (e.g. "Visit in App Store" or "Visit on GitHub"); defaults to the link's hostname withwww.stripped - Sample a Pinterest-like 3-column tile stream at
/grid/(CSScolumn-countmasonry, no JS); responsive to 2 cols / 1 col on narrow viewports src/lib/hero.tsmaps 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
wideprop toBaseLayoutfor 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