@andrestobelem/clone 0.1.3 → 0.2.1

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.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +151 -23
  3. package/app.js +645 -0
  4. package/bin/clone.js +11 -230
  5. package/dist/actors.js +49 -0
  6. package/dist/actors.js.map +1 -0
  7. package/dist/automations.js +57 -0
  8. package/dist/automations.js.map +1 -0
  9. package/dist/cli.js +565 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/database.js +62 -0
  12. package/dist/database.js.map +1 -0
  13. package/dist/errors.js +46 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/issues.js +264 -0
  16. package/dist/issues.js.map +1 -0
  17. package/dist/paths.js +42 -0
  18. package/dist/paths.js.map +1 -0
  19. package/dist/projects.js +134 -0
  20. package/dist/projects.js.map +1 -0
  21. package/dist/recurring.js +45 -0
  22. package/dist/recurring.js.map +1 -0
  23. package/dist/schema.js +52 -0
  24. package/dist/schema.js.map +1 -0
  25. package/dist/seed.js +498 -0
  26. package/dist/seed.js.map +1 -0
  27. package/dist/server.js +232 -0
  28. package/dist/server.js.map +1 -0
  29. package/dist/sync.js +625 -0
  30. package/dist/sync.js.map +1 -0
  31. package/dist/teams.js +77 -0
  32. package/dist/teams.js.map +1 -0
  33. package/dist/time.js +4 -0
  34. package/dist/time.js.map +1 -0
  35. package/dist/types.js +2 -0
  36. package/dist/types.js.map +1 -0
  37. package/dist/validation.js +254 -0
  38. package/dist/validation.js.map +1 -0
  39. package/dist/workspace-helpers.js +75 -0
  40. package/dist/workspace-helpers.js.map +1 -0
  41. package/dist/workspace-mutations.js +160 -0
  42. package/dist/workspace-mutations.js.map +1 -0
  43. package/dist/workspace-reads.js +62 -0
  44. package/dist/workspace-reads.js.map +1 -0
  45. package/dist/workspace.js +8 -0
  46. package/dist/workspace.js.map +1 -0
  47. package/index.html +73 -0
  48. package/package.json +33 -4
  49. package/styles.css +108 -0
package/dist/schema.js ADDED
@@ -0,0 +1,52 @@
1
+ export const schema = `
2
+ CREATE TABLE IF NOT EXISTS workspace (id INTEGER PRIMARY KEY, name TEXT NOT NULL, icon TEXT NOT NULL DEFAULT 'A', created_at TEXT NOT NULL);
3
+ CREATE TABLE IF NOT EXISTS members (id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, role TEXT NOT NULL DEFAULT 'Member', avatar_color TEXT NOT NULL DEFAULT '#d8b5a4', active INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL);
4
+ CREATE TABLE IF NOT EXISTS actors (
5
+ id INTEGER PRIMARY KEY AUTOINCREMENT, kind TEXT NOT NULL CHECK(kind IN ('member','agent')),
6
+ name TEXT NOT NULL CHECK(length(trim(name)) > 0), active INTEGER NOT NULL DEFAULT 1 CHECK(active IN (0,1)),
7
+ member_id INTEGER UNIQUE REFERENCES members(id), key TEXT UNIQUE, avatar_color TEXT NOT NULL DEFAULT '#8585cc', created_at TEXT NOT NULL,
8
+ CHECK((kind='member' AND member_id IS NOT NULL AND member_id=id AND key IS NULL) OR (kind='agent' AND member_id IS NULL AND key IS NOT NULL AND length(trim(key)) > 0))
9
+ );
10
+ CREATE TABLE IF NOT EXISTS teams (id INTEGER PRIMARY KEY, name TEXT NOT NULL, key TEXT NOT NULL UNIQUE, description TEXT NOT NULL DEFAULT '', icon TEXT NOT NULL DEFAULT '✳', timezone TEXT NOT NULL DEFAULT 'America/Argentina/Buenos_Aires', estimate_type TEXT NOT NULL DEFAULT 'Points', created_at TEXT NOT NULL);
11
+ CREATE TABLE IF NOT EXISTS team_members (team_id INTEGER NOT NULL REFERENCES teams(id), member_id INTEGER NOT NULL REFERENCES actors(id), role TEXT NOT NULL DEFAULT 'Member', PRIMARY KEY(team_id, member_id));
12
+ CREATE TABLE IF NOT EXISTS issue_statuses (id INTEGER PRIMARY KEY, team_id INTEGER NOT NULL REFERENCES teams(id), name TEXT NOT NULL, category TEXT NOT NULL, position INTEGER NOT NULL, color TEXT NOT NULL DEFAULT '#8e8e98', is_default INTEGER NOT NULL DEFAULT 0);
13
+ CREATE TABLE IF NOT EXISTS labels (id INTEGER PRIMARY KEY, name TEXT NOT NULL, color TEXT NOT NULL DEFAULT '#8585cc', team_id INTEGER REFERENCES teams(id), UNIQUE(name, team_id));
14
+ CREATE TABLE IF NOT EXISTS projects (id INTEGER PRIMARY KEY, name TEXT NOT NULL, summary TEXT NOT NULL DEFAULT '', description TEXT NOT NULL DEFAULT '', status TEXT NOT NULL DEFAULT 'Backlog', priority INTEGER NOT NULL DEFAULT 4, icon TEXT NOT NULL DEFAULT '◈', lead_id INTEGER REFERENCES actors(id), start_date TEXT, target_date TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, archived INTEGER NOT NULL DEFAULT 0);
15
+ CREATE TABLE IF NOT EXISTS project_teams (project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, team_id INTEGER NOT NULL REFERENCES teams(id), PRIMARY KEY(project_id, team_id));
16
+ CREATE TABLE IF NOT EXISTS project_members (project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, member_id INTEGER NOT NULL REFERENCES actors(id), PRIMARY KEY(project_id, member_id));
17
+ CREATE TABLE IF NOT EXISTS project_labels (project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, label_id INTEGER NOT NULL REFERENCES labels(id), PRIMARY KEY(project_id, label_id));
18
+ CREATE TABLE IF NOT EXISTS project_dependencies (project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, depends_on_id INTEGER NOT NULL REFERENCES projects(id), dependency_type TEXT NOT NULL DEFAULT 'blocks', PRIMARY KEY(project_id, depends_on_id));
19
+ CREATE TABLE IF NOT EXISTS cycles (id INTEGER PRIMARY KEY, team_id INTEGER NOT NULL REFERENCES teams(id), name TEXT NOT NULL, starts_at TEXT NOT NULL, ends_at TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'Upcoming', capacity REAL NOT NULL DEFAULT 20, created_at TEXT NOT NULL);
20
+ CREATE TABLE IF NOT EXISTS milestones (id INTEGER PRIMARY KEY, project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, name TEXT NOT NULL, due_date TEXT, status TEXT NOT NULL DEFAULT 'Todo', position INTEGER NOT NULL DEFAULT 0);
21
+ CREATE TABLE IF NOT EXISTS project_updates (id INTEGER PRIMARY KEY, project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, health TEXT NOT NULL DEFAULT 'On track', body TEXT NOT NULL, author_id INTEGER REFERENCES actors(id), created_at TEXT NOT NULL);
22
+ CREATE TABLE IF NOT EXISTS issues (id INTEGER PRIMARY KEY, identifier TEXT NOT NULL UNIQUE, number INTEGER NOT NULL, team_id INTEGER NOT NULL REFERENCES teams(id), title TEXT NOT NULL, description TEXT NOT NULL DEFAULT '', status_id INTEGER NOT NULL REFERENCES issue_statuses(id), priority INTEGER NOT NULL DEFAULT 4, assignee_id INTEGER REFERENCES actors(id), creator_id INTEGER REFERENCES actors(id), project_id INTEGER REFERENCES projects(id), cycle_id INTEGER REFERENCES cycles(id), milestone_id INTEGER REFERENCES milestones(id), due_date TEXT, estimate REAL, parent_id INTEGER REFERENCES issues(id), recurring_rule TEXT, external_url TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, archived INTEGER NOT NULL DEFAULT 0);
23
+ CREATE TABLE IF NOT EXISTS issue_labels (issue_id INTEGER NOT NULL REFERENCES issues(id) ON DELETE CASCADE, label_id INTEGER NOT NULL REFERENCES labels(id), PRIMARY KEY(issue_id, label_id));
24
+ CREATE TABLE IF NOT EXISTS issue_subscribers (issue_id INTEGER NOT NULL REFERENCES issues(id) ON DELETE CASCADE, member_id INTEGER NOT NULL REFERENCES actors(id), PRIMARY KEY(issue_id, member_id));
25
+ CREATE TABLE IF NOT EXISTS issue_relations (id INTEGER PRIMARY KEY, issue_id INTEGER NOT NULL REFERENCES issues(id) ON DELETE CASCADE, related_issue_id INTEGER REFERENCES issues(id), relation_type TEXT NOT NULL DEFAULT 'relates to', url TEXT);
26
+ CREATE TABLE IF NOT EXISTS comments (id INTEGER PRIMARY KEY, issue_id INTEGER NOT NULL REFERENCES issues(id) ON DELETE CASCADE, author_id INTEGER NOT NULL REFERENCES actors(id), body TEXT NOT NULL, created_at TEXT NOT NULL);
27
+ CREATE TABLE IF NOT EXISTS issue_attachments (id INTEGER PRIMARY KEY, issue_id INTEGER NOT NULL REFERENCES issues(id) ON DELETE CASCADE, name TEXT NOT NULL, content_type TEXT NOT NULL DEFAULT 'application/octet-stream', size INTEGER NOT NULL, storage_name TEXT NOT NULL UNIQUE, created_at TEXT NOT NULL);
28
+ CREATE TABLE IF NOT EXISTS activity_events (id INTEGER PRIMARY KEY, entity_type TEXT NOT NULL, entity_id INTEGER NOT NULL, actor_id INTEGER REFERENCES actors(id), action TEXT NOT NULL, payload TEXT NOT NULL DEFAULT '{}', created_at TEXT NOT NULL);
29
+ CREATE TABLE IF NOT EXISTS views (id INTEGER PRIMARY KEY, name TEXT NOT NULL, description TEXT NOT NULL DEFAULT '', icon TEXT NOT NULL DEFAULT '◈', entity TEXT NOT NULL DEFAULT 'issues', scope TEXT NOT NULL DEFAULT 'Personal', owner_id INTEGER REFERENCES actors(id), team_id INTEGER REFERENCES teams(id), filters_json TEXT NOT NULL DEFAULT '{}', display_json TEXT NOT NULL DEFAULT '{}', is_favorite INTEGER NOT NULL DEFAULT 0, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
30
+ CREATE TABLE IF NOT EXISTS team_resources (id INTEGER PRIMARY KEY, team_id INTEGER NOT NULL REFERENCES teams(id) ON DELETE CASCADE, section TEXT NOT NULL DEFAULT 'Resources', title TEXT NOT NULL, url TEXT);
31
+ CREATE TABLE IF NOT EXISTS notifications (id INTEGER PRIMARY KEY, recipient_id INTEGER NOT NULL REFERENCES actors(id), kind TEXT NOT NULL, title TEXT NOT NULL, body TEXT NOT NULL DEFAULT '', entity_type TEXT, entity_id INTEGER, is_read INTEGER NOT NULL DEFAULT 0, archived INTEGER NOT NULL DEFAULT 0, created_at TEXT NOT NULL);
32
+ CREATE TABLE IF NOT EXISTS app_settings (key TEXT PRIMARY KEY, value_json TEXT NOT NULL, updated_at TEXT NOT NULL);
33
+ CREATE TABLE IF NOT EXISTS recurring_rules (id INTEGER PRIMARY KEY, team_id INTEGER NOT NULL REFERENCES teams(id), title TEXT NOT NULL, description TEXT NOT NULL DEFAULT '', cadence TEXT NOT NULL, next_run TEXT NOT NULL, enabled INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL);
34
+ CREATE TABLE IF NOT EXISTS automations (id INTEGER PRIMARY KEY, team_id INTEGER NOT NULL REFERENCES teams(id), name TEXT NOT NULL, trigger_json TEXT NOT NULL, condition_json TEXT NOT NULL DEFAULT '{}', action_json TEXT NOT NULL, enabled INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
35
+ `;
36
+ export const issueStatuses = [
37
+ ["Backlog", "Backlog"],
38
+ ["Todo", "Unstarted"],
39
+ ["In Progress", "Started"],
40
+ ["In Review", "Started"],
41
+ ["Done", "Completed"],
42
+ ["Canceled", "Canceled"],
43
+ ["Duplicate", "Duplicate"],
44
+ ];
45
+ export const priorities = [
46
+ "Urgent",
47
+ "High",
48
+ "Medium",
49
+ "Low",
50
+ "No priority",
51
+ ];
52
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCrB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,aAAa,EAAE,SAAS,CAAC;IAC1B,CAAC,WAAW,EAAE,SAAS,CAAC;IACxB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,WAAW,EAAE,WAAW,CAAC;CAClB,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,KAAK;IACL,aAAa;CACL,CAAC"}
package/dist/seed.js ADDED
@@ -0,0 +1,498 @@
1
+ import { run, scalar, sql } from "./database.js";
2
+ import { issueStatuses, schema } from "./schema.js";
3
+ import { now } from "./time.js";
4
+ export function initializeSchema(database) {
5
+ database.exec(schema);
6
+ }
7
+ export function createMemberActors(database) {
8
+ database.exec(`INSERT INTO actors(id,kind,name,active,member_id,avatar_color,created_at)
9
+ SELECT id,'member',name,active,id,avatar_color,created_at FROM members`);
10
+ }
11
+ export function seedEmpty(database) {
12
+ initializeSchema(database);
13
+ if (scalar(database, "SELECT COUNT(*) FROM workspace"))
14
+ return;
15
+ const stamp = now();
16
+ run(database, "INSERT INTO workspace(id,name,icon,created_at) VALUES(1,?,?,?)", "My Workspace", "M", stamp);
17
+ run(database, "INSERT INTO members(id,name,email,role,avatar_color,created_at) VALUES(1,?,?,?,?,?)", "Local User", "local@clone.local", "Workspace admin", "#88a8ce", stamp);
18
+ createMemberActors(database);
19
+ updateSetting(database, "preferences", {
20
+ defaultHome: "Issues",
21
+ theme: "Light",
22
+ sidebar: {},
23
+ });
24
+ updateSetting(database, "workspace", {
25
+ name: "My Workspace",
26
+ timezone: "UTC",
27
+ issueIdentifier: "ISS",
28
+ inviteDomain: null,
29
+ });
30
+ }
31
+ export function seedDemo(database) {
32
+ initializeSchema(database);
33
+ if (scalar(database, "SELECT COUNT(*) FROM workspace"))
34
+ return;
35
+ const stamp = now();
36
+ run(database, "INSERT INTO workspace(id,name,icon,created_at) VALUES(1,?,?,?)", "Acme Studio", "A", stamp);
37
+ const people = [
38
+ [1, "Alex Morgan", "alex@acme.local", "Workspace admin", "#cda58f"],
39
+ [2, "Maya Chen", "maya@acme.local", "Member", "#ac95d4"],
40
+ [3, "Sam Rivera", "sam@acme.local", "Member", "#79a99b"],
41
+ [4, "Jordan Lee", "jordan@acme.local", "Member", "#d79da5"],
42
+ [5, "Taylor Kim", "taylor@acme.local", "Member", "#88a8ce"],
43
+ ];
44
+ for (const person of people) {
45
+ run(database, "INSERT INTO members(id,name,email,role,avatar_color,created_at) VALUES(?,?,?,?,?,?)", ...person, stamp);
46
+ }
47
+ createMemberActors(database);
48
+ run(database, "INSERT INTO teams(id,name,key,description,icon,created_at) VALUES(1,'Product','PRO','Build a product people love.','✳',?)", stamp);
49
+ run(database, "INSERT INTO teams(id,name,key,description,icon,created_at) VALUES(2,'Design','DSN','Shape a clear, considered experience.','◇',?)", stamp);
50
+ for (const [teamId, memberId, role] of [
51
+ [1, 1, "Lead"],
52
+ [1, 2, "Member"],
53
+ [1, 3, "Member"],
54
+ [1, 4, "Member"],
55
+ [2, 1, "Lead"],
56
+ [2, 2, "Member"],
57
+ [2, 4, "Member"],
58
+ [2, 5, "Member"],
59
+ ]) {
60
+ run(database, "INSERT INTO team_members(team_id,member_id,role) VALUES(?,?,?)", teamId, memberId, role);
61
+ }
62
+ const colors = {
63
+ Backlog: "#a3a3ad",
64
+ Todo: "#6e9dd5",
65
+ "In Progress": "#8584dd",
66
+ "In Review": "#b881d2",
67
+ Done: "#54b58b",
68
+ Canceled: "#8b8b93",
69
+ Duplicate: "#8b8b93",
70
+ };
71
+ for (const teamId of [1, 2]) {
72
+ issueStatuses.forEach(([name, category], position) => run(database, "INSERT INTO issue_statuses(team_id,name,category,position,color,is_default) VALUES(?,?,?,?,?,?)", teamId, name, category, position, colors[name], name === "Backlog" ? 1 : 0));
73
+ }
74
+ seedDemoContent(database, stamp);
75
+ }
76
+ function seedDemoContent(database, stamp) {
77
+ const labels = [
78
+ [1, "Feature", "#7c78d8", 1],
79
+ [2, "Bug", "#d96c68", 1],
80
+ [3, "Improvement", "#6394d4", 1],
81
+ [4, "Design", "#c27ad2", 1],
82
+ [5, "Urgent", "#e3a74f", 1],
83
+ [6, "Accessibility", "#58a88d", 1],
84
+ [7, "Frontend", "#7496d4", 1],
85
+ [8, "Research", "#c58e58", 2],
86
+ ];
87
+ for (const item of labels)
88
+ run(database, "INSERT INTO labels(id,name,color,team_id) VALUES(?,?,?,?)", ...item);
89
+ const cycles = [
90
+ [1, 1, "Cycle 24", "2026-10-24", "2026-11-07", "Active", 24],
91
+ [2, 1, "Cycle 25", "2026-11-07", "2026-11-21", "Upcoming", 24],
92
+ [3, 2, "Design cycle 12", "2026-10-28", "2026-11-11", "Active", 18],
93
+ ];
94
+ for (const item of cycles)
95
+ run(database, "INSERT INTO cycles(id,team_id,name,starts_at,ends_at,status,capacity,created_at) VALUES(?,?,?,?,?,?,?,?)", ...item, stamp);
96
+ const projects = [
97
+ [
98
+ 1,
99
+ "Workspace foundations",
100
+ "Make everyday project work feel fast and clear.",
101
+ "Improve the core planning experience for teams.",
102
+ "In Progress",
103
+ 2,
104
+ "◈",
105
+ 1,
106
+ "2026-09-15",
107
+ "2026-10-18",
108
+ ],
109
+ [
110
+ 2,
111
+ "Spring product launch",
112
+ "Bring the next version of Acme to every team.",
113
+ "Prepare the product launch across product and design.",
114
+ "In Progress",
115
+ 1,
116
+ "✳",
117
+ 1,
118
+ "2026-09-20",
119
+ "2026-11-02",
120
+ ],
121
+ [
122
+ 3,
123
+ "Design system refresh",
124
+ "A sharper, more consistent UI across the product.",
125
+ "Refresh components, tokens, and documentation.",
126
+ "Planned",
127
+ 3,
128
+ "⬡",
129
+ 4,
130
+ "2026-10-05",
131
+ "2026-12-01",
132
+ ],
133
+ ];
134
+ for (const item of projects)
135
+ run(database, "INSERT INTO projects(id,name,summary,description,status,priority,icon,lead_id,start_date,target_date,created_at,updated_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)", ...item, stamp, stamp);
136
+ for (const item of [
137
+ [1, 1],
138
+ [1, 2],
139
+ [2, 1],
140
+ [2, 2],
141
+ [3, 2],
142
+ ])
143
+ run(database, "INSERT INTO project_teams(project_id,team_id) VALUES(?,?)", ...item);
144
+ for (const item of [
145
+ [1, 1],
146
+ [1, 2],
147
+ [1, 3],
148
+ [2, 1],
149
+ [2, 2],
150
+ [2, 4],
151
+ [3, 4],
152
+ [3, 5],
153
+ ])
154
+ run(database, "INSERT INTO project_members(project_id,member_id) VALUES(?,?)", ...item);
155
+ run(database, "INSERT INTO project_dependencies(project_id,depends_on_id,dependency_type) VALUES(2,1,'blocks')");
156
+ const milestones = [
157
+ [1, 1, "Prototype review", "2026-10-04", "Done", 0],
158
+ [2, 1, "Team beta", "2026-10-12", "In Progress", 1],
159
+ [3, 1, "General availability", "2026-10-18", "Todo", 2],
160
+ [4, 2, "Launch readiness", "2026-10-22", "Todo", 0],
161
+ [5, 3, "Token audit", "2026-10-20", "Todo", 0],
162
+ ];
163
+ for (const item of milestones)
164
+ run(database, "INSERT INTO milestones(id,project_id,name,due_date,status,position) VALUES(?,?,?,?,?,?)", ...item);
165
+ const issueData = [
166
+ [
167
+ 248,
168
+ 1,
169
+ "Add keyboard shortcuts to command menu",
170
+ "Make command navigation available without leaving the keyboard.",
171
+ "In Progress",
172
+ 0,
173
+ 1,
174
+ 2,
175
+ 1,
176
+ 1,
177
+ "2026-10-05",
178
+ 3,
179
+ ],
180
+ [
181
+ 246,
182
+ 1,
183
+ "Support custom issue labels",
184
+ "Let teams add, color, and filter their own labels.",
185
+ "In Progress",
186
+ 1,
187
+ 2,
188
+ 1,
189
+ 1,
190
+ 1,
191
+ "2026-10-08",
192
+ 5,
193
+ ],
194
+ [
195
+ 241,
196
+ 1,
197
+ "Fix layout shift on the project overview",
198
+ "Prevent cards jumping while progress data loads.",
199
+ "In Progress",
200
+ 2,
201
+ 4,
202
+ 1,
203
+ 1,
204
+ 1,
205
+ "2026-10-09",
206
+ 2,
207
+ ],
208
+ [
209
+ 239,
210
+ 1,
211
+ "Add a compact sidebar density option",
212
+ "Offer a narrower navigation layout.",
213
+ "Todo",
214
+ 1,
215
+ 3,
216
+ 1,
217
+ 1,
218
+ 2,
219
+ "2026-10-12",
220
+ null,
221
+ ],
222
+ [
223
+ 237,
224
+ 1,
225
+ "Remember the last selected team view",
226
+ "Restore the last active view on the next visit.",
227
+ "Todo",
228
+ 2,
229
+ 1,
230
+ 1,
231
+ 1,
232
+ 2,
233
+ null,
234
+ 2,
235
+ ],
236
+ [
237
+ 232,
238
+ 2,
239
+ "Improve keyboard focus in issue details",
240
+ "Keep focus visible when navigating issue properties.",
241
+ "Backlog",
242
+ 3,
243
+ 2,
244
+ 1,
245
+ 3,
246
+ 3,
247
+ null,
248
+ null,
249
+ ],
250
+ [
251
+ 229,
252
+ 2,
253
+ "Create project update templates",
254
+ "Start project updates from reusable templates.",
255
+ "Backlog",
256
+ 4,
257
+ 3,
258
+ 1,
259
+ 2,
260
+ 3,
261
+ null,
262
+ null,
263
+ ],
264
+ [
265
+ 226,
266
+ 2,
267
+ "Polish empty states across the workspace",
268
+ "Add helpful next steps to empty product views.",
269
+ "Done",
270
+ 2,
271
+ 4,
272
+ 1,
273
+ 1,
274
+ 3,
275
+ null,
276
+ null,
277
+ ],
278
+ [
279
+ 218,
280
+ 2,
281
+ "Document color token usage",
282
+ "Record accessibility contrast constraints for the palette.",
283
+ "In Review",
284
+ 3,
285
+ 5,
286
+ 2,
287
+ 3,
288
+ 3,
289
+ "2026-10-14",
290
+ null,
291
+ ],
292
+ [
293
+ 216,
294
+ 1,
295
+ "Add keyboard shortcuts help panel",
296
+ "Show discoverable shortcuts from the help menu.",
297
+ "Backlog",
298
+ 4,
299
+ 1,
300
+ 1,
301
+ null,
302
+ 2,
303
+ null,
304
+ null,
305
+ ],
306
+ [
307
+ 95,
308
+ 2,
309
+ "Audit empty state illustrations",
310
+ "Review illustration consistency across feature areas.",
311
+ "Todo",
312
+ 3,
313
+ 4,
314
+ 2,
315
+ 3,
316
+ 3,
317
+ "2026-10-16",
318
+ null,
319
+ ],
320
+ [
321
+ 93,
322
+ 1,
323
+ "Add issue dependency indicators",
324
+ "Show blocked-by relationships in list and detail views.",
325
+ "Backlog",
326
+ 2,
327
+ 2,
328
+ 1,
329
+ 1,
330
+ 2,
331
+ null,
332
+ 3,
333
+ ],
334
+ ];
335
+ for (const item of issueData) {
336
+ const [number, team, title, description, status, priority, assignee, creator, project, cycle, due, estimate,] = item;
337
+ const statusId = scalar(database, "SELECT id FROM issue_statuses WHERE team_id=? AND name=?", team, status);
338
+ run(database, "INSERT INTO issues(identifier,number,team_id,title,description,status_id,priority,assignee_id,creator_id,project_id,cycle_id,due_date,estimate,created_at,updated_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", `${team === 1 ? "PRO" : "DSN"}-${number}`, number, team, title, description, sql(statusId), priority, assignee, creator, project, cycle, due, estimate, stamp, stamp);
339
+ }
340
+ const issueId = (identifier) => Number(scalar(database, "SELECT id FROM issues WHERE identifier=?", identifier));
341
+ const issueLabels = {
342
+ "PRO-248": [1, 7],
343
+ "PRO-246": [1],
344
+ "PRO-241": [2, 7],
345
+ "PRO-239": [3],
346
+ "DSN-232": [6],
347
+ "DSN-218": [4, 8],
348
+ "DSN-95": [4],
349
+ };
350
+ for (const [identifier, labelIds] of Object.entries(issueLabels))
351
+ for (const labelId of labelIds)
352
+ run(database, "INSERT INTO issue_labels(issue_id,label_id) VALUES(?,?)", issueId(identifier), labelId);
353
+ for (const item of [
354
+ ["PRO-248", 1],
355
+ ["PRO-248", 2],
356
+ ["PRO-246", 1],
357
+ ["DSN-218", 1],
358
+ ])
359
+ run(database, "INSERT INTO issue_subscribers(issue_id,member_id) VALUES(?,?)", issueId(item[0]), item[1]);
360
+ run(database, "INSERT INTO issue_relations(issue_id,related_issue_id,relation_type) VALUES(?,?,?)", issueId("PRO-241"), issueId("PRO-93"), "blocked by");
361
+ run(database, "INSERT INTO issue_relations(issue_id,related_issue_id,relation_type) VALUES(?,?,?)", issueId("PRO-248"), issueId("PRO-216"), "relates to");
362
+ run(database, "INSERT INTO comments(issue_id,author_id,body,created_at) VALUES(?,?,?,?)", issueId("PRO-248"), 2, "I drafted the shortcut map; we can review the final keys with the team.", stamp);
363
+ run(database, "INSERT INTO team_resources(team_id,section,title,url) VALUES(1,'Resources','Product principles','https://example.local/principles')");
364
+ const notifications = [
365
+ [
366
+ 1,
367
+ 1,
368
+ "comment",
369
+ "Maya commented on PRO-248",
370
+ "I drafted the shortcut map; we can review the final keys with the team.",
371
+ "issue",
372
+ issueId("PRO-248"),
373
+ 0,
374
+ ],
375
+ [
376
+ 2,
377
+ 1,
378
+ "assignment",
379
+ "PRO-237 was assigned to you",
380
+ "Remember the last selected team view",
381
+ "issue",
382
+ issueId("PRO-237"),
383
+ 0,
384
+ ],
385
+ [
386
+ 3,
387
+ 1,
388
+ "project_update",
389
+ "Workspace foundations update",
390
+ "Prototype review is complete. The team beta is next.",
391
+ "project",
392
+ 1,
393
+ 1,
394
+ ],
395
+ [
396
+ 4,
397
+ 2,
398
+ "mention",
399
+ "Alex mentioned you in PRO-246",
400
+ "Can you review the labels proposal?",
401
+ "issue",
402
+ issueId("PRO-246"),
403
+ 0,
404
+ ],
405
+ ];
406
+ for (const item of notifications)
407
+ run(database, "INSERT INTO notifications(id,recipient_id,kind,title,body,entity_type,entity_id,is_read,created_at) VALUES(?,?,?,?,?,?,?,?,?)", ...item, stamp);
408
+ const views = [
409
+ [
410
+ 1,
411
+ "All issues",
412
+ "Everything in the Product team",
413
+ "◈",
414
+ "issues",
415
+ "Team",
416
+ null,
417
+ 1,
418
+ { status: "all" },
419
+ { layout: "List", groupBy: "Status", orderBy: "Priority" },
420
+ 1,
421
+ ],
422
+ [
423
+ 2,
424
+ "My open issues",
425
+ "Assigned to Alex and not completed",
426
+ "◎",
427
+ "issues",
428
+ "Personal",
429
+ 1,
430
+ 1,
431
+ { assignee: "Alex Morgan", completed: false },
432
+ { layout: "List", groupBy: "Status", orderBy: "Updated" },
433
+ 1,
434
+ ],
435
+ [
436
+ 3,
437
+ "Project tracking",
438
+ "Active project delivery",
439
+ "✳",
440
+ "projects",
441
+ "Workspace",
442
+ null,
443
+ null,
444
+ { status: "In Progress" },
445
+ { layout: "Board", groupBy: "Status", orderBy: "Target date" },
446
+ 0,
447
+ ],
448
+ ];
449
+ for (const item of views) {
450
+ const [id, name, description, icon, entity, scope, owner, team, filters, display, favorite,] = item;
451
+ run(database, "INSERT INTO views(id,name,description,icon,entity,scope,owner_id,team_id,filters_json,display_json,is_favorite,created_at,updated_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)", id, name, description, icon, entity, scope, owner, team, JSON.stringify(filters), JSON.stringify(display), favorite, stamp, stamp);
452
+ }
453
+ const settings = {
454
+ preferences: {
455
+ defaultHome: "Issues",
456
+ displayNames: "Full name",
457
+ firstDayOfWeek: "Monday",
458
+ commentSubmit: "Enter",
459
+ fontSize: "Default",
460
+ theme: "Light",
461
+ spelling: true,
462
+ autoAssignToSelf: false,
463
+ sidebar: { Inbox: true, "My issues": true, Projects: true, Views: true },
464
+ orderCompletedByRecency: false,
465
+ },
466
+ workspace: {
467
+ name: "Acme Studio",
468
+ timezone: "America/Argentina/Buenos_Aires",
469
+ issueIdentifier: "PRO",
470
+ inviteDomain: null,
471
+ },
472
+ integrations: [
473
+ { name: "GitHub", connected: false },
474
+ { name: "Slack", connected: false },
475
+ ],
476
+ featureFlags: {
477
+ cycles: true,
478
+ triage: true,
479
+ automations: true,
480
+ customerRequests: false,
481
+ releases: true,
482
+ initiatives: true,
483
+ pulse: false,
484
+ asks: false,
485
+ },
486
+ };
487
+ for (const [key, value] of Object.entries(settings))
488
+ updateSetting(database, key, value);
489
+ const nextRun = new Date(Date.now() + 7 * 86400000)
490
+ .toISOString()
491
+ .slice(0, 10);
492
+ run(database, "INSERT INTO recurring_rules(team_id,title,description,cadence,next_run,enabled,created_at) VALUES(1,?,?,?,?,1,?)", "Weekly planning reminder", "Review open issues before cycle planning.", "Weekly", nextRun, stamp);
493
+ run(database, "INSERT INTO automations(team_id,name,trigger_json,condition_json,action_json,enabled,created_at,updated_at) VALUES(1,?,?,?,?,1,?,?)", "Assign urgent bugs", JSON.stringify({ event: "issue.created" }), JSON.stringify({ label: "Bug", priority: "Urgent" }), JSON.stringify({ assignTo: 1 }), stamp, stamp);
494
+ }
495
+ function updateSetting(database, key, value) {
496
+ run(database, "INSERT INTO app_settings(key,value_json,updated_at) VALUES(?,?,?) ON CONFLICT(key) DO UPDATE SET value_json=excluded.value_json,updated_at=excluded.updated_at", key, JSON.stringify(value), now());
497
+ }
498
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"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"}