charles-gauthereau
eef182ad5f
fix
2026-07-21 23:57:15 +02:00
github-actions[bot]
f050fa35e0
chore: release 1.17.1
1.17.1
2026-07-21 21:29:30 +00:00
Charles GTE
90d55f7630
fix: backup folder name ( #86 )
...
* fix: support configurable backup file prefix (#83 )
* fix: backup folder name
* fix: ghcr publish agent image
---------
Co-authored-by: Antonin Jousson <18756890+Antoninj@users.noreply.github.com >
Co-authored-by: charles-gauthereau <charles.gauthereau@soluce-technologies.com >
2026-07-21 23:27:10 +02:00
github-actions[bot]
82ffb71496
chore: release 1.17.0
1.17.0
2026-07-11 10:08:21 +00:00
Charles GTE
20b3b58024
Merge pull request #80 from Portabase/fix/storage-encryption
...
fix/storage-encryption
2026-07-11 12:05:59 +02:00
charles-gauthereau
6cddc73565
Merge branch 'main' into fix/storage-encryption
...
# Conflicts:
# docker-compose.yml
2026-07-10 18:49:01 +02:00
github-actions[bot]
fd3b0076c0
chore: release 1.16.3
1.16.3
2026-07-09 09:11:23 +00:00
Charles GTE
334ab51125
fix: cron ( #79 )
...
* fix: cron log
---------
Co-authored-by: charles-gauthereau <charles.gauthereau@soluce-technologies.com >
2026-07-09 11:03:55 +02:00
github-actions[bot]
4df3fe2d0c
chore: release 1.16.2
1.16.2
2026-07-09 07:38:49 +00:00
Charles GTE
ec7715ca26
fix: cron ( #78 )
...
* fix: docker-compose.yml
* fix: cron
---------
Co-authored-by: charles-gauthereau <charles.gauthereau@soluce-technologies.com >
2026-07-09 09:36:53 +02:00
charles-gauthereau
32d4e22196
fix: status.rs
2026-07-08 22:24:50 +02:00
charles-gauthereau
f277c5485f
feat: decrypt encrypted storages in status ping
2026-07-08 20:52:17 +02:00
charles-gauthereau
585e0bea72
feat: accept encrypted storages markers in DatabaseStatus
2026-07-08 20:47:20 +02:00
charles-gauthereau
ee97c6056a
feat: add decrypt_json_gcm for encrypted status storages
2026-07-08 20:43:01 +02:00
charles-gauthereau
b37a4f2180
fix: docker-compose.yml
2026-07-07 18:43:30 +02:00
github-actions[bot]
1d15f40662
chore: release 1.16.1
1.16.1
2026-07-04 10:26:50 +00:00
Charles GTE
324a2ea3f2
fix: security ( #75 )
2026-07-04 12:24:37 +02:00
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