diff --git a/daily-finds.log.md b/daily-finds.log.md
index 26b4803..c1bc0f4 100644
--- a/daily-finds.log.md
+++ b/daily-finds.log.md
@@ -2,6 +2,90 @@
Running record of every candidate surfaced by `/daily-finds`. The chosen pick of the day is prepended with `[chosen]`. Source attribution per candidate lets us track which sources produce winners over time.
+## 2026-05-06 — review: gum-shell
+
+Graduated from find captured 2026-05-03, source: One Thing Well. Reused the find's `hero.png` (1280×650 terminal screenshot of the `choose` component). New category `terminal` introduced — `automation` (workflow runners like SmartMover) doesn't fit a shell-script library; `apex-markdown-processor` is parked in `writing` because its prose-rendering virtue dominates, but `terminal` is now the natural home for future TUI/CLI graduates. Tags merge the find's set with `charm` and `cli`. Slug stays `gum-shell` while `name: "gum"` is preserved (lowercase) — keeps URL disambiguation while honoring the project's actual name. Registered in `src/lib/hero.ts` per build-review Step 6; verified the `/grid/` and `/` tiles ship the hashed `_astro/hero.BWXhSEZJ_*.webp`. Note: `gum-shell` is also referenced in the `2026-05-06-things-in-the-terminal` superpost — the superpost's grid card now links to the find page, which forwards to the review.
+
+## 2026-05-06 — review: finalist
+
+Graduated from find captured 2026-05-03, source: Daring Fireball — Linked List. Reused the find's `hero.png` (2000×1391 iPhone screenshot of a daily list with carry-forward arrows). New category `planning` introduced — `journal` is retrospective and `writing` is for text tools, neither fit forward-looking task management; `planning` is the natural home for future planner graduates (e.g. hour-by-hour). Tags merge the find's set with `focus`. Registered in `src/lib/hero.ts` per build-review Step 6; verified the `/grid/` and `/` tiles ship the hashed `_astro/hero.DSDkg9Yi_*.webp`. Note: `finalist` is also referenced in the `2026-05-06-constrain-the-surface` superpost — the superpost's grid card now links to the find page, which forwards to the review.
+
+## 2026-05-06 — review: valchoose-barf-bags
+
+Graduated from find captured 2026-05-05, source: Reader suggestion. Reused the find's `hero.jpg` (1500×1496 `71-zVovnCEL._AC_SL1500_.jpg` — clean studio shot of the blue bag held open by its white plastic ring). New category `kit` introduced — first physical preparedness/glovebox object in the review pool, didn't fit `kitchen` or any of the software-leaning categories. Tags merge the find's set with `household`. Registered in `src/lib/hero.ts` per the new build-review Step 6; verified the tile on `/grid/` ships the `
` with hashed `_astro/hero.DfDvIZ_M_*.webp`.
+
+## 2026-05-06 — superpost: menu-bar singletons
+
+Slug: 2026-05-06-menu-bar-singletons
+Theme: small Mac utilities that live in the same square inch of menu-bar real estate and each do exactly one thing — spans 2026-05-03 → 2026-05-06.
+Items referenced:
+ - betteraudio
+ - one-thing-menu-bar (also referenced in 2026-05-06-constrain-the-surface — re-use is allowed per the skill)
+ - pingplace
+ - mac-juice-monitor
+ - mister-plimsoll
+ - extrabar
+
+## 2026-05-06 — superpost: constrain the surface
+
+Slug: 2026-05-06-constrain-the-surface
+Theme: single-track productivity discipline — apps and one essay that cut the day's input down to a single line, column, or empty page (all 2026-05-03 capture batch).
+Items referenced:
+ - one-thing-menu-bar
+ - finalist
+ - hour-by-hour
+ - finder-tags-one-to-one
+ - start-with-nothing
+
+## 2026-05-06 — superpost: things in the terminal
+
+Slug: 2026-05-06-things-in-the-terminal
+Theme: CLI tools that earn the window they live in — UI library, git heatmap, RSS reader, desktop-widget pipe (2026-05-03 → 2026-05-04).
+Items referenced:
+ - gum-shell
+ - heatwave-git
+ - nom-rss
+ - terminal-widget
+
+## 2026-05-06 — superpost: on-device by design
+
+Slug: 2026-05-06-on-device-by-design
+Theme: privacy-first Mac apps that keep your data local — redaction, on-device LLM, live transcription, local-first knowledge management (all 2026-05-03 capture batch).
+Items referenced:
+ - hidemydata
+ - sentient-os
+ - transcribex
+ - resurf
+
+## 2026-05-06 — superpost: six lines, six origins
+
+Slug: 2026-05-06-six-lines-six-origins
+Theme: literary fragments captured in a single morning — three book quotes, one poem, two attribution investigations (all 2026-05-03 capture batch). First quotes-themed superpost.
+Items referenced:
+ - arendt-pariah-humanity
+ - heller-the-enemy-quote
+ - machiavelli-force-fraud
+ - mary-oliver-fourth-sign
+ - stendhal-gods-excuse
+ - wayne-dyer-change-look
+
+## 2026-05-06 — superpost: six american detours
+
+Slug: 2026-05-06-six-american-detours
+Theme: small American detours — roadside kitsch + public-land outdoor, all free or under $15, none on the canonical tourist itinerary.
+Items referenced:
+ - gemini-giant-route-66
+ - seward-time-capsule
+ - weeki-wachee-springs
+ - fall-creek-falls-tennessee
+ - kirby-cove
+ - wildwood-trail-portland
+Skipped from the unreferenced travel pool: dot-here-baa-atoll + the-fife-arms (international), sidewalk-joy-map (worldwide tool, not a place), us-national-park-finder + express-transit-directory (tools, not destinations).
+
+## 2026-05-06 — review: tablepro
+
+Graduated from find captured 2026-05-06, source: r/macapps. Reused the find's `hero.png` (1650×930 SQL editor screenshot from the Reddit launch gallery). Category `indie` (matches blip, sindre-sorhus-older-mac-apps — open-source single-developer Mac apps). `link:` rewritten from the Reddit launch post to the canonical homepage `tablepro.app`; tags merge the find's set with `macos` and `mcp`.
+
## 2026-05-06 — capture run
Sources scanned: 60 total — 28 hits across 14 sources, ~26 unproductive-but-live, 8 blocked/broken, 9 skipped (per sources.json `fetch: skip`).
diff --git a/src/content/bundles/2026-05-06-constrain-the-surface/index.mdx b/src/content/bundles/2026-05-06-constrain-the-surface/index.mdx
new file mode 100644
index 0000000..05e87fb
--- /dev/null
+++ b/src/content/bundles/2026-05-06-constrain-the-surface/index.mdx
@@ -0,0 +1,15 @@
+---
+title: "Constrain the surface"
+date: 2026-05-06
+tags: [daily-finds, productivity, focus, macos-apps]
+description: "Five strategies for cutting the day's input down to a single column, a single task, or a single empty page."
+blurb: "Five strategies for the same problem — too many surfaces, all open at once."
+items:
+ - one-thing-menu-bar
+ - finalist
+ - hour-by-hour
+ - finder-tags-one-to-one
+ - start-with-nothing
+---
+
+> Today's catch is five strategies for the same problem — too many surfaces, all open at once. Four apps and an essay, each one cutting the day's input down to whatever fits inside a single line, a single column, or a single empty page.
diff --git a/src/content/bundles/2026-05-06-menu-bar-singletons/index.mdx b/src/content/bundles/2026-05-06-menu-bar-singletons/index.mdx
new file mode 100644
index 0000000..aaba115
--- /dev/null
+++ b/src/content/bundles/2026-05-06-menu-bar-singletons/index.mdx
@@ -0,0 +1,16 @@
+---
+title: "Menu-bar singletons"
+date: 2026-05-06
+tags: [daily-finds, macos-apps, menu-bar]
+description: "Six menu-bar singletons, each one doing exactly one thing inside the same square inch of screen."
+blurb: "Six small utilities that share a square inch of screen and each do exactly one thing."
+items:
+ - betteraudio
+ - one-thing-menu-bar
+ - pingplace
+ - mac-juice-monitor
+ - mister-plimsoll
+ - extrabar
+---
+
+> Today's catch is six small utilities that all live in the same square inch of screen and each do exactly one thing — audio routing, a single visible task, where notifications appear, Bluetooth battery levels, disk pressure, and one rethink of the menu bar itself.
diff --git a/src/content/bundles/2026-05-06-on-device-by-design/index.mdx b/src/content/bundles/2026-05-06-on-device-by-design/index.mdx
new file mode 100644
index 0000000..0ec9be9
--- /dev/null
+++ b/src/content/bundles/2026-05-06-on-device-by-design/index.mdx
@@ -0,0 +1,14 @@
+---
+title: "On-device, by design"
+date: 2026-05-06
+tags: [daily-finds, macos-apps, privacy, local-first]
+description: "Four Mac apps that keep your data on your machine — redaction, on-device LLM, live transcription, and a local-first personal library."
+blurb: "Four Mac apps with the same thesis — the private thing stays on the private machine."
+items:
+ - hidemydata
+ - sentient-os
+ - transcribex
+ - resurf
+---
+
+> Today's catch is four Mac apps with the same thesis — that the private thing should stay on the private machine. Redaction, transcription, indexing, and a personal library, all on-device, none of them making a cloud round-trip on your behalf.
diff --git a/src/content/bundles/2026-05-06-six-american-detours/index.mdx b/src/content/bundles/2026-05-06-six-american-detours/index.mdx
new file mode 100644
index 0000000..1e53665
--- /dev/null
+++ b/src/content/bundles/2026-05-06-six-american-detours/index.mdx
@@ -0,0 +1,16 @@
+---
+title: "Six American detours"
+date: 2026-05-06
+tags: [daily-finds, travel, americana]
+description: "Six small American places worth the steer — three pieces of roadside kitsch, three corners of public land, none on the canonical tourist itinerary."
+blurb: "Roadside kitsch, public land, and one 45-ton concrete vault — six American detours, none over $15."
+items:
+ - gemini-giant-route-66
+ - seward-time-capsule
+ - weeki-wachee-springs
+ - fall-creek-falls-tennessee
+ - kirby-cove
+ - wildwood-trail-portland
+---
+
+> Today's catch is American: three pieces of roadside kitsch that outlasted the highways that built them, and three corners of public land where the trail or the water does the work. None on the canonical itinerary, none over $15.
diff --git a/src/content/bundles/2026-05-06-six-lines-six-origins/index.mdx b/src/content/bundles/2026-05-06-six-lines-six-origins/index.mdx
new file mode 100644
index 0000000..a49d71f
--- /dev/null
+++ b/src/content/bundles/2026-05-06-six-lines-six-origins/index.mdx
@@ -0,0 +1,16 @@
+---
+title: "Six lines, six origins"
+date: 2026-05-06
+tags: [daily-finds, quotes, books, philosophy]
+description: "Six literary fragments captured in a single morning — quotes, a poem, and two attribution investigations, each paired with the work it came from."
+blurb: "Three book quotes, one poem, and two attribution investigations — six fragments, six honest sources."
+items:
+ - arendt-pariah-humanity
+ - heller-the-enemy-quote
+ - machiavelli-force-fraud
+ - mary-oliver-fourth-sign
+ - stendhal-gods-excuse
+ - wayne-dyer-change-look
+---
+
+> Today's catch is six fragments from one morning of reading — three from books, one a poem, and two old quote investigations that nailed a long-running misattribution. Each entry ships with the work it actually came from.
diff --git a/src/content/bundles/2026-05-06-things-in-the-terminal/index.mdx b/src/content/bundles/2026-05-06-things-in-the-terminal/index.mdx
new file mode 100644
index 0000000..e41383b
--- /dev/null
+++ b/src/content/bundles/2026-05-06-things-in-the-terminal/index.mdx
@@ -0,0 +1,14 @@
+---
+title: "Things in the terminal"
+date: 2026-05-06
+tags: [daily-finds, terminal, developer-tools, cli]
+description: "Four ways to make the terminal earn its window — a shell-UI library, a git heatmap, an RSS reader, and a desktop-widget pipe."
+blurb: "A shell-UI library, a git heatmap, an RSS reader, and a way to pipe any of it into a desktop widget."
+items:
+ - gum-shell
+ - heatwave-git
+ - nom-rss
+ - terminal-widget
+---
+
+> Today's catch is four small tools that earn the rectangle they live in — a UI library for shell scripts, a visual heatmap of git activity, an RSS reader inside the prompt, and a way to pipe any of it back out into a desktop widget. None of them require a window manager.
diff --git a/src/content/find/finalist/index.mdx b/src/content/find/finalist/index.mdx
index 32fc65d..8e65a33 100644
--- a/src/content/find/finalist/index.mdx
+++ b/src/content/find/finalist/index.mdx
@@ -6,6 +6,7 @@ link: https://finalist.works
source: "Daring Fireball — Linked List"
topics: [macos-apps]
tags: [ios, macos, planning, productivity]
+promotedTo: "finalist"
---
Designed around the rules of a paper-based daily planning method: a finite list per day, you carry forward what didn't get done, you do not infinitely add. The constraint is the feature — Finalist won't let you build the impossible to-do list. Available on iPhone, iPad, and Mac.
diff --git a/src/content/find/gum-shell/index.mdx b/src/content/find/gum-shell/index.mdx
index 290bfee..85fb614 100644
--- a/src/content/find/gum-shell/index.mdx
+++ b/src/content/find/gum-shell/index.mdx
@@ -6,6 +6,7 @@ link: https://github.com/charmbracelet/gum
source: "One Thing Well"
topics: [tools]
tags: [shell, terminal, scripting, open-source]
+promotedTo: "gum-shell"
---
A toolkit from Charm that lets bash and zsh scripts call out to pre-built TUI components — fuzzy choosers, password inputs, spinners, multi-line confirmations — so a fifty-line script can have a feel closer to a polished CLI tool than a wall of text. Drop-in replacement for `read` and `select` when you want script ergonomics without rewriting it in Go. The components compose: pipe `gum choose` into `gum confirm` into `gum spin`.
diff --git a/src/content/find/tablepro/index.mdx b/src/content/find/tablepro/index.mdx
index b57af36..5201a91 100644
--- a/src/content/find/tablepro/index.mdx
+++ b/src/content/find/tablepro/index.mdx
@@ -9,6 +9,7 @@ topics:
- macos-apps
tags: [database, developer-tools, open-source, sql]
description: "One Mac-native client across 18 database flavours — relational, key-value, document, analytical, cloud — with an MCP server included."
+promotedTo: "tablepro"
---
Most Mac database clients force a choice: TablePlus is closed and paid, Sequel Ace only does MySQL, DBeaver is Java pretending to be a Mac app. TablePro is the native, free, open-source middle path — one window for Postgres, MySQL, SQLite, Mongo, Redis, DynamoDB, and a dozen more, with an MCP server bundled so AI agents can drive it. iPad version is in TestFlight.
diff --git a/src/content/find/valchoose-barf-bags/index.mdx b/src/content/find/valchoose-barf-bags/index.mdx
index dcb8041..8ac59f3 100644
--- a/src/content/find/valchoose-barf-bags/index.mdx
+++ b/src/content/find/valchoose-barf-bags/index.mdx
@@ -9,6 +9,7 @@ topics:
- tools
tags: [first-aid, car, kids, travel, kit]
description: "1000mL hospital-grade barf bags with a rigid white plastic ring at the mouth — keeps itself open hands-free, twists into the ring's eyelet groove to seal after use."
+promotedTo: "valchoose-barf-bags"
---
Most "vomit bag" solutions in a household are an empty grocery sack and a prayer. The Valchoose bags are the same thing hospitals hand out — a deep blue 1000mL pouch fixed to a rigid white plastic ring that holds itself open without anyone needing to grip the rim. That detail matters when the user is a kid in a car seat, a passenger in the dark, or someone in the middle of a wave of nausea: the bag stays where you point it. After use, the ring has an eyelet groove so you can twist the bag closed and lock the twist into the ring for a contained, leak-resistant disposal.
diff --git a/src/content/reviews/finalist/hero.png b/src/content/reviews/finalist/hero.png
new file mode 100644
index 0000000..c8e6d15
Binary files /dev/null and b/src/content/reviews/finalist/hero.png differ
diff --git a/src/content/reviews/finalist/index.mdx b/src/content/reviews/finalist/index.mdx
new file mode 100644
index 0000000..ced6e93
--- /dev/null
+++ b/src/content/reviews/finalist/index.mdx
@@ -0,0 +1,26 @@
+---
+name: "Finalist"
+subtitle: "Daily planner app modeled on a paper notebook"
+date: 2026-05-06
+category: planning
+tags: [ios, macos, planning, productivity, focus]
+link: "https://finalist.works"
+linkText: "finalist.works"
+description: "A daily planner that won't let you add to today after the day starts — the constraint is the feature."
+source: "Daring Fireball — Linked List"
+fromFind: "finalist"
+---
+
+
+
+*Finalist on iPhone — the day's list is exactly the day's list, with arrows marking what carried over from yesterday.*
+
+> A planner app whose entire pitch is what it refuses to do. After the day starts you can't add to it; whatever didn't get done carries forward to tomorrow with an arrow in front of it, intact.
+
+Most planning apps treat your list as an infinite append-only log: type a thing, it goes in, the list grows. The implicit rule is that whatever you can think of, you can promise yourself you'll do. Finalist is the inverse. The day's list is fixed at start-of-day, and the only operations after that are *do* and *defer*. There is no "actually, also this." The constraint is the feature.
+
+The model is borrowed wholesale from a paper-planner discipline — Bullet Journal-adjacent, but tighter. Yesterday's incomplete items show up in today's list with a leading arrow (›) to mark them as carry-forwards, the way a paper user would migrate them by hand. The arrow is small but does serious work: an item carried four days running is visible as such, which forces a decision — do it, schedule it, or admit it's not happening and delete it. The app makes the friction of that admission small enough that you actually do it.
+
+Available on iPhone, iPad, and Mac with the same view across all three; sync is iCloud-based, no account required. The interface is deliberately plain — a list, a date, an arrow column — so the constraint stays the visible feature rather than getting buried under typography.
+
+Honest limitation: this only works if the underlying discipline matches your temperament. If you genuinely use today's list as a place to capture every passing thought as it arrives, Finalist will fight you. It's built for the user who wants the app to fight them about that exact habit. For the rest of us, it's a quiet nudge in the right direction every morning.
diff --git a/src/content/reviews/gum-shell/hero.png b/src/content/reviews/gum-shell/hero.png
new file mode 100644
index 0000000..a07c01d
Binary files /dev/null and b/src/content/reviews/gum-shell/hero.png differ
diff --git a/src/content/reviews/gum-shell/index.mdx b/src/content/reviews/gum-shell/index.mdx
new file mode 100644
index 0000000..a14914f
--- /dev/null
+++ b/src/content/reviews/gum-shell/index.mdx
@@ -0,0 +1,25 @@
+---
+name: "gum"
+subtitle: "Polished shell-script UI components — choose, input, spinner, confirm"
+date: 2026-05-06
+category: terminal
+tags: [shell, terminal, scripting, open-source, charm, cli]
+link: "https://github.com/charmbracelet/gum"
+description: "A Charm toolkit that gives bash and zsh scripts proper TUI components — fuzzy menus, password inputs, spinners — composable with pipes."
+source: "One Thing Well"
+fromFind: "gum-shell"
+---
+
+
+
+*Gum's `choose` component as a drop-in replacement for `read` and `select` — arrow-key fuzzy menu, no Go required.*
+
+> A toolkit from Charm that turns bash and zsh scripts into things you'd actually want to share — fuzzy choosers, password prompts, spinners, multi-line confirmations — composable with pipes.
+
+The shell's built-in interaction primitives stop at `read` and `select`. They've been there since the 1970s and they look it. Anything fancier traditionally meant rewriting your fifty-line script in Go, Python, or Node — and watching it grow into a thousand-line project nobody else on the team can reach into. Gum is the alternative: a small statically-linked binary, called like any other shell command, that gives you a Charm-quality TUI inside whatever script you've already written.
+
+The components are the whole product: `gum choose` for menus, `gum input` for text fields (with a `--password` flag), `gum spin` for progress, `gum confirm` for yes/no, `gum filter` for fuzzy pickers, `gum write` for multi-line text, `gum format` for styled output. Each writes its result to stdout, so they pipe naturally — `gum choose option1 option2 | xargs -I {} gum confirm "Do {}?"` reads like a sentence rather than a Bash maze. The styling matches Glow, Lazygit, and the rest of the Charm catalog — rounded borders, subtle colors, restrained motion — with config cascading from CLI flags to environment variables to a `.gum.toml`.
+
+Install via `brew install gum`, `apt-get install gum`, `go install`, or grab the static binary; no runtime dependency. Open source, MIT-licensed.
+
+Honest limitation: it's a hard dependency in your script. Anyone running your function or installer needs `gum` on `$PATH`, which means either a bootstrap step at the top of the script or a Homebrew/apt declaration. For internal tools that's fine; for a "curl | bash" public installer it's friction worth weighing against the readability win.
diff --git a/src/content/reviews/tablepro/hero.png b/src/content/reviews/tablepro/hero.png
new file mode 100644
index 0000000..708c8ff
Binary files /dev/null and b/src/content/reviews/tablepro/hero.png differ
diff --git a/src/content/reviews/tablepro/index.mdx b/src/content/reviews/tablepro/index.mdx
new file mode 100644
index 0000000..245e83d
--- /dev/null
+++ b/src/content/reviews/tablepro/index.mdx
@@ -0,0 +1,28 @@
+---
+name: "TablePro"
+subtitle: "A free, native, open-source database client for macOS"
+date: 2026-05-06
+category: indie
+tags: [macos, database, developer-tools, open-source, sql, mcp]
+link: "https://tablepro.app/"
+linkText: "tablepro.app"
+description: "Eighteen database engines in a single Mac-native window — relational, key-value, document, analytical, cloud — with a built-in MCP server."
+source: "r/macapps"
+fromFind: "tablepro"
+---
+
+
+
+*TablePro's SQL editor running against the bundled Chinook sample database — connection pane on the left, results below.*
+
+> The Mac-native database client that finally consolidates the eighteen engines a typical developer touches into a single window — and ships an MCP server so Claude or Copilot can drive it.
+
+The macOS database-client landscape forces a compromise. TablePlus is polished but closed and paid. Sequel Ace is free and native but only speaks MySQL. DBeaver covers everything but is Java pretending to be a Mac app — startup latency, off-brand widgets, the works. None of them are open source in the way you can fork and fix.
+
+TablePro is the missing native, free, open-source middle path. One window for Postgres, MySQL, SQLite, Redis, Mongo, ClickHouse, DuckDB, MSSQL, Cassandra, etcd, Cloudflare D1, DynamoDB, BigQuery, LibSQL, Oracle, and Redshift. The first six are bundled; the rest install on demand so the app stays small until you reach for them. Apple Silicon and Intel, macOS 14+, starts in under a second.
+
+The MCP server is the angle that earns it a place on the desk now rather than next year. Point Claude Desktop, Cursor, or any MCP-aware client at TablePro and the same connection pool you've been using becomes a tool the model can drive — describe the schema, run the explain plan, sample a thousand rows, draft the migration. That development loop doesn't exist with TablePlus or DBeaver. Inline AI suggestions and a chat pane wired to a Copilot subscription or any OpenAI-compatible key cover the case where you'd rather query the model directly.
+
+Beyond the engines and the AI, the basics are honestly handled: SSH tunnels, ER diagrams, query history, undo/redo on cell edit, iCloud sync for connections and tabs across your Macs. A bundled Chinook sample database means you can poke at the UI without wiring anything up. The iPad and iPhone builds are in public TestFlight; a Linux build is in progress.
+
+Honest limitations: five months old, the maintainer's first big indie release, and the rough-edges list in the launch post is candid — features still landing, some engines more polished than others. AGPLv3 means if you fork it and ship a hosted service you owe your changes back; for a desktop user that's invisible, for anyone planning to wrap it as SaaS that's the whole catch.
diff --git a/src/content/reviews/valchoose-barf-bags/hero.jpg b/src/content/reviews/valchoose-barf-bags/hero.jpg
new file mode 100644
index 0000000..517da59
Binary files /dev/null and b/src/content/reviews/valchoose-barf-bags/hero.jpg differ
diff --git a/src/content/reviews/valchoose-barf-bags/index.mdx b/src/content/reviews/valchoose-barf-bags/index.mdx
new file mode 100644
index 0000000..63ccd9a
--- /dev/null
+++ b/src/content/reviews/valchoose-barf-bags/index.mdx
@@ -0,0 +1,26 @@
+---
+name: "Valchoose Disposable Barf Bags"
+subtitle: "Hospital-grade 1000mL vomit bags with a rigid plastic ring that holds itself open"
+date: 2026-05-06
+category: kit
+tags: [first-aid, car, kids, travel, kit, household]
+link: "https://www.amazon.com/dp/B083J2S3Q6/"
+linkText: "View on Amazon"
+description: "Hospital-grade 1000mL vomit bags with a rigid plastic ring that holds itself open hands-free — the kind of object that's invisible until it's the only thing you want."
+source: "Reader suggestion"
+fromFind: "valchoose-barf-bags"
+---
+
+
+
+*The Valchoose 1000mL bag, ring at the mouth — the rigid hoop is the whole product.*
+
+> Hospital-grade vomit bags whose entire design is one detail: a rigid plastic ring at the mouth that holds the bag open without anyone needing to grip it. That detail is the difference between a usable object and an empty grocery sack and a prayer.
+
+Most "vomit bag" solutions in a household are improvised: a kitchen sack, a paper bowl, the towel within reach. They all share the same failure mode — they collapse the moment whoever's holding them lets go, which is exactly when they need not to. The Valchoose bags are the same units hospitals issue: a deep blue 1000mL pouch heat-sealed onto a rigid white plastic ring that holds itself open, hands-free, indefinitely.
+
+That detail matters when the user is a kid in a car seat, a passenger in the dark, or an adult mid-wave of nausea — the bag stays where you point it without grip strength or attention. After use, the ring has an eyelet groove cut into the rim: twist the bag closed and lock the twist into the ring itself. The result is a sealed, contained, leak-resistant unit you can hand off or set down without it spilling.
+
+Compact enough for a glove box, a purse, a bedside drawer, or every guest bath. Fourteen in a pack is roughly the right multiple for "one kept everywhere I might wish I had one" — the kind of preparedness object that's invisible the 99% of the time you don't need it, and the only thing you want the 1% of the time you do.
+
+Honest limitation: single-use disposable plastic. No thoughtful-material angle here — the trade is "one moment when it works perfectly" against another single-use object in the world. For something needed maybe once a year per household, it's the right side of the line, but worth naming.
diff --git a/src/lib/hero.ts b/src/lib/hero.ts
index 89d536d..16f1b1f 100644
--- a/src/lib/hero.ts
+++ b/src/lib/hero.ts
@@ -5,15 +5,19 @@ import altTab from '../content/reviews/alt-tab/hero.jpg';
import apex from '../content/reviews/apex-markdown-processor/hero.png';
import blip from '../content/reviews/blip/hero.jpg';
import esproP7 from '../content/reviews/espro-p7-french-press/hero.jpg';
+import finalist from '../content/reviews/finalist/hero.png';
import folderPeek from '../content/reviews/folder-peek/screenshot.png';
+import gumShell from '../content/reviews/gum-shell/hero.png';
import hyperkey from '../content/reviews/hyperkey/hero.png';
import ice from '../content/reviews/ice/ice-bar.png';
import macMouseFix from '../content/reviews/mac-mouse-fix/studio-display.png';
import monitorcontrol from '../content/reviews/monitorcontrol/hero.png';
import smartmoverShortcut from '../content/reviews/smartmover-shortcut/hero.jpg';
import superkey from '../content/reviews/superkey/hero.jpg';
+import tablepro from '../content/reviews/tablepro/hero.png';
import timelined from '../content/reviews/timelined/hero.png';
import tot from '../content/reviews/tot/seven-dots.png';
+import valchooseBarfBags from '../content/reviews/valchoose-barf-bags/hero.jpg';
import antinote from '../content/reviews/antinote/swipe.mp4';
import cotypist from '../content/reviews/cotypist/hero.mp4';
@@ -34,15 +38,19 @@ export const heroes: Record = {
'apex-markdown-processor': { kind: 'image', src: apex },
blip: { kind: 'image', src: blip },
'espro-p7-french-press': { kind: 'image', src: esproP7 },
+ finalist: { kind: 'image', src: finalist },
'folder-peek': { kind: 'image', src: folderPeek },
+ 'gum-shell': { kind: 'image', src: gumShell },
hyperkey: { kind: 'image', src: hyperkey },
ice: { kind: 'image', src: ice },
'mac-mouse-fix': { kind: 'image', src: macMouseFix },
monitorcontrol: { kind: 'image', src: monitorcontrol },
'smartmover-shortcut': { kind: 'image', src: smartmoverShortcut },
superkey: { kind: 'image', src: superkey },
+ tablepro: { kind: 'image', src: tablepro },
timelined: { kind: 'image', src: timelined },
tot: { kind: 'image', src: tot },
+ 'valchoose-barf-bags': { kind: 'image', src: valchooseBarfBags },
antinote: { kind: 'video', src: antinote },
cotypist: { kind: 'video', src: cotypist },
dockdoor: { kind: 'video', src: dockdoor },
diff --git a/src/pages/categories/[category].astro b/src/pages/categories/[category].astro
index 692a139..86c77d3 100644
--- a/src/pages/categories/[category].astro
+++ b/src/pages/categories/[category].astro
@@ -1,6 +1,6 @@
---
import BaseLayout from '../../layouts/BaseLayout.astro';
-import EntryList from '../../components/EntryList.astro';
+import EntryGrid from '../../components/EntryGrid.astro';
import { getAllEntries } from '../../lib/entries';
import {
buildOgImage,
@@ -61,7 +61,7 @@ const breadcrumbs = buildBreadcrumbs([
ogImage={ogImage}
jsonLd={[collectionPage, itemList, breadcrumbs]}
>
-
+
← back