Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
f5c21db
fix: mark session cookie as Secure when served over HTTPS
Souvik-Cyclic Aug 9, 2026
1f1acac
fix(settings): confine Traefik file read/write to the Traefik config …
bunlongheng Aug 12, 2026
1958969
fix: resolve 6 critical Dependabot alerts
narcisonunez Sep 3, 2026
341f38b
fix(notifications): add missing newline to ntfy database backup message
RezaRahemtola Sep 4, 2026
f25810f
Update Railpack versions in show.tsx
KingIronMan2011 Sep 6, 2026
9677843
chore(ci): update GitHub Actions to latest versions and fix zizmor fi…
maks-oleksyuk Sep 7, 2026
bda8124
Merge pull request #5351 from Dokploy/fix/dependabot-critical-securit…
Siumauricio Sep 8, 2026
9dcdb53
feat(transfer): move services between servers with their volumes, mou…
Siumauricio Sep 9, 2026
2c234d6
test(transfer): shrink pipe payload and set an explicit timeout so th…
Siumauricio Sep 9, 2026
9cae609
fix(auth): prefetch SSO state in SSR to prevent layout flash
imrja8 Sep 9, 2026
a6c1f30
fix(ui): standardize settings layout widths to full width
imrja8 Sep 9, 2026
f4cb26c
Merge pull request #5406 from imrja8/fix-settings-layout-width
narcisonunez Sep 9, 2026
d532870
Merge pull request #5407 from imrja8/fix-sso-flash
narcisonunez Sep 9, 2026
ec31739
Merge pull request #5396 from Dokploy/feat/transfer-service-between-s…
Siumauricio Sep 9, 2026
49b8214
feat(compose): add pull latest images on deploy toggle
Siumauricio Sep 9, 2026
3b1fec5
Merge pull request #5410 from Dokploy/feat/compose-pull-images
Siumauricio Sep 9, 2026
38d157a
fix(compose): move Fresh Volumes into a Danger Zone with typed confir…
Siumauricio Sep 9, 2026
88118cd
Merge pull request #5411 from Dokploy/fix/fresh-volumes-danger-zone
Siumauricio Sep 9, 2026
0c1dfe9
fix(vault): read Infisical secrets pulled in through an import
Sep 10, 2026
e70c880
test(vault): lock the precedence between two imports
Sep 10, 2026
f91b2e2
Merge pull request #5414 from aspatari/fix/infisical-imported-secrets
narcisonunez Sep 10, 2026
4cd4b83
fix(deps): bump next to 16.3.4 to patch critical RCE advisories
narcisonunez Sep 10, 2026
18d07c7
Merge pull request #5364 from maks-oleksyuk/chore/ci-update-actions
narcisonunez Sep 10, 2026
3269088
Merge pull request #5358 from KingIronMan2011/patch-1
narcisonunez Sep 10, 2026
a4a1d15
chore: sync hotfix from main into canary [skip ci]
Sep 10, 2026
9fa98de
Merge pull request #5350 from RezaRahemtola/fix/ntfy-database-backup-…
narcisonunez Sep 10, 2026
29cdc81
feat(compose): support AI models in Compose specification
EgerDev Sep 11, 2026
45dcdfc
test(compose): tighten models types and regression tests
EgerDev Sep 11, 2026
a90c2a6
Merge pull request #5418 from EgerDev/feat/compose-models
Siumauricio Sep 11, 2026
853ca33
Merge pull request #5416 from Dokploy/fix/critical-next-rce-16.3.4
Siumauricio Sep 11, 2026
26317e9
feat(ui): inline deployments filter bar and fix layout jumping
imrja8 Sep 12, 2026
1e9873b
fix(ui): change filter layout breakpoint to lg to prevent overflow on…
imrja8 Sep 12, 2026
0d6e984
fix: preserve application status when saving provider settings
roshanasingh4 Sep 13, 2026
e120340
test: cover status preservation for every provider save
roshanasingh4 Sep 13, 2026
a87a5c0
feat: account deletion for Dokploy Cloud
Siumauricio Sep 14, 2026
318ad36
feat: restrict self-service account deletion to cloud organization ow…
Siumauricio Sep 14, 2026
95b2712
fix(billing): pick a plan for the trial and warn before it expires
Siumauricio Sep 18, 2026
d00ae31
refactor(billing): drop the sendTestTrialEmail endpoint
Siumauricio Sep 18, 2026
f34151b
refactor(billing): drop the runTrialExpirationJob endpoint
Siumauricio Sep 18, 2026
14e0597
fix(billing): stop the reminder claim from rewriting stale metadata
Siumauricio Sep 18, 2026
0372304
fix(billing): one reminder at 1 day, guarded by an advisory lock
Siumauricio Sep 18, 2026
8236c31
Revert "fix(billing): one reminder at 1 day, guarded by an advisory l…
Siumauricio Sep 18, 2026
a0e1001
feat(trial-notifications): add email notification for expiring trials…
Siumauricio Sep 18, 2026
d7d75f7
Merge pull request #5477 from Dokploy/feat/trial-expiration-emails
Siumauricio Sep 18, 2026
f397c1a
chore: sync hotfix from main into canary [skip ci]
Sep 18, 2026
f2ba262
feat(ai): add Perplexity integration attribution
qirh Sep 18, 2026
3563f58
Merge branch 'Dokploy:canary' into fix/deployments-filter-bar-inline-…
imrja8 Sep 20, 2026
143dfca
fix: correct add-invitation form reset logic and select state
imrja8 Sep 21, 2026
c453ac3
fix(billing): allow switching billing interval during trial
Siumauricio Sep 23, 2026
a0e0574
Merge pull request #5515 from Dokploy/fix/trial-billing-interval-switch
Siumauricio Sep 23, 2026
5e0b021
fix(deps): resolve open Dependabot alerts
narcisonunez Sep 23, 2026
a0f1a51
Merge branch 'Dokploy:canary' into fix/add-invitation-form-reset
imrja8 Sep 26, 2026
52ea2ce
Merge branch 'Dokploy:canary' into fix/deployments-filter-bar-inline-…
imrja8 Sep 26, 2026
6215c7f
fix: redact S3 credentials in backup logs regardless of shell quoting
Souvik-Cyclic Sep 26, 2026
7b89d1f
fix: kill deployment log tail when the client disconnects early
Souvik-Cyclic Sep 27, 2026
3951247
fix(ui): unify tab header styles across backups, schedules, volume ba…
y4aniv Sep 28, 2026
c231c29
fix(cloud): load HubSpot chat widget for startup plan users
Siumauricio Sep 29, 2026
382fdfc
fix(cloud): remove HubSpot chat widget when dashboard unmounts
Siumauricio Sep 29, 2026
d0ec74f
Merge pull request #5538 from Dokploy/fix/hubspot-chat-widget
Siumauricio Sep 29, 2026
a0b6f23
Merge branch 'Dokploy:canary' into fix/add-invitation-form-reset
imrja8 Sep 29, 2026
7dc066a
Merge branch 'Dokploy:canary' into fix/deployments-filter-bar-inline-…
imrja8 Sep 29, 2026
4396451
fix: accept deploy webhook payloads up to 25 MB
Souvik-Cyclic Sep 29, 2026
e8be269
refactor: make deploy webhook body limit configurable via DEPLOY_WEBH…
Souvik-Cyclic Sep 29, 2026
72f2c4d
Merge pull request #5498 from imrja8/fix/add-invitation-form-reset
narcisonunez Sep 29, 2026
1c6d333
fix: parse deploy webhook bodies in the handler so the size limit can…
Souvik-Cyclic Sep 29, 2026
618a7df
Merge pull request #5455 from roshanasingh4/codex/preserve-app-status…
narcisonunez Sep 29, 2026
c18609a
refactor(ui): remove redundant responsive layout comment
imrja8 Sep 29, 2026
6e7934f
Merge pull request #5429 from imrja8/fix/deployments-filter-bar-inlin…
narcisonunez Sep 29, 2026
302754b
Merge pull request #5535 from y4aniv/fix/tab-headers-consistency
narcisonunez Sep 29, 2026
82545bf
revert: go back to a literal 25mb body limit for deploy webhooks
Souvik-Cyclic Sep 29, 2026
ff2e454
Merge pull request #5543 from Souvik-Cyclic/fix/webhook-body-size-5537
narcisonunez Sep 29, 2026
560e790
fix: preserve compose status when saving provider settings (#5544)
roshanasingh4 Sep 29, 2026
0d3a396
fix: count only physical disks in host Block I/O stats (#5540)
Souvik-Cyclic Sep 29, 2026
916bb50
fix: redact S3 credentials in backup logs regardless of shell quoting…
narcisonunez Sep 29, 2026
169bac2
Merge pull request #5529 from Souvik-Cyclic/fix/deployment-log-tail-l…
narcisonunez Sep 29, 2026
52f61ad
Merge pull request #5022 from Souvik-Cyclic/fix/secure-session-cookie…
narcisonunez Sep 29, 2026
cec5b65
Merge pull request #5482 from qirh/add-perplexity-attribution
narcisonunez Sep 29, 2026
c6a2b24
Merge branch 'canary' into feat/self-delete-account
Siumauricio Oct 1, 2026
90d522c
Merge pull request #5463 from Dokploy/feat/self-delete-account
Siumauricio Oct 1, 2026
84a1d70
Revert "fix(ui): standardize settings layout widths to full width"
imrja8 Oct 1, 2026
48504fd
Merge pull request #5561 from imrja8/revert-5406-fix-settings-layout-…
narcisonunez Oct 1, 2026
a4a13b9
fix(ui): resolve tooltips overlapping open modals on remote servers page
imrja8 Oct 4, 2026
35d26a8
fix(ui): prevent tooltips from getting stuck when server modals close
imrja8 Oct 4, 2026
2bc3741
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 4, 2026
5c19d1b
fix(terminal): prevent terminal from collapsing on zoom
imrja8 Oct 4, 2026
06b3bb2
fix(libsql): validate appName like the other database kinds
cevheri Oct 4, 2026
20575da
Merge pull request #5582 from imrja8/fix/terminal-collapse-on-zoom
narcisonunez Oct 5, 2026
5aa28bc
Merge pull request #5575 from imrja8/fix/tooltip-overlapping-modals
narcisonunez Oct 5, 2026
5ccc15f
fix(ui): prevent service header overflow on mobile
GlebsonS4ntos Oct 5, 2026
5be17d3
Merge pull request #5584 from libredb/fix/libsql-app-name-validation
Siumauricio Oct 5, 2026
949ac8e
fix(ui): prevent mobile service header overflow
GlebsonS4ntos Oct 5, 2026
7289a3f
fix(deps): bump next, shell-quote and proxy-addr for critical advisories
narcisonunez Oct 7, 2026
88cb057
Merge remote-tracking branch 'origin/canary' into dependabots-alerts
narcisonunez Oct 7, 2026
9992659
fix(deps): bump nodemailer and patch transitive high advisories
narcisonunez Oct 7, 2026
749bb2c
fix(server): let members list servers in server pickers
narcisonunez Oct 7, 2026
e8f236c
feat(dns): add optional zone to OVH provider
tomron Oct 7, 2026
2674eb2
fix(dns): enforce the configured OVH zone on record operations
tomron Oct 8, 2026
b329595
feat(logs-and-metrics): ship container logs and metrics to external p…
narcisonunez Oct 8, 2026
0b537a8
feat(enterprise): dual-mode branding with separate light/dark theme l…
imrja8 Oct 11, 2026
d277913
fix(enterprise): address review feedback for dual-mode branding
imrja8 Oct 11, 2026
0898642
fix(enterprise): preserve light-mode URLs when toggling dual branding…
imrja8 Oct 11, 2026
b4681b3
fix(backups): preserve service selection when changing database type
Oct 12, 2026
412516d
fix(gitlab): share one token refresh between concurrent callers
ahmedisam99 Oct 12, 2026
20701ba
test(gitlab): cover concurrent token refreshes
ahmedisam99 Oct 12, 2026
726664a
fix(ui): wrap and clamp service card description on environment page
Totopo27 Oct 12, 2026
3cc8158
feat(ui): make projects card clickable on home dashboard
Totopo27 Oct 12, 2026
c7ee043
Merge pull request #5614 from tomron/feat/ovh-optional-zone
narcisonunez Oct 12, 2026
29107d8
Merge pull request #5649 from imrja8/feat/dual-mode-branding
narcisonunez Oct 12, 2026
ccd26e9
Merge pull request #5655 from ahmedisam99/fix/gitlab-token-refresh-race
narcisonunez Oct 12, 2026
fe3912d
Merge pull request #5657 from Totopo27/feat/gh-5546-clickable-project…
narcisonunez Oct 12, 2026
aae2dd9
Merge pull request #5656 from Totopo27/fix/gh-5600-service-card-descr…
narcisonunez Oct 12, 2026
931f5c1
Merge pull request #5654 from olivier-drieux/fix/restore-backup-servi…
narcisonunez Oct 12, 2026
94f3815
fix(templates): cap visible tags so the Create button stays visible
manozzo Oct 12, 2026
a7d8dff
Merge pull request #5624 from Dokploy/feat/logs-and-metrics
imrja8 Oct 14, 2026
9e87b9e
Merge pull request #5613 from Dokploy/fix/member-server-list
imrja8 Oct 14, 2026
502d6c8
Merge branch 'canary' into dependabots-alerts
imrja8 Oct 14, 2026
bfe24f8
Update undici version to 6.28.1
imrja8 Oct 14, 2026
d9fe046
Merge pull request #5661 from manozzo/fix/template-card-tags-overflow
imrja8 Oct 14, 2026
e000675
Merge pull request #5517 from Dokploy/dependabots-alerts
narcisonunez Oct 14, 2026
b5473e6
feat(permissions): add AI module to enterprise custom roles
imrja8 Sep 20, 2026
cd9edb2
fix(permissions): resolve AI module authorization edge cases and test…
imrja8 Sep 20, 2026
293e197
fix: resolve cross-tenant access and granular role UI issues for AI s…
imrja8 Sep 20, 2026
bdefc02
fix: redact apiKey from getAll AI endpoint to prevent credential expo…
imrja8 Sep 20, 2026
a7d8378
fix(permissions): mask apiKey on ai.one, add audit logging, remove …
imrja8 Sep 20, 2026
2bfcac5
fix(ai): mask apiKey exposure, add audit logging, resolve masked-ke…
imrja8 Sep 20, 2026
3d67665
fix(ai): require update permission for stored key resolution, dedup…
imrja8 Sep 20, 2026
0049421
fix(ai): fix PermissionCtx type on resolveInputApiKey
imrja8 Sep 20, 2026
a9871f3
refactor(ai): DRY saveAiSettings and enforce strict NOT_FOUND validation
imrja8 Sep 20, 2026
5ff8d05
perf(ai): optimize permission evaluation and remove redundant DB queries
imrja8 Sep 20, 2026
37df4e4
fix: suppress EPIPE errors in pipeBetweenServers when target exits early
imrja8 Oct 12, 2026
16c22c7
chore(deps): bump brace-expansion and source-map-js in emails lockfile
narcisonunez Oct 15, 2026
471e91c
Merge pull request #5684 from Dokploy/fix/dependabot-high-emails
narcisonunez Oct 15, 2026
c867a3c
Merge pull request #5489 from imrja8/feat/ai-custom-role-permissions
narcisonunez Oct 15, 2026
136a09d
fix(settings): check server organization in traefik file endpoints
narcisonunez Oct 15, 2026
53464e9
Merge pull request #5070 from bunlongheng/fix/traefik-file-path-trave…
narcisonunez Oct 15, 2026
8377300
fix(billing): guard loadStripe behind key check for self-hosted insta…
imrja8 Oct 16, 2026
7430afd
fix: escape HTML and truncate long messages in Telegram notifications
imrja8 Oct 16, 2026
3e75dc6
Update packages/server/src/utils/notifications/utils.ts
imrja8 Oct 16, 2026
41cecde
fix: escape metadata fields and fix entity boundary off-by-one
imrja8 Oct 16, 2026
829f8af
fix(ui): fix server badge and appName overflow on mobile
imrja8 Oct 16, 2026
e38a980
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 16, 2026
a67d9e3
Merge pull request #5693 from imrja8/fix/guard-stripe-init-self-hosted
Siumauricio Oct 16, 2026
bef77ac
Merge pull request #5694 from imrja8/fix/telegram-notification-escape…
Siumauricio Oct 16, 2026
49d250a
Merge pull request #5590 from GlebsonS4ntos/fix/prevent-service-heade…
Siumauricio Oct 16, 2026
e0c8d80
fix: decode Route53 octal escapes in record names (#5553)
Souvik-Cyclic Oct 16, 2026
bf2b231
fix: resolve issue #5698 - Scheduled Docker cleanup prunes a stopped …
smartcalsystems-sketch Oct 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions .github/workflows/create-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,34 +14,34 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Get version from package.json
run: echo "VERSION=$(jq -r .version ./apps/dokploy/package.json)" >> $GITHUB_ENV
run: echo "VERSION=$(jq -r .version ./apps/dokploy/package.json)" >> "$GITHUB_ENV"

- name: Get latest GitHub tag
run: |
LATEST_TAG=$(git ls-remote --tags origin | awk -F'/' '{print $3}' | sort -V | tail -n1)
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
echo $LATEST_TAG
echo "LATEST_TAG=$LATEST_TAG" >> "$GITHUB_ENV"
echo "$LATEST_TAG"
- name: Compare versions
run: |
if [ "${{ env.VERSION }}" != "${{ env.LATEST_TAG }}" ]; then
if [ "$VERSION" != "$LATEST_TAG" ]; then
VERSION_CHANGED="true"
else
VERSION_CHANGED="false"
fi
echo "VERSION_CHANGED=$VERSION_CHANGED" >> $GITHUB_ENV
echo "VERSION_CHANGED=$VERSION_CHANGED" >> "$GITHUB_ENV"
echo "Comparing versions:"
echo "Current version: ${{ env.VERSION }}"
echo "Latest tag: ${{ env.LATEST_TAG }}"
echo "Current version: $VERSION"
echo "Latest tag: $LATEST_TAG"
echo "Version changed: $VERSION_CHANGED"
- name: Check if a PR already exists
run: |
PR_EXISTS=$(gh pr list --state open --base main --head canary --json number --jq '. | length')
echo "PR_EXISTS=$PR_EXISTS" >> $GITHUB_ENV
echo "PR_EXISTS=$PR_EXISTS" >> "$GITHUB_ENV"
env:
GH_TOKEN: ${{ secrets.GH_PAT }}

Expand All @@ -56,20 +56,20 @@ jobs:
git push origin canary

gh pr create \
--title "🚀 Release ${{ env.VERSION }}" \
--body '
This PR promotes changes from `canary` to `main` for version ${{ env.VERSION }}.
--title "🚀 Release $VERSION" \
--body "
This PR promotes changes from \`canary\` to \`main\` for version $VERSION.

### 🔍 Changes Include:
- Version bump to ${{ env.VERSION }}
- Version bump to $VERSION
- All changes from canary branch

### ✅ Pre-merge Checklist:
- [ ] All tests passing
- [ ] Documentation updated
- [ ] Docker images built and tested

> 🤖 This PR was automatically generated by [GitHub Actions](https://github.com/actions)' \
> 🤖 This PR was automatically generated by [GitHub Actions](https://github.com/actions)" \
--base main \
--head canary \
--label "release" --label "automated pr" || true \
Expand Down
47 changes: 28 additions & 19 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,38 @@ on:
branches: [main, canary]
workflow_dispatch:

permissions:
contents: read

jobs:
build-and-push-cloud-image:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
persist-credentials: false

- name: Set tag and version
id: meta-cloud
run: |
VERSION=$(jq -r .version apps/dokploy/package.json)
echo "version=$VERSION" >> $GITHUB_OUTPUT
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "tags=siumauricio/cloud:latest,siumauricio/cloud:${VERSION}" >> $GITHUB_OUTPUT
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
if [ "$GITHUB_REF" = "refs/heads/main" ]; then
echo "tags=siumauricio/cloud:latest,siumauricio/cloud:${VERSION}" >> "$GITHUB_OUTPUT"
else
echo "tags=siumauricio/cloud:canary" >> $GITHUB_OUTPUT
echo "tags=siumauricio/cloud:canary" >> "$GITHUB_OUTPUT"
fi

- name: Log in to Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v4
uses: docker/build-push-action@v7
with:
context: .
file: ./Dockerfile.cloud
Expand All @@ -48,26 +53,28 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
persist-credentials: false

- name: Set tag and version
id: meta-schedule
run: |
VERSION=$(jq -r .version apps/dokploy/package.json)
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "tags=siumauricio/schedule:latest,siumauricio/schedule:${VERSION}" >> $GITHUB_OUTPUT
if [ "$GITHUB_REF" = "refs/heads/main" ]; then
echo "tags=siumauricio/schedule:latest,siumauricio/schedule:${VERSION}" >> "$GITHUB_OUTPUT"
else
echo "tags=siumauricio/schedule:canary" >> $GITHUB_OUTPUT
echo "tags=siumauricio/schedule:canary" >> "$GITHUB_OUTPUT"
fi

- name: Log in to Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v4
uses: docker/build-push-action@v7
with:
context: .
file: ./Dockerfile.schedule
Expand All @@ -80,26 +87,28 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
persist-credentials: false

- name: Set tag and version
id: meta-server
run: |
VERSION=$(jq -r .version apps/dokploy/package.json)
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "tags=siumauricio/server:latest,siumauricio/server:${VERSION}" >> $GITHUB_OUTPUT
if [ "$GITHUB_REF" = "refs/heads/main" ]; then
echo "tags=siumauricio/server:latest,siumauricio/server:${VERSION}" >> "$GITHUB_OUTPUT"
else
echo "tags=siumauricio/server:canary" >> $GITHUB_OUTPUT
echo "tags=siumauricio/server:canary" >> "$GITHUB_OUTPUT"
fi

- name: Log in to Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v4
uses: docker/build-push-action@v7
with:
context: .
file: ./Dockerfile.server
Expand Down
Loading