9 Commits

Author SHA1 Message Date
jbrechtel edfa9bac76 docs: add implementation plan for cooking log feature 2026-05-25 21:48:51 -04:00
jbrechtel 59fd96b57d docs: add design and plan for inline title editing 2026-05-21 21:28:00 -04:00
jbrechtel 5765829004 refactor: return Either from loadConfig, add Config tests 2026-05-21 10:16:41 -04:00
jbrechtel ddb8577c4b feat: add headless Chromium fallback to recipe scraper
Build and Deploy / build-and-deploy (push) Has been cancelled
Uses Playwright to drive Chromium when the primary requests-based
fetch fails (e.g., Cloudflare, JS-required pages). Hybrid approach:
try fast path first, fall back to Chromium only on failure.

Dockerfile: add playwright==1.52.0 pip package, run playwright
install-deps chromium + playwright install chromium to download
the browser and all system libraries.

scrape-recipe: add fetch_with_chromium() that tries Playwright
first, then chromium --headless --dump-dom as a subprocess fallback.
Modify main() to catch primary fetch errors and call Chromium
fallback before giving up.
2026-05-20 22:44:15 -04:00
jbrechtel 8807ba3851 feat: show recipe image alongside description when metadata has one
Build and Deploy / build-and-deploy (push) Successful in 1m30s
Adds a .roux-desc-row flex container that places the recipe
description text on the left and the image (from metaImage)
on the right, using what was previously empty horizontal space.
Image is capped at 280px, with a subtle shadow and rounded
corners. Responsively stacks on mobile.
2026-05-20 22:35:25 -04:00
jbrechtel 2628fcf6d9 live update docs
Build and Deploy / build-and-deploy (push) Successful in 1m22s
2026-05-20 11:57:58 -04:00
jbrechtel 042bcc9e51 Add implementation plan for live recipe watching 2026-05-19 22:58:07 -04:00
jbrechtel 09952f0c43 Add implementation plan for schema.org JSON-LD recipe types 2026-05-19 22:37:08 -04:00
jbrechtel 6970725a35 chore: add implementation plan for type-ahead search 2026-05-19 21:41:41 -04:00