site: editorial tooling, grid masonry fix, new reviews + finds

UI / dev tooling
- /find/ index: sort by file birthtime desc (sub-day chronology even when
  many finds share the same frontmatter date); render the captured-at on
  its own line under the host (~0.65rem mono muted)
- New dev-only filter at the top of /find/: All / Not in lists, persisted
  in localStorage; "not in lists" hides finds referenced by any superpost
- New editorial-tags chip strip on each find card (dev-only): selected
  tags visible by default, full picker on hover/focus-within with a "…"
  button for arbitrary tag entry; clicks copy /edit-find-tag <slug> <tag>
  to the clipboard via the existing EditConfirm singleton
- New optional editorialTags: string[] field on the find collection
- New src/data/editorial-tags.json — master list of available tags (initial
  set: ["delete"]); display order follows file order

/grid/ now uses the JS Masonry component instead of CSS column-count, so
the middle column no longer "dips"; tile hover updated to match the home
page's accent-glow / no-translate style

Content
- New review: apex-markdown-processor (graduated from find of same slug;
  hero reused from the find folder)
- New review: sindre-sorhus-older-mac-apps (graduated; intentionally
  hero-less per the source page's text-only design)
- New review: superkey (added by user; hero wired in src/lib/hero.ts)
- 24 new finds captured by /daily-finds across travel, jokes, quotes,
  product picks, and indie tools
- 2 new finds superposts: 2026-05-04-a-small-atlas, 2026-05-04-off-until-needed

Misc
- daily-finds.log.md and candidate-sources.md updated with the day's runs
- build-finds skill prompt iterated by user
This commit is contained in:
2026-05-04 18:57:04 -04:00
parent 1ecdc10443
commit 7e1b200bea
59 changed files with 927 additions and 75 deletions
+31 -5
View File
@@ -21,15 +21,41 @@ Invoke from inside the `unique.rzen.dev` repo.
### 1. Determine candidate pool
- If the user provided explicit slugs: use those.
- If the user provided a theme phrase only: scan all finds, surface the 812 that best fit the theme.
- If neither: scan recent (last ~14 days) finds that are **not yet referenced** by any existing superpost (read every `items[]` array; subtract). From the unreferenced pool, propose 13 thematic clusters of 510 finds each, with a candidate theme phrase per cluster.
- **If the user provided explicit slugs (seed mode)** — usually the case when the user clicks the "Make a finds collection" button on `/find/`. Treat the slugs as a *seed*, not a final list.
1. Read each seed find's frontmatter (`tags`, `topics`, `subtitle`, `description`) and body.
2. Infer the through-line — the smallest phrase that captures what these finds have in common (a virtue, a use, a feeling, a structural pattern). Lean specific. Good: *"single-virtue tools"*, *"things that pour clean"*, *"objects that exist for no reason except someone wanted them to"*, *"vintage-leaning everyday carry"*. Bad: *"useful things"*, *"cool stuff"*.
3. Compute the **unreferenced pool**: every find that does NOT appear in the `items[]` array of any existing `src/content/finds/*.mdx` superpost. The seed slugs may or may not be in this pool — they're the seed regardless.
4. From the unreferenced pool, find every entry that fits the inferred theme. Use frontmatter signals (tags, topics, subtitle) and body content. Don't reach: three weakly-fitting items is worse than zero. If a candidate's fit feels strained, drop it.
5. Combine `seed + qualifying unreferenced matches`, deduped. Cap at **8 total** (per sizing notes below). If the combined list exceeds 8, drop the weakest fits — never drop a seed slug; if the seed itself is more than 8, ask the user which to drop.
6. Produce one cluster (theme phrase + final items list). Continue to step 2 to confirm before writing.
- **If the user provided a theme phrase only:** scan all finds, surface the 812 that best fit the theme.
- **If neither:** scan recent (last ~14 days) finds that are not yet referenced by any existing superpost. From the unreferenced pool, propose 13 thematic clusters of 510 finds each, with a candidate theme phrase per cluster.
Re-use is allowed — a find can appear in multiple superposts under different themes. But by default, prefer surfacing **unreferenced** finds first; only reach for re-uses when the theme genuinely calls for them.
### 2. Confirm the cluster
If proposing clusters, show the user:
Always show the proposed cluster(s) before writing anything. The exact format depends on which path step 1 took.
**Seed mode** (slugs given) — split the seed from the expansion so the user can see what the inferred theme pulled in:
```
Theme inferred from seed: "<theme phrase>"
Seed (your selection):
- <slug>: <name>
- ...
Expansion (unreferenced finds matching the theme):
- <slug>: <name>
- ...
Final list (capped at 8): <N> items
```
**Multi-cluster mode** (no input):
```
Cluster A — "<theme phrase>"
@@ -41,7 +67,7 @@ Cluster B — "<theme phrase>"
...
```
Wait for the user to pick a cluster (or refine). Don't write anything until confirmed.
Wait for the user to confirm, refine the theme phrase, or drop/swap items. Don't write anything until confirmed.
### 3. Write the superpost