Releases: ShamgarBN/paperplate
v2.1.0 — iPad now matches the desktop aesthetic
The iPad PWA's look and feel now mirrors the macOS app: same warm cream background, same burnt-orange primary color, same Fraunces serif for titles and Inter for body text. The teal placeholder palette is gone.
What changed
- Central theme tokens (`apps/mobile/src/theme/tokens.ts`) derived from the desktop's HSL CSS variables — light + dark palettes precomputed to hex for React Native.
- Loaded Fraunces + Inter via `@expo-google-fonts`. App boot waits for fonts so the first paint never flashes a system fallback.
- Refactored 12 screens + components to consume the tokens. Headings (Library, Plans, Recipe titles, etc.) use Fraunces; everything else uses Inter at the right weight.
- Added expo-asset (peer dep of expo-font that the install command missed).
No behavior changes — pure styling.
Install — Mac
Drop `Paperplate_2.1.0_aarch64.dmg` into Applications and right-click → Open the first time.
iPad
The PWA at https://shamgarbn.github.io/paperplate/ auto-deploys from `main`. The next launch from your home-screen shortcut picks up the new theme; you may need to fully close + reopen the app to flush the old bundle from cache.
Diff
`v2.0.0...v2.1.0` is a single commit (23 files, 601 inserts, 372 deletes) plus the version bump and Cargo.lock update.
v2.0.0 — Supabase backend + iPad PWA
First release of Paperplate 2.x. The local-first SQLite app from 1.x is now a two-device household app backed by Supabase: a Tauri-shelled Mac Silicon desktop binary and an installable iPad PWA sharing one library, one set of meal plans, one running shopping list.
Highlights
- Supabase backend — Postgres schema mirroring the old SQLite (recipes, ingredients, steps, categories, plans, slots, day notes, aisles, shopping lists/items/checks), all RLS-restricted to authenticated users. Storage bucket for hero images.
- iPad PWA at https://shamgarbn.github.io/paperplate/ — open in Safari → Add to Home Screen → launches chrome-less.
- macOS app — Tauri 2 shell, 5.1 MB ad-hoc signed `.dmg` attached below. Right-click → Open the first time.
- Auto-fill the planner heuristic ships to both devices.
- Unit-correct shopping aggregator (1 cup + ½ cup = 1½ cup, indivisibles rounded up) runs on both devices via shared `packages/core`.
- Hero image backfill — 21 of 22 imported recipes had their hero images re-fetched from the source URL and uploaded to Storage.
Install — Mac
- Download `Paperplate_2.0.0_aarch64.dmg` below.
- Open the DMG, drag Paperplate into Applications.
- First launch: right-click `Paperplate.app` → Open → click Open in the warning dialog.
Apple Silicon only.
Install — iPad
- Open https://shamgarbn.github.io/paperplate/ in Safari (must be Safari, not Chrome).
- Tap Share → Add to Home Screen → Add.
- Launch from the home screen icon.
Future PWA updates auto-deploy on every push to `main`.
What's not in 2.0.0
- One recipe still missing its hero image ("Shoyu Chicken" — source returned HTTP 402, retry coming).
- App icon — generic Expo icon for now; custom icon work pending.
- Native iPad build (vs the PWA) — possible via EAS Build with a paid Apple Developer account; not in scope yet.
Full changelog
Git history from `v1.0.1...v2.0.0` is squashed across the `supabase-rebuild` branch (merged into `main` on 2026-05-25). Notable commits:
- Restructure to monorepo + Supabase backend
- Migrate desktop data layer from `tauri-plugin-sql` to `@supabase/supabase-js`
- Expo SDK 56 iPad app
- `scrape-recipe` Supabase Edge Function (JSON-LD)
- Hero image backfill + Storage rendering
- Per-plan shopping list + send-to-main-list
- Plan editing (slot lock, day notes, auto-fill)
- Settings (categories + aisles)
- Hero image upload (mobile + desktop)
- Print support
- Extracted `packages/core` and proper shopping aggregator
- Tauri Rust cleanup (stripped unused plugins + commands)
Paperplate v1.0.1
First tagged release. Apple Silicon only.
What's in 1.0.1
Editor
- Sub-recipe sections for both ingredients and instructions (e.g. "Cake" + "Frosting"). Section headers render on the recipe detail page and in print.
- Rich text on step instructions: bold, italic, underline, and an 8-color palette tuned for light + dark themes. Ingredient lines stay plain text so scaling and shopping-list aggregation keep working.
- Separate "Description" and "Notes" fields — description renders at the top of a recipe, notes at the bottom.
Library
- Categories split into TYPE (Main, Soup, Dessert, ...) and COOKING METHOD (Oven, Grill, Air-Fryer, ...).
- Source domain (e.g.
nytimes.com) shown next to the Source link. - Recipes and categories alphabetized by default.
- HTML entities (
',&, etc.) decoded consistently at scrape and render time.
Meal Plans
- Multiple recipes per slot. Drag a main + a side into the same slot and the shopping list aggregates correctly.
- Per-day notes field above each day's meal slots.
- Rename + duplicate plans from the plan header.
Shopping
- "Add to main list" / "Remove from main list" on per-plan shopping lists so the per-plan and Global lists can stay synced.
- Per-row aisle reassignment with persistent ingredient→aisle override.
- Full CRUD over aisles in Settings, alphabetized.
- Recipe multiplier shown and editable inline on the Shopping List (1x / 2x / 3x / 4x).
Capitalization & polish
- "Meal Plans" and "Shopping List" capitalized everywhere.
Security
Step-instruction rendering is gated by DOMPurify with a strict allowlist (bold, italic, underline, span with palette class, br). 22 unit tests pin allow/deny behavior — scripts, event handlers, styles, anchors, images all stripped.
Install
- Download
Paperplate_1.0.1_aarch64.dmg. - Open it and drag Paperplate into
Applications. - First launch: right-click
Paperplate.appinApplicationsand choose Open (ad-hoc signed, not notarized — one-time bypass).
Known limitations
- Apple Silicon only; no Intel build attached.
- Not notarized, so Gatekeeper requires the right-click → Open dance on first launch.
v0.1.0 — initial release
First public build of Paperplate. Apple Silicon only.
Highlights
- Recipe scraping (JSON-LD + microdata + generic HTML fallback)
- Manual recipe import with drag-and-drop hero images
- Meal planner with auto-fill (no-repeat-in-week, no-same-cuisine-in-a-row)
- Per-plan + global shopping lists, grouped by aisle
- Fractional serving multipliers (1/4× through 3×)
- Reversible "Cooked today" tracking
- Native print, database export/import, 30-day cleanup of transient data
Install
- Download
Paperplate_0.1.0_aarch64.dmg. - Open it and drag Paperplate into
Applications. - First launch: right-click the app in
Applicationsand choose Open (ad-hoc signed, not notarized — one-time bypass).
Known limitations
- Apple Silicon only; no Intel build attached.
- Not notarized, so Gatekeeper requires the right-click-Open dance on first launch.