@or3/cloud 0.1.65 → 0.1.66
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/README.md +5 -0
- package/dist/cli.mjs +10 -2
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -98,6 +98,11 @@ Update recovery reads the authenticated pre-update snapshot recorded in
|
|
|
98
98
|
including its data and release assets, before clearing the pending operation.
|
|
99
99
|
Legacy `adopt-source-*` directories are preserved outside managed backup
|
|
100
100
|
retention and are not treated as authenticated restore points.
|
|
101
|
+
Backups from releases before authentication tags existed are also preserved:
|
|
102
|
+
`backup list` and retention skip `backup-*` entries with no `manifest.auth` and
|
|
103
|
+
print a warning. They do not sign, migrate, or delete those archives. An existing
|
|
104
|
+
but invalid tag remains an error; restore, recovery, and export still require
|
|
105
|
+
valid deployment authentication.
|
|
101
106
|
Backup artifacts are allocated in that journal before archiving, fully
|
|
102
107
|
revalidated before success is reported, and safely removed by `recover` if a
|
|
103
108
|
hard interruption leaves an incomplete artifact. A standalone backup and a
|
package/dist/cli.mjs
CHANGED
|
@@ -31,7 +31,7 @@ import { fileURLToPath } from "node:url";
|
|
|
31
31
|
import { createGunzip } from "node:zlib";
|
|
32
32
|
var execFile = promisify(execFileCallback);
|
|
33
33
|
var PACKAGE_ROOT = resolve(fileURLToPath(new URL("../", import.meta.url)));
|
|
34
|
-
var PACKAGE_VERSION = "0.1.
|
|
34
|
+
var PACKAGE_VERSION = "0.1.66";
|
|
35
35
|
var IMAGE_REPOSITORY = "ghcr.io/saluana/or3-chat";
|
|
36
36
|
var ASSET_ROOT = resolve(fileURLToPath(new URL("../assets/", import.meta.url)));
|
|
37
37
|
var STATE_SCHEMA_VERSION = 1;
|
|
@@ -1843,6 +1843,14 @@ async function enumerateBackups(directory) {
|
|
|
1843
1843
|
throw new Error(`Backup store contains an unexpected artifact ${join(backupsRoot, entry)}. Refusing to use it for retention; inspect or remove it explicitly.`);
|
|
1844
1844
|
}
|
|
1845
1845
|
const path = join(backupsRoot, entry);
|
|
1846
|
+
try {
|
|
1847
|
+
await lstat(join(path, "manifest.auth"));
|
|
1848
|
+
} catch (error) {
|
|
1849
|
+
if (error.code !== "ENOENT")
|
|
1850
|
+
throw error;
|
|
1851
|
+
console.warn(`Preserving unauthenticated backup ${entry}: no manifest.auth; excluded from managed backup listing and retention.`);
|
|
1852
|
+
continue;
|
|
1853
|
+
}
|
|
1846
1854
|
const manifest = await readManifest(path, directory);
|
|
1847
1855
|
if (manifest.backupId !== entry) {
|
|
1848
1856
|
throw new Error(`Backup directory ${path} does not match manifest ID ${manifest.backupId}. Refusing to use it for retention.`);
|
|
@@ -2746,7 +2754,7 @@ async function backupListCommand(directory) {
|
|
|
2746
2754
|
const loaded = await loadManaged(directory);
|
|
2747
2755
|
const backups = await enumerateBackups(loaded.directory);
|
|
2748
2756
|
if (backups.length === 0) {
|
|
2749
|
-
console.log(`No backups
|
|
2757
|
+
console.log(`No authenticated backups are available for ${loaded.directory}. Run "npx @or3/cloud backup" to create one.`);
|
|
2750
2758
|
return;
|
|
2751
2759
|
}
|
|
2752
2760
|
console.log(`OR3 Cloud backups for ${loaded.directory} (${backups.length}):`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@or3/cloud",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.66",
|
|
4
4
|
"description": "Install and operate the OR3 Cloud container distribution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"or3Cloud": {
|
|
19
19
|
"dashboardUpdateProtocol": 1,
|
|
20
20
|
"dashboardUpdateMinimumSourceVersion": "0.1.40",
|
|
21
|
-
"imageDigest": "sha256:
|
|
22
|
-
"operatorImageDigest": "sha256:
|
|
23
|
-
"sourceRevision": "
|
|
21
|
+
"imageDigest": "sha256:fbe393d371bcd2cfdcdd4e8295cbb61c6ec11bbedccf84b88042ff28b8155fb6",
|
|
22
|
+
"operatorImageDigest": "sha256:7eda3cab7508094bc51a43bb0c10924a806eb6127160cd6fccbd77a8fda99e7f",
|
|
23
|
+
"sourceRevision": "79691e3f6b14ac7555aba765aee794263583d503"
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
"dist",
|