-
92e9abdb84
Replace mailto with server-sent invoice request
main
chris
2026-06-30 10:05:58 -04:00
-
8aaf2f1dcb
Improve error emails and invoice mailto with full order details
chris
2026-06-30 10:01:05 -04:00
-
84167c1ae8
Fix checkout NOT_FOUND: retry as ad-hoc when catalog IDs are stale
chris
2026-06-30 08:39:02 -04:00
-
821bfac00a
Admin gallery: robust UX overhaul
chris
2026-06-27 10:30:18 -04:00
-
1a1fe7044a
Fix admin gallery auth: use X-Admin-Password header instead of Authorization Bearer
chris
2026-06-27 10:13:36 -04:00
-
95e88780ab
BouquetPicker: balloon swatches for latex color picker, wider modal, sticky mylar tray
chris
2026-06-24 10:09:52 -04:00
-
c263e2e7ba
BouquetPicker: per-instance number/letter selection, wider layout, sticky mylar tray, bouquet notes
chris
2026-06-24 10:06:04 -04:00
-
6c6b756305
Refactor BouquetPicker: tabs, weight selection, per-color latex steppers
chris
2026-06-22 12:56:30 -04:00
-
3977580b81
BouquetPicker: fix latex filter, unified color picker, modifier visibility
chris
2026-06-18 17:15:33 -04:00
-
c9bd3e50d0
BouquetPicker: fix latex, sticky counters, modifier support
chris
2026-06-18 14:20:05 -04:00
-
5e1db823cb
Fix bouquet builder: bypass Online filter via dedicated API endpoint
chris
2026-06-18 13:09:13 -04:00
-
0e1d8e5af4
BouquetPicker: show category slugs in empty state for debugging
chris
2026-06-18 13:04:24 -04:00
-
9779198d46
Fix Set spread TS error: use Array.from instead of spread syntax
chris
2026-06-18 12:54:37 -04:00
-
6f6a941007
BouquetPicker: log category slugs to help diagnose build filter
chris
2026-06-18 12:52:30 -04:00
-
b3df81fb25
Bouquet builder: pull all items from Build category only
chris
2026-06-18 12:42:48 -04:00
-
52a9828b96
Bouquet builder: mylars from Build category, latex from full catalog
chris
2026-06-18 12:37:23 -04:00
-
7b7c3efb65
Fix CartDrawer build error: move grouping logic out of JSX
chris
2026-06-18 12:08:34 -04:00
-
c72699da16
Fix bouquet builder detection: use name match instead of tags
chris
2026-06-18 12:01:54 -04:00
-
528fb90303
Add Build Your Own Bouquet feature
chris
2026-06-18 11:42:21 -04:00
-
f1537402b5
Disable sold-out variants in picker; default to first in-stock option
chris
2026-06-18 11:08:17 -04:00
-
904fa91bad
Fix sold-out logic: only mark product sold out when all variants are exhausted
chris
2026-06-18 10:59:41 -04:00
-
699c5cbaa1
Fix HEIC crash: skip unsupported images gracefully
chris
2026-06-16 21:44:37 -04:00
-
14fc9df9d2
Add server-side content filtering to block spam
chris
2026-06-16 08:21:58 -04:00
-
eef6d0cb7d
Revert gallery/server workarounds — fixed in NPMplus instead
chris
2026-06-16 08:05:29 -04:00
-
ca4e52336a
Proxy /photos and /uploads through main-site to gallery backend
chris
2026-06-16 07:55:56 -04:00
-
cdeb2f5406
Fix gallery images blocked by OpaqueResponseBlocking
chris
2026-06-15 11:21:19 -04:00
-
8b1e89cf04
Lower ALTCHA cost to 2000
chris
2026-06-13 19:23:55 -04:00
-
f59d19f3c2
Set ALTCHA to auto-solve on page load
chris
2026-06-13 19:21:10 -04:00
-
08ac545567
Harden ALTCHA: raise cost and add expiration
chris
2026-06-13 19:11:19 -04:00
-
10f9511c76
Add robots.txt and sitemap.xml
chris
2026-06-13 19:09:02 -04:00
-
d20a2804ff
Fix contact tile height stretching
chris
2026-06-12 19:48:58 -04:00
-
ad5c984a46
Mirror live open/closed status to contact page
chris
2026-06-12 19:45:21 -04:00
-
f8ff7f0d94
Revert "Mirror contact tiles to homepage, consolidate hours into tile"
chris
2026-06-12 19:44:38 -04:00
-
483b36999b
Mirror contact tiles to homepage, consolidate hours into tile
chris
2026-06-12 19:43:29 -04:00
-
5cd7b29b63
Improve contact page layout and visual design
chris
2026-06-12 19:38:39 -04:00
-
418fef1a15
Remove email obfuscation from contact page
chris
2026-06-12 19:36:54 -04:00
-
01cad11472
Fix ALTCHA widget not loading or submitting
chris
2026-06-12 10:44:05 -04:00
-
5e6b201336
Add Cache-Control: no-store to ALTCHA challenge endpoint
chris
2026-06-12 09:20:17 -04:00
-
c503d6dd75
Easter egg: trigger on copyright symbol click only
chris
2026-06-12 06:03:15 -04:00
-
2ebbe4fbe0
Fix ALTCHA CDN path for v3 widget
chris
2026-06-12 06:01:45 -04:00
-
c00f2de338
Upgrade main-site to Node 20 for Web Crypto globals
chris
2026-06-12 05:56:40 -04:00
-
e7af5bca4a
Fix store-status route always returning 401
chris
2026-06-11 14:53:39 -04:00
-
9cac3a8e8a
Fix altcha require path for Node 18 compatibility
chris
2026-06-11 14:43:53 -04:00
-
0652339539
Add ALTCHA widget to main page contact form
chris
2026-06-11 14:25:27 -04:00
-
a89788f531
Add ALTCHA proof-of-work spam protection to contact form
chris
2026-06-11 14:23:42 -04:00
-
548c19f3fa
Add UX improvements: thumbnails, auto-quote, shareable cart, order status
chris
2026-06-10 08:26:22 -04:00
-
9dd4aff35e
Remove dead code: unused components, duplicate logic, orphaned route
chris
2026-06-10 08:01:39 -04:00
-
f0b60f123d
Fix store closure message rendering in dark mode
chris
2026-06-09 21:05:13 -04:00
-
781f990541
Add store kill switch to admin panel and estore
chris
2026-06-07 00:52:31 -04:00
-
2e5f253580
Polish: meta/OG tags, JSON-LD, 404 pages, typo fix
chris
2026-06-07 00:47:26 -04:00
-
0d57760df1
Contact form: set min date to today on event date picker
chris
2026-06-07 00:35:32 -04:00
-
77318fb477
Contact form: split name into first/last, add ntfy notification
chris
2026-06-07 00:32:06 -04:00
-
cd18bd3937
Contact form: add emoji to subject, show event date instead of type
chris
2026-06-07 00:27:50 -04:00
-
d026bc8217
Fix balloon animation: use Web Animations API instead of CSS custom properties in keyframes
chris
2026-06-06 21:38:40 -04:00
-
75b20e6ca2
Add debug logging to easter egg trigger
chris
2026-06-06 21:29:51 -04:00
-
181195dbbc
Fix easter egg trigger: use touchstart on mobile, 5 taps in 3s
chris
2026-06-06 21:23:05 -04:00
-
066364d2b7
Fix easter egg trigger: 7 quick taps on non-interactive area
chris
2026-06-06 21:15:26 -04:00
-
2002d7f35a
Add balloon easter egg — long press logo to trigger
chris
2026-06-06 21:07:06 -04:00
-
5900ce817e
Fix dark mode: add data-theme=light to all main-site HTML pages
chris
2026-06-06 21:01:38 -04:00
-
6a2bf1f30b
Fix nginx port: bind to 3000 instead of 80 for NPM compatibility
chris
2026-06-06 20:59:04 -04:00
-
0ec3766447
Wire SMTP env vars into main-site container, document in .env.example
chris
2026-06-06 20:37:50 -04:00
-
aee1f10179
Sync native contact form to main-site, replace iframe
chris
2026-06-06 20:32:05 -04:00
-
fca6e8da0a
Add fulfillment state controls to admin orders panel
chris
2026-06-06 20:22:23 -04:00
-
ca8773d3c3
Fix order complete: update fulfillment state alongside order state
chris
2026-06-05 20:08:54 -04:00
-
ef38c42e17
Add Orders tab to admin panel for managing online orders
chris
2026-06-05 20:03:52 -04:00
-
02e49ba41b
Fix checkout: block false slots when calendar down, add booking request fallback
chris
2026-06-05 19:57:34 -04:00
-
a49075b167
Fix Apple Pay verification file — serve directly from nginx
chris
2026-05-29 06:47:06 -04:00
-
7d5f74a79e
Serve Apple Pay verification file via nginx
chris
2026-05-28 17:50:17 -04:00
-
92ab3a5633
Add Google Pay and Apple Pay support; fix catalog category filter
chris
2026-05-28 16:53:55 -04:00
-
53a2ca03e7
fix: force Bulma light theme on admin page
chris
2026-05-21 12:07:22 -04:00
-
55055ae9bc
fix: light theme for all admin modals
chris
2026-05-21 12:02:56 -04:00
-
1435964f6f
feat: drag-to-select and full-header click in admin gallery
chris
2026-05-21 11:49:31 -04:00
-
7fce1632be
feat: editable tag presets, next/prev modal nav, needs-tagging filter
chris
2026-05-21 11:42:32 -04:00
-
0e4461e957
fix: reseed sets createdAt from filename timestamp or file mtime
chris
2026-05-21 11:29:11 -04:00
-
633f1e2380
fix: reseed script now skips -sm and -md variant files
chris
2026-05-20 15:48:06 -04:00
-
2723a6d954
feat: replace text watermark with BPB logo SVG overlay on gallery uploads
chris
2026-05-20 15:39:03 -04:00
-
92cf44e5f5
fix: resolve gallery CORS failure and simplify API routing
chris
2026-05-20 14:53:13 -04:00
-
4a135a7919
fix: route gallery API through nginx, send Square receipts, unblock order completion
chris
2026-05-20 14:32:00 -04:00
-
bb878c2a8a
fix: apply 6.35% CT Sales Tax to all order line items
chris
2026-05-11 15:46:36 -04:00
-
5777788127
fix: point all Plausible scripts to self-hosted metrics instance
chris
2026-05-10 13:15:41 -04:00
-
8799892341
fix: add Plausible window initializer to estore layout
chris
2026-05-10 10:40:54 -04:00
-
973808088e
revert: restore product image background to white
chris
2026-05-10 10:34:24 -04:00
-
f45a1f807f
fix: make product image rounded corners visible
chris
2026-05-09 22:07:12 -04:00
-
e8240e383a
fix: increase Square card form height to show postal code field
chris
2026-05-09 13:24:23 -04:00
-
bbf08e4267
fix: hide subtotal line when it equals the total (no delivery/tax)
chris
2026-05-09 13:16:33 -04:00
-
8e283a4dff
fix: update Green Tea hex to #b2ddc3, remove Pastel Magenta
chris
2026-05-09 10:50:16 -04:00
-
5643153a05
feat: add Magenta (#a01357) to Pinks & Reds color family
chris
2026-05-09 10:41:50 -04:00
-
07ae012aa3
feat: add Green Tea (#8a9f7f) to Greens color family
chris
2026-05-09 10:39:34 -04:00
-
ed5db69a90
fix: replace placeholder phone number in privacy policy
chris
2026-05-08 10:44:17 -04:00
-
e2af78ff55
fix: nginx waits for estore healthcheck before starting
chris
2026-05-08 10:36:04 -04:00
-
57cc5840b9
feat: obfuscate email with click-to-reveal across all pages
chris
2026-05-08 10:23:50 -04:00
-
3330c47af2
fix: secure admin API endpoints with Bearer token auth
chris
2026-05-08 08:30:58 -04:00
-
c40db43c04
fix: replace literal \u2014 escape with em dash in notes placeholder
chris
2026-05-08 07:57:27 -04:00
-
f969e5d242
feat: configurable booking lead time in admin (default 48h)
chris
2026-05-08 07:48:13 -04:00
-
134705792c
fix: pass OSRM_URL from root .env into estore container
chris
2026-05-05 16:40:53 -04:00
-
c240ec4ce6
fix: disable Next.js fetch cache for OSRM requests
chris
2026-05-05 16:19:50 -04:00
-
5bebd51ac4
fix: log OSRM failure reason and URL instead of silent fallback
chris
2026-05-05 15:15:40 -04:00
-
175305a28f
fix: calendar event UTC times and slot query range
chris
2026-05-05 14:52:06 -04:00
-
bb6c8a03a7
fix: calendar newlines, admin delivery window setting
chris
2026-05-05 10:57:37 -04:00
-
ffd07e35bd
fix: vinyl order attribution and 1-hour customer delivery window
chris
2026-05-05 10:51:18 -04:00