Go to file
pavlov346346-source 28fd97bcf3 fix: replace gourmet-hero's fake category tabs with real ones
Same issue as the cards just removed from cream-elegance: a hardcoded
['РЫБНЫЕ','МЯСНЫЕ','ВЕГЕТАРИАНСКИЕ','САЛАТЫ','ДЕСЕРТЫ'] tab row that
had nothing to do with what was actually in the order (an order with
zero vegetarian items still showed a "ВЕГЕТАРИАНСКИЕ" tab as if
active/relevant). Now derives the chip row from the distinct
categoryName values actually present on the order's items, and
renders nothing if that data isn't available.

Verified this pass end-to-end rather than just by inspection:
- Real "Скачать PDF" pipeline (sunClientOfferDebugPdf) produces a
  valid application/pdf blob with a correct %PDF-1.4 header, not just
  canvases.
- Confirmed Canvas text genuinely falls back through the font stack
  (measured identical metrics for an unregistered font vs. Georgia
  directly, and document.fonts.load() resolves instantly for a
  never-registered family) -- so a blocked/unreachable Google Fonts
  degrades silently to Georgia/Arial instead of hanging or erroring,
  which matters given this app already had to work around Russia
  connectivity issues elsewhere.
- Re-rendered all 6 templates against deliberately adversarial data
  (150+ word event name, 44-char client name, 350 guests, a
  million-ruble price, an item with no photo/price/category, a long
  promo code) -- no crashes, no overlap, graceful ellipsis truncation
  throughout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 10:57:29 +03:00
.github/workflows fix: gate production promotion on QA success; remove dead data-layer files 2026-09-12 14:08:38 +03:00
docs fix: reconcile version/test drift from the unreviewed production merge 2026-09-12 14:40:22 +03:00
ops Add v17.8.2 owner workspace onboarding migration 2026-09-14 10:57:45 +03:00
public fix: replace gourmet-hero's fake category tabs with real ones 2026-09-16 10:57:29 +03:00
supabase/functions Merge production (account center + login redesign) into main 2026-09-12 14:36:52 +03:00
tests fix: reconcile version/test drift from the unreviewed production merge 2026-09-12 14:40:22 +03:00
.gitignore Caterium v17.6.0 - GitHub Cloudflare autodeploy 2026-09-07 15:29:20 +03:00
deploy-trigger.txt ci: verify fresh auth cache on Timeweb 2026-09-12 08:15:01 +03:00
GITHUB-CLOUDFLARE-SETUP.txt docs: mark Cloudflare as verified-production fallback 2026-09-11 09:36:55 +03:00
package-lock.json Fix high-severity npm audit findings 2026-09-11 07:51:06 +03:00
package.json feat: add 6 new client-offer PDF templates, archive the old 13 2026-09-15 18:27:23 +03:00
PUSH-TO-GITHUB.bat Caterium v17.6.0 - GitHub Cloudflare autodeploy 2026-09-07 15:29:20 +03:00
README.md docs: make Timeweb production source of truth 2026-09-11 09:36:48 +03:00
TIMEWEB-APP-PLATFORM.md Infra: production branch promotion for app.caterium.ru 2026-09-09 19:09:32 +03:00
UPDATE-FROM-REMOTE-AND-PUSH.bat Caterium v17.6.0 - GitHub Cloudflare autodeploy 2026-09-07 15:29:20 +03:00
wrangler.jsonc Caterium v17.6.0 - GitHub Cloudflare autodeploy 2026-09-07 15:29:20 +03:00

Caterium

Caterium catering SaaS frontend with Supabase backend.

Production

Primary production URL: https://app.caterium.ru

Production frontend is hosted on Timeweb Cloud App Platform:

  • repository: pavlov346346-source/caterium-app
  • branch: production
  • publish directory: public
  • auto deploy: enabled for production

main is the integration branch. GitHub Actions runs the full Caterium QA workflow for each push to main. Only a successful QA run may promote the verified commit to production.

The Cloudflare Worker ancient-sound-04ab is retained only as a fallback. It is not the primary production target and must not replace the Timeweb deployment unless an intentional fallback procedure is being used.

Deploy checks

npm ci
npm audit --audit-level=high
npm run check:deploy
npm run test:e2e

The QA workflow performs these checks automatically. High/critical npm audit findings block promotion.

Cloudflare fallback

Use Cloudflare only as a backup deployment target. Manual fallback deployment is available as:

npm run deploy:cloudflare-backup

When configuring Git-based Cloudflare fallback deployment, use the verified production branch rather than main so the fallback receives the same QA-approved commit as Timeweb.

Backend

Supabase Edge Functions are versioned under supabase/functions/. SQL migration/history files live under ops/sql/. Database DDL changes should be applied as migrations and kept in repository history.

See TIMEWEB-APP-PLATFORM.md for the production hosting checklist.