Commit Graph
283 Commits
Author SHA1 Message Date
Jarek Krochmalski d2d9501ef7 normalize mount targets so trailing slashes don't cause duplicate mounts 2026-09-06 17:03:47 +05:30
Jarek Krochmalski 306d40c4d1 backup restore preview works for view-only roles 2026-09-06 17:03:47 +05:30
Jarek Krochmalski a22ed6b809 resolve secret references pasted with surrounding quotes 2026-09-06 17:03:47 +05:30
Jarek Krochmalski 07f29f5afc deleting a secret provider warns which stacks it unbinds 2026-09-06 17:03:47 +05:30
Jarek Krochmalski 3a5dce99e2 back up stacks whose folder is bind-mounted over the data volume 2026-09-06 17:03:47 +05:30
Jarek Krochmalski 44223389d8 warn before saving a stack whose compose path won't survive a recreate 2026-09-06 17:03:47 +05:30
Jarek Krochmalski 63850bf5ae scope job status and cancel to the owner or an admin 2026-09-06 17:03:47 +05:30
Jarek Krochmalski bad04e0056 show Dockhand's own mark on its own container 2026-09-06 17:03:46 +05:30
Jarek Krochmalski db2b18571c refresh the app logo to a single SVG 2026-09-06 17:03:46 +05:30
Björn StrausmannandJarek Krochmalski 33c0c47855 fix(openapi): recognize bare object type + document existing field on validate (#1532)
* fix(openapi): recognize bare `object` type in annotation parser

The @openapi annotation parser's parseMiniSchema() only recognized the
bare words integer/number/boolean/string as scalar types. Any other
bare word - including `object`, used in 16 route annotations across
the codebase (e.g. severity:object, envVars:object on
POST /api/stacks/{name}/validate) - silently fell through to the
generic string fallback, so these fields were documented in
static/openapi.json as {"type": "string"} instead of
{"type": "object"}.

Add a dedicated branch for bare `object`, producing an opaque object
schema (no declared properties, since the bare word carries no shape
information of its own - a documented shape should use the existing
{...} form).

Verified no other bare non-standard word is used in any body:/resp-*:
annotation line across the 257 route files, so this closes the gap
completely for the current codebase.

Fixes #1531

* docs(openapi): document the existing field on POST /api/stacks/{name}/validate

The handler reads body.existing (an optional boolean, undocumented)
to control self-exclusion of the stack's own running containers/ports
from the cross-stack collision checks - the exact case the endpoint's
own summary advertises as handled. Without it, a client built strictly
from the OpenAPI document has no way to learn the field exists, and
will validate an existing stack the same way as a new one, silently
reintroducing false-positive collision findings against the stack's
own containers.

Add existing:boolean to the body: annotation, plus a one-line
description explaining the true/omitted semantics.

Fixes #1530

---------

Co-authored-by: Jarek Krochmalski <[email protected]>
2026-09-06 15:51:12 +05:30
Macley 14f75845ed Add crossorigin attribute to manifest link (#1513)
Reason why see: https://github.com/cloudflare/cloudflare-docs/blob/production/src/content/docs/cloudflare-one/access-controls/applications/http-apps/authorization-cookie/cors.mdx?utm_source=chatgpt.com and similiar: https://github.com/open-webui/open-webui/issues/1538
2026-09-04 18:45:33 +02:00
Jarek Krochmalski c3b6ae02fb Add files via upload 2026-09-04 07:53:10 +02:00
Bill Lee d62ada3bab Fix: collapsing container uptimes < 1 min to 1 sec (affects sorting) (#1395) 2026-09-03 11:21:21 +02:00
Jarek Krochmalski 049221ceff release housekeeping and generated api spec 2026-09-02 15:52:45 +02:00
Jarek Krochmalski e88975afc4 test connection on a saved environment without re-entering the token 2026-09-02 15:52:45 +02:00
Jarek Krochmalski 585d923e3c post api stacks honors the target environment in the body 2026-09-02 15:52:45 +02:00
Jarek Krochmalski 52d99fa295 escape dollar signs in env values when generating a compose file from a container 2026-09-02 15:52:45 +02:00
Jarek Krochmalski d03554c69d populate environment variables again finds the repo env file 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 34ceb74dc1 clearer git permission errors that match the credential type 2026-09-02 15:52:44 +02:00
Jarek Krochmalski ae754b3140 large image scans no longer fail when the scanner log rotates 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 9a3c52374c compose validate no longer flags a valid env_file 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 2d12085ae4 disable build cache no longer errors on deploy 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 4d09c9c76f local-path backup destinations validate the configured path 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 46a137316f faster incremental backups when multiple stacks share one repository 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 002f53ce78 optional stacks_dir flat layout for local stacks 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 3fa75c9702 drop the unused hawser stacks-dir column and layout 2026-09-02 15:52:44 +02:00
Jarek Krochmalski 5af4e69eb2 tighten permission checks and input validation across the api 2026-09-02 15:52:44 +02:00
Badal Singhandxd003 77686da02a feat(stacks): optional STACKS_DIR layout with Hawser display paths (#1482)
When STACKS_DIR is set, local managed stacks are stored in a flat
$STACKS_DIR/<stackName>/ layout instead of $DATA_DIR/stacks/<env>/<stack>/.
Existing stacks are not moved automatically and continue to resolve from
their existing locations. Invalid or unwritable STACKS_DIR values produce a
warning and fall back to $DATA_DIR/stacks instead of aborting startup. With
this layout, local stack names must be unique across environments.

Hawser agents report their remote stacks directory on hello. That path is
persisted on the environment as hawser_stacks_dir so compose APIs and the UI
can show host paths rather than Dockhand staging paths. Staging paths are
remapped to and from the remote stack dir for compose files, backups, and
environment settings. Backup restore may write under either the default
staging root or the configured STACKS_DIR.

Co-authored-by: xd003 <[email protected]>
2026-08-31 18:54:27 +02:00
Jarek Krochmalski ee4632a7b7 stacks page: env-var counts from sources, icon batching, and an in-order restart 2026-08-27 19:48:35 +02:00
Jarek Krochmalski a9b1998aad allow secret-less webhook triggers behind an env flag 2026-08-27 16:32:06 +02:00
Jarek Krochmalski 9a1f11c9b7 require the git permission for repository deploy/sync/test 2026-08-27 16:32:06 +02:00
Jarek Krochmalski cc48b1e14b bump svelte to 5.56.10 2026-08-27 16:32:05 +02:00
Jarek Krochmalski 0816672222 harden authentication and authorization on the user API 2026-08-27 11:31:35 +02:00
Jarek Krochmalski 5adb374c0d keepass secret provider fails closed when a group cannot be listed 2026-08-27 08:10:03 +02:00
Jarek Krochmalski d34a7733f7 validate and canonicalize outbound request hosts 2026-08-27 07:34:38 +02:00
Jarek Krochmalski 0d516be4dd sort by Disk I/O and Net I/O - the header cycles read/write and down/up 2026-08-27 07:34:38 +02:00
Jarek Krochmalski b1e7518096 release housekeeping 2026-08-27 07:34:38 +02:00
Jarek Krochmalski c7eb8542a1 pausing or resuming a backup schedule no longer clears the retention policy 2026-08-27 07:34:37 +02:00
Jarek Krochmalski e82b1aea89 optional Webhook column on the stacks list with a git stack's webhook id and copy-URL button 2026-08-27 07:34:37 +02:00
Jarek Krochmalski b04bc504f9 option to disable the session timeout 2026-08-27 07:34:37 +02:00
Jarek Krochmalski ef390e94ec internal cleanups and build config 2026-08-27 07:34:37 +02:00
Jarek Krochmalski fdca208795 git stacks can now set a custom icon 2026-08-27 07:34:37 +02:00
Jarek Krochmalski 58f712d432 environment API uses a write-only model for the tls key and hawser token 2026-08-27 07:34:37 +02:00
Jarek Krochmalski 9264a53a44 compose validate flags a service with no healthcheck and a defined-but-unused named volume 2026-08-27 07:34:37 +02:00
Jarek Krochmalski 909e9934d3 compose generated from a container now captures network config and resource limits 2026-08-27 07:34:37 +02:00
Jarek Krochmalski bd42cfaa1b coalesce concurrent secret-provider probes 2026-08-27 07:34:37 +02:00
Jarek Krochmalski fa1987add6 KeePassXC as a secret provider - pull secrets from a .kdbx via keepassxc-cli, bulk or inline refs 2026-08-27 07:34:37 +02:00
Jarek Krochmalski 674d80b178 release 1.0.44 2026-08-25 12:58:22 +02:00
Jarek Krochmalski a4e2637ea5 release housekeeping 2026-08-25 05:42:29 +02:00
Jarek Krochmalski d5d979aa5d hide tls certificate fields for backends that never use tls 2026-08-25 05:42:29 +02:00