@shumai-one/shumai-transcode 0.3.8 → 0.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shumai-one/shumai-transcode",
3
- "version": "0.3.8",
3
+ "version": "0.3.10",
4
4
  "description": "Media transcoding worker for the shumai media workspace",
5
5
  "type": "module",
6
6
  "bin": {
@@ -27,12 +27,12 @@
27
27
  "zod": "4.4.3"
28
28
  },
29
29
  "optionalDependencies": {
30
- "@shumai-one/shumai-transcode-darwin-arm64": "0.3.8",
31
- "@shumai-one/shumai-transcode-darwin-x64": "0.3.8",
32
- "@shumai-one/shumai-transcode-linux-arm64": "0.3.8",
33
- "@shumai-one/shumai-transcode-linux-x64": "0.3.8",
34
- "@shumai-one/shumai-transcode-win32-arm64": "0.3.8",
35
- "@shumai-one/shumai-transcode-win32-x64": "0.3.8"
30
+ "@shumai-one/shumai-transcode-darwin-arm64": "0.3.10",
31
+ "@shumai-one/shumai-transcode-darwin-x64": "0.3.10",
32
+ "@shumai-one/shumai-transcode-linux-arm64": "0.3.10",
33
+ "@shumai-one/shumai-transcode-linux-x64": "0.3.10",
34
+ "@shumai-one/shumai-transcode-win32-arm64": "0.3.10",
35
+ "@shumai-one/shumai-transcode-win32-x64": "0.3.10"
36
36
  },
37
37
  "repository": {
38
38
  "type": "git",
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "agents" ADD COLUMN "permission" "TeamMemberRole" NOT NULL DEFAULT 'reviewer';
@@ -0,0 +1,68 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "QuotaScopeMode" AS ENUM ('all_members', 'each_member', 'selected_members');
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "QuotaPeriod" AS ENUM ('1hour', '5hour', '1day', '7day');
6
+
7
+ -- CreateEnum
8
+ CREATE TYPE "QuotaResourceType" AS ENUM ('agent_total_tokens', 'agent_cost', 'agent_skill_call_count', 'agent_mcp_call_count', 'agent_bash_call_count', 'agent_tool_call_count');
9
+
10
+ -- CreateTable
11
+ CREATE TABLE "quota_rules" (
12
+ "id" TEXT NOT NULL,
13
+ "team_id" TEXT NOT NULL,
14
+ "scope_mode" "QuotaScopeMode" NOT NULL,
15
+ "role" "TeamMemberRole",
16
+ "user_ids" JSONB,
17
+ "resource" "QuotaResourceType" NOT NULL,
18
+ "resource_data" JSONB,
19
+ "limit" DOUBLE PRECISION NOT NULL,
20
+ "period" "QuotaPeriod" NOT NULL,
21
+ "enabled" BOOLEAN NOT NULL DEFAULT true,
22
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
+ "updated_at" TIMESTAMP(3) NOT NULL,
24
+
25
+ CONSTRAINT "quota_rules_pkey" PRIMARY KEY ("id")
26
+ );
27
+
28
+ -- CreateTable
29
+ CREATE TABLE "quota_records" (
30
+ "id" TEXT NOT NULL,
31
+ "rule_id" TEXT NOT NULL,
32
+ "team_id" TEXT NOT NULL,
33
+ "user_id" TEXT,
34
+ "period_start" TIMESTAMP(3),
35
+ "period_end" TIMESTAMP(3),
36
+ "consumed" DOUBLE PRECISION NOT NULL DEFAULT 0,
37
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
38
+ "updated_at" TIMESTAMP(3) NOT NULL,
39
+
40
+ CONSTRAINT "quota_records_pkey" PRIMARY KEY ("id")
41
+ );
42
+
43
+ -- CreateIndex
44
+ CREATE INDEX "quota_rules_team_id_enabled_idx" ON "quota_rules"("team_id", "enabled");
45
+
46
+ -- CreateIndex
47
+ CREATE INDEX "quota_rules_team_id_resource_idx" ON "quota_rules"("team_id", "resource");
48
+
49
+ -- CreateIndex
50
+ CREATE INDEX "quota_records_team_id_user_id_idx" ON "quota_records"("team_id", "user_id");
51
+
52
+ -- CreateIndex
53
+ CREATE INDEX "quota_records_rule_id_idx" ON "quota_records"("rule_id");
54
+
55
+ -- CreateIndex
56
+ CREATE UNIQUE INDEX "quota_records_rule_id_user_id_key" ON "quota_records"("rule_id", "user_id");
57
+
58
+ -- AddForeignKey
59
+ ALTER TABLE "quota_rules" ADD CONSTRAINT "quota_rules_team_id_fkey" FOREIGN KEY ("team_id") REFERENCES "teams"("id") ON DELETE CASCADE ON UPDATE CASCADE;
60
+
61
+ -- AddForeignKey
62
+ ALTER TABLE "quota_records" ADD CONSTRAINT "quota_records_rule_id_fkey" FOREIGN KEY ("rule_id") REFERENCES "quota_rules"("id") ON DELETE CASCADE ON UPDATE CASCADE;
63
+
64
+ -- AddForeignKey
65
+ ALTER TABLE "quota_records" ADD CONSTRAINT "quota_records_team_id_fkey" FOREIGN KEY ("team_id") REFERENCES "teams"("id") ON DELETE CASCADE ON UPDATE CASCADE;
66
+
67
+ -- AddForeignKey
68
+ ALTER TABLE "quota_records" ADD CONSTRAINT "quota_records_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,14 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - The values [agent_skill_call_count] on the enum `QuotaResourceType` will be removed. If these variants are still used in the database, this will fail.
5
+
6
+ */
7
+ -- AlterEnum
8
+ BEGIN;
9
+ CREATE TYPE "QuotaResourceType_new" AS ENUM ('agent_total_tokens', 'agent_cost', 'agent_mcp_call_count', 'agent_bash_call_count', 'agent_tool_call_count');
10
+ ALTER TABLE "quota_rules" ALTER COLUMN "resource" TYPE "QuotaResourceType_new" USING ("resource"::text::"QuotaResourceType_new");
11
+ ALTER TYPE "QuotaResourceType" RENAME TO "QuotaResourceType_old";
12
+ ALTER TYPE "QuotaResourceType_new" RENAME TO "QuotaResourceType";
13
+ DROP TYPE "public"."QuotaResourceType_old";
14
+ COMMIT;
@@ -0,0 +1,164 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "KanbanTaskStatus" AS ENUM ('TODO', 'READY', 'IN_PROGRESS', 'BLOCKED', 'IN_REVIEW', 'DONE', 'CANCELLED');
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "KanbanTaskPriority" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'URGENT');
6
+
7
+ -- CreateEnum
8
+ CREATE TYPE "KanbanTaskEventType" AS ENUM ('CREATED', 'STATUS_CHANGED', 'ASSIGNED', 'UNASSIGNED', 'COMMENTED', 'CHANGES_REQUESTED', 'BLOCKED', 'UNBLOCKED', 'PRIORITY_CHANGED', 'GOAL_CHANGED', 'DEPENDENCY_ADDED', 'DEPENDENCY_REMOVED', 'CANCELLED');
9
+
10
+ -- CreateTable
11
+ CREATE TABLE "kanban_goals" (
12
+ "id" TEXT NOT NULL,
13
+ "title" TEXT NOT NULL,
14
+ "description" TEXT,
15
+ "team_id" TEXT NOT NULL,
16
+ "creator_id" TEXT,
17
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
18
+ "updated_at" TIMESTAMP(3) NOT NULL,
19
+
20
+ CONSTRAINT "kanban_goals_pkey" PRIMARY KEY ("id")
21
+ );
22
+
23
+ -- CreateTable
24
+ CREATE TABLE "kanban_tasks" (
25
+ "id" TEXT NOT NULL,
26
+ "title" TEXT NOT NULL,
27
+ "description" TEXT,
28
+ "is_agent_task" BOOLEAN NOT NULL DEFAULT false,
29
+ "status" "KanbanTaskStatus" NOT NULL DEFAULT 'TODO',
30
+ "priority" "KanbanTaskPriority" NOT NULL DEFAULT 'MEDIUM',
31
+ "start_date" TIMESTAMP(3),
32
+ "due_date" TIMESTAMP(3),
33
+ "started_at" TIMESTAMP(3),
34
+ "completed_at" TIMESTAMP(3),
35
+ "goal_id" TEXT,
36
+ "team_id" TEXT NOT NULL,
37
+ "project_id" TEXT,
38
+ "creator_id" TEXT NOT NULL,
39
+ "reporter_id" TEXT,
40
+ "assignee_id" TEXT,
41
+ "target_folder_id" TEXT,
42
+ "sort_index" TEXT,
43
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
44
+ "updated_at" TIMESTAMP(3) NOT NULL,
45
+
46
+ CONSTRAINT "kanban_tasks_pkey" PRIMARY KEY ("id")
47
+ );
48
+
49
+ -- CreateTable
50
+ CREATE TABLE "kanban_task_links" (
51
+ "parent_id" TEXT NOT NULL,
52
+ "child_id" TEXT NOT NULL,
53
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
54
+
55
+ CONSTRAINT "kanban_task_links_pkey" PRIMARY KEY ("parent_id","child_id")
56
+ );
57
+
58
+ -- CreateTable
59
+ CREATE TABLE "kanban_task_comments" (
60
+ "id" TEXT NOT NULL,
61
+ "task_id" TEXT NOT NULL,
62
+ "author_id" TEXT NOT NULL,
63
+ "body" TEXT NOT NULL,
64
+ "attachments" JSONB,
65
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
66
+ "updated_at" TIMESTAMP(3) NOT NULL,
67
+
68
+ CONSTRAINT "kanban_task_comments_pkey" PRIMARY KEY ("id")
69
+ );
70
+
71
+ -- CreateTable
72
+ CREATE TABLE "kanban_task_events" (
73
+ "id" TEXT NOT NULL,
74
+ "task_id" TEXT NOT NULL,
75
+ "actor_id" TEXT,
76
+ "type" "KanbanTaskEventType" NOT NULL,
77
+ "from_status" "KanbanTaskStatus",
78
+ "to_status" "KanbanTaskStatus",
79
+ "data" JSONB,
80
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
81
+
82
+ CONSTRAINT "kanban_task_events_pkey" PRIMARY KEY ("id")
83
+ );
84
+
85
+ -- CreateIndex
86
+ CREATE INDEX "kanban_goals_team_id_idx" ON "kanban_goals"("team_id");
87
+
88
+ -- CreateIndex
89
+ CREATE INDEX "kanban_tasks_team_id_status_idx" ON "kanban_tasks"("team_id", "status");
90
+
91
+ -- CreateIndex
92
+ CREATE INDEX "kanban_tasks_team_id_status_sort_index_idx" ON "kanban_tasks"("team_id", "status", "sort_index");
93
+
94
+ -- CreateIndex
95
+ CREATE INDEX "kanban_tasks_team_id_is_agent_task_status_idx" ON "kanban_tasks"("team_id", "is_agent_task", "status");
96
+
97
+ -- CreateIndex
98
+ CREATE INDEX "kanban_tasks_team_id_goal_id_status_idx" ON "kanban_tasks"("team_id", "goal_id", "status");
99
+
100
+ -- CreateIndex
101
+ CREATE INDEX "kanban_tasks_team_id_assignee_id_status_idx" ON "kanban_tasks"("team_id", "assignee_id", "status");
102
+
103
+ -- CreateIndex
104
+ CREATE INDEX "kanban_tasks_project_id_status_idx" ON "kanban_tasks"("project_id", "status");
105
+
106
+ -- CreateIndex
107
+ CREATE INDEX "kanban_tasks_sort_index_idx" ON "kanban_tasks"("sort_index");
108
+
109
+ -- CreateIndex
110
+ CREATE INDEX "kanban_task_links_child_id_idx" ON "kanban_task_links"("child_id");
111
+
112
+ -- CreateIndex
113
+ CREATE INDEX "kanban_task_comments_task_id_created_at_idx" ON "kanban_task_comments"("task_id", "created_at");
114
+
115
+ -- CreateIndex
116
+ CREATE INDEX "kanban_task_events_task_id_created_at_idx" ON "kanban_task_events"("task_id", "created_at");
117
+
118
+ -- CreateIndex
119
+ CREATE INDEX "kanban_task_events_actor_id_created_at_idx" ON "kanban_task_events"("actor_id", "created_at");
120
+
121
+ -- AddForeignKey
122
+ ALTER TABLE "kanban_goals" ADD CONSTRAINT "kanban_goals_team_id_fkey" FOREIGN KEY ("team_id") REFERENCES "teams"("id") ON DELETE CASCADE ON UPDATE CASCADE;
123
+
124
+ -- AddForeignKey
125
+ ALTER TABLE "kanban_goals" ADD CONSTRAINT "kanban_goals_creator_id_fkey" FOREIGN KEY ("creator_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
126
+
127
+ -- AddForeignKey
128
+ ALTER TABLE "kanban_tasks" ADD CONSTRAINT "kanban_tasks_goal_id_fkey" FOREIGN KEY ("goal_id") REFERENCES "kanban_goals"("id") ON DELETE SET NULL ON UPDATE CASCADE;
129
+
130
+ -- AddForeignKey
131
+ ALTER TABLE "kanban_tasks" ADD CONSTRAINT "kanban_tasks_team_id_fkey" FOREIGN KEY ("team_id") REFERENCES "teams"("id") ON DELETE CASCADE ON UPDATE CASCADE;
132
+
133
+ -- AddForeignKey
134
+ ALTER TABLE "kanban_tasks" ADD CONSTRAINT "kanban_tasks_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
135
+
136
+ -- AddForeignKey
137
+ ALTER TABLE "kanban_tasks" ADD CONSTRAINT "kanban_tasks_creator_id_fkey" FOREIGN KEY ("creator_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
138
+
139
+ -- AddForeignKey
140
+ ALTER TABLE "kanban_tasks" ADD CONSTRAINT "kanban_tasks_reporter_id_fkey" FOREIGN KEY ("reporter_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
141
+
142
+ -- AddForeignKey
143
+ ALTER TABLE "kanban_tasks" ADD CONSTRAINT "kanban_tasks_assignee_id_fkey" FOREIGN KEY ("assignee_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
144
+
145
+ -- AddForeignKey
146
+ ALTER TABLE "kanban_tasks" ADD CONSTRAINT "kanban_tasks_target_folder_id_fkey" FOREIGN KEY ("target_folder_id") REFERENCES "assets"("id") ON DELETE SET NULL ON UPDATE CASCADE;
147
+
148
+ -- AddForeignKey
149
+ ALTER TABLE "kanban_task_links" ADD CONSTRAINT "kanban_task_links_parent_id_fkey" FOREIGN KEY ("parent_id") REFERENCES "kanban_tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
150
+
151
+ -- AddForeignKey
152
+ ALTER TABLE "kanban_task_links" ADD CONSTRAINT "kanban_task_links_child_id_fkey" FOREIGN KEY ("child_id") REFERENCES "kanban_tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
153
+
154
+ -- AddForeignKey
155
+ ALTER TABLE "kanban_task_comments" ADD CONSTRAINT "kanban_task_comments_task_id_fkey" FOREIGN KEY ("task_id") REFERENCES "kanban_tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
156
+
157
+ -- AddForeignKey
158
+ ALTER TABLE "kanban_task_comments" ADD CONSTRAINT "kanban_task_comments_author_id_fkey" FOREIGN KEY ("author_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
159
+
160
+ -- AddForeignKey
161
+ ALTER TABLE "kanban_task_events" ADD CONSTRAINT "kanban_task_events_task_id_fkey" FOREIGN KEY ("task_id") REFERENCES "kanban_tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
162
+
163
+ -- AddForeignKey
164
+ ALTER TABLE "kanban_task_events" ADD CONSTRAINT "kanban_task_events_actor_id_fkey" FOREIGN KEY ("actor_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -0,0 +1,26 @@
1
+ -- AlterEnum
2
+ -- This migration adds more than one value to an enum.
3
+ -- With PostgreSQL versions 11 and earlier, this is not possible
4
+ -- in a single migration. This can be worked around by creating
5
+ -- multiple migrations, each migration adding only one value to
6
+ -- the enum.
7
+
8
+
9
+ ALTER TYPE "NotificationType" ADD VALUE 'kanban_task_created';
10
+ ALTER TYPE "NotificationType" ADD VALUE 'kanban_task_assigned';
11
+ ALTER TYPE "NotificationType" ADD VALUE 'kanban_task_status_updated';
12
+ ALTER TYPE "NotificationType" ADD VALUE 'kanban_task_updated';
13
+ ALTER TYPE "NotificationType" ADD VALUE 'kanban_task_deleted';
14
+ ALTER TYPE "NotificationType" ADD VALUE 'kanban_task_comment_created';
15
+
16
+ -- AlterEnum
17
+ ALTER TYPE "WorkflowTaskType" ADD VALUE 'kanban_agent_run';
18
+
19
+ -- AlterTable
20
+ ALTER TABLE "notifications" ADD COLUMN "kanban_task_id" TEXT;
21
+
22
+ -- CreateIndex
23
+ CREATE INDEX "notifications_kanban_task_id_idx" ON "notifications"("kanban_task_id");
24
+
25
+ -- AddForeignKey
26
+ ALTER TABLE "notifications" ADD CONSTRAINT "notifications_kanban_task_id_fkey" FOREIGN KEY ("kanban_task_id") REFERENCES "kanban_tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,10 @@
1
+ -- AlterTable: Change sort_index column collation to "C" on kanban_tasks
2
+ ALTER TABLE "kanban_tasks" ALTER COLUMN "sort_index" TYPE TEXT COLLATE "C";
3
+
4
+ -- Recreate index on sort_index with "C" collation
5
+ DROP INDEX IF EXISTS "kanban_tasks_sort_index_idx";
6
+ CREATE INDEX "kanban_tasks_sort_index_idx" ON "kanban_tasks" ("sort_index" COLLATE "C");
7
+
8
+ -- Recreate compound index with "C" collation
9
+ DROP INDEX IF EXISTS "kanban_tasks_team_id_status_sort_index_idx";
10
+ CREATE INDEX "kanban_tasks_team_id_status_sort_index_idx" ON "kanban_tasks" ("team_id", "status", "sort_index" COLLATE "C");
@@ -0,0 +1,17 @@
1
+ -- CreateTable
2
+ CREATE TABLE "kanban_task_assets" (
3
+ "task_id" TEXT NOT NULL,
4
+ "asset_id" TEXT NOT NULL,
5
+ "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
6
+
7
+ CONSTRAINT "kanban_task_assets_pkey" PRIMARY KEY ("task_id","asset_id")
8
+ );
9
+
10
+ -- CreateIndex
11
+ CREATE INDEX "kanban_task_assets_asset_id_idx" ON "kanban_task_assets"("asset_id");
12
+
13
+ -- AddForeignKey
14
+ ALTER TABLE "kanban_task_assets" ADD CONSTRAINT "kanban_task_assets_task_id_fkey" FOREIGN KEY ("task_id") REFERENCES "kanban_tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
15
+
16
+ -- AddForeignKey
17
+ ALTER TABLE "kanban_task_assets" ADD CONSTRAINT "kanban_task_assets_asset_id_fkey" FOREIGN KEY ("asset_id") REFERENCES "assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,28 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - The values [CANCELLED] on the enum `KanbanTaskEventType` will be removed. If these variants are still used in the database, this will fail.
5
+ - The values [CANCELLED] on the enum `KanbanTaskStatus` will be removed. If these variants are still used in the database, this will fail.
6
+
7
+ */
8
+ -- AlterEnum
9
+ BEGIN;
10
+ CREATE TYPE "KanbanTaskEventType_new" AS ENUM ('CREATED', 'STATUS_CHANGED', 'ASSIGNED', 'UNASSIGNED', 'COMMENTED', 'CHANGES_REQUESTED', 'BLOCKED', 'UNBLOCKED', 'PRIORITY_CHANGED', 'GOAL_CHANGED', 'DEPENDENCY_ADDED', 'DEPENDENCY_REMOVED');
11
+ ALTER TABLE "kanban_task_events" ALTER COLUMN "type" TYPE "KanbanTaskEventType_new" USING ("type"::text::"KanbanTaskEventType_new");
12
+ ALTER TYPE "KanbanTaskEventType" RENAME TO "KanbanTaskEventType_old";
13
+ ALTER TYPE "KanbanTaskEventType_new" RENAME TO "KanbanTaskEventType";
14
+ DROP TYPE "public"."KanbanTaskEventType_old";
15
+ COMMIT;
16
+
17
+ -- AlterEnum
18
+ BEGIN;
19
+ CREATE TYPE "KanbanTaskStatus_new" AS ENUM ('TODO', 'READY', 'IN_PROGRESS', 'BLOCKED', 'IN_REVIEW', 'DONE');
20
+ ALTER TABLE "public"."kanban_tasks" ALTER COLUMN "status" DROP DEFAULT;
21
+ ALTER TABLE "kanban_tasks" ALTER COLUMN "status" TYPE "KanbanTaskStatus_new" USING ("status"::text::"KanbanTaskStatus_new");
22
+ ALTER TABLE "kanban_task_events" ALTER COLUMN "from_status" TYPE "KanbanTaskStatus_new" USING ("from_status"::text::"KanbanTaskStatus_new");
23
+ ALTER TABLE "kanban_task_events" ALTER COLUMN "to_status" TYPE "KanbanTaskStatus_new" USING ("to_status"::text::"KanbanTaskStatus_new");
24
+ ALTER TYPE "KanbanTaskStatus" RENAME TO "KanbanTaskStatus_old";
25
+ ALTER TYPE "KanbanTaskStatus_new" RENAME TO "KanbanTaskStatus";
26
+ DROP TYPE "public"."KanbanTaskStatus_old";
27
+ ALTER TABLE "kanban_tasks" ALTER COLUMN "status" SET DEFAULT 'TODO';
28
+ COMMIT;