Add n8n workflow schedule type, Swedish date format, and Data & Privacy page

- New "n8n workflow" schedule type for manually tracked tasks, plumbed
  through the form, filters, group labels, and API validation, same as
  the earlier backup/update types.
- Dates (cron next-run, server last-seen) now render in Swedish
  standard format (YYYY-MM-DD, 24-hour clock) via a shared formatter
  instead of the browser's default locale.
- New Data & Privacy page describing what's stored, where, how long,
  and how to remove it, linked from a footer shown on every page
  alongside a "By bobbantech" credit linking to bobbantech.com.
This commit is contained in:
bobban committed 2026-09-04 20:27:05 +02:00
1 parent 0f961e7377
commit 8d5729822d
13 files changed
+141 -6

No files matched your search

+1 -1
View File
@@ -20,7 +20,7 @@ export const scheduledTasks = sqliteTable("scheduled_tasks", {
serverId: integer("server_id")
.notNull()
.references(() => servers.id, { onDelete: "cascade" }),
scheduleType: text("schedule_type").notNull(), // 'cron' | 'systemd_timer' | 'docker' | 'backup' | 'update' | 'manual'
scheduleType: text("schedule_type").notNull(), // 'cron' | 'systemd_timer' | 'docker' | 'backup' | 'update' | 'n8n_workflow' | 'manual'
origin: text("origin").notNull().default("agent"), // 'agent' | 'manual' — manual rows are never touched by agent sync
name: text("name").notNull(),
command: text("command"),
+1 -1
View File
@@ -58,7 +58,7 @@ tasksRouter.get("/", async (req, res) => {
const manualTaskSchema = z.object({
serverId: z.number().int(),
scheduleType: z.enum(["cron", "systemd_timer", "docker", "backup", "update", "manual"]),
scheduleType: z.enum(["cron", "systemd_timer", "docker", "backup", "update", "n8n_workflow", "manual"]),
name: z.string().min(1).max(200),
command: z.string().max(1000).optional(),
scheduleExpression: z.string().max(200).optional(),