Commit Graph
200 Commits
Author SHA1 Message Date
jarek d33185d1fa container updates respect the new image's command/entrypoint 2026-08-09 10:31:28 +02:00
jarek 1c1d7979d7 activity log times now honor the configured timezone 2026-08-09 10:31:27 +02:00
jarek 8f47eef1b7 GitLab and Harbor registries no longer report a misleading auth error when browsing 2026-08-09 10:31:27 +02:00
jarek b287cee31f registry browser shows tag size and date for self-hosted registries, loaded on expand 2026-08-09 10:31:27 +02:00
jarek 5f8fc71c73 backup volume picker shows every bind mount when two containers share a container path 2026-08-09 10:31:27 +02:00
jarek 7bb688197a Google Cloud backup destinations now use a service-account JSON key 2026-08-09 10:31:27 +02:00
jarek 019bea222e S3 backup destinations take an AWS region with a region quick-pick 2026-08-09 10:31:27 +02:00
jarek 3d1b383ad7 snapshots from another Dockhand instance sharing the repo now appear as restorable orphans 2026-08-09 10:31:27 +02:00
jarek 5adac5e19e a stack restored to new locations always keeps its compose file and stays internal 2026-08-09 10:31:27 +02:00
jarek bd06b340c5 direct remote environments - remote stacks dir configurable, for putting the whole stack onto the remote 2026-08-09 10:31:27 +02:00
jarek 86ef3f743b configurable default homepage 2026-08-09 10:31:27 +02:00
jarek 1cec7d0814 release housekeeping 2026-08-09 10:31:27 +02:00
jarek a115a5f539 release housekeeping for 1.0.40 2026-07-31 10:10:56 +02:00
jarek 188331a398 bump docker-compose to 5.3.1-r3 2026-07-31 10:10:56 +02:00
jarek 31e19b57b5 center container, stack, image and network modals with consistent margins 2026-07-31 10:10:56 +02:00
jarek 766a206055 header clock falls back to the default timezone instead of utc 2026-07-31 10:10:56 +02:00
jarek 2532c69d4a default pangolin public urls to https from the ssl label 2026-07-31 10:10:56 +02:00
jarek 6a6e82a481 reach own docker daemon over tcp on socket-proxy setups; re-run host detection when an environment is added or edited; keep scanner on the host socket 2026-07-31 10:10:56 +02:00
jarek 0a9d4ad10f validate git repo urls and refs, require a secret for webhook triggers, tidy internal endpoint comments 2026-07-31 10:10:56 +02:00
jarek c18ee21a66 git stack source badge with forge-aware icons and commit hash 2026-07-31 10:10:56 +02:00
jarek 9bc4eaa47b small ui polish: loading state, relative timestamps, log-marker formatting, wider tooltips, type tidy-ups 2026-07-31 10:10:55 +02:00
jarek 8a32bc377d backups ui: group repo snapshots in a datagrid, gate cancel when unstoppable, relative timestamps 2026-07-31 10:10:55 +02:00
jarek e3c07f32da backup engine fixes: shared-repo unlock, non-root uid reads, lock release, local-path repo, backblaze key id 2026-07-31 10:10:55 +02:00
jarek e700b5b6aa restore reproduces the stack as an internal stack with its secrets 2026-07-31 10:10:55 +02:00
jarek 25f10616a5 exclude docker sockets and host system paths from volume backups 2026-07-31 10:10:55 +02:00
Björn Strausmann 36dac8b030 refactor(stacks): plumb sourceType through requireComposeFile to avoid redundant lookup
startStack, restartStack, stopStack, and downStack each ran a separate
getStackSource query just to determine isGitStack for useOverrideFile,
even though requireComposeFile -> getStackComposeFile already looks up
the same stack_sources record.

Return sourceType from getStackComposeFile (GetComposeFileResult) and
requireComposeFile (RequireComposeResult), and have all four callers
read result.sourceType instead of querying the database again. No
behavior change: useOverrideFile is still set to true exactly when the
stack's source type is 'git'.
2026-07-31 04:58:47 +02:00
Björn Strausmann 144a73a10a fix(stacks): apply env override file on stop/down for git stacks (#1313)
startStack and restartStack compute isGitStack and pass useOverrideFile
accordingly, so executeLocalCompose writes .env.dockhand with the DB
non-secret overrides before invoking docker compose. stopStack and
downStack never set this option, so whenever a .env file exists in the
stack's working directory (e.g. committed alongside compose.yaml in a
git stack), the legacy shell-env fallback in executeLocalCompose is
suppressed and .env.dockhand is never written or attached via
--env-file. Any required variable that only exists as a Dockhand panel
override then fails interpolation on stop/down, even though the same
stack deploys and starts successfully.

Mirror startStack/restartStack: compute isGitStack from the stack
source and pass useOverrideFile through in both operations.
2026-07-31 04:58:47 +02:00
Solaris-star f24f42116e fix(environments): allow deleting disconnected environments
Signed-off-by: Solaris-star <[email protected]>
2026-07-29 10:49:53 +02:00
BrX 0b6305ba2c fix: remove duplicate native title from Git badge tooltip
The badge inside Tooltip.Trigger had both a native title attribute
and Tooltip.Content with the same commit info, causing two overlapping
tooltips. Remove the title; keep Tooltip.Content as the sole tooltip.
The fallback branch (no commit hash) retains its title attribute.
2026-07-27 18:09:18 +02:00
BrX a7e457bdb4 feat: display last commit hash in Git source badge
Show the short commit hash next to 'Git' in the stack source column.
When a commit hash is available, the badge reads 'Git abc1234' with
a tooltip showing the full hash, repo URL, and branch. Falls back
to the original 'Git' label when no commit is recorded yet (e.g.
before first deploy).
2026-07-27 18:09:18 +02:00
jarek 49809865dc 1.0.39 2026-07-26 10:27:12 +02:00
jarek 123e04d17f 1.0.38 2026-07-25 08:45:12 +02:00
jarek 64b6dcd744 1.0.38 2026-07-25 08:41:01 +02:00
Nenad StojanovikjandCursor 9f09d60a83 Allow viewing Git stack YAML
Open Git-sourced stack compose files in a read-only editor and graph while keeping repository settings separate.

Co-authored-by: Cursor <[email protected]>
2026-07-21 05:49:51 +02:00
jarek c718ac9a84 1.0.37 2026-07-11 15:31:52 +02:00
jarek 685132ff89 1.0.36 2026-06-27 15:15:54 +02:00
jarek ce12d7ae9f 1.0.35 2026-06-19 08:21:22 +02:00
jarek efb634701c 1.0.34 2026-06-17 08:21:38 +02:00
Pascal GUINETandClaude Opus 4.8 aa45be6844 SYS-11240 Address review feedback on Harbor catalog/search fallback
- isHarborRegistry: derive scheme and port from the registry URL via
  parseRegistryUrl instead of hardcoding https:// so HTTP-only mirrors and
  non-443 ports are detected (same scheme handling as getRegistryAuthHeader).
- isHarborRegistry: only cache the detection result when a definitive answer
  was obtained; a transient network error no longer pins "not Harbor" for the
  whole TTL and keeps returning _catalog 403s after Harbor recovers.
- getHarborBasicAuth: trim username/password (pasted credentials with trailing
  whitespace silently broke Basic auth).
- harborListRepositories: implement real cross-project pagination for the
  no-orgPath case (enumerate every project and all repos, paginate the
  flattened list) so >100 projects / >100 repos no longer truncate silently
  with a hardcoded hasMore=false.
- harborSearchRepositories: sanitize the search term against Harbor's query
  grammar (, = ~ ( )) so special characters can't break or alter the q filter;
  paginate the project list as well.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-16 09:08:46 +02:00
Pascal GUINETandClaude Opus 4.6 0eaf52fa66 SYS-11240 Translate all code comments from French to English
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-06-16 09:08:46 +02:00
Pascal GUINETandClaude Opus 4.6 eb5cf32d68 Add Harbor fallback for catalog and search endpoints
Harbor denies access to the V2 _catalog endpoint for robot accounts
(scope registry:catalog:* returns an empty JWT). This adds automatic
Harbor detection and falls back to the native Harbor project API
(/api/v2.0/projects/{name}/repositories) for both catalog listing
and image search.

- Detect Harbor via WWW-Authenticate header + /api/v2.0/ping (cached 5min)
- List repositories through Harbor project API with pagination
- Search repositories using Harbor's q=name=~ filter
- Transparent fallback: no configuration change required

Fixes #360

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-06-16 09:08:46 +02:00
jarek 83c3a5ea09 1.0.33 2026-06-15 14:56:51 +02:00
Jarek Krochmalski d465ecfe96 readme and screenshots 2026-06-08 18:08:42 +02:00
David Weston fd9b18ea31 Explain choice of default value 2026-06-07 20:03:34 +02:00
David Weston 89505713f1 Manually adjust snapshots 2026-06-07 20:03:34 +02:00
David Weston 085f03c178 Revert default value 2026-06-07 20:03:34 +02:00
David Weston c06d794b92 Update migration snapshot 2026-06-07 20:03:34 +02:00
undirectlookable b7a8cca387 feat(notifications): add Bark push support
Add Bark as a supported Apprise notification protocol.

Supported URL formats:
- bark://bark_key uses the official Bark server at https://api.day.app/
- bark://host/bark_key uses a custom Bark server over HTTP
- barks://host/bark_key uses a custom Bark server over HTTPS

Bark notifications are sent with POST JSON payloads containing the device key, title, and body. The notification settings modal now
lists Bark examples in the Apprise URL placeholder and support text.
2026-06-06 17:04:59 +02:00
jarek 3cbcfa3cdb 1.0.32 2026-06-06 16:18:05 +02:00
jarek 00bd09df55 1.0.31 2026-05-30 12:23:36 +02:00