smoonb 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,800 +1,800 @@
1
- {
2
- "app.title": "Supa Moonbase (smoonb)",
3
- "app.tagline": "Backup and restore: complete and simple, as it should be",
4
- "app.developedBy": "Developed by: Goalmoon Tecnologia LTDA",
5
- "app.website": "Website: https://www.smoonb.com",
6
- "app.documentation": "Documentation: https://github.com/almmello/smoonb",
7
- "app.issues": "Issues: https://github.com/almmello/smoonb/issues",
8
-
9
- "help.header": "Commands",
10
- "help.usage": "Usage",
11
- "help.footer": "Use \"{cmd} help [command]\" for more information about a command.",
12
- "help.commands.backup": "Create a full backup of your Supabase project",
13
- "help.commands.restore": "Restore a full backup (interactive mode with psql)",
14
- "help.commands.check": "Verify project integrity after restore",
15
- "help.commands.import": "Import a Dashboard backup and prepare the structure for restore",
16
-
17
- "prompt.confirm": "Proceed?",
18
- "prompt.confirmYes": "(Y/n)",
19
- "prompt.confirmNo": "(y/N)",
20
- "prompt.cancelled": "Operation cancelled.",
21
-
22
- "error.generic": "Something went wrong.",
23
- "error.pathNotFound": "Path not found: {path}",
24
- "error.permissionDenied": "Permission denied: {path}",
25
- "error.commandNotFound": "Command not recognized: {command}",
26
- "error.useHelp": "Use {cmd} --help to see available commands",
27
- "error.uncaughtException": "Uncaught error: {message}",
28
- "error.unhandledRejection": "Unhandled promise rejection: {reason}",
29
-
30
- "import.start": "Preparing directory structure for the imported backup...",
31
- "import.scaffoldOnly": "Scaffolding structure without moving files.",
32
- "import.done": "Import completed. Ready for restore.",
33
- "import.fileRequired": "Backup file not provided",
34
- "import.fileNotFound": "Backup file not found: {path}",
35
- "import.invalidFormat": "Backup file must be .backup.gz or .backup",
36
- "import.storageNotFound": "Storage file not found: {path}",
37
- "import.storageInvalidFormat": "Storage file must be .storage.zip",
38
- "import.invalidFileName": "Backup file name is not in the expected Dashboard format",
39
- "import.expectedFormat": "Expected format: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
40
- "import.fileReceived": "File received: {fileName}",
41
- "import.success": "Backup file imported successfully!",
42
- "import.storageSuccess": "Storage file imported successfully!",
43
- "import.nextStep": "Next step: Run 'npx smoonb restore' to restore this backup",
44
-
45
- "check.start": "Verifying project integrity: {projectId}",
46
- "check.done": "Verification completed!",
47
- "check.reportSaved": "Report saved to: {path}",
48
- "check.error": "Error during verification: {message}",
49
- "check.psqlNotFound": "psql not found",
50
- "check.installPostgres": "Install PostgreSQL:",
51
- "check.databaseUrlNotConfigured": "databaseUrl not configured",
52
- "check.configureDatabaseUrl": "Configure databaseUrl in .smoonbrc",
53
-
54
- "docker.notInstalled": "DOCKER DESKTOP NOT FOUND",
55
- "docker.notRunning": "DOCKER DESKTOP IS NOT RUNNING",
56
- "docker.instructions": "To create a full backup of Supabase, you need to:",
57
- "docker.installDocker": "1. Install Docker Desktop",
58
- "docker.runDocker": "2. Run Docker Desktop",
59
- "docker.waitInitialization": "Wait for complete initialization",
60
- "docker.repeatCommand": "3. Repeat the backup command",
61
- "docker.download": "Download: https://docs.docker.com/desktop/install/",
62
- "docker.tip": "Tip: Docker Desktop must be running in the background",
63
- "docker.required": "Docker Desktop is required for full Supabase backup",
64
- "docker.requiredComponents": "Docker Desktop is required for full Supabase backup\n - PostgreSQL Database\n - Edge Functions\n - All components via Supabase CLI",
65
- "docker.cancelled": "Backup cancelled - Prerequisites not met",
66
- "docker.installComponents": "Install the required components and try again",
67
-
68
- "supabase.cliNotFound": "SUPABASE CLI NOT FOUND",
69
- "supabase.installInstructions": "To create a full backup of Supabase, you need to:",
70
- "supabase.installCli": "1. Install Supabase CLI",
71
- "supabase.repeatCommand": "2. Repeat the backup command",
72
- "supabase.installLink": "Installation: npm install -g supabase",
73
- "supabase.required": "Supabase CLI is required for full Supabase backup",
74
- "supabase.requiredComponents": "Supabase CLI is required for full Supabase backup\n - PostgreSQL Database\n - Edge Functions\n - All components via Docker",
75
- "supabase.cliVersionPolicy": "Version policy: accepts any version up to 1 minor behind the latest (same major). Use --skip-supabase-version-check to bypass the check.",
76
- "supabase.cliUpdateRecommended": "Supabase CLI {version} detected. We recommend always using the latest version for new features and bug fixes: https://supabase.com/docs/guides/cli/getting-started#updating-the-supabase-cli",
77
- "supabase.cliOutdated": "Supabase CLI {version} is below the minimum accepted version ({minVersion}). Latest: {latest}. Update to at least version {minVersion}.",
78
- "supabase.cliVersionSkipWarning": "Supabase CLI version check disabled (--skip-supabase-version-check). Proceeding without version check — user assumes the risk.",
79
- "supabase.cliUpdateInstructions": "Update the Supabase CLI and run smoonb again:",
80
- "supabase.cliUpdateCommandExamples": "Examples (depending on how you installed):",
81
- "supabase.cliUpdateCommandGlobal": "npm install -g supabase@latest (global)",
82
- "supabase.cliUpdateCommandLocal": "npm install supabase@latest (local/project)",
83
- "supabase.cliUpdateLink": "Docs: https://supabase.com/docs/guides/cli/getting-started#updating-the-supabase-cli",
84
- "supabase.cliLatestUnknown": "Could not fetch the latest Supabase CLI version. Cannot continue.",
85
- "supabase.cliLatestErrorLabel": "Error:",
86
- "supabase.cliLatestErrorUnknown": "Unknown error",
87
-
88
- "backup.components": "Backup Components:",
89
- "backup.database": "Database PostgreSQL (pg_dumpall + separate SQL)",
90
- "backup.extensions": "Database Extensions and Settings",
91
- "backup.roles": "Custom Roles",
92
- "backup.functions": "Edge Functions",
93
- "backup.auth": "Auth Settings",
94
- "backup.storage": "Storage Buckets",
95
- "backup.realtime": "Realtime Settings",
96
- "backup.temp": "Supabase .temp",
97
- "backup.migrations": "Migrations",
98
-
99
- "restore.start": "Starting restore process...",
100
- "restore.done": "Restore completed!",
101
- "restore.error": "Error during restore: {message}",
102
-
103
- "config.title": "smoonb Configuration...",
104
- "config.init": "Initializing configuration...",
105
- "config.show": "Showing configuration...",
106
- "config.options": "Available options:",
107
- "config.initOption": "--init Initialize configuration",
108
- "config.showOption": "--show Show current configuration",
109
- "config.error": "Configuration error:",
110
- "config.fileCreated": "Configuration file created: {path}",
111
- "config.fileExists": "Configuration file already exists: {path}",
112
- "config.fileNotFound": "Configuration file not found: {path}",
113
-
114
- "functions.cliNotFound": "Supabase CLI not found",
115
- "functions.installCli": "Install Supabase CLI:",
116
- "functions.installLink": "npm install -g supabase",
117
- "functions.orVisit": "or visit: https://supabase.com/docs/guides/cli",
118
- "functions.availableCommands": "Available commands for Edge Functions:",
119
- "functions.list": "List functions:",
120
- "functions.deploy": "Deploy functions:",
121
- "functions.pull": "Pull functions (if available):",
122
- "functions.moreOptions": "For more options, use Supabase CLI directly:",
123
- "functions.error": "Error: {message}",
124
-
125
- "disclaimer.title": "Universal Disclaimer / Legal Notice",
126
- "disclaimer.text": "By continuing, you acknowledge and agree that Supa Moonbase (smoonb) is provided \"AS IS\" and \"AS AVAILABLE\", with no warranties of any kind—express, implied, or statutory—including but not limited to merchantability, fitness for a particular purpose, and non-infringement, to the maximum extent permitted by applicable law. Backup and restore operations inherently carry risk, environments vary widely, and we cannot foresee or validate all user setups. You are solely responsible for validating your own environment, keeping independent copies, and verifying results before relying on them in production. We build Supa Moonbase (smoonb) on public, auditable, open-source repositories to help people simplify their workflows, but this does not create any warranty, promise of support, or service-level commitment.",
127
- "disclaimer.limitation": "Limitation of liability — To the maximum extent permitted by law, Goalmoon Tecnologia LTDA, its contributors, and licensors will not be liable for any indirect, incidental, special, consequential, exemplary, or punitive damages (including loss of data, interruption of business, or lost profits) arising from or related to the use of, inability to use, backup/restore operations performed by, or results produced by Supa Moonbase (smoonb). Terms of Use: https://www.smoonb.com/terms. Privacy Policy: https://www.smoonb.com/privacy.",
128
- "disclaimer.acceptBackup": "Do you accept the Terms of Use and Risk Warning for Backup?",
129
- "disclaimer.acceptRestore": "Do you accept the Terms of Use and Risk Warning for Restore?",
130
- "disclaimer.acceptImport": "Do you accept the Terms of Use and Risk Warning for Import?",
131
- "disclaimer.operationCancelled": "Operation cancelled by user.",
132
-
133
- "consent.title": "The smoonb will read and write the .env.local file locally.",
134
- "consent.backup": "An automatic backup of .env.local will be created before any changes.",
135
- "consent.mapping": "We will map your environment variables to ensure all required keys are present and have the correct values for the target project.",
136
- "consent.proceed": "Do you consent to proceed?",
137
-
138
- "help.configuration": "CONFIGURATION:",
139
- "help.configurationDesc": "Configure .env.local with Supabase credentials and SMOONB_LICENSE_KEY (required). License: paste from desktop app at https://www.smoonb.com. Optional: SMOONB_TELEMETRY_ENABLED (default true), SMOONB_OUTPUT_DIR. smoonb maps variables interactively on first run.",
140
- "help.update": "UPDATE TO LATEST VERSION:",
141
- "help.updateCommand": "npm install smoonb@latest",
142
- "help.manual": "MANUAL - COMPLETE EXAMPLES:",
143
- "help.backupTitle": "1. BACKUP - Create full backup of project:",
144
- "help.backupExample1": "npx smoonb backup",
145
- "help.backupExample1Desc": "# Interactive process that captures all Supabase components",
146
- "help.backupExample2": "npx smoonb backup --skip-realtime",
147
- "help.backupExample2Desc": "# Skips interactive capture of Realtime Settings",
148
- "help.restoreTitle": "2. RESTORE - Restore backup to a project:",
149
- "help.restoreExample1": "npx smoonb restore",
150
- "help.restoreExample1Desc": "# Interactive process that lists available backups and allows selection",
151
- "help.restoreExample2": "npx smoonb restore --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
152
- "help.restoreExample2Desc": "# Imports and restores backup file directly (skips selection)",
153
- "help.restoreExample3": "npx smoonb restore --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
154
- "help.restoreExample3Desc": "# Imports and restores backup and storage together",
155
- "help.importTitle": "3. IMPORT - Import backup from Supabase Dashboard:",
156
- "help.importExample1": "npx smoonb import --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
157
- "help.importExample1Desc": "# Imports database file only",
158
- "help.importExample2": "npx smoonb import --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
159
- "help.importExample2Desc": "# Imports database and storage together (storage is optional)",
160
- "help.checkTitle": "4. CHECK - Verify integrity after restore:",
161
- "help.checkExample1": "npx smoonb check",
162
- "help.checkExample1Desc": "# Verifies connection, extensions, tables, RLS, Realtime and Storage",
163
- "help.tipsTitle": "IMPORTANT TIPS:",
164
- "help.tip1": "• The import command requires a backup file (.backup.gz), but storage (.storage.zip) is optional",
165
- "help.tip2": "• Storage depends on a backup, but backup does not depend on storage",
166
- "help.tip3": "• Use absolute or relative paths for files in the import command",
167
- "help.tip4": "• Backup file format must be: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
168
- "help.tip5": "• Storage file format must be: *.storage.zip",
169
-
170
- "help.commands.backupDesc": "Create a full backup of your Supabase project using Supabase CLI",
171
- "help.commands.skipSupabaseVersionCheck": "Skip the Supabase CLI version check (user assumes the risk)",
172
- "help.commands.backupSkipRealtime": "Skip interactive capture of Realtime Settings",
173
- "help.commands.backupPostgresMajor": "Postgres major version for dump (15, 17). Non-interactive; no menu.",
174
- "help.commands.backupExamples": "Examples:",
175
- "help.commands.backupExample1": "npx smoonb backup",
176
- "help.commands.backupExample1Desc": "# Complete interactive process",
177
- "help.commands.backupExample2": "npx smoonb backup --skip-realtime",
178
- "help.commands.backupExample2Desc": "# Skips Realtime Settings configuration",
179
- "help.commands.backupExample3": "npx smoonb backup --skip-supabase-version-check",
180
- "help.commands.backupExample3Desc": "# Skips Supabase CLI version check (use when your package manager lags behind, e.g. Scoop)",
181
- "help.commands.backupWhat": "What is captured:",
182
- "help.commands.backupWhat1": "• Database PostgreSQL (pg_dumpall + separate SQL)",
183
- "help.commands.backupWhat2": "• Database Extensions and Settings",
184
- "help.commands.backupWhat3": "• Custom Roles",
185
- "help.commands.backupWhat4": "• Edge Functions (automatic download)",
186
- "help.commands.backupWhat5": "• Auth Settings (via Management API)",
187
- "help.commands.backupWhat6": "• Storage Buckets (metadata via Management API)",
188
- "help.commands.backupWhat7": "• Realtime Settings (7 interactive parameters)",
189
- "help.commands.backupWhat8": "• Supabase .temp (temporary files)",
190
- "help.commands.backupWhat9": "• Migrations (all project migrations)",
191
- "help.commands.backupPostgresMajorEnv": "Required for backup and restore: SUPABASE_POSTGRES_MAJOR=15 or 17 (in .env.local or environment).",
192
- "help.commands.backupPostgresVersionInDashboardTitle": "Where to find the Postgres version (Supabase Dashboard)",
193
- "help.commands.backupPostgresVersionInDashboardBody": "Project Settings -> Infrastructure -> Service Versions (Postgres line). Use that major for SUPABASE_POSTGRES_MAJOR.",
194
- "help.commands.backupFlow": "Backup flow:",
195
- "help.commands.backupFlow1": "1. Terms of use",
196
- "help.commands.backupFlow2": "2. License validation (SMOONB_LICENSE_KEY)",
197
- "help.commands.backupFlow3": "3. Docker validation",
198
- "help.commands.backupFlow4": "4. Consent to read/write .env.local",
199
- "help.commands.backupFlow5": "5. Environment variable mapping (license not in wizard)",
200
- "help.commands.backupFlow6": "6. Component selection",
201
- "help.commands.backupFlow7": "7. Summary and confirmation",
202
- "help.commands.backupFlow8": "8. Execution",
203
-
204
- "help.commands.restoreDesc": "Restore a full backup using psql (interactive mode)",
205
- "help.commands.restoreFile": "Full path of .backup.gz file to import and restore (optional)",
206
- "help.commands.restoreStorage": "Full path of .storage.zip file to import with backup (optional)",
207
- "help.commands.restoreExamples": "Examples:",
208
- "help.commands.restoreExample1": "npx smoonb restore",
209
- "help.commands.restoreExample1Desc": "# Interactive process that lists available backups",
210
- "help.commands.restoreExample2": "npx smoonb restore --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
211
- "help.commands.restoreExample2Desc": "# Imports and restores backup file directly",
212
- "help.commands.restoreExample3": "npx smoonb restore --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
213
- "help.commands.restoreExample3Desc": "# Imports and restores backup and storage together",
214
- "help.commands.restoreExample4": "npx smoonb restore --skip-supabase-version-check",
215
- "help.commands.restoreExample4Desc": "# Skips Supabase CLI version check (use when your package manager lags behind, e.g. Scoop)",
216
- "help.commands.restoreFlow": "Restore flow:",
217
- "help.commands.restoreFlow1": "1. Terms of use",
218
- "help.commands.restoreFlow2": "2. License validation (SMOONB_LICENSE_KEY)",
219
- "help.commands.restoreFlow3": "3. Docker validation",
220
- "help.commands.restoreFlow4": "4. Consent to read/write .env.local",
221
- "help.commands.restoreFlow5": "5. Environment variable mapping (includes SUPABASE_POSTGRES_MAJOR)",
222
- "help.commands.restoreFlow6": "6. Backup selection",
223
- "help.commands.restoreFlow7": "7. Component selection to restore",
224
- "help.commands.restoreFlow8": "8. Summary and confirmation",
225
- "help.commands.restoreFlow9": "9. Disclaimer: expected errors during restore (Supabase doc link); wait for completion, then test result",
226
- "help.commands.restoreFlow10": "10. Restore execution",
227
- "help.commands.restoreWhenFile": "When to use --file:",
228
- "help.commands.restoreWhenFile1": "• Automatically imports backup file before restoring",
229
- "help.commands.restoreWhenFile2": "• Eliminates backup selection step",
230
- "help.commands.restoreWhenFile3": "• If --storage provided, also imports storage file",
231
- "help.commands.restoreWhenFile4": "• Useful for restoring backups downloaded directly from Dashboard",
232
- "help.commands.restoreFormats": "Supported formats:",
233
- "help.commands.restoreFormats1": "• .backup.gz (compressed) - Automatically decompresses",
234
- "help.commands.restoreFormats2": "• .backup (uncompressed) - Restores directly",
235
-
236
- "help.commands.checkDesc": "Verify Supabase project integrity after restore",
237
- "help.commands.checkExamples": "Examples:",
238
- "help.commands.checkExample1": "npx smoonb check",
239
- "help.commands.checkExample1Desc": "# Verifies integrity and displays report in console",
240
- "help.commands.checkWhat": "What is verified:",
241
- "help.commands.checkWhat1": "• Database connection",
242
- "help.commands.checkWhat2": "• Installed PostgreSQL extensions",
243
- "help.commands.checkWhat3": "• Created tables",
244
- "help.commands.checkWhat4": "• RLS policies (Row Level Security)",
245
- "help.commands.checkWhat5": "• Realtime publications",
246
- "help.commands.checkWhat6": "• Storage buckets",
247
-
248
- "help.commands.importDesc": "Import .backup.gz file and optionally .storage.zip from Supabase Dashboard",
249
- "help.commands.importFile": "Full path of .backup.gz file to import",
250
- "help.commands.importStorage": "Full path of .storage.zip file to import (optional)",
251
- "help.commands.importExamples": "Examples:",
252
- "help.commands.importExample1": "npx smoonb import --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
253
- "help.commands.importExample1Desc": "# Imports database file only",
254
- "help.commands.importExample2": "npx smoonb import --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
255
- "help.commands.importExample2Desc": "# Imports database and storage together",
256
- "help.commands.importFormats": "File formats:",
257
- "help.commands.importFormats1": "• Backup: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz (required)",
258
- "help.commands.importFormats2": "• Storage: *.storage.zip (optional)",
259
- "help.commands.importImportant": "Important:",
260
- "help.commands.importImportant1": "• Backup file is required",
261
- "help.commands.importImportant2": "• Storage file is optional and depends on a backup",
262
- "help.commands.importImportant3": "• Both files will be copied to the same backup folder",
263
- "help.commands.importImportant4": "• Imported backup will be available for restore command",
264
- "help.commands.importImportant5": "• Use absolute or relative paths",
265
-
266
- "quickHelp.title": "MAIN COMMANDS:",
267
- "quickHelp.backupTitle": "Full backup:",
268
- "quickHelp.backupDesc": "npx smoonb backup # Full interactive backup using Docker",
269
- "quickHelp.restoreTitle": "Full restoration:",
270
- "quickHelp.restoreDesc": "npx smoonb restore # Interactive restoration using psql (Docker)",
271
- "quickHelp.checkTitle": "Post-restore verification:",
272
- "quickHelp.checkDesc": "npx smoonb check # Verifies project integrity",
273
- "quickHelp.configuration": "CONFIGURATION:",
274
- "quickHelp.configurationDesc": "Configure the .env.local file in the project root with your Supabase credentials. The smoonb will map variables interactively on first execution.",
275
- "quickHelp.tokenTitle": "PERSONAL ACCESS TOKEN (REQUIRED):",
276
- "quickHelp.tokenDesc": "For Management API (Edge Functions, Auth Settings, Storage):",
277
- "quickHelp.tokenStep1": "1. Visit: https://supabase.com/dashboard/account/tokens",
278
- "quickHelp.tokenStep2": "2. Click \"Generate new token\"",
279
- "quickHelp.tokenStep3": "3. Copy the token (format: sbp_...)",
280
- "quickHelp.tokenStep4": "4. Add to .env.local as SUPABASE_ACCESS_TOKEN",
281
- "quickHelp.update": "UPDATE TO LATEST VERSION:",
282
- "quickHelp.updateCommand": "npm install smoonb@latest",
283
-
284
- "docker.validation.title": "Docker Validation",
285
- "docker.validation.checking": "Checking Docker dependencies...",
286
- "docker.validation.detected": "Docker Desktop detected and running",
287
- "docker.validation.version": "Version: {version}",
288
-
289
- "license.promptPaste": "Paste the license key from the desktop app:",
290
- "license.required": "License key is required.",
291
- "license.validationUnavailable": "Could not validate your license right now.",
292
- "license.checkConnection": "Check your connection and try again.",
293
- "license.invalidOrInactive": "Your license is invalid or your subscription is not active.",
294
- "license.openDesktopApp": "Open the desktop app, check your subscription and generate a new license.",
295
- "license.denied.title": "License validation denied by server.",
296
- "license.denied.reason": "Reason: {reason}",
297
- "license.denied.alreadyBound": "This license is already linked to another machine and cannot be moved.",
298
- "license.denied.alreadyBoundAction": "To use smoonb on this machine, revoke this license in the desktop app and generate a new one: {url}",
299
- "license.denied.correlationId": "Correlation ID: {id}",
300
- "license.trialNotice": "You are using a trial license.",
301
- "license.error.title": "License validation failed.",
302
- "license.error.whatHappened": "What happened:",
303
- "license.error.typeHttp": "Type: HTTP error",
304
- "license.error.typeNetwork": "Type: Network error",
305
- "license.error.typeTls": "Type: TLS / certificate error",
306
- "license.error.typeParse": "Type: Unexpected response format from API",
307
- "license.error.testConnectivity": "To test connectivity: GET {url}",
308
- "license.error.status": "Status: {status}",
309
- "license.error.endpoint": "Endpoint: {endpoint}",
310
- "license.error.correlationId": "Correlation ID: {id}",
311
- "license.error.howToHelp": "How to get help (Support > Messages):",
312
- "license.error.supportStep1": "Go to {url}",
313
- "license.error.supportStep2": "Open \"Support\" (left menu)",
314
- "license.error.supportStep3": "Click \"Messages\"",
315
- "license.error.supportStep4": "Click \"New Message\"",
316
- "license.error.supportStep5": "Paste the diagnostic bundle below and send",
317
- "license.error.visit": "Visit: {url}",
318
- "license.error.subjectSuggestion": "Subject (copy/paste): \"License validation failed (Correlation ID: {id})\"",
319
- "license.error.messageSuggestion": "Message: \"I'm unable to validate my license in the CLI. Here is the diagnostic bundle:\" then paste the bundle below.",
320
-
321
- "env.licenseKey.help": "Paste the license generated in the desktop app.",
322
- "env.telemetry.help": "Set to false to disable telemetry (default: true).",
323
-
324
- "env.supabasePostgresMajor.hintTitle": "How to check the Postgres version in Supabase",
325
- "env.supabasePostgresMajor.hintPath": "Project Settings -> Infrastructure -> Service Versions",
326
- "env.supabasePostgresMajor.hintBody": "Check the Postgres line and use the major (e.g. 15 or 17) for SUPABASE_POSTGRES_MAJOR.",
327
-
328
- "env.mapping.title": "Mapping variable: {variable}",
329
- "env.mapping.selectKey": "Select the corresponding key for: {expected}",
330
- "env.mapping.addNew": "Add a new key for me",
331
- "env.mapping.currentValue": "Current value: {value}",
332
- "env.mapping.isCorrect": "Is this the correct value for the target project?",
333
- "env.mapping.notFound": "No entry found for variable {variable}.",
334
- "env.mapping.backupCreated": "Backup of .env.local: {path}",
335
- "env.mapping.fileNotFound": ".env.local file not found. It will be created during mapping.",
336
- "env.mapping.updated": ".env.local updated successfully. No keys renamed; values synchronized.",
337
- "env.language.selectDefault": "What is the default language?",
338
- "env.language.english": "English",
339
- "env.language.portuguese": "Portuguese (pt-BR)",
340
- "env.language.saved": "Default language saved: {lang}",
341
- "env.language.note": "Note: The language change will be effective in the next commands. The current process will continue in the initial language.",
342
-
343
- "backup.components.edgeFunctions.title": "Edge Functions:",
344
- "backup.components.edgeFunctions.description1": "We will delete existing functions in the supabase/functions folder, reset the link",
345
- "backup.components.edgeFunctions.description2": "between the tool and the project, and download functions from the server again.",
346
- "backup.components.edgeFunctions.description3": "You will have the option to keep or delete functions in the folder after backup.",
347
- "backup.components.edgeFunctions.include": "Do you want to include Edge Functions",
348
- "backup.components.edgeFunctions.cleanup": "Do you want to clean supabase/functions after backup",
349
-
350
- "backup.components.temp.title": "Supabase .temp:",
351
- "backup.components.temp.description1": "We will copy existing files (if any) in the supabase/.temp folder.",
352
- "backup.components.temp.description2": "You will have the option to keep or delete files in this folder after backup.",
353
- "backup.components.temp.include": "Do you want to include Supabase .temp",
354
- "backup.components.temp.cleanup": "Do you want to delete supabase/.temp after backup",
355
-
356
- "backup.components.migrations.title": "Migrations:",
357
- "backup.components.migrations.description1": "We will delete existing migrations (if any) in the supabase/migrations folder,",
358
- "backup.components.migrations.description2": "reset the link between the tool and the project, and download migrations",
359
- "backup.components.migrations.description3": "from the server again. You will have the option to keep or delete migrations in the folder after backup.",
360
- "backup.components.migrations.include": "Do you want to include Migrations",
361
- "backup.components.migrations.cleanup": "Do you want to delete supabase/migrations after backup",
362
-
363
- "backup.components.storage.include": "Do you want to include Storage",
364
- "backup.components.auth.include": "Do you want to include Auth",
365
- "backup.components.realtime.include": "Do you want to include Realtime",
366
-
367
- "backup.summary.title": "CONFIGURATION SUMMARY:",
368
- "backup.summary.edgeFunctions": "Edge Functions: {value}",
369
- "backup.summary.edgeFunctionsCleanup": "Clean after backup: {value}",
370
- "backup.summary.temp": "Supabase .temp: {value}",
371
- "backup.summary.tempCleanup": "Delete after backup: {value}",
372
- "backup.summary.migrations": "Migrations: {value}",
373
- "backup.summary.migrationsCleanup": "Delete after backup: {value}",
374
- "backup.summary.storage": "Storage: {value}",
375
- "backup.summary.auth": "Auth: {value}",
376
- "backup.summary.realtime": "Realtime: {value}",
377
- "backup.summary.backupDir": "Backup directory: {path}",
378
- "backup.summary.confirm": "Do you want to start the backup with these configurations?",
379
- "backup.summary.yes": "Yes",
380
- "backup.summary.no": "No",
381
-
382
- "backup.start.title": "Starting backup of project: {projectId}",
383
- "backup.start.directory": "Directory: {path}",
384
- "backup.start.docker": "Backup via Docker Desktop",
385
-
386
- "backup.steps.postgresVersion.title": "Postgres version",
387
- "backup.steps.postgresVersion.found": "Postgres version found: major {major} (image {image}).",
388
- "backup.steps.postgresVersion.proceedWith": "We will proceed with this version. You can override below.",
389
- "backup.steps.postgresVersion.selectVersion": "Select Postgres image version to use for dump:",
390
- "backup.steps.postgresVersion.useDetected": "Use detected (postgres:{major})",
391
- "backup.steps.postgresVersion.selected": "Using image: {image}",
392
- "backup.steps.postgresVersion.detectError": "Could not detect server version: {message}",
393
- "backup.steps.postgresVersion.usingDefault": "Using default postgres:17",
394
- "backup.steps.postgresVersion.useSuggested": "Use suggested (postgres:{major})",
395
- "backup.steps.postgresVersion.showAdvanced": "Show advanced versions…",
396
- "backup.steps.postgresVersion.advancedTitle": "Advanced Postgres versions",
397
- "backup.steps.postgresVersion.back": "Back",
398
- "backup.steps.postgresVersion.invalidCli": "Invalid --postgres-major. Supported: 15, 17 (or 16, 18 advanced).",
399
- "backup.steps.postgresVersion.postgresMajorRequired": "Postgres version not set. Run the Postgres version step first or use --postgres-major.",
400
- "backup.steps.postgresVersion.dashboardHintTitle": "Tip: confirm the Postgres version in the Supabase Dashboard",
401
- "backup.steps.postgresVersion.dashboardHintPath": "Project Settings -> Infrastructure -> Service Versions",
402
- "backup.steps.postgresVersion.dashboardHintWhy": "Use the major shown on the Postgres line when choosing in the menu.",
403
-
404
- "backup.steps.database.title": "PostgreSQL Database Backup via pg_dumpall Docker...",
405
- "backup.steps.database.creating": "Creating full backup via pg_dumpall...",
406
- "backup.steps.database.postgresImage": "Using image: {image} (major {major})",
407
- "backup.steps.database.executing": "Executing pg_dumpall via Docker...",
408
- "backup.steps.database.versionMismatch": "pg_dumpall failed (possible version mismatch). Re-run and choose the correct Postgres major in the menu, or use --postgres-major <15|17>.",
409
- "backup.steps.database.progress.eta": "ETA",
410
- "backup.steps.database.separated.title": "PostgreSQL Database Backup (separate SQL files)...",
411
- "backup.steps.database.separated.creating": "Creating separate SQL backups via Supabase CLI...",
412
- "backup.steps.database.separated.exportingSchema": "Exporting schema...",
413
- "backup.steps.database.separated.exportingData": "Exporting data...",
1
+ {
2
+ "app.title": "Supa Moonbase (smoonb)",
3
+ "app.tagline": "Backup and restore: complete and simple, as it should be",
4
+ "app.developedBy": "Developed by: Goalmoon Tecnologia LTDA",
5
+ "app.website": "Website: https://www.smoonb.com",
6
+ "app.documentation": "Documentation: https://github.com/almmello/smoonb",
7
+ "app.issues": "Issues: https://github.com/almmello/smoonb/issues",
8
+
9
+ "help.header": "Commands",
10
+ "help.usage": "Usage",
11
+ "help.footer": "Use \"{cmd} help [command]\" for more information about a command.",
12
+ "help.commands.backup": "Create a full backup of your Supabase project",
13
+ "help.commands.restore": "Restore a full backup (interactive mode with psql)",
14
+ "help.commands.check": "Verify project integrity after restore",
15
+ "help.commands.import": "Import a Dashboard backup and prepare the structure for restore",
16
+
17
+ "prompt.confirm": "Proceed?",
18
+ "prompt.confirmYes": "(Y/n)",
19
+ "prompt.confirmNo": "(y/N)",
20
+ "prompt.cancelled": "Operation cancelled.",
21
+
22
+ "error.generic": "Something went wrong.",
23
+ "error.pathNotFound": "Path not found: {path}",
24
+ "error.permissionDenied": "Permission denied: {path}",
25
+ "error.commandNotFound": "Command not recognized: {command}",
26
+ "error.useHelp": "Use {cmd} --help to see available commands",
27
+ "error.uncaughtException": "Uncaught error: {message}",
28
+ "error.unhandledRejection": "Unhandled promise rejection: {reason}",
29
+
30
+ "import.start": "Preparing directory structure for the imported backup...",
31
+ "import.scaffoldOnly": "Scaffolding structure without moving files.",
32
+ "import.done": "Import completed. Ready for restore.",
33
+ "import.fileRequired": "Backup file not provided",
34
+ "import.fileNotFound": "Backup file not found: {path}",
35
+ "import.invalidFormat": "Backup file must be .backup.gz or .backup",
36
+ "import.storageNotFound": "Storage file not found: {path}",
37
+ "import.storageInvalidFormat": "Storage file must be .storage.zip",
38
+ "import.invalidFileName": "Backup file name is not in the expected Dashboard format",
39
+ "import.expectedFormat": "Expected format: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
40
+ "import.fileReceived": "File received: {fileName}",
41
+ "import.success": "Backup file imported successfully!",
42
+ "import.storageSuccess": "Storage file imported successfully!",
43
+ "import.nextStep": "Next step: Run 'npx smoonb restore' to restore this backup",
44
+
45
+ "check.start": "Verifying project integrity: {projectId}",
46
+ "check.done": "Verification completed!",
47
+ "check.reportSaved": "Report saved to: {path}",
48
+ "check.error": "Error during verification: {message}",
49
+ "check.psqlNotFound": "psql not found",
50
+ "check.installPostgres": "Install PostgreSQL:",
51
+ "check.databaseUrlNotConfigured": "databaseUrl not configured",
52
+ "check.configureDatabaseUrl": "Configure databaseUrl in .smoonbrc",
53
+
54
+ "docker.notInstalled": "DOCKER DESKTOP NOT FOUND",
55
+ "docker.notRunning": "DOCKER DESKTOP IS NOT RUNNING",
56
+ "docker.instructions": "To create a full backup of Supabase, you need to:",
57
+ "docker.installDocker": "1. Install Docker Desktop",
58
+ "docker.runDocker": "2. Run Docker Desktop",
59
+ "docker.waitInitialization": "Wait for complete initialization",
60
+ "docker.repeatCommand": "3. Repeat the backup command",
61
+ "docker.download": "Download: https://docs.docker.com/desktop/install/",
62
+ "docker.tip": "Tip: Docker Desktop must be running in the background",
63
+ "docker.required": "Docker Desktop is required for full Supabase backup",
64
+ "docker.requiredComponents": "Docker Desktop is required for full Supabase backup\n - PostgreSQL Database\n - Edge Functions\n - All components via Supabase CLI",
65
+ "docker.cancelled": "Backup cancelled - Prerequisites not met",
66
+ "docker.installComponents": "Install the required components and try again",
67
+
68
+ "supabase.cliNotFound": "SUPABASE CLI NOT FOUND",
69
+ "supabase.installInstructions": "To create a full backup of Supabase, you need to:",
70
+ "supabase.installCli": "1. Install Supabase CLI",
71
+ "supabase.repeatCommand": "2. Repeat the backup command",
72
+ "supabase.installLink": "Installation: npm install -g supabase",
73
+ "supabase.required": "Supabase CLI is required for full Supabase backup",
74
+ "supabase.requiredComponents": "Supabase CLI is required for full Supabase backup\n - PostgreSQL Database\n - Edge Functions\n - All components via Docker",
75
+ "supabase.cliVersionPolicy": "Version policy: accepts any version up to 1 minor behind the latest (same major). Use --skip-supabase-version-check to bypass the check.",
76
+ "supabase.cliUpdateRecommended": "Supabase CLI {version} detected. We recommend always using the latest version for new features and bug fixes: https://supabase.com/docs/guides/cli/getting-started#updating-the-supabase-cli",
77
+ "supabase.cliOutdated": "Supabase CLI {version} is below the minimum accepted version ({minVersion}). Latest: {latest}. Update to at least version {minVersion}.",
78
+ "supabase.cliVersionSkipWarning": "Supabase CLI version check disabled (--skip-supabase-version-check). Proceeding without version check — user assumes the risk.",
79
+ "supabase.cliUpdateInstructions": "Update the Supabase CLI and run smoonb again:",
80
+ "supabase.cliUpdateCommandExamples": "Examples (depending on how you installed):",
81
+ "supabase.cliUpdateCommandGlobal": "npm install -g supabase@latest (global)",
82
+ "supabase.cliUpdateCommandLocal": "npm install supabase@latest (local/project)",
83
+ "supabase.cliUpdateLink": "Docs: https://supabase.com/docs/guides/cli/getting-started#updating-the-supabase-cli",
84
+ "supabase.cliLatestUnknown": "Could not fetch the latest Supabase CLI version. Cannot continue.",
85
+ "supabase.cliLatestErrorLabel": "Error:",
86
+ "supabase.cliLatestErrorUnknown": "Unknown error",
87
+
88
+ "backup.components": "Backup Components:",
89
+ "backup.database": "Database PostgreSQL (pg_dumpall + separate SQL)",
90
+ "backup.extensions": "Database Extensions and Settings",
91
+ "backup.roles": "Custom Roles",
92
+ "backup.functions": "Edge Functions",
93
+ "backup.auth": "Auth Settings",
94
+ "backup.storage": "Storage Buckets",
95
+ "backup.realtime": "Realtime Settings",
96
+ "backup.temp": "Supabase .temp",
97
+ "backup.migrations": "Migrations",
98
+
99
+ "restore.start": "Starting restore process...",
100
+ "restore.done": "Restore completed!",
101
+ "restore.error": "Error during restore: {message}",
102
+
103
+ "config.title": "smoonb Configuration...",
104
+ "config.init": "Initializing configuration...",
105
+ "config.show": "Showing configuration...",
106
+ "config.options": "Available options:",
107
+ "config.initOption": "--init Initialize configuration",
108
+ "config.showOption": "--show Show current configuration",
109
+ "config.error": "Configuration error:",
110
+ "config.fileCreated": "Configuration file created: {path}",
111
+ "config.fileExists": "Configuration file already exists: {path}",
112
+ "config.fileNotFound": "Configuration file not found: {path}",
113
+
114
+ "functions.cliNotFound": "Supabase CLI not found",
115
+ "functions.installCli": "Install Supabase CLI:",
116
+ "functions.installLink": "npm install -g supabase",
117
+ "functions.orVisit": "or visit: https://supabase.com/docs/guides/cli",
118
+ "functions.availableCommands": "Available commands for Edge Functions:",
119
+ "functions.list": "List functions:",
120
+ "functions.deploy": "Deploy functions:",
121
+ "functions.pull": "Pull functions (if available):",
122
+ "functions.moreOptions": "For more options, use Supabase CLI directly:",
123
+ "functions.error": "Error: {message}",
124
+
125
+ "disclaimer.title": "Universal Disclaimer / Legal Notice",
126
+ "disclaimer.text": "By continuing, you acknowledge and agree that Supa Moonbase (smoonb) is provided \"AS IS\" and \"AS AVAILABLE\", with no warranties of any kind—express, implied, or statutory—including but not limited to merchantability, fitness for a particular purpose, and non-infringement, to the maximum extent permitted by applicable law. Backup and restore operations inherently carry risk, environments vary widely, and we cannot foresee or validate all user setups. You are solely responsible for validating your own environment, keeping independent copies, and verifying results before relying on them in production. We build Supa Moonbase (smoonb) on public, auditable, open-source repositories to help people simplify their workflows, but this does not create any warranty, promise of support, or service-level commitment.",
127
+ "disclaimer.limitation": "Limitation of liability — To the maximum extent permitted by law, Goalmoon Tecnologia LTDA, its contributors, and licensors will not be liable for any indirect, incidental, special, consequential, exemplary, or punitive damages (including loss of data, interruption of business, or lost profits) arising from or related to the use of, inability to use, backup/restore operations performed by, or results produced by Supa Moonbase (smoonb). Terms of Use: https://www.smoonb.com/terms. Privacy Policy: https://www.smoonb.com/privacy.",
128
+ "disclaimer.acceptBackup": "Do you accept the Terms of Use and Risk Warning for Backup?",
129
+ "disclaimer.acceptRestore": "Do you accept the Terms of Use and Risk Warning for Restore?",
130
+ "disclaimer.acceptImport": "Do you accept the Terms of Use and Risk Warning for Import?",
131
+ "disclaimer.operationCancelled": "Operation cancelled by user.",
132
+
133
+ "consent.title": "The smoonb will read and write the .env.local file locally.",
134
+ "consent.backup": "An automatic backup of .env.local will be created before any changes.",
135
+ "consent.mapping": "We will map your environment variables to ensure all required keys are present and have the correct values for the target project.",
136
+ "consent.proceed": "Do you consent to proceed?",
137
+
138
+ "help.configuration": "CONFIGURATION:",
139
+ "help.configurationDesc": "Configure .env.local with Supabase credentials and SMOONB_LICENSE_KEY (required). License: paste from desktop app at https://www.smoonb.com. Optional: SMOONB_TELEMETRY_ENABLED (default true), SMOONB_OUTPUT_DIR. smoonb maps variables interactively on first run.",
140
+ "help.update": "UPDATE TO LATEST VERSION:",
141
+ "help.updateCommand": "npm install smoonb@latest",
142
+ "help.manual": "MANUAL - COMPLETE EXAMPLES:",
143
+ "help.backupTitle": "1. BACKUP - Create full backup of project:",
144
+ "help.backupExample1": "npx smoonb backup",
145
+ "help.backupExample1Desc": "# Interactive process that captures all Supabase components",
146
+ "help.backupExample2": "npx smoonb backup --skip-realtime",
147
+ "help.backupExample2Desc": "# Skips interactive capture of Realtime Settings",
148
+ "help.restoreTitle": "2. RESTORE - Restore backup to a project:",
149
+ "help.restoreExample1": "npx smoonb restore",
150
+ "help.restoreExample1Desc": "# Interactive process that lists available backups and allows selection",
151
+ "help.restoreExample2": "npx smoonb restore --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
152
+ "help.restoreExample2Desc": "# Imports and restores backup file directly (skips selection)",
153
+ "help.restoreExample3": "npx smoonb restore --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
154
+ "help.restoreExample3Desc": "# Imports and restores backup and storage together",
155
+ "help.importTitle": "3. IMPORT - Import backup from Supabase Dashboard:",
156
+ "help.importExample1": "npx smoonb import --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
157
+ "help.importExample1Desc": "# Imports database file only",
158
+ "help.importExample2": "npx smoonb import --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
159
+ "help.importExample2Desc": "# Imports database and storage together (storage is optional)",
160
+ "help.checkTitle": "4. CHECK - Verify integrity after restore:",
161
+ "help.checkExample1": "npx smoonb check",
162
+ "help.checkExample1Desc": "# Verifies connection, extensions, tables, RLS, Realtime and Storage",
163
+ "help.tipsTitle": "IMPORTANT TIPS:",
164
+ "help.tip1": "• The import command requires a backup file (.backup.gz), but storage (.storage.zip) is optional",
165
+ "help.tip2": "• Storage depends on a backup, but backup does not depend on storage",
166
+ "help.tip3": "• Use absolute or relative paths for files in the import command",
167
+ "help.tip4": "• Backup file format must be: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
168
+ "help.tip5": "• Storage file format must be: *.storage.zip",
169
+
170
+ "help.commands.backupDesc": "Create a full backup of your Supabase project using Supabase CLI",
171
+ "help.commands.skipSupabaseVersionCheck": "Skip the Supabase CLI version check (user assumes the risk)",
172
+ "help.commands.backupSkipRealtime": "Skip interactive capture of Realtime Settings",
173
+ "help.commands.backupPostgresMajor": "Postgres major version for dump (15, 17). Non-interactive; no menu.",
174
+ "help.commands.backupExamples": "Examples:",
175
+ "help.commands.backupExample1": "npx smoonb backup",
176
+ "help.commands.backupExample1Desc": "# Complete interactive process",
177
+ "help.commands.backupExample2": "npx smoonb backup --skip-realtime",
178
+ "help.commands.backupExample2Desc": "# Skips Realtime Settings configuration",
179
+ "help.commands.backupExample3": "npx smoonb backup --skip-supabase-version-check",
180
+ "help.commands.backupExample3Desc": "# Skips Supabase CLI version check (use when your package manager lags behind, e.g. Scoop)",
181
+ "help.commands.backupWhat": "What is captured:",
182
+ "help.commands.backupWhat1": "• Database PostgreSQL (pg_dumpall + separate SQL)",
183
+ "help.commands.backupWhat2": "• Database Extensions and Settings",
184
+ "help.commands.backupWhat3": "• Custom Roles",
185
+ "help.commands.backupWhat4": "• Edge Functions (automatic download)",
186
+ "help.commands.backupWhat5": "• Auth Settings (via Management API)",
187
+ "help.commands.backupWhat6": "• Storage Buckets (metadata via Management API)",
188
+ "help.commands.backupWhat7": "• Realtime Settings (7 interactive parameters)",
189
+ "help.commands.backupWhat8": "• Supabase .temp (temporary files)",
190
+ "help.commands.backupWhat9": "• Migrations (all project migrations)",
191
+ "help.commands.backupPostgresMajorEnv": "Required for backup and restore: SUPABASE_POSTGRES_MAJOR=15 or 17 (in .env.local or environment).",
192
+ "help.commands.backupPostgresVersionInDashboardTitle": "Where to find the Postgres version (Supabase Dashboard)",
193
+ "help.commands.backupPostgresVersionInDashboardBody": "Project Settings -> Infrastructure -> Service Versions (Postgres line). Use that major for SUPABASE_POSTGRES_MAJOR.",
194
+ "help.commands.backupFlow": "Backup flow:",
195
+ "help.commands.backupFlow1": "1. Terms of use",
196
+ "help.commands.backupFlow2": "2. License validation (SMOONB_LICENSE_KEY)",
197
+ "help.commands.backupFlow3": "3. Docker validation",
198
+ "help.commands.backupFlow4": "4. Consent to read/write .env.local",
199
+ "help.commands.backupFlow5": "5. Environment variable mapping (license not in wizard)",
200
+ "help.commands.backupFlow6": "6. Component selection",
201
+ "help.commands.backupFlow7": "7. Summary and confirmation",
202
+ "help.commands.backupFlow8": "8. Execution",
203
+
204
+ "help.commands.restoreDesc": "Restore a full backup using psql (interactive mode)",
205
+ "help.commands.restoreFile": "Full path of .backup.gz file to import and restore (optional)",
206
+ "help.commands.restoreStorage": "Full path of .storage.zip file to import with backup (optional)",
207
+ "help.commands.restoreExamples": "Examples:",
208
+ "help.commands.restoreExample1": "npx smoonb restore",
209
+ "help.commands.restoreExample1Desc": "# Interactive process that lists available backups",
210
+ "help.commands.restoreExample2": "npx smoonb restore --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
211
+ "help.commands.restoreExample2Desc": "# Imports and restores backup file directly",
212
+ "help.commands.restoreExample3": "npx smoonb restore --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
213
+ "help.commands.restoreExample3Desc": "# Imports and restores backup and storage together",
214
+ "help.commands.restoreExample4": "npx smoonb restore --skip-supabase-version-check",
215
+ "help.commands.restoreExample4Desc": "# Skips Supabase CLI version check (use when your package manager lags behind, e.g. Scoop)",
216
+ "help.commands.restoreFlow": "Restore flow:",
217
+ "help.commands.restoreFlow1": "1. Terms of use",
218
+ "help.commands.restoreFlow2": "2. License validation (SMOONB_LICENSE_KEY)",
219
+ "help.commands.restoreFlow3": "3. Docker validation",
220
+ "help.commands.restoreFlow4": "4. Consent to read/write .env.local",
221
+ "help.commands.restoreFlow5": "5. Environment variable mapping (includes SUPABASE_POSTGRES_MAJOR)",
222
+ "help.commands.restoreFlow6": "6. Backup selection",
223
+ "help.commands.restoreFlow7": "7. Component selection to restore",
224
+ "help.commands.restoreFlow8": "8. Summary and confirmation",
225
+ "help.commands.restoreFlow9": "9. Disclaimer: expected errors during restore (Supabase doc link); wait for completion, then test result",
226
+ "help.commands.restoreFlow10": "10. Restore execution",
227
+ "help.commands.restoreWhenFile": "When to use --file:",
228
+ "help.commands.restoreWhenFile1": "• Automatically imports backup file before restoring",
229
+ "help.commands.restoreWhenFile2": "• Eliminates backup selection step",
230
+ "help.commands.restoreWhenFile3": "• If --storage provided, also imports storage file",
231
+ "help.commands.restoreWhenFile4": "• Useful for restoring backups downloaded directly from Dashboard",
232
+ "help.commands.restoreFormats": "Supported formats:",
233
+ "help.commands.restoreFormats1": "• .backup.gz (compressed) - Automatically decompresses",
234
+ "help.commands.restoreFormats2": "• .backup (uncompressed) - Restores directly",
235
+
236
+ "help.commands.checkDesc": "Verify Supabase project integrity after restore",
237
+ "help.commands.checkExamples": "Examples:",
238
+ "help.commands.checkExample1": "npx smoonb check",
239
+ "help.commands.checkExample1Desc": "# Verifies integrity and displays report in console",
240
+ "help.commands.checkWhat": "What is verified:",
241
+ "help.commands.checkWhat1": "• Database connection",
242
+ "help.commands.checkWhat2": "• Installed PostgreSQL extensions",
243
+ "help.commands.checkWhat3": "• Created tables",
244
+ "help.commands.checkWhat4": "• RLS policies (Row Level Security)",
245
+ "help.commands.checkWhat5": "• Realtime publications",
246
+ "help.commands.checkWhat6": "• Storage buckets",
247
+
248
+ "help.commands.importDesc": "Import .backup.gz file and optionally .storage.zip from Supabase Dashboard",
249
+ "help.commands.importFile": "Full path of .backup.gz file to import",
250
+ "help.commands.importStorage": "Full path of .storage.zip file to import (optional)",
251
+ "help.commands.importExamples": "Examples:",
252
+ "help.commands.importExample1": "npx smoonb import --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
253
+ "help.commands.importExample1Desc": "# Imports database file only",
254
+ "help.commands.importExample2": "npx smoonb import --file \"backup.backup.gz\" --storage \"my-project.storage.zip\"",
255
+ "help.commands.importExample2Desc": "# Imports database and storage together",
256
+ "help.commands.importFormats": "File formats:",
257
+ "help.commands.importFormats1": "• Backup: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz (required)",
258
+ "help.commands.importFormats2": "• Storage: *.storage.zip (optional)",
259
+ "help.commands.importImportant": "Important:",
260
+ "help.commands.importImportant1": "• Backup file is required",
261
+ "help.commands.importImportant2": "• Storage file is optional and depends on a backup",
262
+ "help.commands.importImportant3": "• Both files will be copied to the same backup folder",
263
+ "help.commands.importImportant4": "• Imported backup will be available for restore command",
264
+ "help.commands.importImportant5": "• Use absolute or relative paths",
265
+
266
+ "quickHelp.title": "MAIN COMMANDS:",
267
+ "quickHelp.backupTitle": "Full backup:",
268
+ "quickHelp.backupDesc": "npx smoonb backup # Full interactive backup using Docker",
269
+ "quickHelp.restoreTitle": "Full restoration:",
270
+ "quickHelp.restoreDesc": "npx smoonb restore # Interactive restoration using psql (Docker)",
271
+ "quickHelp.checkTitle": "Post-restore verification:",
272
+ "quickHelp.checkDesc": "npx smoonb check # Verifies project integrity",
273
+ "quickHelp.configuration": "CONFIGURATION:",
274
+ "quickHelp.configurationDesc": "Configure the .env.local file in the project root with your Supabase credentials. The smoonb will map variables interactively on first execution.",
275
+ "quickHelp.tokenTitle": "PERSONAL ACCESS TOKEN (REQUIRED):",
276
+ "quickHelp.tokenDesc": "For Management API (Edge Functions, Auth Settings, Storage):",
277
+ "quickHelp.tokenStep1": "1. Visit: https://supabase.com/dashboard/account/tokens",
278
+ "quickHelp.tokenStep2": "2. Click \"Generate new token\"",
279
+ "quickHelp.tokenStep3": "3. Copy the token (format: sbp_...)",
280
+ "quickHelp.tokenStep4": "4. Add to .env.local as SUPABASE_ACCESS_TOKEN",
281
+ "quickHelp.update": "UPDATE TO LATEST VERSION:",
282
+ "quickHelp.updateCommand": "npm install smoonb@latest",
283
+
284
+ "docker.validation.title": "Docker Validation",
285
+ "docker.validation.checking": "Checking Docker dependencies...",
286
+ "docker.validation.detected": "Docker Desktop detected and running",
287
+ "docker.validation.version": "Version: {version}",
288
+
289
+ "license.promptPaste": "Paste the license key from the desktop app:",
290
+ "license.required": "License key is required.",
291
+ "license.validationUnavailable": "Could not validate your license right now.",
292
+ "license.checkConnection": "Check your connection and try again.",
293
+ "license.invalidOrInactive": "Your license is invalid or your subscription is not active.",
294
+ "license.openDesktopApp": "Open the desktop app, check your subscription and generate a new license.",
295
+ "license.denied.title": "License validation denied by server.",
296
+ "license.denied.reason": "Reason: {reason}",
297
+ "license.denied.alreadyBound": "This license is already linked to another machine and cannot be moved.",
298
+ "license.denied.alreadyBoundAction": "To use smoonb on this machine, revoke this license in the desktop app and generate a new one: {url}",
299
+ "license.denied.correlationId": "Correlation ID: {id}",
300
+ "license.trialNotice": "You are using a trial license.",
301
+ "license.error.title": "License validation failed.",
302
+ "license.error.whatHappened": "What happened:",
303
+ "license.error.typeHttp": "Type: HTTP error",
304
+ "license.error.typeNetwork": "Type: Network error",
305
+ "license.error.typeTls": "Type: TLS / certificate error",
306
+ "license.error.typeParse": "Type: Unexpected response format from API",
307
+ "license.error.testConnectivity": "To test connectivity: GET {url}",
308
+ "license.error.status": "Status: {status}",
309
+ "license.error.endpoint": "Endpoint: {endpoint}",
310
+ "license.error.correlationId": "Correlation ID: {id}",
311
+ "license.error.howToHelp": "How to get help (Support > Messages):",
312
+ "license.error.supportStep1": "Go to {url}",
313
+ "license.error.supportStep2": "Open \"Support\" (left menu)",
314
+ "license.error.supportStep3": "Click \"Messages\"",
315
+ "license.error.supportStep4": "Click \"New Message\"",
316
+ "license.error.supportStep5": "Paste the diagnostic bundle below and send",
317
+ "license.error.visit": "Visit: {url}",
318
+ "license.error.subjectSuggestion": "Subject (copy/paste): \"License validation failed (Correlation ID: {id})\"",
319
+ "license.error.messageSuggestion": "Message: \"I'm unable to validate my license in the CLI. Here is the diagnostic bundle:\" then paste the bundle below.",
320
+
321
+ "env.licenseKey.help": "Paste the license generated in the desktop app.",
322
+ "env.telemetry.help": "Set to false to disable telemetry (default: true).",
323
+
324
+ "env.supabasePostgresMajor.hintTitle": "How to check the Postgres version in Supabase",
325
+ "env.supabasePostgresMajor.hintPath": "Project Settings -> Infrastructure -> Service Versions",
326
+ "env.supabasePostgresMajor.hintBody": "Check the Postgres line and use the major (e.g. 15 or 17) for SUPABASE_POSTGRES_MAJOR.",
327
+
328
+ "env.mapping.title": "Mapping variable: {variable}",
329
+ "env.mapping.selectKey": "Select the corresponding key for: {expected}",
330
+ "env.mapping.addNew": "Add a new key for me",
331
+ "env.mapping.currentValue": "Current value: {value}",
332
+ "env.mapping.isCorrect": "Is this the correct value for the target project?",
333
+ "env.mapping.notFound": "No entry found for variable {variable}.",
334
+ "env.mapping.backupCreated": "Backup of .env.local: {path}",
335
+ "env.mapping.fileNotFound": ".env.local file not found. It will be created during mapping.",
336
+ "env.mapping.updated": ".env.local updated successfully. No keys renamed; values synchronized.",
337
+ "env.language.selectDefault": "What is the default language?",
338
+ "env.language.english": "English",
339
+ "env.language.portuguese": "Portuguese (pt-BR)",
340
+ "env.language.saved": "Default language saved: {lang}",
341
+ "env.language.note": "Note: The language change will be effective in the next commands. The current process will continue in the initial language.",
342
+
343
+ "backup.components.edgeFunctions.title": "Edge Functions:",
344
+ "backup.components.edgeFunctions.description1": "We will delete existing functions in the supabase/functions folder, reset the link",
345
+ "backup.components.edgeFunctions.description2": "between the tool and the project, and download functions from the server again.",
346
+ "backup.components.edgeFunctions.description3": "You will have the option to keep or delete functions in the folder after backup.",
347
+ "backup.components.edgeFunctions.include": "Do you want to include Edge Functions",
348
+ "backup.components.edgeFunctions.cleanup": "Do you want to clean supabase/functions after backup",
349
+
350
+ "backup.components.temp.title": "Supabase .temp:",
351
+ "backup.components.temp.description1": "We will copy existing files (if any) in the supabase/.temp folder.",
352
+ "backup.components.temp.description2": "You will have the option to keep or delete files in this folder after backup.",
353
+ "backup.components.temp.include": "Do you want to include Supabase .temp",
354
+ "backup.components.temp.cleanup": "Do you want to delete supabase/.temp after backup",
355
+
356
+ "backup.components.migrations.title": "Migrations:",
357
+ "backup.components.migrations.description1": "We will delete existing migrations (if any) in the supabase/migrations folder,",
358
+ "backup.components.migrations.description2": "reset the link between the tool and the project, and download migrations",
359
+ "backup.components.migrations.description3": "from the server again. You will have the option to keep or delete migrations in the folder after backup.",
360
+ "backup.components.migrations.include": "Do you want to include Migrations",
361
+ "backup.components.migrations.cleanup": "Do you want to delete supabase/migrations after backup",
362
+
363
+ "backup.components.storage.include": "Do you want to include Storage",
364
+ "backup.components.auth.include": "Do you want to include Auth",
365
+ "backup.components.realtime.include": "Do you want to include Realtime",
366
+
367
+ "backup.summary.title": "CONFIGURATION SUMMARY:",
368
+ "backup.summary.edgeFunctions": "Edge Functions: {value}",
369
+ "backup.summary.edgeFunctionsCleanup": "Clean after backup: {value}",
370
+ "backup.summary.temp": "Supabase .temp: {value}",
371
+ "backup.summary.tempCleanup": "Delete after backup: {value}",
372
+ "backup.summary.migrations": "Migrations: {value}",
373
+ "backup.summary.migrationsCleanup": "Delete after backup: {value}",
374
+ "backup.summary.storage": "Storage: {value}",
375
+ "backup.summary.auth": "Auth: {value}",
376
+ "backup.summary.realtime": "Realtime: {value}",
377
+ "backup.summary.backupDir": "Backup directory: {path}",
378
+ "backup.summary.confirm": "Do you want to start the backup with these configurations?",
379
+ "backup.summary.yes": "Yes",
380
+ "backup.summary.no": "No",
381
+
382
+ "backup.start.title": "Starting backup of project: {projectId}",
383
+ "backup.start.directory": "Directory: {path}",
384
+ "backup.start.docker": "Backup via Docker Desktop",
385
+
386
+ "backup.steps.postgresVersion.title": "Postgres version",
387
+ "backup.steps.postgresVersion.found": "Postgres version found: major {major} (image {image}).",
388
+ "backup.steps.postgresVersion.proceedWith": "We will proceed with this version. You can override below.",
389
+ "backup.steps.postgresVersion.selectVersion": "Select Postgres image version to use for dump:",
390
+ "backup.steps.postgresVersion.useDetected": "Use detected (postgres:{major})",
391
+ "backup.steps.postgresVersion.selected": "Using image: {image}",
392
+ "backup.steps.postgresVersion.detectError": "Could not detect server version: {message}",
393
+ "backup.steps.postgresVersion.usingDefault": "Using default postgres:17",
394
+ "backup.steps.postgresVersion.useSuggested": "Use suggested (postgres:{major})",
395
+ "backup.steps.postgresVersion.showAdvanced": "Show advanced versions…",
396
+ "backup.steps.postgresVersion.advancedTitle": "Advanced Postgres versions",
397
+ "backup.steps.postgresVersion.back": "Back",
398
+ "backup.steps.postgresVersion.invalidCli": "Invalid --postgres-major. Supported: 15, 17 (or 16, 18 advanced).",
399
+ "backup.steps.postgresVersion.postgresMajorRequired": "Postgres version not set. Run the Postgres version step first or use --postgres-major.",
400
+ "backup.steps.postgresVersion.dashboardHintTitle": "Tip: confirm the Postgres version in the Supabase Dashboard",
401
+ "backup.steps.postgresVersion.dashboardHintPath": "Project Settings -> Infrastructure -> Service Versions",
402
+ "backup.steps.postgresVersion.dashboardHintWhy": "Use the major shown on the Postgres line when choosing in the menu.",
403
+
404
+ "backup.steps.database.title": "PostgreSQL Database Backup via pg_dumpall Docker...",
405
+ "backup.steps.database.creating": "Creating full backup via pg_dumpall...",
406
+ "backup.steps.database.postgresImage": "Using image: {image} (major {major})",
407
+ "backup.steps.database.executing": "Executing pg_dumpall via Docker...",
408
+ "backup.steps.database.versionMismatch": "pg_dumpall failed (possible version mismatch). Re-run and choose the correct Postgres major in the menu, or use --postgres-major <15|17>.",
409
+ "backup.steps.database.progress.eta": "ETA",
410
+ "backup.steps.database.separated.title": "PostgreSQL Database Backup (separate SQL files)...",
411
+ "backup.steps.database.separated.creating": "Creating separate SQL backups via Supabase CLI...",
412
+ "backup.steps.database.separated.exportingSchema": "Exporting schema...",
413
+ "backup.steps.database.separated.exportingData": "Exporting data...",
414
414
  "backup.steps.database.separated.circularSummary": "Data export completed with circular foreign-key warnings: {tables}. These warnings do not mean the export failed.",
415
- "backup.steps.database.separated.circularProtected": "data.sql starts with SET session_replication_role = replica. Restore schema before data, using a role allowed to change this setting and ON_ERROR_STOP=1. Test restoration before relying on this backup.",
415
+ "backup.steps.database.separated.circularProtected": "smoonb restore handles these relationships, checks restored data and stops on failure. You do not need to change your tables or repeat the backup because of this warning.",
416
416
  "backup.steps.database.separated.circularUnprotected": "No replica-role prologue was found in data.sql. Circular references may prevent restoration. Follow the Supabase restore procedure and test in an isolated database.",
417
417
  "backup.steps.database.separated.incomplete": "Separate SQL backup is incomplete. Failed files: {files}.",
418
- "backup.steps.database.separated.exportingRoles": "Exporting roles...",
419
-
420
- "backup.steps.databaseSettings.title": "Database Extensions and Settings Backup via SQL...",
421
- "backup.steps.databaseSettings.capturing": "Capturing Database Extensions and Settings...",
422
- "backup.steps.databaseSettings.executing": "Executing configuration queries via Docker...",
423
-
424
- "backup.steps.auth.title": "Auth Settings Backup via API...",
425
- "backup.steps.auth.exporting": "Exporting Auth configurations via Management API...",
426
-
427
- "backup.steps.realtime.title": "Realtime Settings Backup via Interactive Capture...",
428
- "backup.steps.realtime.capturing": "Capturing Realtime Settings interactively...",
429
- "backup.steps.realtime.previousFound": "A previous Realtime Settings recording was found.",
430
- "backup.steps.realtime.reuse": "Do you want to reuse the previous configurations?",
431
- "backup.steps.realtime.configTitle": "Realtime Settings Configuration",
432
- "backup.steps.realtime.access": "Access: {url}",
433
- "backup.steps.realtime.note": "Note the values of the 7 parameters below:",
434
- "backup.steps.realtime.questions": "Answer the questions below (press Enter to use default value):",
435
- "backup.steps.realtime.saved": "Realtime Settings configurations saved!",
436
-
437
- "backup.steps.storage.title": "Storage Backup via API...",
438
- "backup.steps.storage.listing": "Listing Storage buckets via Management API...",
439
- "backup.steps.storage.found": "Found {count} buckets",
440
- "backup.steps.storage.processing": "Processing bucket: {bucketName}",
441
- "backup.steps.storage.listingFiles": "Listing files from bucket {bucketName}...",
442
- "backup.steps.storage.scanningFolder": "Scanning {path} ({count} found)",
443
- "backup.steps.storage.totalFound": "Total: {count} file(s) found",
444
- "backup.steps.storage.listRetry": "Attempt {attempt}/{max} to list {path} failed ({message}). Retrying in {delay}s...",
445
- "backup.steps.storage.listFailed": "Failed to list bucket {bucketName} after all attempts: {message}",
446
- "backup.steps.storage.downloading": "Downloading {count} file(s) from bucket {bucketName}...",
447
- "backup.steps.storage.downloaded": "Downloaded {current}/{total} file(s)...",
448
- "backup.steps.storage.downloadRetry": "File {path}: attempt {attempt}/{max} failed. Retrying in {delay}s...",
449
- "backup.steps.storage.downloadFailed": "File {path}: failed after all attempts: {message}",
450
- "backup.steps.storage.bucketDone": "Bucket {bucketName}: {downloaded}/{total} file(s) downloaded",
451
- "backup.steps.storage.bucketDoneWithSkips": "Bucket {bucketName}: {downloaded}/{total} file(s) downloaded, {skipped} skipped",
452
- "backup.steps.storage.creatingZip": "Creating ZIP file in Dashboard format...",
453
- "backup.steps.storage.zipCreated": "ZIP file created: {fileName} ({size} MB)",
454
- "backup.steps.storage.cleanup": "Do you want to clean storage_temp after backup",
455
- "backup.steps.storage.tempKept": "Temporary structure kept at: {path}",
456
- "backup.steps.storage.done": "Storage backed up: {buckets} buckets, {files} file(s) downloaded",
457
-
458
- "backup.steps.roles.title": "Custom Roles Backup via SQL...",
459
- "backup.steps.roles.exporting": "Exporting Custom Roles via Docker...",
460
-
461
- "backup.steps.functions.title": "Edge Functions Backup via Docker...",
462
- "backup.steps.functions.linking": "Resetting link and linking project: {projectId}...",
463
- "backup.steps.functions.validation": "Validation: linked-ref = {linkedRef} (expected = {expected})",
464
- "backup.steps.functions.prepared": "supabase/functions folder prepared (will be preserved after backup).",
465
- "backup.steps.functions.listing": "Listing Edge Functions via Management API...",
466
- "backup.steps.functions.noneFound": "No Edge Functions found",
467
-
468
- "backup.steps.temp.title": "Supabase .temp Backup...",
469
- "backup.steps.temp.copying": "Copying supabase/.temp → {path} ({count} files)...",
470
-
471
- "backup.steps.migrations.title": "Migrations Backup...",
472
- "backup.steps.migrations.linking": "Resetting link and linking project: {projectId}...",
473
- "backup.steps.migrations.validation": "Validation: linked-ref = {linkedRef} (expected = {expected})",
474
- "backup.steps.migrations.cleaning": "Cleaning supabase/migrations...",
475
- "backup.steps.migrations.downloading": "Downloading all migrations from server using migration fetch...",
476
- "backup.steps.migrations.downloaded": "Downloaded files: {count} migrations",
477
- "backup.steps.migrations.copying": "Copying supabase/migrations → {path} ({count} files)...",
478
-
479
- "backup.complete.title": "FULL BACKUP COMPLETED VIA DOCKER!",
480
- "backup.complete.location": "Location: {path}",
481
- "backup.complete.database": "Database: {fileName} ({size}) - Identical to Dashboard",
482
- "backup.complete.databaseSql": "Database SQL: {count} separate files ({size}) - For troubleshooting",
483
- "backup.complete.databaseSettings": "Database Settings: {fileName} ({size}) - Extensions and Settings",
484
- "backup.complete.auth": "Auth Settings: Exported via API",
485
- "backup.complete.realtime": "Configurations captured interactively",
486
- "backup.complete.realtimeReused": "Settings imported from backup {backup}",
487
- "backup.complete.storage": "Storage: {buckets} buckets, {files} file(s) downloaded, ZIP: {zipFile} ({size})",
488
- "backup.complete.roles": "Custom Roles: {count} roles exported via SQL",
489
- "backup.complete.functions": "Edge Functions: {downloaded}/{total} functions downloaded via Docker",
490
- "backup.complete.temp": "Supabase .temp: {count} file(s) copied",
491
- "backup.complete.migrations": "Migrations: {count} migration(s) copied",
492
-
493
- "backup.error.databaseUrlNotConfigured": "DATABASE_URL NOT CONFIGURED",
494
- "backup.error.databaseUrlInstructions": "To create a full backup of Supabase, you need to:",
495
- "backup.error.databaseUrlStep1": "1. Configure SUPABASE_DB_URL in .env.local",
496
- "backup.error.databaseUrlStep2": "2. Repeat the backup command",
497
- "backup.error.databaseUrlExample": "Configuration example:",
498
- "backup.error.databaseUrlExampleValue": "\"databaseUrl\": \"postgresql://postgres:[password]@db.[project].supabase.co:5432/postgres\"",
499
- "backup.error.databaseUrlCancelled": "Backup cancelled - Incomplete configuration",
500
-
501
- "backup.error.accessTokenNotConfigured": "ACCESS_TOKEN NOT CONFIGURED",
502
- "backup.error.accessTokenInstructions": "To create a full backup of Supabase, you need to:",
503
- "backup.error.accessTokenStep1": "1. Get Personal Access Token from Supabase",
504
- "backup.error.accessTokenStep2": "2. Configure SUPABASE_ACCESS_TOKEN in .env.local",
505
- "backup.error.accessTokenStep3": "3. Repeat the backup command",
506
- "backup.error.accessTokenHowTo": "How to get the token:",
507
- "backup.error.accessTokenStep1Detail": "1. Access: https://supabase.com/dashboard/account/tokens",
508
- "backup.error.accessTokenStep2Detail": "2. Click: \"Generate new token\"",
509
- "backup.error.accessTokenStep3Detail": "3. Copy the token (format: sbp_...)",
510
- "backup.error.accessTokenCancelled": "Backup cancelled - Token not configured",
511
-
512
- "backup.error.postgresMajorNotSet": "SUPABASE_POSTGRES_MAJOR is not set.",
513
- "backup.error.postgresMajorInstructions": "Set SUPABASE_POSTGRES_MAJOR to your project's Postgres major (e.g. 15 or 17).",
514
- "backup.error.postgresMajorWhereToCheck": "You can check it in the Supabase Dashboard: Project Settings -> Infrastructure -> Service Versions (Postgres line).",
515
- "backup.error.postgresMajorInvalid": "SUPABASE_POSTGRES_MAJOR is invalid. Use an integer (e.g. 15 or 17).",
516
- "backup.steps.postgresVersion.postgresMajorValidationFailed": "SUPABASE_POSTGRES_MAJOR not set (validation failed).",
517
-
518
- "backup.steps.storage.noBuckets": "No buckets found",
519
- "backup.steps.storage.credentialsNotAvailable": "Supabase credentials not available. Backing up metadata only...",
520
- "backup.steps.storage.cleanupRemoving": "Cleaning temporary structure...",
521
- "backup.steps.storage.cleanupRemoved": "Temporary structure removed",
522
- "backup.steps.storage.cleanupError": "Error cleaning temporary structure: {message}",
523
- "backup.steps.storage.listError": "Error listing {path}: {message}",
524
- "backup.steps.storage.processError": "Error processing {path}: {message}",
525
- "backup.steps.storage.error": "Error in Storage backup: {message}",
526
- "backup.steps.storage.listBucketsError": "Error listing buckets: {status} {statusText}",
527
- "backup.steps.storage.downloadError": "Error downloading {path}: {message}",
528
- "backup.steps.storage.processFileError": "Error processing file {path}: {message}",
529
- "backup.steps.storage.processBucketError": "Error processing bucket {bucketName}: {message}",
530
- "backup.steps.database.error": "Error in database backup: {message}",
531
- "backup.steps.database.separated.error": "Error in separated SQL backups: {message}",
532
- "backup.steps.database.separated.schemaError": "Error in schema: {message}",
533
- "backup.steps.database.separated.dataError": "Error in data: {message}",
534
- "backup.steps.database.separated.rolesError": "Error in roles: {message}",
535
- "backup.steps.databaseSettings.error": "Error in Database Settings backup: {message}",
536
- "backup.steps.auth.error": "Error in Auth Settings backup: {message}",
537
- "backup.steps.auth.getError": "Error getting Auth Settings: {status} {statusText}",
538
- "backup.steps.realtime.error": "Error capturing Realtime Settings: {message}",
539
- "backup.steps.roles.error": "Error in Custom Roles backup: {message}",
540
- "backup.steps.roles.exportError": "Error exporting Custom Roles via Docker: {message}",
541
- "backup.steps.functions.error": "Error during Edge Functions backup: {message}",
542
- "backup.steps.functions.listError": "Error listing Edge Functions: {status} {statusText}",
543
- "backup.steps.functions.downloadError": "Error downloading {funcName}: {message}",
544
- "backup.steps.temp.error": "Error in supabase/.temp backup: {message}",
545
- "backup.steps.migrations.error": "Error in migrations backup: {message}",
546
-
547
- "backup.steps.functions.cleanBefore": "supabase/functions folder cleaned before backup.",
548
- "backup.steps.functions.preserving": "Preserving {count} existing function(s) in supabase/functions folder.",
549
- "backup.steps.functions.cleanAfter": "supabase/functions cleaned after backup.",
550
- "backup.steps.functions.preserved": "supabase/functions preserved as requested.",
551
-
552
- "backup.steps.migrations.cleaning": "Cleaning supabase/migrations...",
553
- "backup.steps.migrations.downloading": "Downloading all migrations from server using migration fetch...",
554
- "backup.steps.migrations.fetchError": "Error executing migration fetch: {message}",
555
- "backup.steps.migrations.fetchTip": "Verify that the project is correctly linked and the token is valid.",
556
- "backup.steps.migrations.downloaded": "Downloaded files: {count} migrations",
557
- "backup.steps.migrations.copying": "Copying supabase/migrations → {path} ({count} files)...",
558
- "backup.steps.migrations.copied": "{count} migration(s) copied",
559
- "backup.steps.migrations.cleaned": "supabase/migrations deleted.",
560
-
561
- "backup.steps.temp.copying": "Copying supabase/.temp → {path} ({count} files)...",
562
- "backup.steps.temp.noFiles": "No files found in supabase/.temp",
563
- "backup.steps.temp.copied": "{count} file(s) copied",
564
- "backup.steps.temp.cleaned": "supabase/.temp deleted.",
565
-
566
- "restore.steps.components.edgeFunctions.title": "Edge Functions:",
567
- "restore.steps.components.edgeFunctions.description1": "Edge Functions will be copied to supabase/functions and deployed to the target project.",
568
- "restore.steps.components.edgeFunctions.description2": "The supabase/functions folder will be cleaned before the process.",
569
- "restore.steps.components.edgeFunctions.include": "Do you want to restore Edge Functions",
570
-
571
- "restore.steps.components.auth.title": "Auth Settings:",
572
- "restore.steps.components.auth.description1": "Auth settings will be displayed for manual configuration in the Dashboard.",
573
- "restore.steps.components.auth.description2": "Some settings cannot be applied automatically for security reasons.",
574
- "restore.steps.components.auth.include": "Do you want to restore Auth",
575
-
576
- "restore.steps.components.storage.title": "Storage:",
577
- "restore.steps.components.storage.zipFound": "Storage .zip file found: {fileName}",
578
- "restore.steps.components.storage.withZip.description1": "Buckets and files will be automatically restored to the target project.",
579
- "restore.steps.components.storage.withZip.description2": "The ZIP file will be extracted, buckets created and files uploaded via API.",
580
- "restore.steps.components.storage.metadataOnly.description1": "Only bucket metadata found (storage folder).",
581
- "restore.steps.components.storage.metadataOnly.description2": "To restore files, the .storage.zip file from the Dashboard is required.",
582
- "restore.steps.components.storage.metadataOnly.description3": "Only bucket information will be displayed.",
583
- "restore.steps.components.storage.include": "Do you want to restore Storage",
584
-
585
- "restore.steps.components.databaseSettings.title": "Database Extensions and Settings:",
586
- "restore.steps.components.databaseSettings.description1": "Database extensions and settings will be restored via SQL.",
587
- "restore.steps.components.databaseSettings.description2": "This includes PostgreSQL extensions and project-specific settings.",
588
- "restore.steps.components.databaseSettings.include": "Do you want to restore Database Settings",
589
-
590
- "restore.steps.components.realtime.title": "Realtime Settings:",
591
- "restore.steps.components.realtime.description1": "Realtime settings will be displayed for manual configuration in the Dashboard.",
592
- "restore.steps.components.realtime.description2": "Some settings need to be applied manually.",
593
- "restore.steps.components.realtime.include": "Do you want to restore Realtime",
594
- "restore.steps.components.database.include": "Do you want to restore Database",
595
-
596
- "restore.steps.database.detectedGz": ".backup.gz file detected",
597
- "restore.steps.database.extractingGz": "Extracting .gz file...",
598
- "restore.steps.database.uncompressed": "Uncompressed file: {file}",
599
- "restore.steps.database.detectedBackup": ".backup file detected (already uncompressed)",
600
- "restore.steps.database.proceeding": "Proceeding with direct restore",
601
- "restore.steps.database.executing": "Executing psql via Docker...",
602
- "restore.steps.database.followingDocs": "Following official Supabase documentation",
603
- "restore.steps.database.warning": "WARNING: Errors like \"object already exists\" are EXPECTED",
604
- "restore.steps.database.warningReason1": "This happens because the backup contains CREATE for all schemas",
605
- "restore.steps.database.warningReason2": "Supabase already has auth and storage created, so these errors are normal",
606
- "restore.steps.database.success": "Database restored successfully!",
607
- "restore.steps.database.normalErrors": "\"already exists\" errors are normal and do not affect the restore",
608
- "restore.steps.database.expectedErrors": "Expected errors found (as per Supabase documentation)",
609
- "restore.steps.database.errorsIgnored": "Errors are ignored as they are CREATE commands that already exist",
610
- "restore.steps.database.error": "Error restoring database: {message}",
611
-
612
- "restore.steps.storage.noBuckets": "No Storage buckets found in backup",
613
- "restore.steps.storage.zipNotFound": ".storage.zip file not found",
614
- "restore.steps.storage.metadataOnly": "Only bucket metadata was found",
615
- "restore.steps.storage.zipRequired": "To restore files, the .storage.zip file from the Dashboard is required",
616
- "restore.steps.storage.bucketInfo": "{name} ({visibility})",
617
- "restore.steps.storage.public": "public",
618
- "restore.steps.storage.private": "private",
619
- "restore.steps.storage.noBucketsInBackup": "No Storage buckets found in backup",
620
- "restore.steps.storage.projectIdNotFound": "Source project Project ID not found in manifest. Continuing without replacement...",
621
- "restore.steps.storage.extracting": "Extracting .storage.zip file...",
622
- "restore.steps.storage.extracted": "File extracted successfully",
623
- "restore.steps.storage.replacing": "Replacing references to old Project ID in extracted files...",
624
- "restore.steps.storage.replacingProjectId": "Replacing Project ID: {source} → {target}",
625
- "restore.steps.storage.replaced": "Project ID replacement completed",
626
- "restore.steps.storage.noBucketsInZip": "No buckets found in .storage.zip file",
627
- "restore.steps.storage.bucketConfig": "Settings: {visibility}, limit: {limit}, types: {types}",
628
- "restore.steps.storage.noLimit": "no limit",
629
- "restore.steps.storage.allTypes": "all",
630
- "restore.steps.storage.fileFound": "Storage file found: {fileName}",
631
- "restore.steps.storage.bucketsFoundInZip": "Found {count} bucket(s) in ZIP file",
632
- "restore.steps.storage.processingBucket": "Processing bucket: {bucketName}",
633
- "restore.steps.storage.creatingBucket": "Creating bucket {bucketName}...",
634
- "restore.steps.storage.bucketCreated": "Bucket {bucketName} created with backup settings",
635
- "restore.steps.storage.bucketUpdated": "Bucket settings updated",
636
- "restore.steps.storage.bucketConfigCorrect": "Bucket settings are already correct",
637
- "restore.steps.storage.filesFoundForUpload": "Found {count} file(s) for upload",
638
- "restore.steps.storage.bucketDone": "Bucket {bucketName}: {uploaded}/{total} file(s) uploaded",
639
- "restore.steps.storage.bucketError": "Error processing bucket {bucketName}: {message}",
640
- "restore.steps.storage.uploadError": "Error uploading {path}: {message}",
641
- "restore.steps.storage.restoreComplete": "Storage restore completed: {success}/{total} bucket(s) processed, {files} file(s) uploaded",
642
- "restore.steps.storage.bucketsFoundMetadata": "{count} bucket(s) found in backup (metadata only)",
643
- "restore.steps.storage.noBucketsInSubfolders": "Error: No buckets found in subfolders of {rootDir}",
644
- "restore.steps.storage.updateError": "Could not update settings: {errorText}",
645
- "restore.steps.storage.uploadProgress": "Upload: {path}{metaInfo}",
646
- "restore.steps.storage.metadataPreserved": "(metadata preserved)",
647
- "restore.steps.storage.fileError": "Error processing file {path}: {message}",
648
- "restore.steps.storage.rootIsProjectId": "The root folder is a Project ID and should not be treated as a bucket",
649
- "restore.steps.storage.bucketExists": "Bucket {bucketName} already exists",
650
- "restore.steps.storage.updating": "Updating bucket settings to match backup...",
651
- "restore.steps.storage.detectedProjectId": "Detected root folder with Project ID: {projectId}{reason}",
652
- "restore.steps.storage.searchingBuckets": "Searching for buckets in subfolders...",
653
- "restore.steps.storage.error": "Error processing Storage: {message}",
654
-
655
- "restore.steps.edgeFunctions.notFound": "No Edge Functions found in backup",
656
- "restore.steps.edgeFunctions.found": "Found {count} Edge Function(s)",
657
- "restore.steps.edgeFunctions.cleaningBefore": "Cleaning supabase/functions before copying...",
658
- "restore.steps.edgeFunctions.linkMayExist": "Link may already exist, continuing...",
659
- "restore.steps.edgeFunctions.cleaningAfter": "Cleaning supabase/functions after deploy...",
660
- "restore.steps.edgeFunctions.success": "Edge Functions restored successfully!",
661
- "restore.steps.edgeFunctions.error": "Error restoring Edge Functions: {message}",
662
- "restore.steps.edgeFunctions.listBucketsError": "Error listing buckets: {message}",
663
- "restore.steps.edgeFunctions.createBucketError": "Error creating bucket: {status} {errorText}",
664
- "restore.steps.edgeFunctions.copying": "Copying {funcName} to supabase/functions...",
665
- "restore.steps.edgeFunctions.linking": "Linking with project {projectId}...",
666
- "restore.steps.edgeFunctions.deploying": "Deploying {funcName}...",
667
- "restore.steps.edgeFunctions.deployed": "{funcName} deployed successfully!",
668
- "restore.steps.edgeFunctions.deployFailed": "{funcName} - deploy failed: {message}",
669
-
670
- "restore.steps.auth.notFound": "No Auth settings found in backup",
671
- "restore.steps.auth.error": "Error processing Auth Settings: {message}",
672
- "restore.steps.auth.urlTitle": "URL for manual configuration:",
673
- "restore.steps.auth.configureTitle": "Manually configure the following options:",
674
- "restore.steps.auth.pressEnter": "After configuring, press Enter to continue...",
675
- "restore.steps.auth.success": "Auth Settings processed",
676
-
677
- "restore.steps.databaseSettings.notFound": "No Database settings found in backup",
678
- "restore.steps.databaseSettings.success": "Database Settings restored successfully!",
679
- "restore.steps.databaseSettings.error": "Error restoring Database Settings: {message}",
680
- "restore.steps.databaseSettings.enabling": "Enabling {count} extension(s)...",
681
- "restore.steps.databaseSettings.extension": "- {extName}",
682
- "restore.steps.databaseSettings.invalidUrl": "Invalid URL for {extName}",
683
- "restore.steps.databaseSettings.extensionExists": "{extName} - extension already exists or cannot be enabled",
684
-
685
- "restore.steps.realtime.notFound": "No Realtime settings found in backup",
686
- "restore.steps.realtime.urlTitle": "URL for manual configuration:",
687
- "restore.steps.realtime.configureTitle": "Manually configure the following options:",
688
- "restore.steps.realtime.pressEnter": "After configuring, press Enter to continue...",
689
- "restore.steps.realtime.success": "Realtime Settings processed",
690
-
691
- "restore.steps.backupSelection.title": "Available backups:",
692
- "restore.steps.backupSelection.separator": "═══════════════════════════════════════════════════════════════════════════════",
693
- "restore.steps.backupSelection.input": "Enter the backup number to restore ({min}-{max}):",
694
- "restore.steps.backupSelection.invalid": "Invalid number",
695
-
696
- "utils.realtime.previousFound": "A previous Realtime Settings recording was found.",
697
- "utils.realtime.reuse": "Do you want to reuse the previous configurations?",
698
- "utils.realtime.reusing": "Reusing Realtime Settings configurations from previous backup...",
699
- "utils.realtime.configTitle": "Realtime Settings Configuration",
700
- "utils.realtime.separator": "════════════════════════════════════════════════════════════════",
701
- "utils.realtime.access": "Access: {url}",
702
- "utils.realtime.note": "Note the values of the 7 parameters below:",
703
- "utils.realtime.questions": "Answer the questions below (press Enter to use default value):",
704
- "utils.realtime.saved": "Realtime Settings configurations saved!",
705
- "utils.realtime.copying": "Copying Realtime Settings from previous backup...",
706
-
707
- "utils.supabaseLink.linking": "Resetting link and linking project: {projectId}...",
708
- "utils.supabaseLink.validation": "Validation: linked-ref = {linkedRef} (expected = {expected})",
709
- "utils.supabaseLink.validationFailed": "Validation failed: linked-ref = {linkedRef} (expected = {expected}). The linked project does not match the expected project.",
710
- "utils.supabaseLink.cannotValidate": "Could not validate link: {message}",
711
- "utils.supabaseLink.linkFailed": "Failed to link project {projectId}: {message}",
712
-
713
- "restore.index.envUpdated": ".env.local updated successfully. No keys renamed; values synchronized.",
714
- "restore.index.searchingBackups": "Searching for backups in: {path}",
715
- "restore.index.noBackupsFound": "No valid backups found",
716
- "restore.index.runBackupFirst": "Run first: npx smoonb backup",
717
- "restore.index.summaryTitle": "RESTORATION SUMMARY:",
718
- "restore.index.selectedBackup": "Selected backup: {name}",
719
- "restore.index.targetProject": "Target project: {projectId}",
720
- "restore.index.database": "Database: {value}",
721
- "restore.index.edgeFunctions": "Edge Functions: {value}",
722
- "restore.index.authSettings": "Auth Settings: {value}",
723
- "restore.index.storage": "Storage: {value}",
724
- "restore.index.databaseSettings": "Database Settings: {value}",
725
- "restore.index.realtimeSettings": "Realtime Settings: {value}",
726
- "restore.index.yes": "Yes",
727
- "restore.index.no": "No",
728
- "restore.index.notConfigured": "(not configured)",
729
- "restore.index.confirmRestore": "Do you want to start the restoration with these configurations?",
730
- "restore.index.restoreCancelled": "Restoration cancelled.",
731
- "restore.disclaimer.errorsTitle": "IMPORTANT: Expected errors during restore",
732
- "restore.disclaimer.errorsIntro": "During the database restore you will see many error messages in the terminal. This is NORMAL and expected.",
733
- "restore.disclaimer.errorsReason": "Supabase confirms that errors like \"object already exists\" or \"constraint already exists\" are normal when restoring a full dump, because the backup contains CREATE commands for all schemas and your target project already has some of these objects.",
734
- "restore.disclaimer.supabaseDoc": "Official Supabase documentation (restore and expected errors):",
735
- "restore.disclaimer.waitComplete": "Even with numerous errors, you must wait for the process to complete fully. Do not interrupt the restore.",
736
- "restore.disclaimer.testResult": "After completion, test your project (tables, data, functions) to verify whether the restore succeeded.",
737
- "restore.disclaimer.acceptProceed": "I understand that errors are expected, I will wait for completion and I will test the result. Proceed with restore?",
738
- "restore.index.startingRestore": "Starting restoration...",
739
- "restore.index.restoringDatabase": "Restoring Database...",
740
- "restore.index.restoringEdgeFunctions": "Restoring Edge Functions...",
741
- "restore.index.restoringAuthSettings": "Restoring Auth Settings...",
742
- "restore.index.restoringStorageBuckets": "Restoring Storage Buckets...",
743
- "restore.index.restoringDatabaseSettings": "Restoring Database Settings...",
744
- "restore.index.restoringRealtimeSettings": "Restoring Realtime Settings...",
745
- "restore.index.restoreComplete": "RESTORATION COMPLETE FINISHED!",
746
- "restore.index.targetProjectFinal": "Target project: {projectId}",
747
- "restore.index.databaseRestored": "Database: Restored successfully via Docker",
748
- "restore.index.edgeFunctionsRestored": "Edge Functions: {success}/{total} functions restored",
749
- "restore.index.authSettingsRestored": "Auth Settings: Settings displayed for manual configuration",
750
- "restore.index.storageRestored": "Storage: {buckets} bucket(s) restored, {files} file(s) uploaded",
751
- "restore.index.storageMetadataOnly": "Storage: {buckets} bucket(s) found - metadata only (.storage.zip file not found)",
752
- "restore.index.databaseSettingsRestored": "Database Settings: Extensions and settings restored via SQL",
753
- "restore.index.realtimeSettingsRestored": "Realtime Settings: Settings displayed for manual configuration",
754
- "restore.index.error": "Error during restoration: {message}",
755
-
756
- "restore.utils.componentsTitle": "Components that will be restored:",
757
- "restore.utils.database": "Database (psql -f via Docker)",
758
- "restore.utils.edgeFunctions": "Edge Functions: {count} function(s)",
759
- "restore.utils.authSettings": "Auth Settings: Display URL and values for manual configuration",
760
- "restore.utils.storageBuckets": "Storage Buckets: Automatic restoration of buckets and files via API",
761
- "restore.utils.storageMetadataOnly": "Storage Buckets: Display information (metadata only - .storage.zip file not found)",
762
- "restore.utils.databaseSettings": "Database Extensions and Settings: Restore via SQL",
763
- "restore.utils.realtimeSettings": "Realtime Settings: Display URL and values for manual configuration",
764
- "restore.utils.summaryTitle": "Restoration Summary:",
765
- "restore.utils.summarySeparator": "═══════════════════════════════════════════════════════════════════════════════",
766
- "restore.utils.backup": "Backup: {name}",
767
- "restore.utils.sourceProject": "Source Project: {projectId}",
768
- "restore.utils.targetProject": "Target Project: {projectId}",
769
-
770
- "restore.steps.auth.pressEnter": "Press Enter to continue",
771
- "restore.steps.realtime.pressEnter": "Press Enter to continue",
772
-
773
- "restore.import.fileNotFound": "Backup file not found: {path}",
774
- "restore.import.invalidFormat": "Backup file must be .backup.gz or .backup",
775
- "restore.import.storageNotFound": "Storage file not found: {path}",
776
- "restore.import.storageInvalidFormat": "Storage file must be .storage.zip",
777
- "restore.import.invalidFileName": "Backup file name is not in the expected Dashboard format. Expected format: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
778
- "restore.import.importing": "Importing backup to: {name}",
779
- "restore.import.backupImported": "Backup file imported: {fileName} ({size} MB)",
780
- "restore.import.storageImported": "Storage file imported: {fileName} ({size} MB)",
781
- "restore.import.importingFile": "Importing backup file...",
782
- "restore.import.importedSelected": "Backup imported and automatically selected: {name}",
783
- "restore.import.cannotFind": "Could not find the imported backup",
784
- "restore.import.envBackup": "Backup of .env.local: {path}",
785
- "restore.import.envNotFound": "⚠️ .env.local file not found. It will be created during mapping.",
786
- "restore.import.noComponents": "\n❌ No components selected for restoration!",
787
-
788
- "backup.steps.functions.noFunctionsMessage": "No Edge Functions found in this project",
789
- "backup.steps.storage.noBucketsMessage": "No Storage buckets found in this project",
790
-
791
- "check.connectionSuccess": "Connection established successfully",
792
- "check.unexpectedResponse": "Unexpected response from database",
793
- "check.connectionError": "Connection failed: {message}",
794
-
795
- "error.databaseUrlInvalid": "Invalid Database URL. Expected format: postgresql://user:password@host/database",
796
- "error.databaseUrlInvalidSimple": "Invalid Database URL",
797
- "error.storageCredentialsNotConfigured": "Target project credentials not configured. SUPABASE_PROJECT_ID and SUPABASE_ACCESS_TOKEN are required",
798
- "error.supabaseCredentialsNotConfigured": "Supabase credentials not configured. NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are required"
799
- }
800
-
418
+ "backup.steps.database.separated.exportingRoles": "Exporting roles...",
419
+
420
+ "backup.steps.databaseSettings.title": "Database Extensions and Settings Backup via SQL...",
421
+ "backup.steps.databaseSettings.capturing": "Capturing Database Extensions and Settings...",
422
+ "backup.steps.databaseSettings.executing": "Executing configuration queries via Docker...",
423
+
424
+ "backup.steps.auth.title": "Auth Settings Backup via API...",
425
+ "backup.steps.auth.exporting": "Exporting Auth configurations via Management API...",
426
+
427
+ "backup.steps.realtime.title": "Realtime Settings Backup via API...",
428
+ "backup.steps.realtime.capturing": "Capturing current Realtime settings...",
429
+ "backup.steps.realtime.previousFound": "A previous Realtime Settings recording was found.",
430
+ "backup.steps.realtime.reuse": "Do you want to reuse the previous configurations?",
431
+ "backup.steps.realtime.configTitle": "Realtime Settings Configuration",
432
+ "backup.steps.realtime.access": "Access: {url}",
433
+ "backup.steps.realtime.note": "Note the values of the 7 parameters below:",
434
+ "backup.steps.realtime.questions": "Answer the questions below (press Enter to use default value):",
435
+ "backup.steps.realtime.saved": "Realtime Settings configurations saved!",
436
+
437
+ "backup.steps.storage.title": "Storage Backup via API...",
438
+ "backup.steps.storage.listing": "Listing Storage buckets via Management API...",
439
+ "backup.steps.storage.found": "Found {count} buckets",
440
+ "backup.steps.storage.processing": "Processing bucket: {bucketName}",
441
+ "backup.steps.storage.listingFiles": "Listing files from bucket {bucketName}...",
442
+ "backup.steps.storage.scanningFolder": "Scanning {path} ({count} found)",
443
+ "backup.steps.storage.totalFound": "Total: {count} file(s) found",
444
+ "backup.steps.storage.listRetry": "Attempt {attempt}/{max} to list {path} failed ({message}). Retrying in {delay}s...",
445
+ "backup.steps.storage.listFailed": "Failed to list bucket {bucketName} after all attempts: {message}",
446
+ "backup.steps.storage.downloading": "Downloading {count} file(s) from bucket {bucketName}...",
447
+ "backup.steps.storage.downloaded": "Downloaded {current}/{total} file(s)...",
448
+ "backup.steps.storage.downloadRetry": "File {path}: attempt {attempt}/{max} failed. Retrying in {delay}s...",
449
+ "backup.steps.storage.downloadFailed": "File {path}: failed after all attempts: {message}",
450
+ "backup.steps.storage.bucketDone": "Bucket {bucketName}: {downloaded}/{total} file(s) downloaded",
451
+ "backup.steps.storage.bucketDoneWithSkips": "Bucket {bucketName}: {downloaded}/{total} file(s) downloaded, {skipped} skipped",
452
+ "backup.steps.storage.creatingZip": "Creating ZIP file in Dashboard format...",
453
+ "backup.steps.storage.zipCreated": "ZIP file created: {fileName} ({size} MB)",
454
+ "backup.steps.storage.cleanup": "Do you want to clean storage_temp after backup",
455
+ "backup.steps.storage.tempKept": "Temporary structure kept at: {path}",
456
+ "backup.steps.storage.done": "Storage backed up: {buckets} buckets, {files} file(s) downloaded",
457
+
458
+ "backup.steps.roles.title": "Custom Roles Backup via SQL...",
459
+ "backup.steps.roles.exporting": "Exporting Custom Roles via Docker...",
460
+
461
+ "backup.steps.functions.title": "Edge Functions Backup via Docker...",
462
+ "backup.steps.functions.linking": "Resetting link and linking project: {projectId}...",
463
+ "backup.steps.functions.validation": "Validation: linked-ref = {linkedRef} (expected = {expected})",
464
+ "backup.steps.functions.prepared": "supabase/functions folder prepared (will be preserved after backup).",
465
+ "backup.steps.functions.listing": "Listing Edge Functions via Management API...",
466
+ "backup.steps.functions.noneFound": "No Edge Functions found",
467
+
468
+ "backup.steps.temp.title": "Supabase .temp Backup...",
469
+ "backup.steps.temp.copying": "Copying supabase/.temp → {path} ({count} files)...",
470
+
471
+ "backup.steps.migrations.title": "Migrations Backup...",
472
+ "backup.steps.migrations.linking": "Resetting link and linking project: {projectId}...",
473
+ "backup.steps.migrations.validation": "Validation: linked-ref = {linkedRef} (expected = {expected})",
474
+ "backup.steps.migrations.cleaning": "Cleaning supabase/migrations...",
475
+ "backup.steps.migrations.downloading": "Downloading all migrations from server using migration fetch...",
476
+ "backup.steps.migrations.downloaded": "Downloaded files: {count} migrations",
477
+ "backup.steps.migrations.copying": "Copying supabase/migrations → {path} ({count} files)...",
478
+
479
+ "backup.complete.title": "FULL BACKUP COMPLETED VIA DOCKER!",
480
+ "backup.complete.location": "Location: {path}",
481
+ "backup.complete.database": "Database: {fileName} ({size}) - Identical to Dashboard",
482
+ "backup.complete.databaseSql": "Database SQL: {count} separate files ({size}) - For troubleshooting",
483
+ "backup.complete.databaseSettings": "Database Settings: {fileName} ({size}) - Extensions and Settings",
484
+ "backup.complete.auth": "Auth Settings: Exported via API",
485
+ "backup.complete.realtime": "Configurations captured interactively",
486
+ "backup.complete.realtimeReused": "Settings imported from backup {backup}",
487
+ "backup.complete.storage": "Storage: {buckets} buckets, {files} file(s) downloaded, ZIP: {zipFile} ({size})",
488
+ "backup.complete.roles": "Custom Roles: {count} roles exported via SQL",
489
+ "backup.complete.functions": "Edge Functions: {downloaded}/{total} functions downloaded via Docker",
490
+ "backup.complete.temp": "Supabase .temp: {count} file(s) copied",
491
+ "backup.complete.migrations": "Migrations: {count} migration(s) copied",
492
+
493
+ "backup.error.databaseUrlNotConfigured": "DATABASE_URL NOT CONFIGURED",
494
+ "backup.error.databaseUrlInstructions": "To create a full backup of Supabase, you need to:",
495
+ "backup.error.databaseUrlStep1": "1. Configure SUPABASE_DB_URL in .env.local",
496
+ "backup.error.databaseUrlStep2": "2. Repeat the backup command",
497
+ "backup.error.databaseUrlExample": "Configuration example:",
498
+ "backup.error.databaseUrlExampleValue": "\"databaseUrl\": \"postgresql://postgres:[password]@db.[project].supabase.co:5432/postgres\"",
499
+ "backup.error.databaseUrlCancelled": "Backup cancelled - Incomplete configuration",
500
+
501
+ "backup.error.accessTokenNotConfigured": "ACCESS_TOKEN NOT CONFIGURED",
502
+ "backup.error.accessTokenInstructions": "To create a full backup of Supabase, you need to:",
503
+ "backup.error.accessTokenStep1": "1. Get Personal Access Token from Supabase",
504
+ "backup.error.accessTokenStep2": "2. Configure SUPABASE_ACCESS_TOKEN in .env.local",
505
+ "backup.error.accessTokenStep3": "3. Repeat the backup command",
506
+ "backup.error.accessTokenHowTo": "How to get the token:",
507
+ "backup.error.accessTokenStep1Detail": "1. Access: https://supabase.com/dashboard/account/tokens",
508
+ "backup.error.accessTokenStep2Detail": "2. Click: \"Generate new token\"",
509
+ "backup.error.accessTokenStep3Detail": "3. Copy the token (format: sbp_...)",
510
+ "backup.error.accessTokenCancelled": "Backup cancelled - Token not configured",
511
+
512
+ "backup.error.postgresMajorNotSet": "SUPABASE_POSTGRES_MAJOR is not set.",
513
+ "backup.error.postgresMajorInstructions": "Set SUPABASE_POSTGRES_MAJOR to your project's Postgres major (e.g. 15 or 17).",
514
+ "backup.error.postgresMajorWhereToCheck": "You can check it in the Supabase Dashboard: Project Settings -> Infrastructure -> Service Versions (Postgres line).",
515
+ "backup.error.postgresMajorInvalid": "SUPABASE_POSTGRES_MAJOR is invalid. Use an integer (e.g. 15 or 17).",
516
+ "backup.steps.postgresVersion.postgresMajorValidationFailed": "SUPABASE_POSTGRES_MAJOR not set (validation failed).",
517
+
518
+ "backup.steps.storage.noBuckets": "No buckets found",
519
+ "backup.steps.storage.credentialsNotAvailable": "Supabase credentials not available. Backing up metadata only...",
520
+ "backup.steps.storage.cleanupRemoving": "Cleaning temporary structure...",
521
+ "backup.steps.storage.cleanupRemoved": "Temporary structure removed",
522
+ "backup.steps.storage.cleanupError": "Error cleaning temporary structure: {message}",
523
+ "backup.steps.storage.listError": "Error listing {path}: {message}",
524
+ "backup.steps.storage.processError": "Error processing {path}: {message}",
525
+ "backup.steps.storage.error": "Error in Storage backup: {message}",
526
+ "backup.steps.storage.listBucketsError": "Error listing buckets: {status} {statusText}",
527
+ "backup.steps.storage.downloadError": "Error downloading {path}: {message}",
528
+ "backup.steps.storage.processFileError": "Error processing file {path}: {message}",
529
+ "backup.steps.storage.processBucketError": "Error processing bucket {bucketName}: {message}",
530
+ "backup.steps.database.error": "Error in database backup: {message}",
531
+ "backup.steps.database.separated.error": "Error in separated SQL backups: {message}",
532
+ "backup.steps.database.separated.schemaError": "Error in schema: {message}",
533
+ "backup.steps.database.separated.dataError": "Error in data: {message}",
534
+ "backup.steps.database.separated.rolesError": "Error in roles: {message}",
535
+ "backup.steps.databaseSettings.error": "Error in Database Settings backup: {message}",
536
+ "backup.steps.auth.error": "Error in Auth Settings backup: {message}",
537
+ "backup.steps.auth.getError": "Error getting Auth Settings: {status} {statusText}",
538
+ "backup.steps.realtime.error": "Error capturing Realtime Settings: {message}",
539
+ "backup.steps.roles.error": "Error in Custom Roles backup: {message}",
540
+ "backup.steps.roles.exportError": "Error exporting Custom Roles via Docker: {message}",
541
+ "backup.steps.functions.error": "Error during Edge Functions backup: {message}",
542
+ "backup.steps.functions.listError": "Error listing Edge Functions: {status} {statusText}",
543
+ "backup.steps.functions.downloadError": "Error downloading {funcName}: {message}",
544
+ "backup.steps.temp.error": "Error in supabase/.temp backup: {message}",
545
+ "backup.steps.migrations.error": "Error in migrations backup: {message}",
546
+
547
+ "backup.steps.functions.cleanBefore": "supabase/functions folder cleaned before backup.",
548
+ "backup.steps.functions.preserving": "Preserving {count} existing function(s) in supabase/functions folder.",
549
+ "backup.steps.functions.cleanAfter": "supabase/functions cleaned after backup.",
550
+ "backup.steps.functions.preserved": "supabase/functions preserved as requested.",
551
+
552
+ "backup.steps.migrations.cleaning": "Cleaning supabase/migrations...",
553
+ "backup.steps.migrations.downloading": "Downloading all migrations from server using migration fetch...",
554
+ "backup.steps.migrations.fetchError": "Error executing migration fetch: {message}",
555
+ "backup.steps.migrations.fetchTip": "Verify that the project is correctly linked and the token is valid.",
556
+ "backup.steps.migrations.downloaded": "Downloaded files: {count} migrations",
557
+ "backup.steps.migrations.copying": "Copying supabase/migrations → {path} ({count} files)...",
558
+ "backup.steps.migrations.copied": "{count} migration(s) copied",
559
+ "backup.steps.migrations.cleaned": "supabase/migrations deleted.",
560
+
561
+ "backup.steps.temp.copying": "Copying supabase/.temp → {path} ({count} files)...",
562
+ "backup.steps.temp.noFiles": "No files found in supabase/.temp",
563
+ "backup.steps.temp.copied": "{count} file(s) copied",
564
+ "backup.steps.temp.cleaned": "supabase/.temp deleted.",
565
+
566
+ "restore.steps.components.edgeFunctions.title": "Edge Functions:",
567
+ "restore.steps.components.edgeFunctions.description1": "Edge Functions will be copied to supabase/functions and deployed to the target project.",
568
+ "restore.steps.components.edgeFunctions.description2": "The supabase/functions folder will be cleaned before the process.",
569
+ "restore.steps.components.edgeFunctions.include": "Do you want to restore Edge Functions",
570
+
571
+ "restore.steps.components.auth.title": "Auth Settings:",
572
+ "restore.steps.components.auth.description1": "Auth settings will be applied through the API and verified on the destination.",
573
+ "restore.steps.components.auth.description2": "Includes SMTP and redirects recorded in the backup.",
574
+ "restore.steps.components.auth.include": "Do you want to restore Auth",
575
+
576
+ "restore.steps.components.storage.title": "Storage:",
577
+ "restore.steps.components.storage.zipFound": "Storage .zip file found: {fileName}",
578
+ "restore.steps.components.storage.withZip.description1": "Buckets and files will be automatically restored to the target project.",
579
+ "restore.steps.components.storage.withZip.description2": "The ZIP file will be extracted, buckets created and files uploaded via API.",
580
+ "restore.steps.components.storage.metadataOnly.description1": "Only bucket metadata found (storage folder).",
581
+ "restore.steps.components.storage.metadataOnly.description2": "To restore files, the .storage.zip file from the Dashboard is required.",
582
+ "restore.steps.components.storage.metadataOnly.description3": "Only bucket information will be displayed.",
583
+ "restore.steps.components.storage.include": "Do you want to restore Storage",
584
+
585
+ "restore.steps.components.databaseSettings.title": "Database Extensions and Settings:",
586
+ "restore.steps.components.databaseSettings.description1": "Database extensions and settings will be restored via SQL.",
587
+ "restore.steps.components.databaseSettings.description2": "This includes PostgreSQL extensions and project-specific settings.",
588
+ "restore.steps.components.databaseSettings.include": "Do you want to restore Database Settings",
589
+
590
+ "restore.steps.components.realtime.title": "Realtime Settings:",
591
+ "restore.steps.components.realtime.description1": "Realtime settings from the backup will be applied and verified through the API.",
592
+ "restore.steps.components.realtime.description2": "Legacy captures reproduce the values recorded on their capture date.",
593
+ "restore.steps.components.realtime.include": "Do you want to restore Realtime",
594
+ "restore.steps.components.database.include": "Do you want to restore Database",
595
+
596
+ "restore.steps.database.detectedGz": ".backup.gz file detected",
597
+ "restore.steps.database.extractingGz": "Extracting .gz file...",
598
+ "restore.steps.database.uncompressed": "Uncompressed file: {file}",
599
+ "restore.steps.database.detectedBackup": ".backup file detected (already uncompressed)",
600
+ "restore.steps.database.proceeding": "Proceeding with direct restore",
601
+ "restore.steps.database.executing": "Executing psql via Docker...",
602
+ "restore.steps.database.followingDocs": "Following official Supabase documentation",
603
+ "restore.steps.database.warning": "WARNING: Errors like \"object already exists\" are EXPECTED",
604
+ "restore.steps.database.warningReason1": "This happens because the backup contains CREATE for all schemas",
605
+ "restore.steps.database.warningReason2": "Supabase already has auth and storage created, so these errors are normal",
606
+ "restore.steps.database.success": "Database restored successfully!",
607
+ "restore.steps.database.normalErrors": "\"already exists\" errors are normal and do not affect the restore",
608
+ "restore.steps.database.expectedErrors": "Expected errors found (as per Supabase documentation)",
609
+ "restore.steps.database.errorsIgnored": "Errors are ignored as they are CREATE commands that already exist",
610
+ "restore.steps.database.error": "Error restoring database: {message}",
611
+
612
+ "restore.steps.storage.noBuckets": "No Storage buckets found in backup",
613
+ "restore.steps.storage.zipNotFound": ".storage.zip file not found",
614
+ "restore.steps.storage.metadataOnly": "Only bucket metadata was found",
615
+ "restore.steps.storage.zipRequired": "To restore files, the .storage.zip file from the Dashboard is required",
616
+ "restore.steps.storage.bucketInfo": "{name} ({visibility})",
617
+ "restore.steps.storage.public": "public",
618
+ "restore.steps.storage.private": "private",
619
+ "restore.steps.storage.noBucketsInBackup": "No Storage buckets found in backup",
620
+ "restore.steps.storage.projectIdNotFound": "Source project Project ID not found in manifest. Continuing without replacement...",
621
+ "restore.steps.storage.extracting": "Extracting .storage.zip file...",
622
+ "restore.steps.storage.extracted": "File extracted successfully",
623
+ "restore.steps.storage.replacing": "Replacing references to old Project ID in extracted files...",
624
+ "restore.steps.storage.replacingProjectId": "Replacing Project ID: {source} → {target}",
625
+ "restore.steps.storage.replaced": "Project ID replacement completed",
626
+ "restore.steps.storage.noBucketsInZip": "No buckets found in .storage.zip file",
627
+ "restore.steps.storage.bucketConfig": "Settings: {visibility}, limit: {limit}, types: {types}",
628
+ "restore.steps.storage.noLimit": "no limit",
629
+ "restore.steps.storage.allTypes": "all",
630
+ "restore.steps.storage.fileFound": "Storage file found: {fileName}",
631
+ "restore.steps.storage.bucketsFoundInZip": "Found {count} bucket(s) in ZIP file",
632
+ "restore.steps.storage.processingBucket": "Processing bucket: {bucketName}",
633
+ "restore.steps.storage.creatingBucket": "Creating bucket {bucketName}...",
634
+ "restore.steps.storage.bucketCreated": "Bucket {bucketName} created with backup settings",
635
+ "restore.steps.storage.bucketUpdated": "Bucket settings updated",
636
+ "restore.steps.storage.bucketConfigCorrect": "Bucket settings are already correct",
637
+ "restore.steps.storage.filesFoundForUpload": "Found {count} file(s) for upload",
638
+ "restore.steps.storage.bucketDone": "Bucket {bucketName}: {uploaded}/{total} file(s) uploaded",
639
+ "restore.steps.storage.bucketError": "Error processing bucket {bucketName}: {message}",
640
+ "restore.steps.storage.uploadError": "Error uploading {path}: {message}",
641
+ "restore.steps.storage.restoreComplete": "Storage restore completed: {success}/{total} bucket(s) processed, {files} file(s) uploaded",
642
+ "restore.steps.storage.bucketsFoundMetadata": "{count} bucket(s) found in backup (metadata only)",
643
+ "restore.steps.storage.noBucketsInSubfolders": "Error: No buckets found in subfolders of {rootDir}",
644
+ "restore.steps.storage.updateError": "Could not update settings: {errorText}",
645
+ "restore.steps.storage.uploadProgress": "Upload: {path}{metaInfo}",
646
+ "restore.steps.storage.metadataPreserved": "(metadata preserved)",
647
+ "restore.steps.storage.fileError": "Error processing file {path}: {message}",
648
+ "restore.steps.storage.rootIsProjectId": "The root folder is a Project ID and should not be treated as a bucket",
649
+ "restore.steps.storage.bucketExists": "Bucket {bucketName} already exists",
650
+ "restore.steps.storage.updating": "Updating bucket settings to match backup...",
651
+ "restore.steps.storage.detectedProjectId": "Detected root folder with Project ID: {projectId}{reason}",
652
+ "restore.steps.storage.searchingBuckets": "Searching for buckets in subfolders...",
653
+ "restore.steps.storage.error": "Error processing Storage: {message}",
654
+
655
+ "restore.steps.edgeFunctions.notFound": "No Edge Functions found in backup",
656
+ "restore.steps.edgeFunctions.found": "Found {count} Edge Function(s)",
657
+ "restore.steps.edgeFunctions.cleaningBefore": "Cleaning supabase/functions before copying...",
658
+ "restore.steps.edgeFunctions.linkMayExist": "Link may already exist, continuing...",
659
+ "restore.steps.edgeFunctions.cleaningAfter": "Cleaning supabase/functions after deploy...",
660
+ "restore.steps.edgeFunctions.success": "Edge Functions restored successfully!",
661
+ "restore.steps.edgeFunctions.error": "Error restoring Edge Functions: {message}",
662
+ "restore.steps.edgeFunctions.listBucketsError": "Error listing buckets: {message}",
663
+ "restore.steps.edgeFunctions.createBucketError": "Error creating bucket: {status} {errorText}",
664
+ "restore.steps.edgeFunctions.copying": "Copying {funcName} to supabase/functions...",
665
+ "restore.steps.edgeFunctions.linking": "Linking with project {projectId}...",
666
+ "restore.steps.edgeFunctions.deploying": "Deploying {funcName}...",
667
+ "restore.steps.edgeFunctions.deployed": "{funcName} deployed successfully!",
668
+ "restore.steps.edgeFunctions.deployFailed": "{funcName} - deploy failed: {message}",
669
+
670
+ "restore.steps.auth.notFound": "No Auth settings found in backup",
671
+ "restore.steps.auth.error": "Error processing Auth Settings: {message}",
672
+ "restore.steps.auth.urlTitle": "URL for manual configuration:",
673
+ "restore.steps.auth.configureTitle": "Manually configure the following options:",
674
+ "restore.steps.auth.pressEnter": "After configuring, press Enter to continue...",
675
+ "restore.steps.auth.success": "Auth Settings processed",
676
+
677
+ "restore.steps.databaseSettings.notFound": "No Database settings found in backup",
678
+ "restore.steps.databaseSettings.success": "Database Settings restored successfully!",
679
+ "restore.steps.databaseSettings.error": "Error restoring Database Settings: {message}",
680
+ "restore.steps.databaseSettings.enabling": "Enabling {count} extension(s)...",
681
+ "restore.steps.databaseSettings.extension": "- {extName}",
682
+ "restore.steps.databaseSettings.invalidUrl": "Invalid URL for {extName}",
683
+ "restore.steps.databaseSettings.extensionExists": "{extName} - extension already exists or cannot be enabled",
684
+
685
+ "restore.steps.realtime.notFound": "No Realtime settings found in backup",
686
+ "restore.steps.realtime.urlTitle": "URL for manual configuration:",
687
+ "restore.steps.realtime.configureTitle": "Manually configure the following options:",
688
+ "restore.steps.realtime.pressEnter": "After configuring, press Enter to continue...",
689
+ "restore.steps.realtime.success": "Realtime Settings processed",
690
+
691
+ "restore.steps.backupSelection.title": "Available backups:",
692
+ "restore.steps.backupSelection.separator": "═══════════════════════════════════════════════════════════════════════════════",
693
+ "restore.steps.backupSelection.input": "Enter the backup number to restore ({min}-{max}):",
694
+ "restore.steps.backupSelection.invalid": "Invalid number",
695
+
696
+ "utils.realtime.previousFound": "A previous Realtime Settings recording was found.",
697
+ "utils.realtime.reuse": "Do you want to reuse the previous configurations?",
698
+ "utils.realtime.reusing": "Reusing Realtime Settings configurations from previous backup...",
699
+ "utils.realtime.configTitle": "Realtime Settings Configuration",
700
+ "utils.realtime.separator": "════════════════════════════════════════════════════════════════",
701
+ "utils.realtime.access": "Access: {url}",
702
+ "utils.realtime.note": "Note the values of the 7 parameters below:",
703
+ "utils.realtime.questions": "Answer the questions below (press Enter to use default value):",
704
+ "utils.realtime.saved": "Realtime Settings configurations saved!",
705
+ "utils.realtime.copying": "Copying Realtime Settings from previous backup...",
706
+
707
+ "utils.supabaseLink.linking": "Resetting link and linking project: {projectId}...",
708
+ "utils.supabaseLink.validation": "Validation: linked-ref = {linkedRef} (expected = {expected})",
709
+ "utils.supabaseLink.validationFailed": "Validation failed: linked-ref = {linkedRef} (expected = {expected}). The linked project does not match the expected project.",
710
+ "utils.supabaseLink.cannotValidate": "Could not validate link: {message}",
711
+ "utils.supabaseLink.linkFailed": "Failed to link project {projectId}: {message}",
712
+
713
+ "restore.index.envUpdated": ".env.local updated successfully. No keys renamed; values synchronized.",
714
+ "restore.index.searchingBackups": "Searching for backups in: {path}",
715
+ "restore.index.noBackupsFound": "No valid backups found",
716
+ "restore.index.runBackupFirst": "Run first: npx smoonb backup",
717
+ "restore.index.summaryTitle": "RESTORATION SUMMARY:",
718
+ "restore.index.selectedBackup": "Selected backup: {name}",
719
+ "restore.index.targetProject": "Target project: {projectId}",
720
+ "restore.index.database": "Database: {value}",
721
+ "restore.index.edgeFunctions": "Edge Functions: {value}",
722
+ "restore.index.authSettings": "Auth Settings: {value}",
723
+ "restore.index.storage": "Storage: {value}",
724
+ "restore.index.databaseSettings": "Database Settings: {value}",
725
+ "restore.index.realtimeSettings": "Realtime Settings: {value}",
726
+ "restore.index.yes": "Yes",
727
+ "restore.index.no": "No",
728
+ "restore.index.notConfigured": "(not configured)",
729
+ "restore.index.confirmRestore": "Do you want to start the restoration with these configurations?",
730
+ "restore.index.restoreCancelled": "Restoration cancelled.",
731
+ "restore.disclaimer.errorsTitle": "IMPORTANT: Expected errors during restore",
732
+ "restore.disclaimer.errorsIntro": "During the database restore you will see many error messages in the terminal. This is NORMAL and expected.",
733
+ "restore.disclaimer.errorsReason": "Supabase confirms that errors like \"object already exists\" or \"constraint already exists\" are normal when restoring a full dump, because the backup contains CREATE commands for all schemas and your target project already has some of these objects.",
734
+ "restore.disclaimer.supabaseDoc": "Official Supabase documentation (restore and expected errors):",
735
+ "restore.disclaimer.waitComplete": "Even with numerous errors, you must wait for the process to complete fully. Do not interrupt the restore.",
736
+ "restore.disclaimer.testResult": "After completion, test your project (tables, data, functions) to verify whether the restore succeeded.",
737
+ "restore.disclaimer.acceptProceed": "I understand that errors are expected, I will wait for completion and I will test the result. Proceed with restore?",
738
+ "restore.index.startingRestore": "Starting restoration...",
739
+ "restore.index.restoringDatabase": "Restoring Database...",
740
+ "restore.index.restoringEdgeFunctions": "Restoring Edge Functions...",
741
+ "restore.index.restoringAuthSettings": "Restoring Auth Settings...",
742
+ "restore.index.restoringStorageBuckets": "Restoring Storage Buckets...",
743
+ "restore.index.restoringDatabaseSettings": "Restoring Database Settings...",
744
+ "restore.index.restoringRealtimeSettings": "Restoring Realtime Settings...",
745
+ "restore.index.restoreComplete": "Selected components restored and verified.",
746
+ "restore.index.targetProjectFinal": "Target project: {projectId}",
747
+ "restore.index.databaseRestored": "Database: Restored successfully via Docker",
748
+ "restore.index.edgeFunctionsRestored": "Edge Functions: {success}/{total} functions restored",
749
+ "restore.index.authSettingsRestored": "Auth Settings: Settings displayed for manual configuration",
750
+ "restore.index.storageRestored": "Storage: {buckets} bucket(s) restored, {files} file(s) uploaded",
751
+ "restore.index.storageMetadataOnly": "Storage: {buckets} bucket(s) found - metadata only (.storage.zip file not found)",
752
+ "restore.index.databaseSettingsRestored": "Database Settings: Extensions and settings restored via SQL",
753
+ "restore.index.realtimeSettingsRestored": "Realtime Settings: Settings displayed for manual configuration",
754
+ "restore.index.error": "Error during restoration: {message}",
755
+
756
+ "restore.utils.componentsTitle": "Components that will be restored:",
757
+ "restore.utils.database": "Database (psql -f via Docker)",
758
+ "restore.utils.edgeFunctions": "Edge Functions: {count} function(s)",
759
+ "restore.utils.authSettings": "Auth Settings: Display URL and values for manual configuration",
760
+ "restore.utils.storageBuckets": "Storage Buckets: Automatic restoration of buckets and files via API",
761
+ "restore.utils.storageMetadataOnly": "Storage Buckets: Display information (metadata only - .storage.zip file not found)",
762
+ "restore.utils.databaseSettings": "Database Extensions and Settings: Restore via SQL",
763
+ "restore.utils.realtimeSettings": "Realtime Settings: Display URL and values for manual configuration",
764
+ "restore.utils.summaryTitle": "Restoration Summary:",
765
+ "restore.utils.summarySeparator": "═══════════════════════════════════════════════════════════════════════════════",
766
+ "restore.utils.backup": "Backup: {name}",
767
+ "restore.utils.sourceProject": "Source Project: {projectId}",
768
+ "restore.utils.targetProject": "Target Project: {projectId}",
769
+
770
+ "restore.steps.auth.pressEnter": "Press Enter to continue",
771
+ "restore.steps.realtime.pressEnter": "Press Enter to continue",
772
+
773
+ "restore.import.fileNotFound": "Backup file not found: {path}",
774
+ "restore.import.invalidFormat": "Backup file must be .backup.gz or .backup",
775
+ "restore.import.storageNotFound": "Storage file not found: {path}",
776
+ "restore.import.storageInvalidFormat": "Storage file must be .storage.zip",
777
+ "restore.import.invalidFileName": "Backup file name is not in the expected Dashboard format. Expected format: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
778
+ "restore.import.importing": "Importing backup to: {name}",
779
+ "restore.import.backupImported": "Backup file imported: {fileName} ({size} MB)",
780
+ "restore.import.storageImported": "Storage file imported: {fileName} ({size} MB)",
781
+ "restore.import.importingFile": "Importing backup file...",
782
+ "restore.import.importedSelected": "Backup imported and automatically selected: {name}",
783
+ "restore.import.cannotFind": "Could not find the imported backup",
784
+ "restore.import.envBackup": "Backup of .env.local: {path}",
785
+ "restore.import.envNotFound": "⚠️ .env.local file not found. It will be created during mapping.",
786
+ "restore.import.noComponents": "\n❌ No components selected for restoration!",
787
+
788
+ "backup.steps.functions.noFunctionsMessage": "No Edge Functions found in this project",
789
+ "backup.steps.storage.noBucketsMessage": "No Storage buckets found in this project",
790
+
791
+ "check.connectionSuccess": "Connection established successfully",
792
+ "check.unexpectedResponse": "Unexpected response from database",
793
+ "check.connectionError": "Connection failed: {message}",
794
+
795
+ "error.databaseUrlInvalid": "Invalid Database URL. Expected format: postgresql://user:password@host/database",
796
+ "error.databaseUrlInvalidSimple": "Invalid Database URL",
797
+ "error.storageCredentialsNotConfigured": "Target project credentials not configured. SUPABASE_PROJECT_ID and SUPABASE_ACCESS_TOKEN are required",
798
+ "error.supabaseCredentialsNotConfigured": "Supabase credentials not configured. NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are required",
799
+ "restore.verified.remapUrls": "Update old Supabase service URLs to the new project in data and files? (Includes URLs inside JSON; unrelated text and IDs are preserved.)"
800
+ }