Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
27dd20b
chore(databases): bump default postgres version while creating to 18
stripsior Jan 3, 2026
046c525
feat: add Pushover notification provider
pluisol Jan 13, 2026
67f0c93
Merge remote-tracking branch 'origin/canary' into feature/pushover-no…
pluisol Jan 13, 2026
7db1f3a
feat: add Pushover notification provider
pluisol Jan 13, 2026
bcbf433
fix: zod object for assign domain
Bima42 Jan 22, 2026
57eee45
feat: add resend notification functionality
mhbdev Jan 24, 2026
6271f3b
[autofix.ci] apply automated fixes
autofix-ci[bot] Jan 24, 2026
84fa805
refactor(side): remove Sponsor menu item and associated HeartIcon com…
Siumauricio Jan 25, 2026
7362cc4
fix: prevent to pass invalid docker container names
Siumauricio Jan 26, 2026
74aecf6
fix: profile firstName field not updating
p8008d Jan 27, 2026
74e0bd5
fix(wss): update Docker command execution in terminal setup
Siumauricio Jan 27, 2026
880a377
fix(wss): handle cloud version restriction in terminal setup
Siumauricio Jan 27, 2026
d1553e1
fix(wss): add cloud version restriction message in command execution
Siumauricio Jan 27, 2026
15e90e9
refactor(wss): simplify container ID validation and update Docker com…
Siumauricio Jan 27, 2026
6fdb2e4
Merge pull request #3528 from Dokploy/fix/prevent-send-malicious-bash
Siumauricio Jan 27, 2026
24c1c2a
fix(wss): add container ID validation to enhance security in WebSocke…
Siumauricio Jan 27, 2026
f3bb569
Merge pull request #3529 from Dokploy/fix/prevent-send-malicious-bash
Siumauricio Jan 27, 2026
5967f48
feat(wss): add directory validation for WebSocket server log paths
Siumauricio Jan 27, 2026
304069d
Merge pull request #3530 from Dokploy/fix/prevent-send-malicious-bash
Siumauricio Jan 27, 2026
060a053
Merge pull request #3527 from p8008d/fix/profile-firstname-update
Siumauricio Jan 27, 2026
d0ea8b5
Merge pull request #3504 from Bima42/fix/3503-changing-server-domain-…
Siumauricio Jan 27, 2026
4e8cdfb
Merge pull request #3447 from pluisol/feature/pushover-notifications
Siumauricio Jan 28, 2026
5c89973
Merge pull request #3385 from stripsior/chore/bump-postgres
Siumauricio Jan 28, 2026
9934346
fix(application): update commit info extraction to include appName an…
Siumauricio Jan 28, 2026
ec68492
Merge pull request #3537 from Dokploy/3510-commit-message-is-wrong-wh…
Siumauricio Jan 28, 2026
27a0490
feat(bitbucket): add optional slug field for repositories and update …
Siumauricio Jan 28, 2026
f72dfb3
[autofix.ci] apply automated fixes
autofix-ci[bot] Jan 28, 2026
6bc07d7
feat(drop): add optional bitbucketRepositorySlug field to baseApp con…
Siumauricio Jan 28, 2026
b9419ed
Merge pull request #3539 from Dokploy/3493-when-adding-a-git-reposito…
Siumauricio Jan 28, 2026
cee1dc9
chore(traefik): update Traefik version to 3.6.7 in setup scripts
Siumauricio Jan 28, 2026
c579dbe
Merge pull request #3540 from Dokploy/3491-ssl-certificate-issuance-b…
Siumauricio Jan 28, 2026
ba8a334
feat: add resend notification functionality
mhbdev Jan 24, 2026
43228fc
[autofix.ci] apply automated fixes
autofix-ci[bot] Jan 24, 2026
d5b0e31
Merge branch 'resend-provider-for-notifications' of https://github.co…
mhbdev Jan 28, 2026
ad382f1
[autofix.ci] apply automated fixes
autofix-ci[bot] Jan 28, 2026
25d37b7
refactor: update swarm forms exports and remove unused SQL files
Siumauricio Jan 28, 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
1 change: 1 addition & 0 deletions apps/dokploy/__test__/drop/drop.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const baseApp: ApplicationNested = {
applicationId: "",
previewLabels: [],
createEnvFile: true,
bitbucketRepositorySlug: "",
herokuVersion: "",
giteaBranch: "",
buildServerId: "",
Expand Down
1 change: 1 addition & 0 deletions apps/dokploy/__test__/traefik/traefik.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const baseApp: ApplicationNested = {
applicationId: "",
previewLabels: [],
createEnvFile: true,
bitbucketRepositorySlug: "",
herokuVersion: "",
giteaRepository: "",
giteaOwner: "",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
export { EndpointSpecForm } from "./endpoint-spec-form";
export { HealthCheckForm } from "./health-check-form";
export { RestartPolicyForm } from "./restart-policy-form";
export { LabelsForm } from "./labels-form";
export { ModeForm } from "./mode-form";
export { PlacementForm } from "./placement-form";
export { UpdateConfigForm } from "./update-config-form";
export { RestartPolicyForm } from "./restart-policy-form";
export { RollbackConfigForm } from "./rollback-config-form";
export { ModeForm } from "./mode-form";
export { LabelsForm } from "./labels-form";
export { StopGracePeriodForm } from "./stop-grace-period-form";
export { EndpointSpecForm } from "./endpoint-spec-form";
export { UpdateConfigForm } from "./update-config-form";
export { filterEmptyValues, hasValues } from "./utils";
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ const BitbucketProviderSchema = z.object({
.object({
repo: z.string().min(1, "Repo is required"),
owner: z.string().min(1, "Owner is required"),
slug: z.string().optional(),
})
.required(),
branch: z.string().min(1, "Branch is required"),
Expand Down Expand Up @@ -82,6 +83,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
repository: {
owner: "",
repo: "",
slug: "",
},
bitbucketId: "",
branch: "",
Expand Down Expand Up @@ -114,11 +116,14 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
} = api.bitbucket.getBitbucketBranches.useQuery(
{
owner: repository?.owner,
repo: repository?.repo,
repo: repository?.slug || repository?.repo || "",
bitbucketId,
},
{
enabled: !!repository?.owner && !!repository?.repo && !!bitbucketId,
enabled:
!!repository?.owner &&
!!(repository?.slug || repository?.repo) &&
!!bitbucketId,
},
);

Expand All @@ -129,6 +134,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
repository: {
repo: data.bitbucketRepository || "",
owner: data.bitbucketOwner || "",
slug: data.bitbucketRepositorySlug || "",
},
buildPath: data.bitbucketBuildPath || "/",
bitbucketId: data.bitbucketId || "",
Expand All @@ -142,6 +148,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
await mutateAsync({
bitbucketBranch: data.branch,
bitbucketRepository: data.repository.repo,
bitbucketRepositorySlug: data.repository.slug || data.repository.repo,
bitbucketOwner: data.repository.owner,
bitbucketBuildPath: data.buildPath,
bitbucketId: data.bitbucketId,
Expand Down Expand Up @@ -181,6 +188,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
form.setValue("repository", {
owner: "",
repo: "",
slug: "",
});
form.setValue("branch", "");
}}
Expand Down Expand Up @@ -217,7 +225,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
<FormLabel>Repository</FormLabel>
{field.value.owner && field.value.repo && (
<Link
href={`https://bitbucket.org/${field.value.owner}/${field.value.repo}`}
href={`https://bitbucket.org/${field.value.owner}/${field.value.slug || field.value.repo}`}
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-1 text-sm text-muted-foreground hover:text-primary"
Expand Down Expand Up @@ -271,6 +279,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
form.setValue("repository", {
owner: repo.owner.username as string,
repo: repo.name,
slug: repo.slug,
});
form.setValue("branch", "");
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ const BitbucketProviderSchema = z.object({
.object({
repo: z.string().min(1, "Repo is required"),
owner: z.string().min(1, "Owner is required"),
slug: z.string().optional(),
})
.required(),
branch: z.string().min(1, "Branch is required"),
Expand Down Expand Up @@ -82,6 +83,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
repository: {
owner: "",
repo: "",
slug: "",
},
bitbucketId: "",
branch: "",
Expand Down Expand Up @@ -114,11 +116,14 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
} = api.bitbucket.getBitbucketBranches.useQuery(
{
owner: repository?.owner,
repo: repository?.repo,
repo: repository?.slug || repository?.repo || "",
bitbucketId,
},
{
enabled: !!repository?.owner && !!repository?.repo && !!bitbucketId,
enabled:
!!repository?.owner &&
!!(repository?.slug || repository?.repo) &&
!!bitbucketId,
},
);

Expand All @@ -129,6 +134,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
repository: {
repo: data.bitbucketRepository || "",
owner: data.bitbucketOwner || "",
slug: data.bitbucketRepositorySlug || "",
},
composePath: data.composePath,
bitbucketId: data.bitbucketId || "",
Expand All @@ -142,6 +148,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
await mutateAsync({
bitbucketBranch: data.branch,
bitbucketRepository: data.repository.repo,
bitbucketRepositorySlug: data.repository.slug || data.repository.repo,
bitbucketOwner: data.repository.owner,
bitbucketId: data.bitbucketId,
composePath: data.composePath,
Expand Down Expand Up @@ -183,6 +190,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
form.setValue("repository", {
owner: "",
repo: "",
slug: "",
});
form.setValue("branch", "");
}}
Expand Down Expand Up @@ -219,7 +227,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
<FormLabel>Repository</FormLabel>
{field.value.owner && field.value.repo && (
<Link
href={`https://bitbucket.org/${field.value.owner}/${field.value.repo}`}
href={`https://bitbucket.org/${field.value.owner}/${field.value.slug || field.value.repo}`}
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-1 text-sm text-muted-foreground hover:text-primary"
Expand Down Expand Up @@ -273,6 +281,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
form.setValue("repository", {
owner: repo.owner.username as string,
repo: repo.name,
slug: repo.slug,
});
form.setValue("branch", "");
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ export const ShowCustomCommand = ({ id, type }: Props) => {
<FormItem>
<FormLabel>Docker Image</FormLabel>
<FormControl>
<Input placeholder="postgres:15" {...field} />
<Input placeholder="postgres:18" {...field} />
</FormControl>

<FormMessage />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ const dockerImageDefaultPlaceholder: Record<DbType, string> = {
mongo: "mongo:7",
mariadb: "mariadb:11",
mysql: "mysql:8",
postgres: "postgres:15",
postgres: "postgres:18",
redis: "redis:7",
};

Expand Down
Loading