- src/lib/hero.ts: review heroes are now auto-discovered via import.meta.glob
over reviews/*/hero.<ext>; only legacy non-hero-named assets remain as
explicit overrides. New reviews need zero registration.
- Pick of the day moves from a hardcoded HERO_SLUG in index.astro to
src/data/pick.json (content edit, not code edit); dev set-pick API and
the review-page button now write pick.json. Fallback: latest review.
- Schemas: finds gain shortlist (bool) + amazonLink; reviews gain amazonLink.
- Review + find pages render an 'Also on Amazon' affiliate link when
amazonLink is set, with shared disclosure handling.
- Both hero globs now include .avif (two June finds ship avif heroes).
Captured 27 finds from the daily sweep across 15 sources (Daring
Fireball, HN Show HN, Kottke, Wallpaper, Outbound, Uncommon Goods,
Kikkerland, BIFL, Quote Investigator, Marginalian, r/dadjokes,
icanhazdadjoke, r/shortcuts, Recomendo, Messy Nessy) plus one user-
suggested find (valchoose-barf-bags) and 11 additional reader-
suggestion finds (appcleaner, blip, cleanmykeyboard, clocker,
daisydisk, ia-writer, launchos, macfolio, mos, vivid, wallspace).
New reviews: monitorcontrol (graduated from today's reader
suggestion, category interface) and blip (graduated from today's
reader suggestion, category indie). Both registered in hero.ts.
Site tooling: new dev-only POST /api/set-pick middleware that
rewrites HERO_SLUG in src/pages/index.astro for the Make today's
pick action. EditConfirm reworked to support a non-copy "set-pick"
mode; EditAction takes action and slug props; the reviews template
switches the toolbar button over to the new wiring.
Log + candidate-sources updated. Two new candidates: Routinehub.co
and Moss & Fog.
Adds the Vite-middleware backend that the refactored FindCard tag picker
POSTs to (writes editorialTags into find frontmatter). Without it the
in-card tag toggles 404 in dev. Also registers timelined's hero in the
heroes map so it shows up on the home grid.
- newspaper-style masthead (stats | "Unique" | About/Blog) on every page
with per-page italic subheader + last-updated date on listing pages;
sitewide 42rem reading width
- pinterest home (hero + masonry, "load more"); old list view at /index3/
- new pages: /about, /blog, /legal, /find/, /finds/, custom 404
- footer collection links now clickable; "founded" stat replaces "updated"
in the masthead
- centralised SEO component with per-page json-ld (Review, BlogPosting,
Product, Article, CollectionPage, ItemList, BreadcrumbList, etc.);
@astrojs/sitemap + @astrojs/rss; robots.txt; promoted finds canonical
to their review
- memoize getSiteStats() so the masthead/footer counts don't multiply
per-page build cost
- 25 new daily-finds captures
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.