smoonb 1.0.10 → 1.0.12

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.
package/CHANGELOG.md CHANGED
@@ -1,144 +1,159 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
-
7
- ## [1.0.10] - 2026-10-10
8
-
9
- ### Fixed
10
-
11
- - When a Realtime PATCH succeeds but capacity limits remain different, show the backup and destination values and offer an explicit choice to retain the destination limits. Record accepted differences instead of failing with field names only or claiming an identical restore.
12
- - Retry readback without repeating PATCH, then re-read all selected Realtime settings after consent. Security switches, connection pools, invalid values, API failures and concurrent configuration changes remain failures.
13
- - Record refused quota differences in the failure report; allow a retry selecting only Realtime without repeating Database, Auth or Storage. Non-interactive runs never silently accept differences.
14
- - Preserve SMTP verification limits in combined reports and show completion with notes when any selected component has accepted differences or unverified secrets.
15
- - Replace obsolete manual-configuration messages in the English and Portuguese Auth/Realtime summaries.
16
-
17
- ### Tests
18
-
19
- - Cover legacy and API snapshots, delayed readback, consent and rejection, non-interactive execution, strict security validation, concurrent changes, secret-safe errors, partial reports and Realtime-only retries.
20
-
21
- ## [1.0.9] - 2026-10-10
22
-
23
- ### Fixed
24
-
25
- - Treat SMTP passwords as write-only credentials. Never replay the protected SMTP value returned by the Management API from a legacy backup as the provider password.
26
- - Ask for the real SMTP password with hidden input before restoring any selected components. Fail before remote mutations if it is missing. Keep the entered password in memory only.
27
- - Verify readable Auth settings independently from password submission. Continue after the API accepts the supplied password, but report `applied_with_unverified_secrets` and require an authentication email test instead of claiming password or email-delivery verification.
28
- - Omit the protected SMTP value from new Auth snapshots and explicitly record that the provider password is required during restore. Existing backups remain usable.
29
-
30
- ### Recovery from 1.0.8
31
-
32
- - If restore stopped at `Configuration verification failed: smtp_pass`, inspect its `report.json`. When Database and Edge Functions are already verified, run restore with those two components disabled and select Auth, Storage, Database Settings and Realtime as needed. Supply the real provider SMTP password when prompted; no new backup or destination project is required for this specific failure.
33
-
34
- ### Tests
35
-
36
- - Cover legacy/new snapshots, hidden input, missing-password preflight, protected-value rejection, HTTP failures, readable-setting mismatches, partial verification reporting and continuation without reloading the database.
37
-
38
- ## [1.0.8] - 2026-10-10
39
-
40
- ### Fixed
41
-
42
- - Restore application and Auth data from the existing full dump in one checked transaction. Fail on SQL errors; compare restored columns and validate foreign keys before commit, including pre-existing Auth constraints.
43
- - Remove extra destination object grants before replaying source ACLs, preventing unintended anonymous/authenticated access to restricted functions and tables.
44
- - Apply and verify Auth configuration through the Management API, including SMTP and redirect configuration.
45
- - Remap source Supabase hostnames in application data and text objects when selected; preserve unrelated IDs and paths.
46
- - Recover Storage MIME types, cache directives, ownership and user metadata from the full dump even when legacy Storage JSON inventories are empty. Validate ZIP inventory, count empty buckets, and verify every uploaded file by download and SHA-256.
47
- - Use isolated temporary workspaces for Edge Function backup and deployment; preserve local modified sources and compressed backup archives. Address npm CLI shims on Windows without shell interpolation.
48
- - Persist stage results and failures; never report unsuccessful or unverified components as restored.
49
-
50
- ### Changed
51
-
52
- - Apply and verify Realtime snapshots through the API; capture fresh Realtime settings for new backups instead of reusing interactive recordings.
53
- - Verify database settings and fail explicitly for incompatible platform settings rather than silently skipping them.
54
- - Require Node.js 20 or later. A new, empty destination is required for the database restore; platform-managed schemas and administrator defaults remain destination-managed.
55
- - Preserve Function JWT configuration in new backups. Legacy backups default to requiring JWT.
56
-
57
- ### Tests
58
-
59
- - Add regression coverage for configuration readback, failure reporting, URL mapping, archive preservation, isolated Functions, and PostgreSQL arrays.
60
- - Add an opt-in Docker test of the actual restore step with cyclic references, Auth identities, broad destination defaults, invalid-data rollback, populated-target refusal and Storage metadata/content verification (mock HTTP, real PostgreSQL).
61
-
62
- ---
63
-
64
- ## [1.0.7] - 2026-10-10
65
-
66
- ### Fixed
67
-
68
- - Consolidate known PostgreSQL circular foreign-key warnings during separate SQL data export. Explain that export completion is distinct from restore validation, list affected tables, and verify the Supabase replica-role prologue before describing it.
69
- - Preserve original circular-FK diagnostics and prologue detection in the backup manifest; keep unrelated warnings, errors, and failed-export diagnostics visible.
70
- - Mark separate SQL backup incomplete when any of schema, data, or roles fails, instead of treating one exported file as full success.
71
- - Clear progress timers on subprocess errors, drain stdout, and avoid terminal control output when stdout is redirected.
72
-
73
- ### Added
74
-
75
- - Regression tests for chunked diagnostics, translations, missing protection, partial exports and subprocess failures.
76
- - Opt-in Docker integration test using synthetic cyclic references, real Supabase CLI exports, successful protected/full restores and failing unprotected/unprivileged controls.
77
- - English and Portuguese restore guidance; release checks now run tests and lint before the build.
78
-
79
- ---
80
-
81
- ## [1.0.6] - 2026-02-21
82
-
83
- ### Changed
84
-
85
- - **Storage backup (step 6) — robustness and feedback:**
86
- - Added `withTimeout` helper: each Storage `.list()` call times out after 30s; each file `.download()` times out after 2 minutes.
87
- - Added `withRetry` helper: up to 3 attempts with exponential backoff (2s → 4s → 8s) on both listing and download failures.
88
- - Inline progress during file listing: live `\r`-updated line shows the current folder being scanned and the running file count (`→ Scanning bucket/folder (N found)`). No more silent hangs.
89
- - After listing completes, a summary line shows the total files found.
90
- - Retry warnings show attempt number, failure reason and next retry delay.
91
- - Download failures after all retries are counted as `filesSkipped` and reported in the bucket summary.
92
- - Bucket summary now distinguishes between full success and partial success with skips.
93
-
94
- ---
95
-
96
- ## [1.0.5] - 2026-02-21
97
-
98
- ### Added
99
-
100
- - **Flexible Supabase CLI version check** – Instead of requiring the exact latest version, smoonb now accepts any CLI version that is at most 1 minor behind the latest (same major). The minimum accepted version is computed as `major.(minor_latest - 1).0` at runtime from the npm registry. Special case: if `minor_latest === 0`, only the same major.minor is accepted.
101
- - **`--skip-supabase-version-check` flag** – New opt-in flag for both `backup` and `restore` commands. When set, the Supabase CLI version check is skipped entirely and a warning is displayed. Useful when package managers (e.g. Scoop on Windows) lag behind on updates and the user wants to proceed at their own risk.
102
-
103
- ### Changed
104
-
105
- - Error message for outdated Supabase CLI now shows the computed minimum accepted version (`minVersion`) and the current latest, instead of only the latest.
106
- - README (EN and PT-BR): updated Supabase CLI prerequisites section with the new version policy, added examples with `--skip-supabase-version-check`, updated commands table and troubleshooting section.
107
- - i18n strings (`en.json`, `pt-BR.json`): removed specific version number references in favour of evergreen language ("always use the latest version").
108
-
109
- ---
110
-
111
- ## [1.0.4] - 2025-01-29
112
-
113
- ### Changed
114
-
115
- - Release 1.0.4 – Build and lint verification.
116
-
117
- ---
118
-
119
- ## [1.0.3] - 2025-01-29
120
-
121
- ### Added
122
-
123
- - **License binding by installation** – One license is bound to a single installation (machine). On first use, the license is linked to a persistent `installationId` and cannot be moved. To use smoonb on another machine, revoke the license in the desktop app and generate a new one.
124
- - **Installation ID** – Generated and stored on first run via `env-paths` (Windows: `%APPDATA%/smoonb-nodejs/Config`, macOS/Linux: `~/.config/smoonb-nodejs`). File: `config.json` with `installationId` (uuid v4) and `createdAt`. Never stores the license key.
125
- - **Validation payload** – License validation now sends `installationId` and `cliVersion` with `licenseKey` and `correlationId`.
126
-
127
- ### Changed
128
-
129
- - **LICENSE_ALREADY_BOUND** – When the server returns this reason, the CLI shows a clear message: "This license is already linked to another machine and cannot be moved" and instructs to revoke and generate a new license at https://www.smoonb.com.
130
- - **Diagnostic bundle** – Includes masked `InstallationId` (e.g. `2f3a…91bc`) and server `Reason` (or reason code) on validation failure; HTTP status and response body (truncated) on network/HTTP errors.
131
- - **Telemetry** – Uses the same `installationId` as license validation (shared util); removed duplicate persistence in `~/.smoonb/installation-id`.
132
-
133
- ### Fixed
134
-
135
- - No offline cache: if validation fails (network or backend), the CLI does not run and shows the full diagnostic bundle.
136
-
137
- ---
138
-
139
- ---
140
-
141
- [1.0.7]: https://github.com/almmello/smoonb/releases/tag/v1.0.7
142
- [1.0.6]: https://github.com/almmello/smoonb/releases/tag/v1.0.6
143
- [1.0.5]: https://github.com/almmello/smoonb/releases/tag/v1.0.5
144
- [1.0.4]: https://github.com/almmello/smoonb/releases/tag/v1.0.4
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
+
7
+ ## [1.0.12] - 2026-11-05
8
+
9
+ ### Fixed
10
+ - Bundle exactly Supabase CLI 2.122.1 (v2 maintenance channel) and lock distribution dependencies; never require npm latest or use the global CLI.
11
+ - Isolate SQL, role and migration exports from project configuration and preserve local migrations, Functions, .temp and environment files.
12
+ - Record incomplete backups and exit with failure when any requested component fails. Preserve successful exports.
13
+ - Keep credentials out of shell commands and command failure messages.
14
+ - Support Node.js LTS branches 22, 24 and 26. Update ZIP handling dependency.
15
+
16
+ ## [1.0.11] - 2026-10-10
17
+
18
+ ### Changed
19
+
20
+ - Recommend retaining destination Realtime capacity limits by default: the interactive prompt now uses `(S/n)` in Portuguese and `(Y/n)` in English. Values are still displayed before confirmation; declining, non-interactive execution and strict security checks retain their existing behavior.
21
+
22
+ ## [1.0.10] - 2026-10-10
23
+
24
+ ### Fixed
25
+
26
+ - When a Realtime PATCH succeeds but capacity limits remain different, show the backup and destination values and offer an explicit choice to retain the destination limits. Record accepted differences instead of failing with field names only or claiming an identical restore.
27
+ - Retry readback without repeating PATCH, then re-read all selected Realtime settings after consent. Security switches, connection pools, invalid values, API failures and concurrent configuration changes remain failures.
28
+ - Record refused quota differences in the failure report; allow a retry selecting only Realtime without repeating Database, Auth or Storage. Non-interactive runs never silently accept differences.
29
+ - Preserve SMTP verification limits in combined reports and show completion with notes when any selected component has accepted differences or unverified secrets.
30
+ - Replace obsolete manual-configuration messages in the English and Portuguese Auth/Realtime summaries.
31
+
32
+ ### Tests
33
+
34
+ - Cover legacy and API snapshots, delayed readback, consent and rejection, non-interactive execution, strict security validation, concurrent changes, secret-safe errors, partial reports and Realtime-only retries.
35
+
36
+ ## [1.0.9] - 2026-10-10
37
+
38
+ ### Fixed
39
+
40
+ - Treat SMTP passwords as write-only credentials. Never replay the protected SMTP value returned by the Management API from a legacy backup as the provider password.
41
+ - Ask for the real SMTP password with hidden input before restoring any selected components. Fail before remote mutations if it is missing. Keep the entered password in memory only.
42
+ - Verify readable Auth settings independently from password submission. Continue after the API accepts the supplied password, but report `applied_with_unverified_secrets` and require an authentication email test instead of claiming password or email-delivery verification.
43
+ - Omit the protected SMTP value from new Auth snapshots and explicitly record that the provider password is required during restore. Existing backups remain usable.
44
+
45
+ ### Recovery from 1.0.8
46
+
47
+ - If restore stopped at `Configuration verification failed: smtp_pass`, inspect its `report.json`. When Database and Edge Functions are already verified, run restore with those two components disabled and select Auth, Storage, Database Settings and Realtime as needed. Supply the real provider SMTP password when prompted; no new backup or destination project is required for this specific failure.
48
+
49
+ ### Tests
50
+
51
+ - Cover legacy/new snapshots, hidden input, missing-password preflight, protected-value rejection, HTTP failures, readable-setting mismatches, partial verification reporting and continuation without reloading the database.
52
+
53
+ ## [1.0.8] - 2026-10-10
54
+
55
+ ### Fixed
56
+
57
+ - Restore application and Auth data from the existing full dump in one checked transaction. Fail on SQL errors; compare restored columns and validate foreign keys before commit, including pre-existing Auth constraints.
58
+ - Remove extra destination object grants before replaying source ACLs, preventing unintended anonymous/authenticated access to restricted functions and tables.
59
+ - Apply and verify Auth configuration through the Management API, including SMTP and redirect configuration.
60
+ - Remap source Supabase hostnames in application data and text objects when selected; preserve unrelated IDs and paths.
61
+ - Recover Storage MIME types, cache directives, ownership and user metadata from the full dump even when legacy Storage JSON inventories are empty. Validate ZIP inventory, count empty buckets, and verify every uploaded file by download and SHA-256.
62
+ - Use isolated temporary workspaces for Edge Function backup and deployment; preserve local modified sources and compressed backup archives. Address npm CLI shims on Windows without shell interpolation.
63
+ - Persist stage results and failures; never report unsuccessful or unverified components as restored.
64
+
65
+ ### Changed
66
+
67
+ - Apply and verify Realtime snapshots through the API; capture fresh Realtime settings for new backups instead of reusing interactive recordings.
68
+ - Verify database settings and fail explicitly for incompatible platform settings rather than silently skipping them.
69
+ - Require Node.js 20 or later. A new, empty destination is required for the database restore; platform-managed schemas and administrator defaults remain destination-managed.
70
+ - Preserve Function JWT configuration in new backups. Legacy backups default to requiring JWT.
71
+
72
+ ### Tests
73
+
74
+ - Add regression coverage for configuration readback, failure reporting, URL mapping, archive preservation, isolated Functions, and PostgreSQL arrays.
75
+ - Add an opt-in Docker test of the actual restore step with cyclic references, Auth identities, broad destination defaults, invalid-data rollback, populated-target refusal and Storage metadata/content verification (mock HTTP, real PostgreSQL).
76
+
77
+ ---
78
+
79
+ ## [1.0.7] - 2026-10-10
80
+
81
+ ### Fixed
82
+
83
+ - Consolidate known PostgreSQL circular foreign-key warnings during separate SQL data export. Explain that export completion is distinct from restore validation, list affected tables, and verify the Supabase replica-role prologue before describing it.
84
+ - Preserve original circular-FK diagnostics and prologue detection in the backup manifest; keep unrelated warnings, errors, and failed-export diagnostics visible.
85
+ - Mark separate SQL backup incomplete when any of schema, data, or roles fails, instead of treating one exported file as full success.
86
+ - Clear progress timers on subprocess errors, drain stdout, and avoid terminal control output when stdout is redirected.
87
+
88
+ ### Added
89
+
90
+ - Regression tests for chunked diagnostics, translations, missing protection, partial exports and subprocess failures.
91
+ - Opt-in Docker integration test using synthetic cyclic references, real Supabase CLI exports, successful protected/full restores and failing unprotected/unprivileged controls.
92
+ - English and Portuguese restore guidance; release checks now run tests and lint before the build.
93
+
94
+ ---
95
+
96
+ ## [1.0.6] - 2026-02-21
97
+
98
+ ### Changed
99
+
100
+ - **Storage backup (step 6) — robustness and feedback:**
101
+ - Added `withTimeout` helper: each Storage `.list()` call times out after 30s; each file `.download()` times out after 2 minutes.
102
+ - Added `withRetry` helper: up to 3 attempts with exponential backoff (2s → 4s → 8s) on both listing and download failures.
103
+ - Inline progress during file listing: live `\r`-updated line shows the current folder being scanned and the running file count (`→ Scanning bucket/folder (N found)`). No more silent hangs.
104
+ - After listing completes, a summary line shows the total files found.
105
+ - Retry warnings show attempt number, failure reason and next retry delay.
106
+ - Download failures after all retries are counted as `filesSkipped` and reported in the bucket summary.
107
+ - Bucket summary now distinguishes between full success and partial success with skips.
108
+
109
+ ---
110
+
111
+ ## [1.0.5] - 2026-02-21
112
+
113
+ ### Added
114
+
115
+ - **Flexible Supabase CLI version check** – Instead of requiring the exact latest version, smoonb now accepts any CLI version that is at most 1 minor behind the latest (same major). The minimum accepted version is computed as `major.(minor_latest - 1).0` at runtime from the npm registry. Special case: if `minor_latest === 0`, only the same major.minor is accepted.
116
+ - **`--skip-supabase-version-check` flag** – New opt-in flag for both `backup` and `restore` commands. When set, the Supabase CLI version check is skipped entirely and a warning is displayed. Useful when package managers (e.g. Scoop on Windows) lag behind on updates and the user wants to proceed at their own risk.
117
+
118
+ ### Changed
119
+
120
+ - Error message for outdated Supabase CLI now shows the computed minimum accepted version (`minVersion`) and the current latest, instead of only the latest.
121
+ - README (EN and PT-BR): updated Supabase CLI prerequisites section with the new version policy, added examples with `--skip-supabase-version-check`, updated commands table and troubleshooting section.
122
+ - i18n strings (`en.json`, `pt-BR.json`): removed specific version number references in favour of evergreen language ("always use the latest version").
123
+
124
+ ---
125
+
126
+ ## [1.0.4] - 2025-01-29
127
+
128
+ ### Changed
129
+
130
+ - Release 1.0.4 – Build and lint verification.
131
+
132
+ ---
133
+
134
+ ## [1.0.3] - 2025-01-29
135
+
136
+ ### Added
137
+
138
+ - **License binding by installation** – One license is bound to a single installation (machine). On first use, the license is linked to a persistent `installationId` and cannot be moved. To use smoonb on another machine, revoke the license in the desktop app and generate a new one.
139
+ - **Installation ID** – Generated and stored on first run via `env-paths` (Windows: `%APPDATA%/smoonb-nodejs/Config`, macOS/Linux: `~/.config/smoonb-nodejs`). File: `config.json` with `installationId` (uuid v4) and `createdAt`. Never stores the license key.
140
+ - **Validation payload** – License validation now sends `installationId` and `cliVersion` with `licenseKey` and `correlationId`.
141
+
142
+ ### Changed
143
+
144
+ - **LICENSE_ALREADY_BOUND** – When the server returns this reason, the CLI shows a clear message: "This license is already linked to another machine and cannot be moved" and instructs to revoke and generate a new license at https://www.smoonb.com.
145
+ - **Diagnostic bundle** – Includes masked `InstallationId` (e.g. `2f3a…91bc`) and server `Reason` (or reason code) on validation failure; HTTP status and response body (truncated) on network/HTTP errors.
146
+ - **Telemetry** – Uses the same `installationId` as license validation (shared util); removed duplicate persistence in `~/.smoonb/installation-id`.
147
+
148
+ ### Fixed
149
+
150
+ - No offline cache: if validation fails (network or backend), the CLI does not run and shows the full diagnostic bundle.
151
+
152
+ ---
153
+
154
+ ---
155
+
156
+ [1.0.7]: https://github.com/almmello/smoonb/releases/tag/v1.0.7
157
+ [1.0.6]: https://github.com/almmello/smoonb/releases/tag/v1.0.6
158
+ [1.0.5]: https://github.com/almmello/smoonb/releases/tag/v1.0.5
159
+ [1.0.4]: https://github.com/almmello/smoonb/releases/tag/v1.0.4