diff --git a/src/lib/data/changelog.json b/src/lib/data/changelog.json index 6a7934e..15cb5f3 100644 --- a/src/lib/data/changelog.json +++ b/src/lib/data/changelog.json @@ -1,4 +1,26 @@ [ + { + "version": "1.0.47", + "date": "", + "comingSoon": true, + "changes": [ + { "type": "fix", "text": "back up stacks whose folder is bind-mounted over the data volume (#1533)" }, + { "type": "fix", "text": "backup restore preview now works for view-only roles (#1534)" }, + { "type": "feature", "text": "warn before saving a stack whose compose file location won't survive a container recreate (#1524)" }, + { "type": "fix", "text": "OpenAPI spec now types opaque object fields correctly and documents the validate 'existing' flag (#1531, #1530, PR#1532, @strausmann)" }, + { "type": "fix", "text": "\"always redeploy\" git stacks now force-recreate so config changes take effect (#1523)" }, + { "type": "fix", "text": "resolve secret references (op://, keepass://, ...) pasted with surrounding quotes (#1521)" }, + { "type": "fix", "text": "deleting a secret provider now warns which stacks it unbinds (#1522)" }, + { "type": "fix", "text": "deploy a 1:1-mounted local stack by file so its compose path label is preserved (#1514)" }, + { "type": "fix", "text": "store the compose path when a stack is created via the API without one (#1515)" }, + { "type": "fix", "text": "Microsoft Teams (via Workflows) accepts the new Power Automate webhook URL format (#1512)" }, + { "type": "fix", "text": "container shell sessions each keep their own live terminal when you switch between them (#1516)" }, + { "type": "fix", "text": "sort container uptimes under a minute correctly instead of tying them (PR#1395, @wrlee)" }, + { "type": "fix", "text": "load the web manifest through a Cloudflare tunnel by sending credentials (PR#1513, @Macleykun)" }, + { "type": "fix", "text": "copy the restic password over plain HTTP (#1488)" } + ], + "imageTag": "fnsys/dockhand:v1.0.47" + }, { "version": "1.0.46", "date": "2026-09-02", diff --git a/src/lib/openapi.generated.json b/src/lib/openapi.generated.json index ac8d59c..bcd8a41 100644 --- a/src/lib/openapi.generated.json +++ b/src/lib/openapi.generated.json @@ -9461,7 +9461,8 @@ "type": "boolean" }, "newerVersion": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -9488,7 +9489,7 @@ "currentImage": "string", "checkedAt": "string", "hasImageUpdate": true, - "newerVersion": "string" + "newerVersion": {} } ] } @@ -10016,7 +10017,8 @@ "type": "string" }, "uptime": { - "type": "string" + "type": "object", + "properties": {} }, "gcForced": { "type": "boolean" @@ -10025,19 +10027,24 @@ "type": "boolean" }, "process": { - "type": "string" + "type": "object", + "properties": {} }, "growth": { - "type": "string" + "type": "object", + "properties": {} }, "v8Heap": { - "type": "string" + "type": "object", + "properties": {} }, "system": { - "type": "string" + "type": "object", + "properties": {} }, "rssTracker": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -12585,7 +12592,8 @@ "branches": { "type": "array", "items": { - "type": "string" + "type": "object", + "properties": {} } } }, @@ -13163,10 +13171,12 @@ "type": "object", "properties": { "vars": { - "type": "string" + "type": "object", + "properties": {} }, "sources": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -13175,8 +13185,8 @@ ] }, "example": { - "vars": "string", - "sources": "string" + "vars": {}, + "sources": {} } } } @@ -14487,7 +14497,8 @@ "type": "object", "properties": { "vars": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -15476,7 +15487,8 @@ "type": "integer" }, "environment": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -15586,7 +15598,8 @@ "type": "object", "properties": { "icons": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -16344,7 +16357,8 @@ "type": "boolean" }, "result": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -16504,7 +16518,7 @@ "tags": [ "jobs" ], - "summary": "Poll a background job's status and accumulated output lines (no auth — job ids are unguessable UUIDs)", + "summary": "Poll a background job's status and accumulated output lines (owner or admin only)", "parameters": [ { "name": "id", @@ -16588,7 +16602,7 @@ "tags": [ "jobs" ], - "summary": "Request cancellation of a running background job (no auth — job ids are unguessable UUIDs)", + "summary": "Request cancellation of a running background job (owner or admin only)", "parameters": [ { "name": "id", @@ -16621,6 +16635,9 @@ } } } + }, + "404": { + "description": "Job not found" } }, "security": [ @@ -22801,7 +22818,8 @@ "type": "string" }, "config": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -22813,7 +22831,7 @@ "example": { "name": "string", "type": "string", - "config": "string" + "config": {} } } } @@ -22856,21 +22874,46 @@ "type": "string" }, "config": { - "type": "string" + "type": "object", + "properties": {} + }, + "stacksUsing": { + "type": "array", + "items": { + "type": "object", + "properties": { + "stackName": { + "type": "string" + }, + "environmentId": { + "type": "integer" + } + }, + "required": [ + "stackName" + ] + } } }, "required": [ "id", "name", "type", - "config" + "config", + "stacksUsing" ] }, "example": { "id": 0, "name": "string", "type": "string", - "config": "string" + "config": {}, + "stacksUsing": [ + { + "stackName": "string", + "environmentId": 0 + } + ] } } } @@ -22978,14 +23021,15 @@ "type": "string" }, "config": { - "type": "string" + "type": "object", + "properties": {} } } }, "example": { "name": "string", "type": "string", - "config": "string" + "config": {} } } } @@ -23232,7 +23276,8 @@ "type": "object", "properties": { "config": { - "type": "string" + "type": "object", + "properties": {} } } }, @@ -23307,7 +23352,8 @@ "type": "string" }, "config": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -24352,7 +24398,8 @@ "envVars": { "type": "array", "items": { - "type": "string" + "type": "object", + "properties": {} } }, "rawEnvContent": { @@ -24382,7 +24429,7 @@ "composePath": "string", "envPath": "string", "envVars": [ - "string" + {} ], "rawEnvContent": "string", "secretProviderId": 0, @@ -24543,6 +24590,9 @@ }, "currentComposePath": { "type": "string" + }, + "persistenceWarning": { + "type": "string" } }, "required": [ @@ -25057,7 +25107,8 @@ } }, "secretProvider": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -25075,7 +25126,7 @@ "injectedSecretKeys": [ "string" ], - "secretProvider": "string" + "secretProvider": {} } } } @@ -26100,7 +26151,8 @@ "type": "integer" }, "fix": { - "type": "string" + "type": "object", + "properties": {} }, "fixDescription": { "type": "string" @@ -26173,6 +26225,7 @@ "bearerAuth": [] } ], + "description": "Set existing:true when validating an already-deployed stack, so the stack's own running containers/ports are excluded from the cross-stack collision checks; omit it (or false) for a brand-new stack, where a name/port clash with a running stack of the same name must still be reported.", "requestBody": { "required": true, "content": { @@ -26183,6 +26236,9 @@ "compose": { "type": "string" }, + "existing": { + "type": "boolean" + }, "config": { "type": "object", "properties": { @@ -26193,12 +26249,14 @@ } }, "severity": { - "type": "string" + "type": "object", + "properties": {} } } }, "envVars": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -26806,19 +26864,24 @@ "type": "object", "properties": { "docker": { - "type": "string" + "type": "object", + "properties": {} }, "host": { - "type": "string" + "type": "object", + "properties": {} }, "runtime": { - "type": "string" + "type": "object", + "properties": {} }, "database": { - "type": "string" + "type": "object", + "properties": {} }, "stats": { - "type": "string" + "type": "object", + "properties": {} } }, "required": [ @@ -26904,7 +26967,8 @@ "type": "object", "properties": { "diskUsage": { - "type": "string" + "type": "object", + "properties": {} } } }, @@ -29484,7 +29548,8 @@ "findings": { "type": "array", "items": { - "type": "string" + "type": "object", + "properties": {} } }, "total": { @@ -29542,7 +29607,8 @@ "type": "integer" }, "summary": { - "type": "string" + "type": "object", + "properties": {} }, "images": { "type": "array",