diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 58825f900..0b849afc0 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -6,16 +6,13 @@ Please describe in a short paragraph what this PR is about.
Before submitting this PR, please make sure that:
-- [ ] You created a dedicated branch based on the `canary` branch.
-- [ ] 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.
+- [] You created a dedicated branch based on the `canary` branch.
+- [] 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.
## Issues related (if applicable)
-Close automatically the related issues using the keywords: `closes #ISSUE_NUMBER`, `fixes #ISSUE_NUMBER`, `resolves #ISSUE_NUMBER`
-
-Example: `closes #123`
+closes #123
## Screenshots (if applicable)
-If you include a video or screenshot, would be awesome so we can see the changes in action.
\ No newline at end of file
diff --git a/.github/sponsors/tuple.png b/.github/sponsors/tuple.png
new file mode 100644
index 000000000..1d7be47ca
Binary files /dev/null and b/.github/sponsors/tuple.png differ
diff --git a/.github/workflows/dokploy.yml b/.github/workflows/dokploy.yml
index afb4ba4d2..529cd8f7f 100644
--- a/.github/workflows/dokploy.yml
+++ b/.github/workflows/dokploy.yml
@@ -2,7 +2,7 @@ name: Dokploy Docker Build
on:
push:
- branches: [main, canary]
+ branches: [main, canary, "fix/re-apply-database-migration-fix"]
workflow_dispatch:
env:
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index e9591f3cc..6c74dbc02 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -4,9 +4,15 @@ on:
pull_request:
branches: [main, canary]
+permissions:
+ contents: read
+
jobs:
- lint-and-typecheck:
+ pr-check:
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ job: [build, test, typecheck]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
@@ -15,32 +21,5 @@ jobs:
node-version: 20.16.0
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- - run: pnpm run server:build
- - run: pnpm typecheck
-
- build-and-test:
- needs: lint-and-typecheck
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- - uses: actions/setup-node@v4
- with:
- node-version: 20.16.0
- cache: "pnpm"
- - run: pnpm install --frozen-lockfile
- - run: pnpm run server:build
- - run: pnpm build
-
- parallel-tests:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- - uses: actions/setup-node@v4
- with:
- node-version: 20.16.0
- cache: "pnpm"
- - run: pnpm install --frozen-lockfile
- - run: pnpm run server:build
- - run: pnpm test
+ - run: pnpm server:build
+ - run: pnpm ${{ matrix.job }}
diff --git a/README.md b/README.md
index fb2ee82a5..8faf22a35 100644
--- a/README.md
+++ b/README.md
@@ -11,8 +11,25 @@
+
+
+
+
+
+### [Tuple, the premier screen sharing app for developers](https://tuple.app/dokploy)
+[Available for MacOS & Windows](https://tuple.app/dokploy)+ Add a labels that will trigger a preview + deployment for a pull request. If no labels + are specified, all pull requests will trigger + a preview deployment. +
+
No scheduled tasks
diff --git a/apps/dokploy/components/dashboard/application/update-application.tsx b/apps/dokploy/components/dashboard/application/update-application.tsx
index 4d4190fa2..754074d75 100644
--- a/apps/dokploy/components/dashboard/application/update-application.tsx
+++ b/apps/dokploy/components/dashboard/application/update-application.tsx
@@ -1,3 +1,9 @@
+import { zodResolver } from "@hookform/resolvers/zod";
+import { PenBoxIcon } from "lucide-react";
+import { useEffect, useState } from "react";
+import { useForm } from "react-hook-form";
+import { toast } from "sonner";
+import { z } from "zod";
import { AlertBlock } from "@/components/shared/alert-block";
import { Button } from "@/components/ui/button";
import {
@@ -20,12 +26,6 @@ import {
import { Input } from "@/components/ui/input";
import { Textarea } from "@/components/ui/textarea";
import { api } from "@/utils/api";
-import { zodResolver } from "@hookform/resolvers/zod";
-import { PenBoxIcon } from "lucide-react";
-import { useEffect, useState } from "react";
-import { useForm } from "react-hook-form";
-import { toast } from "sonner";
-import { z } from "zod";
const updateApplicationSchema = z.object({
name: z.string().min(1, {
diff --git a/apps/dokploy/components/dashboard/application/volume-backups/handle-volume-backups.tsx b/apps/dokploy/components/dashboard/application/volume-backups/handle-volume-backups.tsx
index c66b05850..f00b91a9d 100644
--- a/apps/dokploy/components/dashboard/application/volume-backups/handle-volume-backups.tsx
+++ b/apps/dokploy/components/dashboard/application/volume-backups/handle-volume-backups.tsx
@@ -1,3 +1,15 @@
+import { zodResolver } from "@hookform/resolvers/zod";
+import {
+ DatabaseZap,
+ Info,
+ PenBoxIcon,
+ PlusCircle,
+ RefreshCw,
+} from "lucide-react";
+import { useEffect, useState } from "react";
+import { useForm } from "react-hook-form";
+import { toast } from "sonner";
+import { z } from "zod";
import { AlertBlock } from "@/components/shared/alert-block";
import { Button } from "@/components/ui/button";
import {
@@ -34,18 +46,6 @@ import {
} from "@/components/ui/tooltip";
import { cn } from "@/lib/utils";
import { api } from "@/utils/api";
-import { zodResolver } from "@hookform/resolvers/zod";
-import {
- DatabaseZap,
- Info,
- PenBoxIcon,
- PlusCircle,
- RefreshCw,
-} from "lucide-react";
-import { useEffect, useState } from "react";
-import { useForm } from "react-hook-form";
-import { toast } from "sonner";
-import { z } from "zod";
import type { CacheType } from "../domains/handle-domain";
import { commonCronExpressions } from "../schedules/handle-schedules";
@@ -55,7 +55,12 @@ const formSchema = z
cronExpression: z.string().min(1, "Cron expression is required"),
volumeName: z.string().min(1, "Volume name is required"),
prefix: z.string(),
- // keepLatestCount: z.coerce.number().optional(),
+ keepLatestCount: z.coerce
+ .number()
+ .int()
+ .gte(1, "Must be at least 1")
+ .optional()
+ .nullable(),
turnOff: z.boolean().default(false),
enabled: z.boolean().default(true),
serviceType: z.enum([
@@ -108,6 +113,7 @@ export const HandleVolumeBackups = ({
}: Props) => {
const [isOpen, setIsOpen] = useState(false);
const [cacheType, setCacheType] = useState
+ Resources that will be isolated:
+
+
+
+