Prevents agents from using apply_migration or DDL via execute_sql,
which breaks CI by creating remote migration entries without local files.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
All 57 pre-existing migrations have been registered in prod's
schema_migrations table so db push --include-all will skip them
and only apply new migrations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Production only had one migration tracked in schema_migrations.
With --include-all, db push tried to re-run all 57 earlier migrations.
Without it, only migrations newer than the latest tracked version are applied.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migration 20260127202703 was applied to prod via MCP but had no local
file, causing supabase db push to fail with a version mismatch.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds Sunday weekly recap push notifications summarizing couple match
activity. Includes edge function, migration, notification preference
toggle, and mobile notification handling.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Re-add is_explicit toggle on pack and dare pack forms labeled as
"NSFW". Show NSFW badge on pack cards and user enabled packs.
Remove all intensity/comfort level references from admin UI including
form fields, analytics charts, review dialog columns, AI generation
prompts/scoring, cherry-pick balancing, and settings toggles. The
database columns remain unchanged.
Use Reanimated's built-in Animated.FlatList instead of manually wrapping
with createAnimatedComponent to fix Android crash where animated scroll
handler binds before the native node is registered.
Also includes v1.0.3 version bump and expo-sharing pin.
Extract the slider track, levels, card, and modal into\nfocused subcomponents with shared styles/constants.\nPreserve the existing IntensitySlider API.
Move swipe screen logic into hooks/services and extract
state-specific UI components to keep files small while
preserving existing behavior.
Reference: US-002
The migration needs to run before add_question_type_to_recommended_questions
which depends on the question_type enum. Both had timestamp 20260125110000,
causing alphabetical sort to run them in wrong order.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use IF NOT EXISTS for CREATE TYPE
- Use ADD COLUMN IF NOT EXISTS for ALTER TABLE
- Use DROP POLICY IF EXISTS before CREATE POLICY
This allows the migration to run safely even if schema already exists.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Allows migrations with timestamps before existing remote migrations
to be applied. Needed when migration files are renamed or when
environments have diverged.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The add_question_types migration had an earlier timestamp than
add_color_to_categories which was already applied to production.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- New discovery components (ContentTile, ContentRow, CircularProgress)
- Refactor home screen with compact header and content tiles
- Add hide_nsfw profile setting for content filtering
- Add color column to categories table
- Track pack progress (answered/total questions)
- Update related stores and tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use matrix strategy to deploy sequentially: non-prod first, then prod.
This ensures both environments stay in sync and provides a safety gate.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The latest supabase-js@2.92.0 has a Deno compatibility bug with
createRequire that causes all edge functions to fail with:
"The argument 'filename' must be a file URL object..."
Pin all edge functions to @2.45.0 with ?target=deno parameter
to ensure Deno-compatible builds from esm.sh.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use grep to only match lines starting with lowercase (function names),
and add validation to skip empty or invalid names.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
CLI expects supabase/functions/ relative to workdir, so --workdir apps
makes it find apps/supabase/functions/.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
supabase db push doesn't support --project-ref, it relies on link.
Run link from apps/supabase so the config is in the right place.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Allow manual triggering via workflow_dispatch
- Trigger on changes to the workflow file itself
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The supabase link command was running from repo root while db push
ran from apps/supabase, causing it to not find the linked project.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Separate string and numeric settings into different locals to prevent
merge() from coercing integers to strings. The Supabase API requires
rate_limit_email_sent to be an integer.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove root-level main.tf, variables.tf, outputs.tf, versions.tf
(duplicated the module-based approach)
- Remove duplicate terraform/templates/ directory
- Remove stale terraform.tfvars.example and .terraform.lock.hcl
- Remove outdated scripts/import-production.sh
- Fix non-prod SMTP error by using merge() to completely omit
SMTP fields instead of setting them to null
- Update README to remove workspace migration section
The environment directories approach (terraform/environments/*) is now
the only supported method.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>