chore(db): squash Supabase migrations#2459
Conversation
|
Warning Review limit reached
More reviews will be available in 42 minutes and 32 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (300)
📝 WalkthroughWalkthroughAdds guarded migration-order validation for a squashed baseline, a repair script and docs/workflow wiring to apply it, updates the audit trigger to resolve API-key identity, and removes conditional download-related enum additions. ChangesMigration Baseline Squash and Repair
Estimated code review effort 🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
|
Merging this PR will not alter performance
Comparing Footnotes
|
💡 Codex ReviewIf any existing Supabase environment has already applied the deleted migrations but has not recorded version capgo/scripts/check-supabase-migration-order.sh Lines 152 to 153 in f9e73e4 The new squash allowance only checks that one migration file remains and that deleted files are older than the base timestamp; it does not verify that the remaining file was actually replaced with a full baseline. A future PR that accidentally deletes every older migration while leaving the latest small delta unchanged would pass this check, leaving fresh databases with only that delta and none of the schema. Include a check that the surviving migration is modified/replaced as part of the squash before setting ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
f9e73e4 to
0e3859c
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0e3859cce3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
0e3859c to
2ed08d9
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2ed08d9f87
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
2ed08d9 to
4b7d9d3
Compare
4b7d9d3 to
3e2ded4
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/repair-supabase-squashed-baseline.sh`:
- Line 86: In baseline_is_applied in
scripts/repair-supabase-squashed-baseline.sh the grep against applied_output
only matches '"applied": true' and will miss compact JSON like '"applied":true';
update the check to accept optional whitespace (e.g. use a regex like
'"applied":\s*true' with grep -P or grep -E) or, even better, parse
applied_output with jq to read .applied (using applied_output and the
baseline_is_applied check) and use that boolean to decide if the baseline is
applied.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: faba99a0-7d6a-4258-836e-b4271abb9535
📒 Files selected for processing (295)
scripts/check-supabase-migration-order.shscripts/repair-supabase-squashed-baseline.shscripts/supabase-worktree.tssupabase/migration_guide.mdsupabase/migrations/20250530233128_base.sqlsupabase/migrations/20250601115144_better_queue_logs.sqlsupabase/migrations/20250605151648_credits.sqlsupabase/migrations/20250608130257_fix_version_meta.sqlsupabase/migrations/20250612131646_exist_app.sqlsupabase/migrations/20250613034031_tmp_users_table.sqlsupabase/migrations/20250619221552_global_stats.sqlsupabase/migrations/20250714021423_manifest_perf.sqlsupabase/migrations/20250903010822_consolidated_org_apikey_migrations.sqlsupabase/migrations/20250908120000_pg_log_and_rls_logging.sqlsupabase/migrations/20250909094709_better_account_delete.sqlsupabase/migrations/20250913161225_lint_warning_fixes_followup.sqlsupabase/migrations/20250916032824_fix_retention.sqlsupabase/migrations/20250920120000_remove_legal_and_update_notification_defaults.sqlsupabase/migrations/20250920120001_remove_old_version_meta.sqlsupabase/migrations/20250921120000_device_version_name.sqlsupabase/migrations/20250927082020_better_app_metrics.sqlsupabase/migrations/20250928145642_orgs_last_stats_updated.sqlsupabase/migrations/20251007132214_global_stats_registers_storage.sqlsupabase/migrations/20251007134349_cron_plan_from_stats_backend.sqlsupabase/migrations/20251014105957_rename_plan_cron.sqlsupabase/migrations/20251014120000_add_batch_size_to_process_function_queue.sqlsupabase/migrations/20251014135440_add_cron_sync_sub.sqlsupabase/migrations/20251019123107_fix_stats.sqlsupabase/migrations/20251021141631_add_usage_credit_system.sqlsupabase/migrations/20251024153920_update_capgo_credits_steps_org.sqlsupabase/migrations/20251024230753_fix_org_delete_cascade.sqlsupabase/migrations/20251026165357_add_missing_queue_cron_jobs.sqlsupabase/migrations/20251031202034_fix_usage_credit_rls.sqlsupabase/migrations/20251103134045_add_download_stats_actions.sqlsupabase/migrations/20251106024103_add_default_channel_to_devices.sqlsupabase/migrations/20251107001223_channel_device_counts.sqlsupabase/migrations/20251107153019_manifest_bundle_counts.sqlsupabase/migrations/20251113041643_transfer_ownership_before_user_deletion.sqlsupabase/migrations/20251113140646_consolidate_cron_job.sqlsupabase/migrations/20251119001844_add_missing_foreign_key_indexes.sqlsupabase/migrations/20251119001847_add_native_build_system.sqlsupabase/migrations/20251120150750_simplify_manifest_bundle_counts.sqlsupabase/migrations/20251204163538_drop_plans_overage_columns.sqlsupabase/migrations/20251208175306_fix_user_delete_old_record.sqlsupabase/migrations/20251209184322_add_top_up_credits_system.sqlsupabase/migrations/20251212112948_add_expose_metadata_to_apps.sqlsupabase/migrations/20251213114641_add_revenue_metrics_to_global_stats.sqlsupabase/migrations/20251213140000_add_encryption_tracking_to_devices.sqlsupabase/migrations/20251219192610_add_cli_version_to_app_versions.sqlsupabase/migrations/20251220011455_optimize_is_good_plan_v5_org.sqlsupabase/migrations/20251221091510_fix_lint_indexes.sqlsupabase/migrations/20251222140030_rbac_system.sqlsupabase/migrations/20251223234326_fix_duplicate_overage_tracking.sqlsupabase/migrations/20251224103713_2fa_enforcement.sqlsupabase/migrations/20251226120000_add_channel_allow_device_prod.sqlsupabase/migrations/20251226121000_add_channel_stats_actions.sqlsupabase/migrations/20251226125240_audit_log.sqlsupabase/migrations/20251227040840_add_production_deploy_install_stats_email.sqlsupabase/migrations/20251228033417_webhooks.sqlsupabase/migrations/20251228063320_fix_audit_log_apikey.sqlsupabase/migrations/20251228065406_user_email_preferences.sqlsupabase/migrations/20251228080032_hashed_api_keys.sqlsupabase/migrations/20251228080037_apikey_expiration.sqlsupabase/migrations/20251228082157_add_apikey_policy_to_get_orgs.sqlsupabase/migrations/20251228100000_password_policy_enforcement.sqlsupabase/migrations/20251228150000_reject_access_due_to_2fa_for_app.sqlsupabase/migrations/20251228160000_get_org_members_apikey_support.sqlsupabase/migrations/20251228215402_add_orphan_images_cleanup.sqlsupabase/migrations/20251229030503_add_cron_tasks_rls_policy.sqlsupabase/migrations/20251229100000_fix_check_org_members_password_policy_service_role.sqlsupabase/migrations/20251229233706_replace_uuid_generate_v4_with_gen_random_uuid.sqlsupabase/migrations/20251230114041_reject_access_due_to_2fa_for_org.sqlsupabase/migrations/20251231060433_add_billing_period_stats_email.sqlsupabase/migrations/20260101042511_enforce_encrypted_bundles.sqlsupabase/migrations/20260102120000_fix_get_org_members_include_tmp_users.sqlsupabase/migrations/20260102140000_fix_get_identity_hashed_apikeys.sqlsupabase/migrations/20260103030451_add_advisory_lock_to_cron.sqlsupabase/migrations/20260104100000_add_allow_preview_to_apps.sqlsupabase/migrations/20260104110000_add_apikey_policy_to_get_orgs_v7.sqlsupabase/migrations/20260104120000_revoke_process_function_queue_public_access.sqlsupabase/migrations/20260105014309_remove_metered.sqlsupabase/migrations/20260105150626_fix_is_allowed_capgkey_hashed_apikeys.sqlsupabase/migrations/20260107000000_add_anon_role_to_webhooks_rls.sqlsupabase/migrations/20260108000000_add_electron_platform.sqlsupabase/migrations/20260108024031_add_devices_platform_columns.sqlsupabase/migrations/20260109000000_fix_build_system_rls_consistency.sqlsupabase/migrations/20260109000001_remove_both_platform_option.sqlsupabase/migrations/20260110044840_improve_usage_credit_rls.sqlsupabase/migrations/20260112140000_cleanup_old_channel_devices.sqlsupabase/migrations/20260113000000_add_plugin_breakdown_to_global_stats.sqlsupabase/migrations/20260113132114_missing_index.sqlsupabase/migrations/20260113160650_delete_old_deleted_versions.sqlsupabase/migrations/20260114214731_add_deleted_at_column.sqlsupabase/migrations/20260115025158_add_daily_fail_ratio_email.sqlsupabase/migrations/20260115051444_sync_stripe_info_on_org_create.sqlsupabase/migrations/20260118000000_add_build_stats_to_global_stats.sqlsupabase/migrations/20260118005052_version_usage_use_version_name.sqlsupabase/migrations/20260119182934_add_use_new_rbac_to_get_orgs_v7.sqlsupabase/migrations/20260120165047_rbac_invites.sqlsupabase/migrations/20260121000000_add_demo_app_support.sqlsupabase/migrations/20260123140712_fix_rbac_perf_security.sqlsupabase/migrations/20260124231940_fix_multiple_permissive_policies.sqlsupabase/migrations/20260125151000_mau_first_seen_device_usage.sqlsupabase/migrations/20260127120000_enforce_2fa_in_permission_checks.sqlsupabase/migrations/20260127121000_allow_credits_without_plan.sqlsupabase/migrations/20260127153000_require_recent_reauth_for_delete_user.sqlsupabase/migrations/20260127232000_sanitize_text_fields.sqlsupabase/migrations/20260129120000_fix_reject_access_due_to_2fa_for_app.sqlsupabase/migrations/20260129123000_fix_is_bundle_encrypted_empty.sqlsupabase/migrations/20260130032543_allow_org_logo_images.sqlsupabase/migrations/20260130033703_private_images_bucket.sqlsupabase/migrations/20260130040811_allow_org_logo_upload.sqlsupabase/migrations/20260130190800_update_invite_expiry_on_resend.sqlsupabase/migrations/20260201015640_add_upgrade_org_stats.sqlsupabase/migrations/20260201042609_fix_password_policy_org_read_gate.sqlsupabase/migrations/20260202090000_add_cli_realtime_feed_pref.sqlsupabase/migrations/20260203010025_add_build_success_stats.sqlsupabase/migrations/20260203120000_optimize_org_metrics_cache.sqlsupabase/migrations/20260203140000_security_hardening.sqlsupabase/migrations/20260203150000_fix_get_user_main_org_id_by_app_id_seed.sqlsupabase/migrations/20260203160000_optimize_audit_logs_rls.sqlsupabase/migrations/20260203173000_get_account_removal_date_auth.sqlsupabase/migrations/20260203190000_check_min_rights_apikey_scope.sqlsupabase/migrations/20260203201308_rbac_org_member_no_app_access.sqlsupabase/migrations/20260204100000_restore_audit_logs_apikey.sqlsupabase/migrations/20260204103000_mfa_email_otp_guard.sqlsupabase/migrations/20260204103001_enable_security_settings_rls.sqlsupabase/migrations/20260204181424_add_channel_permission_overrides.sqlsupabase/migrations/20260205031305_mfa_email_otp_hardening.sqlsupabase/migrations/20260205120000_fix_audit_logs_select_rls.sqlsupabase/migrations/20260206120000_apikey_server_generation.sqlsupabase/migrations/20260206213247_org_has_usage_credits_flag.sqlsupabase/migrations/20260207180640_tmp_users_cleanup_7_days.sqlsupabase/migrations/20260209014020_user_created_via_invite.sqlsupabase/migrations/20260209024134_remove_exceeded_flags_functions.sqlsupabase/migrations/20260210132811_stats_customid_guard.sqlsupabase/migrations/20260211034517_add_demo_apps_created_to_global_stats.sqlsupabase/migrations/20260214054927_restore_top_up_usage_credits_for_service_role.sqlsupabase/migrations/20260216102420_add_build_status_reconciliation_cron.sqlsupabase/migrations/20260221150207_fix_role_bindings_rls_update_insert.sqlsupabase/migrations/20260223000001_add_sso_providers.sqlsupabase/migrations/20260224091500_fix_get_orgs_v6_access_controls.sqlsupabase/migrations/20260224093000_fix_get_total_metrics_auth.sqlsupabase/migrations/20260224153000_add_org_conversion_rate_to_global_stats.sqlsupabase/migrations/20260224153100_fix_org_member_rpc_access.sqlsupabase/migrations/20260224153200_fix_webhook_rls_org_scoping.sqlsupabase/migrations/20260224153201_revoke_record_email_otp_verified_auth_role.sqlsupabase/migrations/20260224153300_add_created_at_to_get_orgs_v7.sqlsupabase/migrations/20260224153401_fix_transfer_app_security.sqlsupabase/migrations/20260224153500_restrict_rpc_api_key_oracles.sqlsupabase/migrations/20260224160000_fix_find_apikey_rpc_permissions.sqlsupabase/migrations/20260225000000_image_metadata_cleanup_triggers.sqlsupabase/migrations/20260225000100_atomic_demo_app_creation.sqlsupabase/migrations/20260225105000_exist_app_v2_apikey_auth.sqlsupabase/migrations/20260225120000_restrict_webhooks_select_for_admin_only.sqlsupabase/migrations/20260226000000_org_rls_require_self_2fa_update.sqlsupabase/migrations/20260226000100_fix_org_rls_2fa_function_permissions.sqlsupabase/migrations/20260226090000_require_verified_email_for_delete_user.sqlsupabase/migrations/20260226153000_restrict_apikey_oracle_rpcs.sqlsupabase/migrations/20260227000000_fix_rescind_invitation_rpc_access.sqlsupabase/migrations/20260227000001_secure_record_build_time_rpc.sqlsupabase/migrations/20260227010000_restrict_upsert_version_meta_exec.sqlsupabase/migrations/20260227150000_fix_invite_user_to_org_security.sqlsupabase/migrations/20260228000000_role_bindings_rls_assignable.sqlsupabase/migrations/20260228000100_delete_member_cascade_bindings.sqlsupabase/migrations/20260228000200_prevent_last_super_admin_delete.sqlsupabase/migrations/20260228000300_fix_apikey_hashed_lookup.sqlsupabase/migrations/20260228154639_fix_check_domain_sso_security.sqlsupabase/migrations/20260228172308_fix_prevent_last_super_admin_cascade.sqlsupabase/migrations/20260228172309_fix_rbac_test_compatibility.sqlsupabase/migrations/20260302000000_rbac_default_for_new_orgs.sqlsupabase/migrations/20260302185011_fix_rbac_check_effective_user.sqlsupabase/migrations/20260303150634_sso_per_org_feature_flag.sqlsupabase/migrations/20260308121758_fix_get_app_global_metrics_rbac.sqlsupabase/migrations/20260308121933_restrict_global_stats_access.sqlsupabase/migrations/20260308203352_restrict-org-status-rpc-access.sqlsupabase/migrations/20260311120000_allow_shared_public_images.sqlsupabase/migrations/20260311123000_fix_rbac_has_permission_preserve_org_for_new_app.sqlsupabase/migrations/20260311124500_fix_get_org_perm_for_apikey_rbac.sqlsupabase/migrations/20260311150453_secure_sso_enforcement_lookup.sqlsupabase/migrations/20260311162400_sync_org_user_delete_role_bindings.sqlsupabase/migrations/20260311164503_split_is_admin_platform_admin_and_rls.sqlsupabase/migrations/20260312000000_remove_rbac_security_settings_singletons.sqlsupabase/migrations/20260312183000_normalize_sso_provider_domain_lowercase.sqlsupabase/migrations/20260312202155_hardening_get_identity_apikey_only_rpcs.sqlsupabase/migrations/20260312202212_fix_rescind_invitation_rpc_access_hardening.sqlsupabase/migrations/20260312202227_fix_rbac_org_user_access_null_auth_gate.sqlsupabase/migrations/20260312202250_cli_created_record_build_time_public_revoke_fix.sqlsupabase/migrations/20260313104400_fix_get_current_plan_max_org_access_cli.sqlsupabase/migrations/20260313104427_webhook-api-key-org-scope-cli.sqlsupabase/migrations/20260313121928_fix-onboarding-needed-org-nonexistent.sqlsupabase/migrations/20260313130044_harden_upsert_version_meta_authz.sqlsupabase/migrations/20260316132841_move_mfa_email_otp_trigger_to_public.sqlsupabase/migrations/20260316220423_harden_plan_usage_org_rpc_access.sqlsupabase/migrations/20260317020451_secure_remaining_helper_rpcs.sqlsupabase/migrations/20260317020500_revoke_cleanup_expired_demo_apps_public_exec.sqlsupabase/migrations/20260317021715_fix_get_user_org_ids_apikey_expiry.sqlsupabase/migrations/20260317040310_restrict_manifest_read_access.sqlsupabase/migrations/20260317090000_fix_get_app_versions_rbac.sqlsupabase/migrations/20260317100429_fix_encrypted_bundle_update_enforcement.sqlsupabase/migrations/20260317160518_sso_skip_org_on_sso_domain.sqlsupabase/migrations/20260318210857_fix_get_orgs_v7_private_overload_grants.sqlsupabase/migrations/20260318220337_optimize-org-metrics-cache-read-only.sqlsupabase/migrations/20260319090430_password_policy_max_length_72.sqlsupabase/migrations/20260319094649_add_build_minutes_to_global_stats.sqlsupabase/migrations/20260319103952_fix_subkey_header_and_plan_usage_rpcs.sqlsupabase/migrations/20260319155734_fix_global_stats_build_seconds_and_conversion_rate.sqlsupabase/migrations/20260319164053_fix_manifest_select_rls.sqlsupabase/migrations/20260319221428_onboarding_app_flags.sqlsupabase/migrations/20260319235626_disable_auto_org_on_user_create.sqlsupabase/migrations/20260320044548_add_org_website.sqlsupabase/migrations/20260320133752_app_demo_flag_cleanup.sqlsupabase/migrations/20260323075628_fix_rbac_admin_rpc_execute_grants.sqlsupabase/migrations/20260324181219_fix_process_cron_stats_activity.sqlsupabase/migrations/20260324181246_add_paid_at_for_admin_revenue_metrics.sqlsupabase/migrations/20260325032835_optimize_webhooks_rls_auth_eval.sqlsupabase/migrations/20260325043000_harden_cron_stats_queue_followup.sqlsupabase/migrations/20260325045835_split_channel_permission_overrides_write_policies.sqlsupabase/migrations/20260327044102_fix_cron_sync_sub_queue_payload.sqlsupabase/migrations/20260327210500_app_scoped_metrics_rbac.sqlsupabase/migrations/20260327220305_add_webhook_queues_to_cron_tasks.sqlsupabase/migrations/20260330141128_stripe_customer_country.sqlsupabase/migrations/20260408134842_adjust_build_time_credit_pricing.sqlsupabase/migrations/20260408140215_fix_org_metrics_cache_delete_cascade.sqlsupabase/migrations/20260422104849_stale_chart_refresh_state.sqlsupabase/migrations/20260422203355_add_admin_retention_metrics.sqlsupabase/migrations/20260424090111_fix_rbac_scope_mismatch_escalation.sqlsupabase/migrations/20260424090125_protect_owner_org_transfer_path.sqlsupabase/migrations/20260424090727_block_apikey_channel_updates.sqlsupabase/migrations/20260424090854_enforce_public_channel_uniqueness.sqlsupabase/migrations/20260424090941_fix_transfer_app_deploy_history_owner_org.sqlsupabase/migrations/20260424091645_enforce_hashed_api_keys_on_rls_identity_path.sqlsupabase/migrations/20260424094101_enforce_apikey_scope_in_rbac_check.sqlsupabase/migrations/20260424094225_harden_role_bindings_cross_org_scope.sqlsupabase/migrations/20260427092702_fix_transfer_app_guard_allowlist.sqlsupabase/migrations/20260427105151_harden_security_definer_execute_grants.sqlsupabase/migrations/20260427105817_restrict_is_paying_and_good_plan_org_action_access.sqlsupabase/migrations/20260427105834_restrict_manifest_mutation_access.sqlsupabase/migrations/20260427105838_enforce_apikey_expiration_policy.sqlsupabase/migrations/20260427105909_fix_apikey_helper_rpc_public_execute.sqlsupabase/migrations/20260427110612_retention_metrics_service_role_rls.sqlsupabase/migrations/20260427142358_require_recent_email_otp_for_delete_user.sqlsupabase/migrations/20260427144300_rbac_apikey_bindings_priority.sqlsupabase/migrations/20260427144323_cli_rbac_permission_wrappers.sqlsupabase/migrations/20260427144324_add_org_create_app_permission.sqlsupabase/migrations/20260427144325_fix_helper_rpc_request_role_and_admin_grants.sqlsupabase/migrations/20260427144331_restore_rbac_apikey_mismatch_and_bindings_priority.sqlsupabase/migrations/20260427175506_temporary_cli_apps_list_anon_helper_grants.sqlsupabase/migrations/20260429094653_restore_deleted_account_recovery.sqlsupabase/migrations/20260429135552_enable_rbac_all_orgs.sqlsupabase/migrations/20260430145247_validate_org_security_settings.sqlsupabase/migrations/20260430145518_enforce_check_min_rights_app_org_scope.sqlsupabase/migrations/20260501162433_fix_storage_cleanup_counts.sqlsupabase/migrations/20260501200000_remove_sso_enabled_flag.sqlsupabase/migrations/20260502134045_fix_audit_logs_anon_dos.sqlsupabase/migrations/20260502134234_prevent_last_super_admin_demotion.sqlsupabase/migrations/20260502134355_fix_rbac_role_binding_demoted_super_admin.sqlsupabase/migrations/20260504174812_fix_build_time_daily_aggregation.sqlsupabase/migrations/20260505163356_apikey_nullable_mode_with_bindings.sqlsupabase/migrations/20260505193449_harden_encrypted_bundle_update_invariant.sqlsupabase/migrations/20260506101503_add_churn_revenue_plan_breakdown.sqlsupabase/migrations/20260506103727_add_plugin_version_ladder_to_global_stats.sqlsupabase/migrations/20260506152006_native_version_usage_chart.sqlsupabase/migrations/20260507082135_active_usage_credits_flag.sqlsupabase/migrations/20260507090047_fix_app_versions_anon_dos.sqlsupabase/migrations/20260507090436_fix_apikey_rbac_rpc_oracle_and_expiration_scope.sqlsupabase/migrations/20260507091347_secure_exist_app_versions_rpc.sqlsupabase/migrations/20260507153639_fast_app_versions_select_policy.sqlsupabase/migrations/20260507165636_fast_usage_credit_rls_policies.sqlsupabase/migrations/20260508122137_fix_app_versions_trigger_owner_org.sqlsupabase/migrations/20260508135918_enforce_channel_promotion_permission.sqlsupabase/migrations/20260510103516_stats_health_events_metadata.sqlsupabase/migrations/20260510161104_build_timeout_seconds.sqlsupabase/migrations/20260510171814_native_build_concurrency_plan_limit.sqlsupabase/migrations/20260510183000_add_build_runner_wait_seconds.sqlsupabase/migrations/20260510190432_fix_apikey_rbac_password_policy_gate.sqlsupabase/migrations/20260510191550_add_paid_product_activity_to_global_stats.sqlsupabase/migrations/20260510214140_org_initial_plan_solo_mau_limit.sqlsupabase/migrations/20260510214806_add_plan_conversion_rates_to_global_stats.sqlsupabase/migrations/20260510235542_add_plan_total_conversion_rate.sqlsupabase/migrations/20260511101826_add_ltv_global_stats.sqlsupabase/migrations/20260511151503_fix_get_organization_cli_warnings_rbac.sqlsupabase/migrations/20260513000348_add_audit_log_retention_cron.sqlsupabase/migrations/20260513152636_replace_manifest_cleanup_index.sqlsupabase/migrations/20260514093535_app_versions_r2_path_index.sqlsupabase/migrations/20260514102952_enforce_90_day_deleted_versions_cleanup.sqlsupabase/migrations/20260515170516_drop_redundant_channel_devices_unique_constraint.sqlsupabase/migrations/20260516151507_fix_cli_warnings_app_scoped_apikeys.sqlsupabase/migrations/20260517102815_enforce_webhook_created_by.sqlsupabase/migrations/20260518120000_add_ai_analyzed_to_build_requests.sqlsupabase/migrations/20260518121000_standard_webhook_secrets.sqlsupabase/migrations/20260518130000_plan_check_passthrough_appid.sqlsupabase/migrations/20260518131054_complete_onboarding_after_first_upload.sqlsupabase/migrations/20260519065534_revert_complete_onboarding_after_first_upload_trigger.sqlsupabase/migrations/20260519123613_safe_demo_data_reset.sql
💤 Files with no reviewable changes (100)
- supabase/migrations/20260113132114_missing_index.sql
- supabase/migrations/20250714021423_manifest_perf.sql
- supabase/migrations/20251226120000_add_channel_allow_device_prod.sql
- supabase/migrations/20251119001844_add_missing_foreign_key_indexes.sql
- supabase/migrations/20250920120000_remove_legal_and_update_notification_defaults.sql
- supabase/migrations/20250619221552_global_stats.sql
- supabase/migrations/20260103030451_add_advisory_lock_to_cron.sql
- supabase/migrations/20251228160000_get_org_members_apikey_support.sql
- supabase/migrations/20260110044840_improve_usage_credit_rls.sql
- supabase/migrations/20251213140000_add_encryption_tracking_to_devices.sql
- supabase/migrations/20251106024103_add_default_channel_to_devices.sql
- supabase/migrations/20251014120000_add_batch_size_to_process_function_queue.sql
- supabase/migrations/20251230114041_reject_access_due_to_2fa_for_org.sql
- supabase/migrations/20260104100000_add_allow_preview_to_apps.sql
- supabase/migrations/20251228150000_reject_access_due_to_2fa_for_app.sql
- supabase/migrations/20260109000000_fix_build_system_rls_consistency.sql
- supabase/migrations/20251107001223_channel_device_counts.sql
- supabase/migrations/20250601115144_better_queue_logs.sql
- supabase/migrations/20251228065406_user_email_preferences.sql
- supabase/migrations/20251019123107_fix_stats.sql
- supabase/migrations/20260124231940_fix_multiple_permissive_policies.sql
- supabase/migrations/20251113041643_transfer_ownership_before_user_deletion.sql
- supabase/migrations/20260109000001_remove_both_platform_option.sql
- supabase/migrations/20260115025158_add_daily_fail_ratio_email.sql
- supabase/migrations/20251014135440_add_cron_sync_sub.sql
- supabase/migrations/20260107000000_add_anon_role_to_webhooks_rls.sql
- supabase/migrations/20260112140000_cleanup_old_channel_devices.sql
- supabase/migrations/20251213114641_add_revenue_metrics_to_global_stats.sql
- supabase/migrations/20251204163538_drop_plans_overage_columns.sql
- supabase/migrations/20250903010822_consolidated_org_apikey_migrations.sql
- supabase/migrations/20251014105957_rename_plan_cron.sql
- supabase/migrations/20260121000000_add_demo_app_support.sql
- supabase/migrations/20260108024031_add_devices_platform_columns.sql
- supabase/migrations/20251229100000_fix_check_org_members_password_policy_service_role.sql
- supabase/migrations/20250921120000_device_version_name.sql
- supabase/migrations/20250608130257_fix_version_meta.sql
- supabase/migrations/20251228215402_add_orphan_images_cleanup.sql
- supabase/migrations/20250605151648_credits.sql
- supabase/migrations/20260127120000_enforce_2fa_in_permission_checks.sql
- supabase/migrations/20251024153920_update_capgo_credits_steps_org.sql
- supabase/migrations/20260105014309_remove_metered.sql
- supabase/migrations/20260127153000_require_recent_reauth_for_delete_user.sql
- supabase/migrations/20260127121000_allow_credits_without_plan.sql
- supabase/migrations/20260104110000_add_apikey_policy_to_get_orgs_v7.sql
- supabase/migrations/20250920120001_remove_old_version_meta.sql
- supabase/migrations/20251024230753_fix_org_delete_cascade.sql
- supabase/migrations/20251229233706_replace_uuid_generate_v4_with_gen_random_uuid.sql
- supabase/migrations/20260113000000_add_plugin_breakdown_to_global_stats.sql
- supabase/migrations/20251219192610_add_cli_version_to_app_versions.sql
- supabase/migrations/20251007132214_global_stats_registers_storage.sql
- supabase/migrations/20251103134045_add_download_stats_actions.sql
- supabase/migrations/20251228082157_add_apikey_policy_to_get_orgs.sql
- supabase/migrations/20251223234326_fix_duplicate_overage_tracking.sql
- supabase/migrations/20251221091510_fix_lint_indexes.sql
- supabase/migrations/20260118000000_add_build_stats_to_global_stats.sql
- supabase/migrations/20250909094709_better_account_delete.sql
- supabase/migrations/20250613034031_tmp_users_table.sql
- supabase/migrations/20260108000000_add_electron_platform.sql
- supabase/migrations/20251212112948_add_expose_metadata_to_apps.sql
- supabase/migrations/20251228080032_hashed_api_keys.sql
- supabase/migrations/20251026165357_add_missing_queue_cron_jobs.sql
- supabase/migrations/20260114214731_add_deleted_at_column.sql
- supabase/migrations/20250612131646_exist_app.sql
- supabase/migrations/20251208175306_fix_user_delete_old_record.sql
- supabase/migrations/20260125151000_mau_first_seen_device_usage.sql
- supabase/migrations/20251107153019_manifest_bundle_counts.sql
- supabase/migrations/20260119182934_add_use_new_rbac_to_get_orgs_v7.sql
- supabase/migrations/20250928145642_orgs_last_stats_updated.sql
- supabase/migrations/20251226121000_add_channel_stats_actions.sql
- supabase/migrations/20251226125240_audit_log.sql
- supabase/migrations/20250913161225_lint_warning_fixes_followup.sql
- supabase/migrations/20251209184322_add_top_up_credits_system.sql
- supabase/migrations/20260113160650_delete_old_deleted_versions.sql
- supabase/migrations/20251031202034_fix_usage_credit_rls.sql
- supabase/migrations/20260115051444_sync_stripe_info_on_org_create.sql
- supabase/migrations/20250927082020_better_app_metrics.sql
- supabase/migrations/20260104120000_revoke_process_function_queue_public_access.sql
- supabase/migrations/20251227040840_add_production_deploy_install_stats_email.sql
- supabase/migrations/20251228033417_webhooks.sql
- supabase/migrations/20251229030503_add_cron_tasks_rls_policy.sql
- supabase/migrations/20251021141631_add_usage_credit_system.sql
- supabase/migrations/20251120150750_simplify_manifest_bundle_counts.sql
- supabase/migrations/20251228080037_apikey_expiration.sql
- supabase/migrations/20260120165047_rbac_invites.sql
- supabase/migrations/20260102120000_fix_get_org_members_include_tmp_users.sql
- supabase/migrations/20250916032824_fix_retention.sql
- supabase/migrations/20251007134349_cron_plan_from_stats_backend.sql
- supabase/migrations/20251228100000_password_policy_enforcement.sql
- supabase/migrations/20251231060433_add_billing_period_stats_email.sql
- supabase/migrations/20260123140712_fix_rbac_perf_security.sql
- supabase/migrations/20251224103713_2fa_enforcement.sql
- supabase/migrations/20251113140646_consolidate_cron_job.sql
- supabase/migrations/20260118005052_version_usage_use_version_name.sql
- supabase/migrations/20251220011455_optimize_is_good_plan_v5_org.sql
- supabase/migrations/20260102140000_fix_get_identity_hashed_apikeys.sql
- supabase/migrations/20251228063320_fix_audit_log_apikey.sql
- supabase/migrations/20260105150626_fix_is_allowed_capgkey_hashed_apikeys.sql
- supabase/migrations/20251119001847_add_native_build_system.sql
- supabase/migrations/20260101042511_enforce_encrypted_bundles.sql
- supabase/migrations/20250908120000_pg_log_and_rls_logging.sql
3e2ded4 to
f043986
Compare
Addressed in f043986; CodeRabbit thread is resolved and CI is green.
f043986 to
0bfab73
Compare
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0bfab73888
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
0bfab73 to
e1a5e7c
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e1a5e7c60e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/repair-supabase-squashed-baseline.sh`:
- Around line 60-70: The script reads versions into the reverted_versions array
from reverted_versions_file but doesn't abort when that array ends up empty (or
only comments), which later produces invalid SQL; after the while loop that
populates reverted_versions (referencing reverted_versions_file and
reverted_versions) add an explicit guard that checks if reverted_versions has
zero elements and, if so, emit a clear error to stderr and exit non‑zero before
proceeding to the SQL construction that uses reverted_versions.
- Around line 72-77: The run_supabase function should prefer the locally
installed supabase binary on PATH and fall back to bunx supabase; change the
logic in run_supabase to first check command -v supabase >/dev/null 2>&1 and, if
found, invoke supabase "$@" (adding --workdir "$SUPABASE_WORKDIR" when
SUPABASE_WORKDIR is set), otherwise invoke bunx supabase "$@" (also with
--workdir when SUPABASE_WORKDIR is set); update both the branch that handles
SUPABASE_WORKDIR and the else branch so the binary selection is used
consistently.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 6b0f148f-f9e0-4829-8280-840b272ca45e
📒 Files selected for processing (300)
.github/workflows/build_and_deploy.ymlscripts/check-supabase-migration-order.shscripts/repair-supabase-squashed-baseline.shscripts/supabase-worktree.tssupabase/migration_guide.mdsupabase/migrations/20250530233128_base.sqlsupabase/migrations/20250601115144_better_queue_logs.sqlsupabase/migrations/20250605151648_credits.sqlsupabase/migrations/20250608130257_fix_version_meta.sqlsupabase/migrations/20250612131646_exist_app.sqlsupabase/migrations/20250613034031_tmp_users_table.sqlsupabase/migrations/20250619221552_global_stats.sqlsupabase/migrations/20250714021423_manifest_perf.sqlsupabase/migrations/20250903010822_consolidated_org_apikey_migrations.sqlsupabase/migrations/20250908120000_pg_log_and_rls_logging.sqlsupabase/migrations/20250909094709_better_account_delete.sqlsupabase/migrations/20250913161225_lint_warning_fixes_followup.sqlsupabase/migrations/20250916032824_fix_retention.sqlsupabase/migrations/20250920120000_remove_legal_and_update_notification_defaults.sqlsupabase/migrations/20250920120001_remove_old_version_meta.sqlsupabase/migrations/20250921120000_device_version_name.sqlsupabase/migrations/20250927082020_better_app_metrics.sqlsupabase/migrations/20250928145642_orgs_last_stats_updated.sqlsupabase/migrations/20251007132214_global_stats_registers_storage.sqlsupabase/migrations/20251007134349_cron_plan_from_stats_backend.sqlsupabase/migrations/20251014105957_rename_plan_cron.sqlsupabase/migrations/20251014120000_add_batch_size_to_process_function_queue.sqlsupabase/migrations/20251014135440_add_cron_sync_sub.sqlsupabase/migrations/20251019123107_fix_stats.sqlsupabase/migrations/20251021141631_add_usage_credit_system.sqlsupabase/migrations/20251024153920_update_capgo_credits_steps_org.sqlsupabase/migrations/20251024230753_fix_org_delete_cascade.sqlsupabase/migrations/20251026165357_add_missing_queue_cron_jobs.sqlsupabase/migrations/20251031202034_fix_usage_credit_rls.sqlsupabase/migrations/20251103134045_add_download_stats_actions.sqlsupabase/migrations/20251106024103_add_default_channel_to_devices.sqlsupabase/migrations/20251107001223_channel_device_counts.sqlsupabase/migrations/20251107153019_manifest_bundle_counts.sqlsupabase/migrations/20251113041643_transfer_ownership_before_user_deletion.sqlsupabase/migrations/20251113140646_consolidate_cron_job.sqlsupabase/migrations/20251119001844_add_missing_foreign_key_indexes.sqlsupabase/migrations/20251119001847_add_native_build_system.sqlsupabase/migrations/20251120150750_simplify_manifest_bundle_counts.sqlsupabase/migrations/20251204163538_drop_plans_overage_columns.sqlsupabase/migrations/20251208175306_fix_user_delete_old_record.sqlsupabase/migrations/20251209184322_add_top_up_credits_system.sqlsupabase/migrations/20251212112948_add_expose_metadata_to_apps.sqlsupabase/migrations/20251213114641_add_revenue_metrics_to_global_stats.sqlsupabase/migrations/20251213140000_add_encryption_tracking_to_devices.sqlsupabase/migrations/20251219192610_add_cli_version_to_app_versions.sqlsupabase/migrations/20251220011455_optimize_is_good_plan_v5_org.sqlsupabase/migrations/20251221091510_fix_lint_indexes.sqlsupabase/migrations/20251222140030_rbac_system.sqlsupabase/migrations/20251223234326_fix_duplicate_overage_tracking.sqlsupabase/migrations/20251224103713_2fa_enforcement.sqlsupabase/migrations/20251226120000_add_channel_allow_device_prod.sqlsupabase/migrations/20251226121000_add_channel_stats_actions.sqlsupabase/migrations/20251226125240_audit_log.sqlsupabase/migrations/20251227040840_add_production_deploy_install_stats_email.sqlsupabase/migrations/20251228033417_webhooks.sqlsupabase/migrations/20251228063320_fix_audit_log_apikey.sqlsupabase/migrations/20251228065406_user_email_preferences.sqlsupabase/migrations/20251228080032_hashed_api_keys.sqlsupabase/migrations/20251228080037_apikey_expiration.sqlsupabase/migrations/20251228082157_add_apikey_policy_to_get_orgs.sqlsupabase/migrations/20251228100000_password_policy_enforcement.sqlsupabase/migrations/20251228150000_reject_access_due_to_2fa_for_app.sqlsupabase/migrations/20251228160000_get_org_members_apikey_support.sqlsupabase/migrations/20251228215402_add_orphan_images_cleanup.sqlsupabase/migrations/20251229030503_add_cron_tasks_rls_policy.sqlsupabase/migrations/20251229100000_fix_check_org_members_password_policy_service_role.sqlsupabase/migrations/20251229233706_replace_uuid_generate_v4_with_gen_random_uuid.sqlsupabase/migrations/20251230114041_reject_access_due_to_2fa_for_org.sqlsupabase/migrations/20251231060433_add_billing_period_stats_email.sqlsupabase/migrations/20260101042511_enforce_encrypted_bundles.sqlsupabase/migrations/20260102120000_fix_get_org_members_include_tmp_users.sqlsupabase/migrations/20260102140000_fix_get_identity_hashed_apikeys.sqlsupabase/migrations/20260103030451_add_advisory_lock_to_cron.sqlsupabase/migrations/20260104100000_add_allow_preview_to_apps.sqlsupabase/migrations/20260104110000_add_apikey_policy_to_get_orgs_v7.sqlsupabase/migrations/20260104120000_revoke_process_function_queue_public_access.sqlsupabase/migrations/20260105014309_remove_metered.sqlsupabase/migrations/20260105150626_fix_is_allowed_capgkey_hashed_apikeys.sqlsupabase/migrations/20260107000000_add_anon_role_to_webhooks_rls.sqlsupabase/migrations/20260108000000_add_electron_platform.sqlsupabase/migrations/20260108024031_add_devices_platform_columns.sqlsupabase/migrations/20260109000000_fix_build_system_rls_consistency.sqlsupabase/migrations/20260109000001_remove_both_platform_option.sqlsupabase/migrations/20260110044840_improve_usage_credit_rls.sqlsupabase/migrations/20260112140000_cleanup_old_channel_devices.sqlsupabase/migrations/20260113000000_add_plugin_breakdown_to_global_stats.sqlsupabase/migrations/20260113132114_missing_index.sqlsupabase/migrations/20260113160650_delete_old_deleted_versions.sqlsupabase/migrations/20260114214731_add_deleted_at_column.sqlsupabase/migrations/20260115025158_add_daily_fail_ratio_email.sqlsupabase/migrations/20260115051444_sync_stripe_info_on_org_create.sqlsupabase/migrations/20260118000000_add_build_stats_to_global_stats.sqlsupabase/migrations/20260118005052_version_usage_use_version_name.sqlsupabase/migrations/20260119182934_add_use_new_rbac_to_get_orgs_v7.sqlsupabase/migrations/20260120165047_rbac_invites.sqlsupabase/migrations/20260121000000_add_demo_app_support.sqlsupabase/migrations/20260123140712_fix_rbac_perf_security.sqlsupabase/migrations/20260124231940_fix_multiple_permissive_policies.sqlsupabase/migrations/20260125151000_mau_first_seen_device_usage.sqlsupabase/migrations/20260127120000_enforce_2fa_in_permission_checks.sqlsupabase/migrations/20260127121000_allow_credits_without_plan.sqlsupabase/migrations/20260127153000_require_recent_reauth_for_delete_user.sqlsupabase/migrations/20260127232000_sanitize_text_fields.sqlsupabase/migrations/20260129120000_fix_reject_access_due_to_2fa_for_app.sqlsupabase/migrations/20260129123000_fix_is_bundle_encrypted_empty.sqlsupabase/migrations/20260130032543_allow_org_logo_images.sqlsupabase/migrations/20260130033703_private_images_bucket.sqlsupabase/migrations/20260130040811_allow_org_logo_upload.sqlsupabase/migrations/20260130190800_update_invite_expiry_on_resend.sqlsupabase/migrations/20260201015640_add_upgrade_org_stats.sqlsupabase/migrations/20260201042609_fix_password_policy_org_read_gate.sqlsupabase/migrations/20260202090000_add_cli_realtime_feed_pref.sqlsupabase/migrations/20260203010025_add_build_success_stats.sqlsupabase/migrations/20260203120000_optimize_org_metrics_cache.sqlsupabase/migrations/20260203140000_security_hardening.sqlsupabase/migrations/20260203150000_fix_get_user_main_org_id_by_app_id_seed.sqlsupabase/migrations/20260203160000_optimize_audit_logs_rls.sqlsupabase/migrations/20260203173000_get_account_removal_date_auth.sqlsupabase/migrations/20260203190000_check_min_rights_apikey_scope.sqlsupabase/migrations/20260203201308_rbac_org_member_no_app_access.sqlsupabase/migrations/20260204100000_restore_audit_logs_apikey.sqlsupabase/migrations/20260204103000_mfa_email_otp_guard.sqlsupabase/migrations/20260204103001_enable_security_settings_rls.sqlsupabase/migrations/20260204181424_add_channel_permission_overrides.sqlsupabase/migrations/20260205031305_mfa_email_otp_hardening.sqlsupabase/migrations/20260205120000_fix_audit_logs_select_rls.sqlsupabase/migrations/20260206120000_apikey_server_generation.sqlsupabase/migrations/20260206213247_org_has_usage_credits_flag.sqlsupabase/migrations/20260207180640_tmp_users_cleanup_7_days.sqlsupabase/migrations/20260209014020_user_created_via_invite.sqlsupabase/migrations/20260209024134_remove_exceeded_flags_functions.sqlsupabase/migrations/20260210132811_stats_customid_guard.sqlsupabase/migrations/20260211034517_add_demo_apps_created_to_global_stats.sqlsupabase/migrations/20260214054927_restore_top_up_usage_credits_for_service_role.sqlsupabase/migrations/20260216102420_add_build_status_reconciliation_cron.sqlsupabase/migrations/20260221150207_fix_role_bindings_rls_update_insert.sqlsupabase/migrations/20260223000001_add_sso_providers.sqlsupabase/migrations/20260224091500_fix_get_orgs_v6_access_controls.sqlsupabase/migrations/20260224093000_fix_get_total_metrics_auth.sqlsupabase/migrations/20260224153000_add_org_conversion_rate_to_global_stats.sqlsupabase/migrations/20260224153100_fix_org_member_rpc_access.sqlsupabase/migrations/20260224153200_fix_webhook_rls_org_scoping.sqlsupabase/migrations/20260224153201_revoke_record_email_otp_verified_auth_role.sqlsupabase/migrations/20260224153300_add_created_at_to_get_orgs_v7.sqlsupabase/migrations/20260224153401_fix_transfer_app_security.sqlsupabase/migrations/20260224153500_restrict_rpc_api_key_oracles.sqlsupabase/migrations/20260224160000_fix_find_apikey_rpc_permissions.sqlsupabase/migrations/20260225000000_image_metadata_cleanup_triggers.sqlsupabase/migrations/20260225000100_atomic_demo_app_creation.sqlsupabase/migrations/20260225105000_exist_app_v2_apikey_auth.sqlsupabase/migrations/20260225120000_restrict_webhooks_select_for_admin_only.sqlsupabase/migrations/20260226000000_org_rls_require_self_2fa_update.sqlsupabase/migrations/20260226000100_fix_org_rls_2fa_function_permissions.sqlsupabase/migrations/20260226090000_require_verified_email_for_delete_user.sqlsupabase/migrations/20260226153000_restrict_apikey_oracle_rpcs.sqlsupabase/migrations/20260227000000_fix_rescind_invitation_rpc_access.sqlsupabase/migrations/20260227000001_secure_record_build_time_rpc.sqlsupabase/migrations/20260227010000_restrict_upsert_version_meta_exec.sqlsupabase/migrations/20260227150000_fix_invite_user_to_org_security.sqlsupabase/migrations/20260228000000_role_bindings_rls_assignable.sqlsupabase/migrations/20260228000100_delete_member_cascade_bindings.sqlsupabase/migrations/20260228000200_prevent_last_super_admin_delete.sqlsupabase/migrations/20260228000300_fix_apikey_hashed_lookup.sqlsupabase/migrations/20260228154639_fix_check_domain_sso_security.sqlsupabase/migrations/20260228172308_fix_prevent_last_super_admin_cascade.sqlsupabase/migrations/20260228172309_fix_rbac_test_compatibility.sqlsupabase/migrations/20260302000000_rbac_default_for_new_orgs.sqlsupabase/migrations/20260302185011_fix_rbac_check_effective_user.sqlsupabase/migrations/20260303150634_sso_per_org_feature_flag.sqlsupabase/migrations/20260308121758_fix_get_app_global_metrics_rbac.sqlsupabase/migrations/20260308121933_restrict_global_stats_access.sqlsupabase/migrations/20260308203352_restrict-org-status-rpc-access.sqlsupabase/migrations/20260311120000_allow_shared_public_images.sqlsupabase/migrations/20260311123000_fix_rbac_has_permission_preserve_org_for_new_app.sqlsupabase/migrations/20260311124500_fix_get_org_perm_for_apikey_rbac.sqlsupabase/migrations/20260311150453_secure_sso_enforcement_lookup.sqlsupabase/migrations/20260311162400_sync_org_user_delete_role_bindings.sqlsupabase/migrations/20260311164503_split_is_admin_platform_admin_and_rls.sqlsupabase/migrations/20260312000000_remove_rbac_security_settings_singletons.sqlsupabase/migrations/20260312183000_normalize_sso_provider_domain_lowercase.sqlsupabase/migrations/20260312202155_hardening_get_identity_apikey_only_rpcs.sqlsupabase/migrations/20260312202212_fix_rescind_invitation_rpc_access_hardening.sqlsupabase/migrations/20260312202227_fix_rbac_org_user_access_null_auth_gate.sqlsupabase/migrations/20260312202250_cli_created_record_build_time_public_revoke_fix.sqlsupabase/migrations/20260313104400_fix_get_current_plan_max_org_access_cli.sqlsupabase/migrations/20260313104427_webhook-api-key-org-scope-cli.sqlsupabase/migrations/20260313121928_fix-onboarding-needed-org-nonexistent.sqlsupabase/migrations/20260313130044_harden_upsert_version_meta_authz.sqlsupabase/migrations/20260316132841_move_mfa_email_otp_trigger_to_public.sqlsupabase/migrations/20260316220423_harden_plan_usage_org_rpc_access.sqlsupabase/migrations/20260317020451_secure_remaining_helper_rpcs.sqlsupabase/migrations/20260317020500_revoke_cleanup_expired_demo_apps_public_exec.sqlsupabase/migrations/20260317021715_fix_get_user_org_ids_apikey_expiry.sqlsupabase/migrations/20260317040310_restrict_manifest_read_access.sqlsupabase/migrations/20260317090000_fix_get_app_versions_rbac.sqlsupabase/migrations/20260317100429_fix_encrypted_bundle_update_enforcement.sqlsupabase/migrations/20260317160518_sso_skip_org_on_sso_domain.sqlsupabase/migrations/20260318210857_fix_get_orgs_v7_private_overload_grants.sqlsupabase/migrations/20260318220337_optimize-org-metrics-cache-read-only.sqlsupabase/migrations/20260319090430_password_policy_max_length_72.sqlsupabase/migrations/20260319094649_add_build_minutes_to_global_stats.sqlsupabase/migrations/20260319103952_fix_subkey_header_and_plan_usage_rpcs.sqlsupabase/migrations/20260319155734_fix_global_stats_build_seconds_and_conversion_rate.sqlsupabase/migrations/20260319164053_fix_manifest_select_rls.sqlsupabase/migrations/20260319221428_onboarding_app_flags.sqlsupabase/migrations/20260319235626_disable_auto_org_on_user_create.sqlsupabase/migrations/20260320044548_add_org_website.sqlsupabase/migrations/20260320133752_app_demo_flag_cleanup.sqlsupabase/migrations/20260323075628_fix_rbac_admin_rpc_execute_grants.sqlsupabase/migrations/20260324181219_fix_process_cron_stats_activity.sqlsupabase/migrations/20260324181246_add_paid_at_for_admin_revenue_metrics.sqlsupabase/migrations/20260325032835_optimize_webhooks_rls_auth_eval.sqlsupabase/migrations/20260325043000_harden_cron_stats_queue_followup.sqlsupabase/migrations/20260325045835_split_channel_permission_overrides_write_policies.sqlsupabase/migrations/20260327044102_fix_cron_sync_sub_queue_payload.sqlsupabase/migrations/20260327210500_app_scoped_metrics_rbac.sqlsupabase/migrations/20260327220305_add_webhook_queues_to_cron_tasks.sqlsupabase/migrations/20260330141128_stripe_customer_country.sqlsupabase/migrations/20260408134842_adjust_build_time_credit_pricing.sqlsupabase/migrations/20260408140215_fix_org_metrics_cache_delete_cascade.sqlsupabase/migrations/20260422104849_stale_chart_refresh_state.sqlsupabase/migrations/20260422203355_add_admin_retention_metrics.sqlsupabase/migrations/20260424090111_fix_rbac_scope_mismatch_escalation.sqlsupabase/migrations/20260424090125_protect_owner_org_transfer_path.sqlsupabase/migrations/20260424090727_block_apikey_channel_updates.sqlsupabase/migrations/20260424090854_enforce_public_channel_uniqueness.sqlsupabase/migrations/20260424090941_fix_transfer_app_deploy_history_owner_org.sqlsupabase/migrations/20260424091645_enforce_hashed_api_keys_on_rls_identity_path.sqlsupabase/migrations/20260424094101_enforce_apikey_scope_in_rbac_check.sqlsupabase/migrations/20260424094225_harden_role_bindings_cross_org_scope.sqlsupabase/migrations/20260427092702_fix_transfer_app_guard_allowlist.sqlsupabase/migrations/20260427105151_harden_security_definer_execute_grants.sqlsupabase/migrations/20260427105817_restrict_is_paying_and_good_plan_org_action_access.sqlsupabase/migrations/20260427105834_restrict_manifest_mutation_access.sqlsupabase/migrations/20260427105838_enforce_apikey_expiration_policy.sqlsupabase/migrations/20260427105909_fix_apikey_helper_rpc_public_execute.sqlsupabase/migrations/20260427110612_retention_metrics_service_role_rls.sqlsupabase/migrations/20260427142358_require_recent_email_otp_for_delete_user.sqlsupabase/migrations/20260427144300_rbac_apikey_bindings_priority.sqlsupabase/migrations/20260427144323_cli_rbac_permission_wrappers.sqlsupabase/migrations/20260427144324_add_org_create_app_permission.sqlsupabase/migrations/20260427144325_fix_helper_rpc_request_role_and_admin_grants.sqlsupabase/migrations/20260427144331_restore_rbac_apikey_mismatch_and_bindings_priority.sqlsupabase/migrations/20260427175506_temporary_cli_apps_list_anon_helper_grants.sqlsupabase/migrations/20260429094653_restore_deleted_account_recovery.sqlsupabase/migrations/20260429135552_enable_rbac_all_orgs.sqlsupabase/migrations/20260430145247_validate_org_security_settings.sqlsupabase/migrations/20260430145518_enforce_check_min_rights_app_org_scope.sqlsupabase/migrations/20260501162433_fix_storage_cleanup_counts.sqlsupabase/migrations/20260501200000_remove_sso_enabled_flag.sqlsupabase/migrations/20260502134045_fix_audit_logs_anon_dos.sqlsupabase/migrations/20260502134234_prevent_last_super_admin_demotion.sqlsupabase/migrations/20260502134355_fix_rbac_role_binding_demoted_super_admin.sqlsupabase/migrations/20260504174812_fix_build_time_daily_aggregation.sqlsupabase/migrations/20260505163356_apikey_nullable_mode_with_bindings.sqlsupabase/migrations/20260505193449_harden_encrypted_bundle_update_invariant.sqlsupabase/migrations/20260506101503_add_churn_revenue_plan_breakdown.sqlsupabase/migrations/20260506103727_add_plugin_version_ladder_to_global_stats.sqlsupabase/migrations/20260506152006_native_version_usage_chart.sqlsupabase/migrations/20260507082135_active_usage_credits_flag.sqlsupabase/migrations/20260507090047_fix_app_versions_anon_dos.sqlsupabase/migrations/20260507090436_fix_apikey_rbac_rpc_oracle_and_expiration_scope.sqlsupabase/migrations/20260507091347_secure_exist_app_versions_rpc.sqlsupabase/migrations/20260507153639_fast_app_versions_select_policy.sqlsupabase/migrations/20260507165636_fast_usage_credit_rls_policies.sqlsupabase/migrations/20260508122137_fix_app_versions_trigger_owner_org.sqlsupabase/migrations/20260508135918_enforce_channel_promotion_permission.sqlsupabase/migrations/20260510103516_stats_health_events_metadata.sqlsupabase/migrations/20260510161104_build_timeout_seconds.sqlsupabase/migrations/20260510171814_native_build_concurrency_plan_limit.sqlsupabase/migrations/20260510183000_add_build_runner_wait_seconds.sqlsupabase/migrations/20260510190432_fix_apikey_rbac_password_policy_gate.sqlsupabase/migrations/20260510191550_add_paid_product_activity_to_global_stats.sqlsupabase/migrations/20260510214140_org_initial_plan_solo_mau_limit.sqlsupabase/migrations/20260510214806_add_plan_conversion_rates_to_global_stats.sqlsupabase/migrations/20260510235542_add_plan_total_conversion_rate.sqlsupabase/migrations/20260511101826_add_ltv_global_stats.sqlsupabase/migrations/20260511151503_fix_get_organization_cli_warnings_rbac.sqlsupabase/migrations/20260513000348_add_audit_log_retention_cron.sqlsupabase/migrations/20260513152636_replace_manifest_cleanup_index.sqlsupabase/migrations/20260514093535_app_versions_r2_path_index.sqlsupabase/migrations/20260514102952_enforce_90_day_deleted_versions_cleanup.sqlsupabase/migrations/20260515170516_drop_redundant_channel_devices_unique_constraint.sqlsupabase/migrations/20260516151507_fix_cli_warnings_app_scoped_apikeys.sqlsupabase/migrations/20260517102815_enforce_webhook_created_by.sqlsupabase/migrations/20260518120000_add_ai_analyzed_to_build_requests.sqlsupabase/migrations/20260518121000_standard_webhook_secrets.sqlsupabase/migrations/20260518130000_plan_check_passthrough_appid.sqlsupabase/migrations/20260518131054_complete_onboarding_after_first_upload.sqlsupabase/migrations/20260519065534_revert_complete_onboarding_after_first_upload_trigger.sqlsupabase/migrations/20260519123613_safe_demo_data_reset.sqlsupabase/migrations/20260519151250_remove_builtin_unknown_app_versions.sqlsupabase/migrations/20260521210531_cron_hyperping_healthchecks.sqlsupabase/migrations/20260524123635_drop_channel_devices_owner_org_index.sqlsupabase/migrations/20260526133000_migrate_apikeys_to_v2_timestamp_fix.sql
💤 Files with no reviewable changes (100)
- supabase/migrations/20251026165357_add_missing_queue_cron_jobs.sql
- supabase/migrations/20260113000000_add_plugin_breakdown_to_global_stats.sql
- supabase/migrations/20251106024103_add_default_channel_to_devices.sql
- supabase/migrations/20250605151648_credits.sql
- supabase/migrations/20260115025158_add_daily_fail_ratio_email.sql
- supabase/migrations/20260118000000_add_build_stats_to_global_stats.sql
- supabase/migrations/20260121000000_add_demo_app_support.sql
- supabase/migrations/20260104100000_add_allow_preview_to_apps.sql
- supabase/migrations/20260109000001_remove_both_platform_option.sql
- supabase/migrations/20251024153920_update_capgo_credits_steps_org.sql
- supabase/migrations/20251204163538_drop_plans_overage_columns.sql
- supabase/migrations/20250601115144_better_queue_logs.sql
- supabase/migrations/20251014120000_add_batch_size_to_process_function_queue.sql
- supabase/migrations/20251007132214_global_stats_registers_storage.sql
- supabase/migrations/20250921120000_device_version_name.sql
- supabase/migrations/20251228160000_get_org_members_apikey_support.sql
- supabase/migrations/20251208175306_fix_user_delete_old_record.sql
- supabase/migrations/20251229233706_replace_uuid_generate_v4_with_gen_random_uuid.sql
- supabase/migrations/20260113132114_missing_index.sql
- supabase/migrations/20260103030451_add_advisory_lock_to_cron.sql
- supabase/migrations/20251219192610_add_cli_version_to_app_versions.sql
- supabase/migrations/20251226121000_add_channel_stats_actions.sql
- supabase/migrations/20260127153000_require_recent_reauth_for_delete_user.sql
- supabase/migrations/20260114214731_add_deleted_at_column.sql
- supabase/migrations/20251213114641_add_revenue_metrics_to_global_stats.sql
- supabase/migrations/20251228150000_reject_access_due_to_2fa_for_app.sql
- supabase/migrations/20260108000000_add_electron_platform.sql
- supabase/migrations/20251228065406_user_email_preferences.sql
- supabase/migrations/20250612131646_exist_app.sql
- supabase/migrations/20251119001844_add_missing_foreign_key_indexes.sql
- supabase/migrations/20260108024031_add_devices_platform_columns.sql
- supabase/migrations/20251007134349_cron_plan_from_stats_backend.sql
- supabase/migrations/20251213140000_add_encryption_tracking_to_devices.sql
- supabase/migrations/20251031202034_fix_usage_credit_rls.sql
- supabase/migrations/20260125151000_mau_first_seen_device_usage.sql
- supabase/migrations/20250920120001_remove_old_version_meta.sql
- supabase/migrations/20251113041643_transfer_ownership_before_user_deletion.sql
- supabase/migrations/20251230114041_reject_access_due_to_2fa_for_org.sql
- supabase/migrations/20250608130257_fix_version_meta.sql
- supabase/migrations/20260104120000_revoke_process_function_queue_public_access.sql
- supabase/migrations/20250619221552_global_stats.sql
- supabase/migrations/20250909094709_better_account_delete.sql
- supabase/migrations/20251107153019_manifest_bundle_counts.sql
- supabase/migrations/20251107001223_channel_device_counts.sql
- supabase/migrations/20260124231940_fix_multiple_permissive_policies.sql
- supabase/migrations/20250927082020_better_app_metrics.sql
- supabase/migrations/20260127120000_enforce_2fa_in_permission_checks.sql
- supabase/migrations/20260119182934_add_use_new_rbac_to_get_orgs_v7.sql
- supabase/migrations/20250714021423_manifest_perf.sql
- supabase/migrations/20260102120000_fix_get_org_members_include_tmp_users.sql
- supabase/migrations/20260110044840_improve_usage_credit_rls.sql
- supabase/migrations/20260109000000_fix_build_system_rls_consistency.sql
- supabase/migrations/20251226120000_add_channel_allow_device_prod.sql
- supabase/migrations/20251228215402_add_orphan_images_cleanup.sql
- supabase/migrations/20251229030503_add_cron_tasks_rls_policy.sql
- supabase/migrations/20251024230753_fix_org_delete_cascade.sql
- supabase/migrations/20251221091510_fix_lint_indexes.sql
- supabase/migrations/20251212112948_add_expose_metadata_to_apps.sql
- supabase/migrations/20251229100000_fix_check_org_members_password_policy_service_role.sql
- supabase/migrations/20250928145642_orgs_last_stats_updated.sql
- supabase/migrations/20260113160650_delete_old_deleted_versions.sql
- supabase/migrations/20251223234326_fix_duplicate_overage_tracking.sql
- supabase/migrations/20251228063320_fix_audit_log_apikey.sql
- supabase/migrations/20260102140000_fix_get_identity_hashed_apikeys.sql
- supabase/migrations/20251014135440_add_cron_sync_sub.sql
- supabase/migrations/20250920120000_remove_legal_and_update_notification_defaults.sql
- supabase/migrations/20260104110000_add_apikey_policy_to_get_orgs_v7.sql
- supabase/migrations/20251227040840_add_production_deploy_install_stats_email.sql
- supabase/migrations/20251228082157_add_apikey_policy_to_get_orgs.sql
- supabase/migrations/20260115051444_sync_stripe_info_on_org_create.sql
- supabase/migrations/20250916032824_fix_retention.sql
- supabase/migrations/20251019123107_fix_stats.sql
- supabase/migrations/20251209184322_add_top_up_credits_system.sql
- supabase/migrations/20251103134045_add_download_stats_actions.sql
- supabase/migrations/20251220011455_optimize_is_good_plan_v5_org.sql
- supabase/migrations/20251228033417_webhooks.sql
- supabase/migrations/20260107000000_add_anon_role_to_webhooks_rls.sql
- supabase/migrations/20260105014309_remove_metered.sql
- supabase/migrations/20260123140712_fix_rbac_perf_security.sql
- supabase/migrations/20260127121000_allow_credits_without_plan.sql
- supabase/migrations/20260105150626_fix_is_allowed_capgkey_hashed_apikeys.sql
- supabase/migrations/20251226125240_audit_log.sql
- supabase/migrations/20260118005052_version_usage_use_version_name.sql
- supabase/migrations/20251228080032_hashed_api_keys.sql
- supabase/migrations/20260101042511_enforce_encrypted_bundles.sql
- supabase/migrations/20251228100000_password_policy_enforcement.sql
- supabase/migrations/20250908120000_pg_log_and_rls_logging.sql
- supabase/migrations/20251021141631_add_usage_credit_system.sql
- supabase/migrations/20251119001847_add_native_build_system.sql
- supabase/migrations/20250613034031_tmp_users_table.sql
- supabase/migrations/20251228080037_apikey_expiration.sql
- supabase/migrations/20251120150750_simplify_manifest_bundle_counts.sql
- supabase/migrations/20250903010822_consolidated_org_apikey_migrations.sql
- supabase/migrations/20260112140000_cleanup_old_channel_devices.sql
- supabase/migrations/20251231060433_add_billing_period_stats_email.sql
- supabase/migrations/20250913161225_lint_warning_fixes_followup.sql
- supabase/migrations/20251224103713_2fa_enforcement.sql
- supabase/migrations/20260120165047_rbac_invites.sql
- supabase/migrations/20251113140646_consolidate_cron_job.sql
- supabase/migrations/20251014105957_rename_plan_cron.sql
e1a5e7c to
24b8a53
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 24b8a5331c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
24b8a53 to
b5da889
Compare
|
Stale after addressed comments and passing CI on b5da889.



Summary (AI-generated)
Compressed the Supabase migration history into a single baseline migration at
20260608143906_fix_manifest_update_rls_policy.sqland removed the older migration files.The squashed baseline preserves the generated schema plus non-schema migration state that Supabase squash omits, including PGMQ queues, cron task rows, RBAC static metadata, credit step fixtures, cron scheduling, and ACL parity. It also adds a documented repair script for existing databases.
Motivation (AI-generated)
The migration directory had accumulated a long historical chain. Keeping a single baseline simplifies local resets, schema review, and future migration maintenance while retaining a repair path for databases that already have the old history recorded.
Business Impact (AI-generated)
This is internal database-maintenance work. New environments initialize from one baseline migration.
For production or any database that is already up to date with
20260608143906, the documented repair command does not apply schema SQL. It only removes the deleted historical version rows fromsupabase_migrations.schema_migrationsand keeps20260608143906marked as applied:For an older database that has not applied
20260608143906, the same script first applies the idempotent pre-squash repair SQL, then compacts migration history.Test Plan (AI-generated)
bash -n scripts/repair-supabase-squashed-baseline.shbash scripts/check-supabase-migration-order.shgit diff --checkbun lintbun run cli:typecheckbun run typecheck:backendbun run typecheck:frontendbun run supabase:db:resetapplied only20260608143906_fix_manifest_update_rls_policy.sqlSUPABASE_WORKDIR=... bash scripts/repair-supabase-squashed-baseline.sh --localon an already-current DB printedSquashed baseline 20260608143906 is already marked applied; skipping schema repair SQL.supabase_migrations.schema_migrationscontains only20260608143906bun scripts/supabase-worktree.ts migration upreportedLocal database is up to date.bun scripts/supabase-worktree.ts test dbpassed: 77 files, 1109 testsSummary by CodeRabbit
Documentation
Chores