- astro 7.0.7, @astrojs/mdx 7, sitemap 3.7, rss 4.0.19, check 0.9.9
- trailingSlash 'always' → 'ignore': Astro 7 generates prerender paths for
dynamic extension endpoints (/categories/<c>/rss.xml) with a trailing
slash under 'always' but builds their route patterns without one, so the
build fails with "Missing parameter"; directory-format output is
identical either way. Also removes the now-unneeded dev feed-slash shim.
- compressHTML: true pinned to keep pre-v7 whitespace behavior
- zod 4: import z from 'astro/zod' (astro:content re-export deprecated),
z.string().url() → z.url()
- npm audit fix (fast-uri, fast-xml-builder, yaml)
Claude-Session: https://claude.ai/code/session_01WZaczDJjL3xZ3u5spsN5AL
Adds a build-time mosaic generator (scripts/build-list-mosaics.mjs, sharp)
that composites a single tile image per superpost from its referenced
finds. Wired via predev/prestart/prebuild hooks; output lives in
src/generated/ (gitignored). The /finds/ index and home grid both render
the mosaic when present and fall back to text-only tiles otherwise.
- 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.