Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
50b0a5d
feat(auth): add autocomplete for 2FA OTP input
theo-vdml Nov 18, 2025
464d58d
feat(deployment): add support for Soft Serve webhooks
aegypius Sep 17, 2025
f5f21ef
test(deployment): add Soft Serve tests
aegypius Sep 19, 2025
cc49db6
chore: add DevContainer
mcfdez Jan 9, 2026
5ca4d83
[autofix.ci] apply automated fixes
autofix-ci[bot] Jan 9, 2026
33fb21b
feat: add ability to delete old deployments
mcfdez Dec 7, 2025
95dd9dd
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 8, 2025
2be938a
feat: add individual deployment deletion
mcfdez Dec 21, 2025
2be92d2
[autofix.ci] apply automated fixes
autofix-ci[bot] Jan 9, 2026
fe807ae
feat(sso): implement management for trusted origins in SSO settings
Siumauricio Feb 10, 2026
59f843f
fix(stripe): filter products to include only monthly and annual subsc…
Siumauricio Feb 10, 2026
1326d14
[autofix.ci] apply automated fixes
autofix-ci[bot] Feb 10, 2026
eeb7f00
Merge pull request #3680 from Dokploy/feat/add-trusted-origins-sso
Siumauricio Feb 11, 2026
034d55d
fix(docker): improve error messages for missing service names in doma…
Siumauricio Feb 11, 2026
a51a4b3
Merge pull request #3681 from Dokploy/3672-misleading-error-when-rena…
Siumauricio Feb 11, 2026
1779a8a
chore(package): bump version to v0.27.1
Siumauricio Feb 11, 2026
3a3f3ab
fix(update-server): display release tag conditionally in server versi…
Siumauricio Feb 11, 2026
5c36ca3
Merge pull request #3683 from Dokploy/3667-dokploy-update-from-ui-doe…
Siumauricio Feb 11, 2026
7184b7d
feat(traefik): add support for internationalized domain names (IDN)
Siumauricio Feb 11, 2026
3b753ec
test(traefik): add tests for punycode conversion of Russian IDNs
Siumauricio Feb 11, 2026
a24dbe3
Merge pull request #3684 from Dokploy/fix/add-punycode
Siumauricio Feb 11, 2026
74d72f1
feat(auth): dynamically add trusted providers for account linking
Siumauricio Feb 11, 2026
89416fe
Merge pull request #3685 from Dokploy/feat/add-trusted-providers-dina…
Siumauricio Feb 11, 2026
343a84d
fix: prevent orphaned docker stacks when compose directory is missing
vprudnikoff Feb 12, 2026
eec4e21
Initial plan
Copilot Feb 13, 2026
7928d11
Fix Discord and Gotify decoration button reverting bug
Copilot Feb 13, 2026
8291c6d
feat(sso): enhance OIDC provider registration and editing functionality
Siumauricio Feb 13, 2026
60f5ab3
feat(sso): enhance SAML provider registration and editing experience
Siumauricio Feb 13, 2026
edbc98a
[autofix.ci] apply automated fixes
autofix-ci[bot] Feb 13, 2026
3b74425
Merge pull request #3699 from Dokploy/copilot/fix-discord-notificatio…
Siumauricio Feb 13, 2026
2788323
feat(sso): refactor SSO provider update logic
Siumauricio Feb 13, 2026
aa57997
feat(auth): update trusted providers configuration to use environment…
Siumauricio Feb 13, 2026
05ad6d8
Merge branch 'canary' into feat/edit-sso-providers
Siumauricio Feb 13, 2026
b63c22a
Merge pull request #3700 from Dokploy/feat/edit-sso-providers
Siumauricio Feb 13, 2026
81a04d0
feat(sidebar): enhance dropdown menu styling and organization display
Siumauricio Feb 13, 2026
f5635f6
Merge pull request #3701 from Dokploy/3690-organization-picker-not-sc…
Siumauricio Feb 13, 2026
f656e62
Merge pull request #3692 from vprudnikoff/fix/stack-rm-compose-direct…
Siumauricio Feb 13, 2026
389a694
refactor(sidebar): streamline organization dropdown menu interactions
Siumauricio Feb 13, 2026
e8bec0a
fix(compose): correct command string for docker-compose execution
Siumauricio Feb 16, 2026
8aab8dd
chore(dependencies): update zod version across multiple packages to 3…
Siumauricio Feb 16, 2026
53ae08c
[autofix.ci] apply automated fixes
autofix-ci[bot] Feb 16, 2026
2cd3c27
refactor(dashboard): replace localization strings with static text fo…
Siumauricio Feb 16, 2026
1f9335a
[autofix.ci] apply automated fixes
autofix-ci[bot] Feb 16, 2026
4fd06b0
chore(dokploy): simplify build-next command in package.json
Siumauricio Feb 16, 2026
c04dd63
chore(dependencies): update ai-sdk packages and other dependencies
Siumauricio Feb 16, 2026
51e0057
[autofix.ci] apply automated fixes
autofix-ci[bot] Feb 16, 2026
125c23e
fix(ai): update TypeScript ignore comments for deep instantiation issue
Siumauricio Feb 16, 2026
620e4c4
Merge pull request #3718 from Dokploy/feat/remove-internationalization
Siumauricio Feb 16, 2026
e5f51fd
chore(dependencies): add esbuild override in package.json and pnpm-lo…
Siumauricio Feb 16, 2026
02a695c
chore(dokploy): update build-next command to use webpack
Siumauricio Feb 16, 2026
33192ce
fix(cluster): ensure Replicas value is correctly converted to number …
Siumauricio Feb 17, 2026
24010af
Merge pull request #3727 from Dokploy/3717-error-setting-a-number-of-…
Siumauricio Feb 17, 2026
7e8d3b7
feat(environment): add service check before environment deletion
Siumauricio Feb 17, 2026
49a189f
Merge pull request #3728 from Dokploy/3722-deleted-an-environment-and…
Siumauricio Feb 17, 2026
407ce3f
Merge pull request #3425 from mcfdez/chore/add-devcontainer
Siumauricio Feb 17, 2026
7148498
feat(notifications): add Microsoft Teams integration for notifications
Siumauricio Feb 17, 2026
d516332
[autofix.ci] apply automated fixes
autofix-ci[bot] Feb 17, 2026
923466b
Merge pull request #3729 from Dokploy/feat/add-teams-notification-pro…
Siumauricio Feb 17, 2026
32ed0c7
Merge pull request #2767 from aegypius/features/support-soft-serve-we…
Siumauricio Feb 17, 2026
6d6cf18
Merge branch 'canary' into feat/add-delete-old-deployments
Siumauricio Feb 17, 2026
95a944c
feat(deployments): enhance deployment deletion logic and improve erro…
Siumauricio Feb 17, 2026
a511f4d
refactor(deployments): unify old deployment clearing logic for applic…
Siumauricio Feb 17, 2026
76038f6
refactor(deployments): streamline deployment clearing process and rem…
Siumauricio Feb 17, 2026
8713d3e
Merge pull request #3185 from mcfdez/feat/add-delete-old-deployments
Siumauricio Feb 17, 2026
62fb117
Merge pull request #3042 from theo-vdml/feat/auth-add-otp-autofill
Siumauricio Feb 17, 2026
06fd561
fix(deployments): remove unnecessary newline in deployment schema def…
Siumauricio Feb 17, 2026
b58f2b2
feat(tests): add unit tests for readValidDirectory function to valida…
Siumauricio Feb 17, 2026
685a4c0
refactor(drop): replace symlink entry check with dangerous node entry…
Siumauricio Feb 17, 2026
1302d70
test(drop): add security tests for traversal prevention in unzipDrop …
Siumauricio Feb 17, 2026
b818d66
Merge pull request #3733 from Dokploy/fix/Remote-Code-Execution-throu…
Siumauricio Feb 17, 2026
3689a82
feat(tests): add unit tests for validation functions in docker-contai…
Siumauricio Feb 18, 2026
33c3a4e
fix(validation): enhance isValidSearch function to restrict allowed c…
Siumauricio Feb 18, 2026
9880c71
refactor(validation): update isValidSearch to prevent command injection
Siumauricio Feb 18, 2026
1d5ab71
Merge pull request #3735 from Dokploy/fix/Command-Injection-in-/docke…
Siumauricio Feb 18, 2026
756d276
feat(workflow): add PR quality check to enforce standards and prevent…
Siumauricio Feb 18, 2026
6c32306
refactor(sso): update trusted origins handling and introduce license …
Siumauricio Feb 18, 2026
be35709
fix(auth): remove callback URL from email sign-in process on home page
Siumauricio Feb 18, 2026
4e8d37b
refactor(user): remove getTrustedOrigins query from user router
Siumauricio Feb 18, 2026
6059318
Update packages/server/src/services/proprietary/license-key.ts
Siumauricio Feb 18, 2026
b9c62cc
refactor(license-key): remove unused import and add organization owne…
Siumauricio Feb 18, 2026
c688311
Merge pull request #3736 from Dokploy/feat/add-modify-sso-by-admin
Siumauricio Feb 18, 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
21 changes: 21 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Dockerfile for DevContainer
FROM node:20.16.0-bullseye-slim

# Install essential packages
RUN apt-get update && apt-get install -y \
curl \
bash \
git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Set up PNPM
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable && corepack prepare pnpm@9.12.0 --activate

# Create workspace directory
WORKDIR /workspaces/dokploy

# Set up user permissions
USER node
53 changes: 53 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"name": "Dokploy development container",
"build": {
"dockerfile": "Dockerfile",
"context": ".."
},
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"moby": true,
"version": "latest"
},
"ghcr.io/devcontainers/features/git:1": {
"ppa": true,
"version": "latest"
},
"ghcr.io/devcontainers/features/go:1": {
"version": "1.20"
}
},
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.vscode-typescript-next",
"bradlc.vscode-tailwindcss",
"ms-vscode.vscode-json",
"biomejs.biome",
"golang.go",
"redhat.vscode-xml",
"github.vscode-github-actions",
"github.copilot",
"github.copilot-chat"
]
}
},
"forwardPorts": [3000, 5432, 6379],
"portsAttributes": {
"3000": {
"label": "Dokploy App",
"onAutoForward": "notify"
},
"5432": {
"label": "PostgreSQL",
"onAutoForward": "silent"
},
"6379": {
"label": "Redis",
"onAutoForward": "silent"
}
},
"remoteUser": "node",
"workspaceFolder": "/workspaces/dokploy",
"runArgs": ["--name", "dokploy-devcontainer"]
}
22 changes: 22 additions & 0 deletions .github/workflows/pr-quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

name: PR Quality

permissions:
contents: read
issues: read
pull-requests: write

on:
pull_request_target:
types: [opened, reopened]

jobs:
anti-slop:
runs-on: ubuntu-latest
steps:
- uses: peakoss/anti-slop@v0
with:
max-failures: 4
blocked-commit-authors: "claude,copilot"
require-description: true
min-account-age: 5
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,4 @@ yarn-error.log*
*.pem


.db

# Development environment
.devcontainer
.db
2 changes: 1 addition & 1 deletion apps/api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"redis": "4.7.0",
"zod": "^3.25.32"
"zod": "^3.25.76"
},
"devDependencies": {
"@types/node": "^20.16.0",
Expand Down
11 changes: 11 additions & 0 deletions apps/dokploy/__test__/deploy/github.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ describe("GitHub Webhook Skip CI", () => {
{ commits: [{ message: "[skip ci] test" }] },
),
).toBe("[skip ci] test");

// Soft Serve
expect(
extractCommitMessage(
{ "x-softserve-event": "push" },
{ commits: [{ message: "[skip ci] test" }] },
),
).toBe("[skip ci] test");
});

it("should handle missing commit message", () => {
Expand All @@ -99,6 +107,9 @@ describe("GitHub Webhook Skip CI", () => {
expect(extractCommitMessage({ "x-gitea-event": "push" }, {})).toBe(
"NEW COMMIT",
);
expect(extractCommitMessage({ "x-softserve-event": "push" }, {})).toBe(
"NEW COMMIT",
);
});
});

Expand Down
49 changes: 49 additions & 0 deletions apps/dokploy/__test__/deploy/soft-serve.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { describe, expect, it } from "vitest";
import {
extractBranchName,
extractCommitMessage,
extractHash,
getProviderByHeader,
} from "@/pages/api/deploy/[refreshToken]";

describe("Soft Serve Webhook", () => {
const mockSoftServeHeaders = {
"x-softserve-event": "push",
};

const createMockBody = (message: string, hash: string, branch: string) => ({
event: "push",
ref: `refs/heads/${branch}`,
after: hash,
commits: [{ message: message }],
});
const message: string = "feat: add new feature";
const hash: string = "3c91c24ef9560bddc695bce138bf8a7094ec3df5";
const branch: string = "feat/add-new";
const goodWebhook = createMockBody(message, hash, branch);

it("should properly extract the provider name", () => {
expect(getProviderByHeader(mockSoftServeHeaders)).toBe("soft-serve");
});

it("should properly extract the commit message", () => {
expect(extractCommitMessage(mockSoftServeHeaders, goodWebhook)).toBe(
message,
);
});

it("should properly extract hash", () => {
expect(extractHash(mockSoftServeHeaders, goodWebhook)).toBe(hash);
});

it("should properly extract branch name", () => {
expect(extractBranchName(mockSoftServeHeaders, goodWebhook)).toBe(branch);
});

it("should gracefully handle invalid webhook", () => {
expect(getProviderByHeader({})).toBeNull();
expect(extractCommitMessage(mockSoftServeHeaders, {})).toBe("NEW COMMIT");
expect(extractHash(mockSoftServeHeaders, {})).toBe("NEW COMMIT");
expect(extractBranchName(mockSoftServeHeaders, {})).toBeNull();
});
});
Loading