Skip to content

chore(sync): integrate Dokploy canary through eaffeba - #46

Merged
Bl4ckBl1zZ merged 16 commits into
mainfrom
automation/dokploy-upstream-sync
Oct 26, 2026
Merged

Bl4ckBl1zZ merged 16 commits into
mainfrom
automation/dokploy-upstream-sync

Conversation

@Bl4ckBl1zZ

@Bl4ckBl1zZ Bl4ckBl1zZ commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

What is this PR about?

This PR integrates Dokploy upstream canary through eaffeba4a (2026-10-26). The fork last synced at 3efa90ea0 in #45, so the range is 3efa90ea0..eaffeba4a: 11 commits across 8 upstream changes. All of them are fixes; there are no new features.

Upstream changes:

Integration review

The merge had no conflicts. Overlap with fork-only code:

  • routers/settings.ts updateServer: upstream's new getDockerResourceType("dokploy") guard lands above the fork's update path. The fork still calls reloadDockerResource("dokploy", undefined, data.latestVersion), which keeps the running image's repository (GHCR fork namespace) and the start-first Swarm update. The fork runs as the dokploy Swarm service, so the guard passes.
  • utils/docker/utils.ts: the new undecryptable-env check sits after the fork's vault-reference check in prepareEnvironmentVariables; both are kept.
  • services/docker.ts: the log-search rewrite uses local exec, which the fork doesn't change.

Fork behavior checked:

  • Removed license gating: no hasValidLicense, isEnterpriseCloud or licenseKey in non-test code.
  • Untouched areas: the range does not touch Cloudflare Tunnel, Tailscale, Halifax CI, deployment isolation, GHCR publish/release, versioning or remoteStream.ts; the pipeBetweenServers unpipe/resume fix is still present.
  • Lint: two noUnusedTemplateLiteral errors inherited from upstream's services/docker.ts, fixed in 3840dfec1.

CLAUDE.md Product Overview is unchanged: this range adds no features.

Migrations, dependencies, environment

  • Migrations: none. migration:generate reported "No schema changes" on both runs (the compose.ts change is a Zod default only).
  • Dependencies: none; pnpm install --frozen-lockfile passes.
  • Environment: no new variables.
  • OpenAPI: regenerated (654 endpoints); compose.delete deleteVolumes becomes optional.

Verification (local)

  • pnpm install --frozen-lockfile: pass
  • Migration generation twice: pass, "No schema changes" both times
  • generate:openapi: pass (654 endpoints)
  • pnpm run format-and-lint: pass (0 errors, after 3840dfec1)
  • Typecheck (pnpm run typecheck --checkers 2) for packages/server, apps/dokploy, apps/api and apps/schedules: pass
  • Vitest: 1571 passed, 11 skipped, 4 failed before the test fix below. The 4 are the application.real.test.ts REAL deployment tests, which need docker build / nixpacks build; this machine has neither binary. These are infra-only failures, the same as in chore(sync): integrate Dokploy canary through 5df820a #38–chore(sync): integrate Dokploy canary through 3efa90e #45.
  • Test fix: upstream's new update-server.test.ts expected upstream's inline spawnAsync("docker", ["service", "update", …]). The fork updates through reloadDockerResource("dokploy", undefined, latestVersion) (image-repo preservation), so the test failed with the shared mock. I changed the test to assert the fork's call instead (9699177e8); the fork's code is unchanged and all 4 tests in the file pass.
  • Production build with an ephemeral BETTER_AUTH_SECRET (never printed or stored): pass

Hosted checks

None ran. GitHub Actions created no runs for this PR, so it stays a draft and is not auto-merged: the rule requires every hosted check to pass. Mergeability against main is clean.

This is the same outage as #45: no workflow in this repo has run since Release on 2026-10-18 21:21 UTC, and the push of #45's merge (2b7355732) to main didn't start Release either.

  • Repo Actions are enabled (allowed_actions=all), and the "Pull Request", "Release" and GHCR workflows are all active.
  • I tried waiting 12 minutes after opened, closing and reopening the PR, and pushing an empty commit (543529622), polling 5 minutes after each. Every attempt gave 0 runs.

Next step: check the repo's Actions tab and the account's Actions/billing status. Once runs are created again, pushing to this branch (or the next scheduled sync) will run the checks.

Risk / rollout / rollback

Risk is low: small bug fixes, no migrations or dependency changes.

Checklist

  • You created a dedicated branch based on the canary branch. (This branch is based on the fork's main and integrates upstream canary.)
  • You have read the suggestions in the CONTRIBUTING.md file https://github.com/Dokploy/dokploy/blob/canary/CONTRIBUTING.md#pull-request
  • You have tested this PR in your local instance. (Automated checks and a production build ran locally; no live Dokploy instance was changed.)

Issues related (if applicable)

Not applicable for this upstream integration PR.

🤖 Generated with Claude Code

mudravadev and others added 15 commits October 25, 2026 16:57
…date-server-no-service

fix(server): fail fast when update is triggered without a dokploy docker resource
…oy#5666)

Deleting a compose service from the project page called compose.delete
without deleteVolumes, which the schema required, so the request failed
validation. Defaulting it to false matches the service-page dialog's
default and keeps API callers that omit it working.

Closes Dokploy#5658
…ret-decrypt

fix(encryption): keep env vars readable after leaving the legacy auth secret
…e-poll

fix(environment): keep saved env in the editor after save
…s-form

fix(cluster): load saved replicas and registry in cluster settings
…ploy#5682)

* fix(deploy): skip untagged GHCR package events in docker webhook

GHCR sends a registry_package event for every manifest of a push,
including untagged per-platform manifests and attestations. Those had
no tag to compare, so each one triggered a deployment of the configured
image. Answer 200 and skip them instead.

Refs Dokploy#5681

* test(deploy): cover docker webhook tag handling

Refs Dokploy#5681
…okploy#5667)

* fix(logs): return empty result when readLogs search has no matches

getContainerLogs piped docker logs into grep, so a search with no
matches exited with code 1 and the readLogs endpoints answered 500.
tail was also applied before grep, so only the last N log lines were
searched.

When a search is given, grep the logs (still bounded by since) and
apply tail to the matching lines instead. The pipe now ends with tail,
so no matches returns an empty string.

Closes Dokploy#5621

* fix(logs): surface unreadable logs when a search has no matches

grep also filters out Docker's own error message, so a failed log read
looked like a search with no matches. When a search returns nothing,
run docker logs --tail 0 to confirm the logs are readable, which throws
with Docker's error if they are not.

Move the search pipeline into buildLogSearchCommand and test it against
real shell output: no matches, matches older than the last tail lines,
tail on matches, and search text with single quotes.

* fix(logs): keep partial output when a log search exceeds the exec buffer

The search read had moved outside the try/catch that returns partial
stdout when exec exceeds its maxBuffer, so a search with a lot of
matching output failed instead of returning what was read. Share that
recovery between the search and plain reads; the readability check
still throws.

* fix(logs): stop grep reading a search starting with "-" as an option

The search regex allows a leading "-", so a search like "-v" was parsed
by grep as an option. Since the pipe ends with tail, grep's usage error
came back as an empty result. Pass "--" before the pattern and test a
search for "-v" against real shell output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: bbf8349b-db71-4d33-9710-14963f84cfbd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Bl4ckBl1zZ Bl4ckBl1zZ closed this Oct 26, 2026
@Bl4ckBl1zZ Bl4ckBl1zZ reopened this Oct 26, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Bl4ckBl1zZ
Bl4ckBl1zZ marked this pull request as ready for review October 26, 2026 13:45
@Bl4ckBl1zZ
Bl4ckBl1zZ merged commit 152119b into main Oct 26, 2026
1 check passed
@Bl4ckBl1zZ
Bl4ckBl1zZ deleted the automation/dokploy-upstream-sync branch October 26, 2026 13:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants