github-actions[bot]
9ec92af6c7
chore: release 1.16.0
1.16.0
2026-07-03 06:16:42 +00:00
Charles GTE
1dafdca2a0
Merge pull request #74 from Portabase/feat/docker-volume-backup-restore
...
feat: docker-volume-backup-restore
2026-07-03 08:14:30 +02:00
charles-gauthereau
d12817a960
fix: codecov.yml
2026-07-02 22:42:02 +02:00
charles-gauthereau
608b82a254
fix: test docker_volume.rs
2026-07-02 22:08:55 +02:00
charles-gauthereau
bbecca92f9
fix: databases.json
2026-07-02 21:51:17 +02:00
charles-gauthereau
b2b2733c4d
feat: docker-volume provider
...
refactor: move build_tar to utils::compress
refactor: move choose_restore_path to utils::common
docs: remove docker-volume README section
fix: keep archive path for multi-file non-docker-volume restores
docs: trim docker-volume README section to essentials
refactor: run docker-volume backup/restore inside spawn_blocking like other providers
docs: enable docker socket, add volume example and security notes
feat: sweep orphaned ephemeral helper containers on startup
feat: docker-volume clean-replace restore via upload_to_container
fix: serialize env-var access in docker-volume tests to avoid setenv/getenv UB
feat: docker-volume backup via download_from_container
feat: docker-volume ping via inspect_volume
fix: return extraction dir for multi-file restore archives
feat: gzip already-tar inputs directly instead of double-wrapping
feat: docker helper (client, self-image, container lifecycle, sweep)
feat: docker-volume provider
2026-07-02 21:45:11 +02:00
github-actions[bot]
2c257c5a58
chore: release 1.15.0
1.15.0
2026-06-29 17:14:03 +00:00
Charles GTE
c24c0d7058
Merge pull request #73 from Portabase/fix/postgres-ownership
...
fix: postgres-ownership
2026-06-29 19:12:01 +02:00
charles-gauthereau
34f353b68f
fix: postgres keep_ownership flag
2026-06-29 19:10:49 +02:00
charles-gauthereau
ee51996401
chore: document keep_ownership option in example databases.json
2026-06-29 18:54:01 +02:00
charles-gauthereau
694b463787
feat: conditionally omit --no-owner/--no-privileges in pg_restore based on keep_ownership option
2026-06-29 18:52:37 +02:00
charles-gauthereau
aed1e86956
feat: add generic options map to DatabaseConfig
...
Add `options: HashMap<String, serde_json::Value>` to DatabaseConfig and
`options: Option<HashMap<...>>` to InputDatabaseConfig so callers can
pass arbitrary per-database options (e.g. keep_ownership for pg_dumpall).
Update all DatabaseConfig struct literals in test files and add three
new config-service unit tests covering present, absent, and non-bool values.
2026-06-29 18:49:01 +02:00
charles-gauthereau
6388aff1e3
fix: postgres cluster dump command
2026-06-29 17:10:11 +02:00
github-actions[bot]
39a77b18a4
chore: release 1.14.1
1.14.1
2026-06-29 13:22:10 +00:00
Charles GTE
e62167182e
Merge pull request #72 from Portabase/fix/postgres-cluster
...
fix: postgres cluster dump command
2026-06-29 15:19:54 +02:00
charles-gauthereau
4be54a614e
fix: postgres cluster dump command
2026-06-29 15:18:52 +02:00
github-actions[bot]
c5eaa5086c
chore: release 1.14.0
1.14.0
2026-06-27 19:16:46 +00:00
Charles GTE
610d443afc
Dev ( #69 )
...
* fix: pgdump-cluster (#68 )
* feat: add as_str/from_str to PostgresDumpFormat
* feat: resolve pg_dumpall/psql binary names
* feat: add include_globals field to database config
* feat: add pg_dumpall/psql globals dump and apply
* feat: add postgres backup bundle (manifest + build + resolve)
* feat: bundle globals into postgres backup when include_globals is set
* feat: replay globals before pg_restore when backup archive is a bundle
* refactor: bind FD restore tempdir guard once to clear unused warnings
* docs: demonstrate include_globals in sample databases.json
* chore: silence test-only re-export warning in non-test builds
* revert: remove include_globals feature, restore plain pg_dump/pg_restore
* feat: add pg_dumpall/psql binary names and is_superuser check
* feat: add postgresql-cluster db type and config parsing
* feat: pg_dumpall cluster backup and psql restore
* feat: route postgresql-cluster through PostgresClusterDatabase
* docs: add postgresql-cluster sample to databases.json
* refactor: split cluster mode into cluster/ module (backup, restore, database)
* test: mirror cluster tests into src/tests/domain/cluster/
* feat: add-gcs-storage-provider (#70 )
* fix: refactoring
* chore: add google-cloud-storage and google-cloud-auth deps
* feat: add GCS provider config model
* feat: add GCS credential, client, and stream-source helpers
StreamSource bridges build_stream's Send-only byte stream into the SDK's
StreamingSource (which send_buffered requires to be Send+Sync+'static) via a
bounded mpsc channel, avoiding any change to the shared UploadStream type.
* feat: implement GCS StorageProvider upload
* feat: register google-cloud-storage provider in factory
* test: GCS upload roundtrip against fake-gcs-server
* fix: format GCS bucket as projects/_/buckets/<name> in upload_with_client
write_object rejects the bare bucket id with "malformed bucket name"; the
production provider passed config.bucket_name unformatted, so real uploads
would always fail. Format once in upload_with_client so prod and the
fake-gcs-server test share the corrected path.
* style: cargo fmt GCS provider files
* fix: gcs
* fix: azure (#71 )
2026-06-27 21:14:21 +02:00
Charles GTE
16a37e033e
fix: azure ( #71 )
2026-06-27 20:51:47 +02:00
Charles GTE
29ca5a317b
feat: add-gcs-storage-provider ( #70 )
...
* fix: refactoring
* chore: add google-cloud-storage and google-cloud-auth deps
* feat: add GCS provider config model
* feat: add GCS credential, client, and stream-source helpers
StreamSource bridges build_stream's Send-only byte stream into the SDK's
StreamingSource (which send_buffered requires to be Send+Sync+'static) via a
bounded mpsc channel, avoiding any change to the shared UploadStream type.
* feat: implement GCS StorageProvider upload
* feat: register google-cloud-storage provider in factory
* test: GCS upload roundtrip against fake-gcs-server
* fix: format GCS bucket as projects/_/buckets/<name> in upload_with_client
write_object rejects the bare bucket id with "malformed bucket name"; the
production provider passed config.bucket_name unformatted, so real uploads
would always fail. Format once in upload_with_client so prod and the
fake-gcs-server test share the corrected path.
* style: cargo fmt GCS provider files
* fix: gcs
2026-06-27 20:37:22 +02:00
Charles GTE
01f5d34c96
fix: pgdump-cluster ( #68 )
...
* feat: add as_str/from_str to PostgresDumpFormat
* feat: resolve pg_dumpall/psql binary names
* feat: add include_globals field to database config
* feat: add pg_dumpall/psql globals dump and apply
* feat: add postgres backup bundle (manifest + build + resolve)
* feat: bundle globals into postgres backup when include_globals is set
* feat: replay globals before pg_restore when backup archive is a bundle
* refactor: bind FD restore tempdir guard once to clear unused warnings
* docs: demonstrate include_globals in sample databases.json
* chore: silence test-only re-export warning in non-test builds
* revert: remove include_globals feature, restore plain pg_dump/pg_restore
* feat: add pg_dumpall/psql binary names and is_superuser check
* feat: add postgresql-cluster db type and config parsing
* feat: pg_dumpall cluster backup and psql restore
* feat: route postgresql-cluster through PostgresClusterDatabase
* docs: add postgresql-cluster sample to databases.json
* refactor: split cluster mode into cluster/ module (backup, restore, database)
* test: mirror cluster tests into src/tests/domain/cluster/
2026-06-27 17:23:57 +02:00
github-actions[bot]
0b7b7ef59b
chore: release 1.13.1
1.13.1
2026-06-25 12:58:08 +00:00
Charles GTE
038c5523b7
fix: download-crash-large-files ( #67 )
...
* fix(restore): add ProgressTracker for download progress logging
* fix(restore): stream backup download to disk instead of buffering in RAM
* chore(restore): add download diagnostics + exact byte logging
* refactor(restore): drop ProgressTracker, keep streaming download
* feat(restore): drive download progress from RestoreInfo.size
* fix(restore): accept integer or string for RestoreInfo.size
* fix(restore): show raw bytes in download progress log
* fix(restore): collapse progress to highest milestone per chunk
* fix: downloader.rs
2026-06-25 14:55:49 +02:00
github-actions[bot]
ea010ce713
chore: release 1.13.0
1.13.0
2026-06-21 14:41:22 +00:00
Charles GTE
8897568281
Merge pull request #66 from Portabase/feat/az-blob-storage-2
...
feat: az-blob-storage
2026-06-21 16:39:12 +02:00
Charles GTE
66cad4e12e
fix: az blog storage tests
2026-06-21 16:22:51 +02:00
Charles GTE
221ed4e7e1
feat: add azure blob storage support
2026-06-20 19:38:00 +02:00
Charles GTE
84735ac399
feat(storage): spike Azure Blob SAS auth + block round-trip against Azurite
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-20 17:49:54 +02:00
Charles GTE
f7639de096
build: add azure_storage_blob and azure_core dependencies
2026-06-20 17:39:10 +02:00
github-actions[bot]
e504d09cb3
chore: release 1.12.3
1.12.3
2026-06-20 13:00:11 +00:00
Charles GTE
0363b300a4
Merge pull request #65 from Portabase/dev
...
Dev
2026-06-20 14:58:03 +02:00
Charles GTE
bf6e7d41ab
fix: Dockerfile
2026-06-20 14:40:37 +02:00
Charles GTE
2c7065ae95
Merge pull request #64 from pcrosthwaite/feature-backup-timeout-on-large-db
...
Support large MySQL and MariaDb databases
2026-06-20 14:38:26 +02:00
Charles GTE
1fece577cc
fix: tests and config.rs and backup.rs args
2026-06-20 14:36:09 +02:00
Charles GTE
273475fa3b
Merge branch 'dev' into feature-backup-timeout-on-large-db
2026-06-20 13:02:14 +02:00
Charles GTE
628c017584
Merge pull request #63 from tobfel/tf-main
...
docs: add Windows build and run guide / and fix(postgres): resolve pg_dump/pg_restore path cross-platform
2026-06-20 12:53:31 +02:00
Charles GTE
f02218708a
fix: windows-release.yml
2026-06-20 12:52:53 +02:00
Charles GTE
16152328b0
fix: extract the env variable to the settings.rs and some refactoring, and the trigger in windows-release.yml
2026-06-20 12:31:01 +02:00
Peter Crosthwaite
7328827435
Fix mysqldump timeout on large database backups
...
- Add mysql:8.4 client tools stage to Dockerfile so the real mysqldump
binary (with --network-timeout) takes PATH precedence over MariaDB's
mysqldump symlink, which lacks this flag
- Use --network-timeout in MySQL backup command; sets net_read_timeout and
net_write_timeout to 86400s for the duration of the dump
- Simplify config: replace net_read_timeout/net_write_timeout/max_allowed_packet
with a single max_packet_size field (optional, defaults to 512M)
- Log mysqldump/mariadb-dump client version as a debug message before each backup
2026-06-20 18:06:21 +10:00
Peter Crosthwaite
348eaac81b
Added config options for setting timeouts on mysql/mariadb
2026-06-20 07:51:18 +10:00
tf
0f6c93ecd0
fix encoding
2026-06-19 16:31:21 +02:00
tf
befec0deae
Windows Build workflow
2026-06-19 16:01:45 +02:00
tf
2052ab0ff5
fix(postgres): resolve pg_dump/pg_restore path cross-platform
2026-06-19 15:27:45 +02:00
tf
461e92d67e
docs: add Windows build and run guide
2026-06-19 15:22:24 +02:00
github-actions[bot]
23678bf2d6
chore: release 1.12.2
1.12.2
2026-06-19 10:00:23 +00:00
Charles GTE
02105a8171
Merge pull request #62 from Portabase/fix/password-slash
...
fix: password-slash
2026-06-19 11:58:26 +02:00
charles-gauthereau
f94656a39b
fix: postgres password slash
2026-06-19 11:29:51 +02:00
Charles GTE
b94ff4e987
Merge branch 'main' into dev
2026-06-09 19:18:38 +02:00
github-actions[bot]
dc32c442f3
chore: release 1.12.1
1.12.1
2026-06-07 18:06:37 +00:00
Charles GTE
1453851555
Merge pull request #61 from Portabase/fix/cpu-ram-crash
...
fix: cpu-ram-crash
2026-06-07 20:04:25 +02:00