agkan 2.14.3 → 2.15.0

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 (179) hide show
  1. package/README.ja.md +13 -13
  2. package/README.md +13 -13
  3. package/dist/board/boardFavicon.d.ts +2 -0
  4. package/dist/board/boardFavicon.d.ts.map +1 -0
  5. package/dist/board/boardFavicon.js +5 -0
  6. package/dist/board/boardFavicon.js.map +1 -0
  7. package/dist/board/boardRenderer.d.ts +22 -6
  8. package/dist/board/boardRenderer.d.ts.map +1 -1
  9. package/dist/board/boardRenderer.js +40 -24
  10. package/dist/board/boardRenderer.js.map +1 -1
  11. package/dist/board/boardRoutes.d.ts +2 -2
  12. package/dist/board/boardRoutes.d.ts.map +1 -1
  13. package/dist/board/boardRoutes.js +18 -3
  14. package/dist/board/boardRoutes.js.map +1 -1
  15. package/dist/board/boardStyles.d.ts +1 -1
  16. package/dist/board/boardStyles.d.ts.map +1 -1
  17. package/dist/board/boardStyles.js +14 -6
  18. package/dist/board/boardStyles.js.map +1 -1
  19. package/dist/board/client/board.js +369 -13
  20. package/dist/board/server.d.ts +2 -2
  21. package/dist/board/server.d.ts.map +1 -1
  22. package/dist/board/server.js +5 -5
  23. package/dist/board/server.js.map +1 -1
  24. package/dist/cli/commands/agent-guide.d.ts.map +1 -1
  25. package/dist/cli/commands/agent-guide.js +6 -0
  26. package/dist/cli/commands/agent-guide.js.map +1 -1
  27. package/dist/cli/commands/board.d.ts.map +1 -1
  28. package/dist/cli/commands/board.js +202 -15
  29. package/dist/cli/commands/board.js.map +1 -1
  30. package/dist/cli/commands/ps.d.ts +7 -0
  31. package/dist/cli/commands/ps.d.ts.map +1 -0
  32. package/dist/cli/commands/ps.js +83 -0
  33. package/dist/cli/commands/ps.js.map +1 -0
  34. package/dist/cli/commands/task/add.js +1 -1
  35. package/dist/cli/commands/task/add.js.map +1 -1
  36. package/dist/cli/commands/task/copy.d.ts +6 -0
  37. package/dist/cli/commands/task/copy.d.ts.map +1 -0
  38. package/dist/cli/commands/task/copy.js +118 -0
  39. package/dist/cli/commands/task/copy.js.map +1 -0
  40. package/dist/cli/commands/task/list.d.ts.map +1 -1
  41. package/dist/cli/commands/task/list.js +37 -17
  42. package/dist/cli/commands/task/list.js.map +1 -1
  43. package/dist/cli/index.js +2 -0
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/cli/utils/board-daemon.d.ts +7 -0
  46. package/dist/cli/utils/board-daemon.d.ts.map +1 -0
  47. package/dist/cli/utils/board-daemon.js +77 -0
  48. package/dist/cli/utils/board-daemon.js.map +1 -0
  49. package/dist/db/adapters/sqlite-storage-backend.d.ts +26 -0
  50. package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -0
  51. package/dist/db/adapters/sqlite-storage-backend.js +447 -0
  52. package/dist/db/adapters/sqlite-storage-backend.js.map +1 -0
  53. package/dist/db/connection.d.ts +14 -0
  54. package/dist/db/connection.d.ts.map +1 -1
  55. package/dist/db/connection.js +28 -2
  56. package/dist/db/connection.js.map +1 -1
  57. package/dist/db/migrations/20260328000000_initial_schema.d.ts +3 -0
  58. package/dist/db/migrations/20260328000000_initial_schema.d.ts.map +1 -0
  59. package/dist/db/migrations/20260328000000_initial_schema.js +218 -0
  60. package/dist/db/migrations/20260328000000_initial_schema.js.map +1 -0
  61. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts +3 -0
  62. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts.map +1 -0
  63. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js +7 -0
  64. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js.map +1 -0
  65. package/dist/db/migrations/index.d.ts +4 -0
  66. package/dist/db/migrations/index.d.ts.map +1 -0
  67. package/dist/db/migrations/index.js +18 -0
  68. package/dist/db/migrations/index.js.map +1 -0
  69. package/dist/db/migrations/types.d.ts +17 -0
  70. package/dist/db/migrations/types.d.ts.map +1 -0
  71. package/dist/{board/client → db/migrations}/types.js +0 -1
  72. package/dist/db/migrations/types.js.map +1 -0
  73. package/dist/db/reset.d.ts.map +1 -1
  74. package/dist/db/reset.js +8 -3
  75. package/dist/db/reset.js.map +1 -1
  76. package/dist/db/schema.d.ts +4 -4
  77. package/dist/db/schema.d.ts.map +1 -1
  78. package/dist/db/schema.js +22 -207
  79. package/dist/db/schema.js.map +1 -1
  80. package/dist/db/types/repository.d.ts +192 -0
  81. package/dist/db/types/repository.d.ts.map +1 -0
  82. package/dist/db/types/repository.js +15 -0
  83. package/dist/db/types/repository.js.map +1 -0
  84. package/dist/models/Attachment.d.ts +25 -0
  85. package/dist/models/Attachment.d.ts.map +1 -0
  86. package/dist/models/Attachment.js +7 -0
  87. package/dist/models/Attachment.js.map +1 -0
  88. package/dist/services/AttachmentService.d.ts +62 -0
  89. package/dist/services/AttachmentService.d.ts.map +1 -0
  90. package/dist/services/AttachmentService.js +95 -0
  91. package/dist/services/AttachmentService.js.map +1 -0
  92. package/dist/services/ClaudeProcessService.d.ts +100 -0
  93. package/dist/services/ClaudeProcessService.d.ts.map +1 -0
  94. package/dist/services/ClaudeProcessService.js +278 -0
  95. package/dist/services/ClaudeProcessService.js.map +1 -0
  96. package/dist/services/CommentService.d.ts +3 -3
  97. package/dist/services/CommentService.d.ts.map +1 -1
  98. package/dist/services/CommentService.js +10 -70
  99. package/dist/services/CommentService.js.map +1 -1
  100. package/dist/services/ExportImportService.d.ts +3 -3
  101. package/dist/services/ExportImportService.d.ts.map +1 -1
  102. package/dist/services/ExportImportService.js +12 -16
  103. package/dist/services/ExportImportService.js.map +1 -1
  104. package/dist/services/MetadataService.d.ts +3 -3
  105. package/dist/services/MetadataService.d.ts.map +1 -1
  106. package/dist/services/MetadataService.js +9 -69
  107. package/dist/services/MetadataService.js.map +1 -1
  108. package/dist/services/TagService.d.ts +3 -3
  109. package/dist/services/TagService.d.ts.map +1 -1
  110. package/dist/services/TagService.js +9 -35
  111. package/dist/services/TagService.js.map +1 -1
  112. package/dist/services/TaskBlockService.d.ts +3 -3
  113. package/dist/services/TaskBlockService.d.ts.map +1 -1
  114. package/dist/services/TaskBlockService.js +9 -36
  115. package/dist/services/TaskBlockService.js.map +1 -1
  116. package/dist/services/TaskService.d.ts +3 -23
  117. package/dist/services/TaskService.d.ts.map +1 -1
  118. package/dist/services/TaskService.js +34 -186
  119. package/dist/services/TaskService.js.map +1 -1
  120. package/dist/services/TaskTagService.d.ts +3 -3
  121. package/dist/services/TaskTagService.d.ts.map +1 -1
  122. package/dist/services/TaskTagService.js +19 -83
  123. package/dist/services/TaskTagService.js.map +1 -1
  124. package/dist/utils/logger.d.ts +7 -0
  125. package/dist/utils/logger.d.ts.map +1 -0
  126. package/dist/utils/logger.js +18 -0
  127. package/dist/utils/logger.js.map +1 -0
  128. package/package.json +12 -5
  129. package/dist/board/boardScript.d.ts +0 -2
  130. package/dist/board/boardScript.d.ts.map +0 -1
  131. package/dist/board/boardScript.js +0 -1202
  132. package/dist/board/boardScript.js.map +0 -1
  133. package/dist/board/client/addTaskModal.d.ts +0 -2
  134. package/dist/board/client/addTaskModal.d.ts.map +0 -1
  135. package/dist/board/client/addTaskModal.js +0 -64
  136. package/dist/board/client/addTaskModal.js.map +0 -1
  137. package/dist/board/client/autoScroll.d.ts +0 -4
  138. package/dist/board/client/autoScroll.d.ts.map +0 -1
  139. package/dist/board/client/autoScroll.js +0 -59
  140. package/dist/board/client/autoScroll.js.map +0 -1
  141. package/dist/board/client/boardPolling.d.ts +0 -15
  142. package/dist/board/client/boardPolling.d.ts.map +0 -1
  143. package/dist/board/client/boardPolling.js +0 -144
  144. package/dist/board/client/boardPolling.js.map +0 -1
  145. package/dist/board/client/burgerMenu.d.ts +0 -2
  146. package/dist/board/client/burgerMenu.d.ts.map +0 -1
  147. package/dist/board/client/burgerMenu.js +0 -80
  148. package/dist/board/client/burgerMenu.js.map +0 -1
  149. package/dist/board/client/contextMenu.d.ts +0 -2
  150. package/dist/board/client/contextMenu.d.ts.map +0 -1
  151. package/dist/board/client/contextMenu.js +0 -52
  152. package/dist/board/client/contextMenu.js.map +0 -1
  153. package/dist/board/client/detailPanel.d.ts +0 -8
  154. package/dist/board/client/detailPanel.d.ts.map +0 -1
  155. package/dist/board/client/detailPanel.js +0 -565
  156. package/dist/board/client/detailPanel.js.map +0 -1
  157. package/dist/board/client/dragDrop.d.ts +0 -6
  158. package/dist/board/client/dragDrop.d.ts.map +0 -1
  159. package/dist/board/client/dragDrop.js +0 -82
  160. package/dist/board/client/dragDrop.js.map +0 -1
  161. package/dist/board/client/filters.d.ts +0 -6
  162. package/dist/board/client/filters.d.ts.map +0 -1
  163. package/dist/board/client/filters.js +0 -167
  164. package/dist/board/client/filters.js.map +0 -1
  165. package/dist/board/client/main.d.ts +0 -2
  166. package/dist/board/client/main.d.ts.map +0 -1
  167. package/dist/board/client/main.js +0 -20
  168. package/dist/board/client/main.js.map +0 -1
  169. package/dist/board/client/tags.d.ts +0 -6
  170. package/dist/board/client/tags.d.ts.map +0 -1
  171. package/dist/board/client/tags.js +0 -198
  172. package/dist/board/client/tags.js.map +0 -1
  173. package/dist/board/client/types.d.ts +0 -48
  174. package/dist/board/client/types.d.ts.map +0 -1
  175. package/dist/board/client/types.js.map +0 -1
  176. package/dist/board/client/utils.d.ts +0 -4
  177. package/dist/board/client/utils.d.ts.map +0 -1
  178. package/dist/board/client/utils.js +0 -44
  179. package/dist/board/client/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boardFavicon.js","sourceRoot":"","sources":["../../src/board/boardFavicon.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,wpkhBAAwpkhB,CAAC"}
@@ -1,18 +1,34 @@
1
1
  import { Task, TaskStatus } from '../models';
2
2
  import { Tag } from '../models/Tag';
3
- import { StorageProvider } from '../db/types/storage';
3
+ import { StorageBackend } from '../db/types/repository';
4
4
  export declare const STATUSES: TaskStatus[];
5
5
  export declare const STATUS_LABELS: Record<TaskStatus, string>;
6
6
  export declare const STATUS_COLORS: Record<TaskStatus, string>;
7
- export declare function renderCard(task: Task, tags: Tag[]): string;
8
- export declare function renderColumn(status: TaskStatus, tasks: Task[], tagMap: Map<number, Tag[]>): string;
9
- export declare function renderBoard(tasksByStatus: Map<TaskStatus, Task[]>, tagMap: Map<number, Tag[]>, boardTitle?: string, theme?: string): string;
7
+ export declare function renderCard(task: Task, tags: Tag[], blockedByIds?: number[], blockingIds?: number[]): string;
8
+ export declare function renderColumn(status: TaskStatus, tasks: Task[], tagMap: Map<number, Tag[]>, blockMap?: Map<number, {
9
+ blockedBy: number[];
10
+ blocking: number[];
11
+ }>): string;
12
+ export declare function renderBoard(tasksByStatus: Map<TaskStatus, Task[]>, tagMap: Map<number, Tag[]>, boardTitle?: string, theme?: string, blockMap?: Map<number, {
13
+ blockedBy: number[];
14
+ blocking: number[];
15
+ }>): string;
10
16
  export declare function sortByPriority(tasks: Task[]): Task[];
11
- export declare function buildBoardCardsPayload(tasksByStatus: Map<TaskStatus, Task[]>, tagMap: Map<number, Tag[]>): {
17
+ export declare function buildBoardCardsPayload(tasksByStatus: Map<TaskStatus, Task[]>, tagMap: Map<number, Tag[]>, blockMap?: Map<number, {
18
+ blockedBy: number[];
19
+ blocking: number[];
20
+ }>): {
12
21
  status: TaskStatus;
13
22
  html: string;
14
23
  count: number;
15
24
  }[];
16
25
  export declare function buildTasksByStatus(tasks: Task[]): Map<TaskStatus, Task[]>;
17
- export declare function getBoardUpdatedAt(database: StorageProvider): string | null;
26
+ export declare function buildBlockMap(blocks: Array<{
27
+ blocker_task_id: number;
28
+ blocked_task_id: number;
29
+ }>): Map<number, {
30
+ blockedBy: number[];
31
+ blocking: number[];
32
+ }>;
33
+ export declare function getBoardUpdatedAt(database: StorageBackend): string | null;
18
34
  //# sourceMappingURL=boardRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"boardRenderer.d.ts","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,UAAU,EAA8B,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,eAAO,MAAM,QAAQ,EAAE,UAAU,EAA8E,CAAC;AAEhH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,CAAC;AAWF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAgB1D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAkBlG;AAmHD,wBAAgB,WAAW,CACzB,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CA2CR;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAMpD;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GACzB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAMvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAYzE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAmB1E"}
1
+ {"version":3,"file":"boardRenderer.d.ts","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,UAAU,EAA8B,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,eAAO,MAAM,QAAQ,EAAE,UAAU,EAA8E,CAAC;AAEhH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,CAAC;AAWF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,GAAE,MAAM,EAAO,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,MAAM,CAkBnH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC1B,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAa,GAC7E,MAAM,CAuBR;AAmHD,wBAAgB,WAAW,CACzB,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAa,GAC7E,MAAM,CA+CR;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAMpD;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC1B,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAa,GAC7E;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAWvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAYzE;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,KAAK,CAAC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,GAClE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAc1D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAEzE"}
@@ -40,11 +40,13 @@ exports.renderBoard = renderBoard;
40
40
  exports.sortByPriority = sortByPriority;
41
41
  exports.buildBoardCardsPayload = buildBoardCardsPayload;
42
42
  exports.buildTasksByStatus = buildTasksByStatus;
43
+ exports.buildBlockMap = buildBlockMap;
43
44
  exports.getBoardUpdatedAt = getBoardUpdatedAt;
44
45
  const fs = __importStar(require("fs"));
45
46
  const path = __importStar(require("path"));
46
47
  const models_1 = require("../models");
47
48
  const boardStyles_1 = require("./boardStyles");
49
+ const boardFavicon_1 = require("./boardFavicon");
48
50
  exports.STATUSES = ['icebox', 'backlog', 'ready', 'in_progress', 'review', 'done', 'closed'];
49
51
  exports.STATUS_LABELS = {
50
52
  icebox: 'Icebox',
@@ -72,14 +74,16 @@ function escapeHtml(text) {
72
74
  .replace(/"/g, '&quot;')
73
75
  .replace(/'/g, '&#039;');
74
76
  }
75
- function renderCard(task, tags) {
77
+ function renderCard(task, tags, blockedByIds = [], blockingIds = []) {
76
78
  const priority = task.priority;
77
79
  const priorityBadge = priority
78
80
  ? `<span class="priority priority-${escapeHtml(priority)}">${escapeHtml(priority)}</span>`
79
81
  : '';
80
82
  const tagBadges = tags.map((t) => `<span class="tag">${escapeHtml(t.name)}</span>`).join('');
83
+ const dataBlockedBy = blockedByIds.length > 0 ? ` data-blocked-by="${blockedByIds.join(',')}"` : '';
84
+ const dataBlocking = blockingIds.length > 0 ? ` data-blocking="${blockingIds.join(',')}"` : '';
81
85
  return `
82
- <div class="card" draggable="true" data-id="${task.id}" data-status="${task.status}" data-updated-at="${escapeHtml(task.updated_at)}">
86
+ <div class="card" draggable="true" data-id="${task.id}" data-status="${task.status}" data-updated-at="${escapeHtml(task.updated_at)}"${dataBlockedBy}${dataBlocking}>
83
87
  <div class="card-header">
84
88
  <span class="card-id">#${task.id}</span>
85
89
  ${priorityBadge}
@@ -88,10 +92,15 @@ function renderCard(task, tags) {
88
92
  ${tagBadges ? `<div class="card-tags">${tagBadges}</div>` : ''}
89
93
  </div>`;
90
94
  }
91
- function renderColumn(status, tasks, tagMap) {
95
+ function renderColumn(status, tasks, tagMap, blockMap = new Map()) {
92
96
  const color = exports.STATUS_COLORS[status];
93
97
  const label = exports.STATUS_LABELS[status];
94
- const cards = tasks.map((t) => renderCard(t, tagMap.get(t.id) || [])).join('');
98
+ const cards = tasks
99
+ .map((t) => {
100
+ const blockRels = blockMap.get(t.id) || { blockedBy: [], blocking: [] };
101
+ return renderCard(t, tagMap.get(t.id) || [], blockRels.blockedBy, blockRels.blocking);
102
+ })
103
+ .join('');
95
104
  return `
96
105
  <div class="column" data-status="${status}">
97
106
  <div class="column-header" style="border-top-color:${color}">
@@ -106,7 +115,7 @@ function renderColumn(status, tasks, tagMap) {
106
115
  </div>
107
116
  </div>`;
108
117
  }
109
- const BOARD_PRIORITY_OPTIONS = models_1.PRIORITIES.map((p) => `<option value="${p}">${p.charAt(0).toUpperCase() + p.slice(1)}</option>`).join('\n ');
118
+ const BOARD_PRIORITY_OPTIONS = models_1.PRIORITIES.map((p) => `<option value="${p}"${p === 'medium' ? ' selected' : ''}>${p.charAt(0).toUpperCase() + p.slice(1)}</option>`).join('\n ');
110
119
  function getAddTaskModal() {
111
120
  return `
112
121
  <div class="modal-overlay" id="add-modal">
@@ -211,8 +220,8 @@ function getBoardBodyStatic() {
211
220
  <script>${script}
212
221
  </script>`;
213
222
  }
214
- function renderBoard(tasksByStatus, tagMap, boardTitle, theme) {
215
- const columns = exports.STATUSES.map((status) => renderColumn(status, tasksByStatus.get(status) || [], tagMap)).join('');
223
+ function renderBoard(tasksByStatus, tagMap, boardTitle, theme, blockMap = new Map()) {
224
+ const columns = exports.STATUSES.map((status) => renderColumn(status, tasksByStatus.get(status) || [], tagMap, blockMap)).join('');
216
225
  const titleHtml = boardTitle ? `<span class="board-title">${escapeHtml(boardTitle)}</span>` : '';
217
226
  const boardBodyStatic = getBoardBodyStatic();
218
227
  const dataThemeAttr = theme === 'dark' || theme === 'light' ? ` data-theme="${theme}"` : '';
@@ -222,6 +231,7 @@ function renderBoard(tasksByStatus, tagMap, boardTitle, theme) {
222
231
  <meta charset="UTF-8">
223
232
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
224
233
  <title>agkan board</title>
234
+ <link rel="icon" type="image/png" href="${boardFavicon_1.BOARD_FAVICON_BASE64}">
225
235
  <style>${boardStyles_1.BOARD_STYLES}
226
236
  </style>
227
237
  </head>
@@ -246,6 +256,7 @@ function renderBoard(tasksByStatus, tagMap, boardTitle, theme) {
246
256
  <span class="filter-label">Assignee</span>
247
257
  <input type="text" id="filter-assignee" class="filter-assignee-input" placeholder="Filter by assignee">
248
258
  </div>
259
+ <button class="dependency-toggle-btn" id="dependency-toggle" title="Show/hide task dependencies">Show dependencies</button>
249
260
  <button class="filter-clear-btn" id="filter-clear">Clear filters</button>
250
261
  </div>
251
262
  <div class="board-container">
@@ -261,10 +272,15 @@ function sortByPriority(tasks) {
261
272
  return oa - ob;
262
273
  });
263
274
  }
264
- function buildBoardCardsPayload(tasksByStatus, tagMap) {
275
+ function buildBoardCardsPayload(tasksByStatus, tagMap, blockMap = new Map()) {
265
276
  return exports.STATUSES.map((status) => {
266
277
  const tasks = tasksByStatus.get(status) || [];
267
- const html = tasks.map((t) => renderCard(t, tagMap.get(t.id) || [])).join('');
278
+ const html = tasks
279
+ .map((t) => {
280
+ const blockRels = blockMap.get(t.id) || { blockedBy: [], blocking: [] };
281
+ return renderCard(t, tagMap.get(t.id) || [], blockRels.blockedBy, blockRels.blocking);
282
+ })
283
+ .join('');
268
284
  return { status, html, count: tasks.length };
269
285
  });
270
286
  }
@@ -281,21 +297,21 @@ function buildTasksByStatus(tasks) {
281
297
  }
282
298
  return tasksByStatus;
283
299
  }
300
+ function buildBlockMap(blocks) {
301
+ const blockMap = new Map();
302
+ for (const block of blocks) {
303
+ if (!blockMap.has(block.blocker_task_id)) {
304
+ blockMap.set(block.blocker_task_id, { blockedBy: [], blocking: [] });
305
+ }
306
+ blockMap.get(block.blocker_task_id).blocking.push(block.blocked_task_id);
307
+ if (!blockMap.has(block.blocked_task_id)) {
308
+ blockMap.set(block.blocked_task_id, { blockedBy: [], blocking: [] });
309
+ }
310
+ blockMap.get(block.blocked_task_id).blockedBy.push(block.blocker_task_id);
311
+ }
312
+ return blockMap;
313
+ }
284
314
  function getBoardUpdatedAt(database) {
285
- const baseRow = database
286
- .prepare(`
287
- SELECT MAX(updated_at) as max_updated_at FROM (
288
- SELECT updated_at FROM tasks UNION ALL SELECT updated_at FROM task_metadata
289
- )
290
- `)
291
- .get();
292
- const tagsRow = database
293
- .prepare(`
294
- SELECT MAX(created_at) as max_created_at, COUNT(*) as count FROM task_tags
295
- `)
296
- .get();
297
- if (baseRow.max_updated_at === null && tagsRow.max_created_at === null)
298
- return null;
299
- return `${baseRow.max_updated_at}|${tagsRow.max_created_at}|${tagsRow.count}`;
315
+ return database.getBoardUpdatedAtSignature();
300
316
  }
301
317
  //# sourceMappingURL=boardRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boardRenderer.js","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boardRenderer.js","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { TagService } from '../services/TagService';
5
5
  import { MetadataService } from '../services/MetadataService';
6
6
  import { CommentService } from '../services/CommentService';
7
7
  import { TaskBlockService } from '../services/TaskBlockService';
8
- import { StorageProvider } from '../db/types/storage';
8
+ import { StorageBackend } from '../db/types/repository';
9
9
  export type BoardServices = {
10
10
  ts: TaskService;
11
11
  tts: TaskTagService;
@@ -13,7 +13,7 @@ export type BoardServices = {
13
13
  ms: MetadataService;
14
14
  cs: CommentService;
15
15
  tbs: TaskBlockService;
16
- database: StorageProvider;
16
+ database: StorageBackend;
17
17
  boardTitle?: string;
18
18
  configDir: string;
19
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"boardRoutes.d.ts","sourceRoot":"","sources":["../../src/board/boardRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,WAAW,CAAC;IAChB,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,cAAc,CAAC;IACnB,GAAG,EAAE,gBAAgB,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAwQF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAO9E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA+B1E;AAkCD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAqB5E"}
1
+ {"version":3,"file":"boardRoutes.d.ts","sourceRoot":"","sources":["../../src/board/boardRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAWxD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,WAAW,CAAC;IAChB,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,cAAc,CAAC;IACnB,GAAG,EAAE,gBAAgB,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAoRF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAO9E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA+B1E;AAkCD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAuB5E"}
@@ -198,6 +198,19 @@ function registerTagRoutes(app, tts, tags, ts) {
198
198
  const allTags = tags.listTags();
199
199
  return c.json({ tags: allTags });
200
200
  });
201
+ app.post('/api/tags', async (c) => {
202
+ const body = await c.req.json();
203
+ if (!body.name || typeof body.name !== 'string' || !body.name.trim()) {
204
+ return c.json({ error: 'Name is required' }, 400);
205
+ }
206
+ try {
207
+ const tag = tags.createTag({ name: body.name.trim() });
208
+ return c.json(tag, 201);
209
+ }
210
+ catch (e) {
211
+ return c.json({ error: e instanceof Error ? e.message : 'Failed to create tag' }, 400);
212
+ }
213
+ });
201
214
  }
202
215
  function registerUtilityRoutes(app, ts) {
203
216
  app.post('/api/tasks/purge', async (c) => {
@@ -320,11 +333,12 @@ function parseBoardCardFilters(query) {
320
333
  return filters;
321
334
  }
322
335
  function registerBoardRoutes(app, services) {
323
- const { ts, tts, database, boardTitle, configDir } = services;
336
+ const { ts, tts, tbs, database, boardTitle, configDir } = services;
324
337
  app.get('/', (c) => {
325
338
  const tasksByStatus = (0, boardRenderer_1.buildTasksByStatus)(ts.listTasks({}, 'id', 'asc'));
326
339
  const boardConfig = (0, boardConfig_1.readBoardConfig)(configDir);
327
- return c.html((0, boardRenderer_1.renderBoard)(tasksByStatus, tts.getAllTaskTags(), boardTitle, boardConfig.theme));
340
+ const blockMap = (0, boardRenderer_1.buildBlockMap)(tbs.getAllBlocks());
341
+ return c.html((0, boardRenderer_1.renderBoard)(tasksByStatus, tts.getAllTaskTags(), boardTitle, boardConfig.theme, blockMap));
328
342
  });
329
343
  app.get('/api/board/updated-at', (c) => c.json({ updatedAt: (0, boardRenderer_1.getBoardUpdatedAt)(database) }));
330
344
  app.get('/api/board/cards', (c) => {
@@ -335,7 +349,8 @@ function registerBoardRoutes(app, services) {
335
349
  search: c.req.query('search'),
336
350
  });
337
351
  const tasksByStatus = (0, boardRenderer_1.buildTasksByStatus)(ts.listTasks(filters, 'id', 'asc'));
338
- const columns = (0, boardRenderer_1.buildBoardCardsPayload)(tasksByStatus, tts.getAllTaskTags());
352
+ const blockMap = (0, boardRenderer_1.buildBlockMap)(tbs.getAllBlocks());
353
+ const columns = (0, boardRenderer_1.buildBoardCardsPayload)(tasksByStatus, tts.getAllTaskTags(), blockMap);
339
354
  return c.json({ columns });
340
355
  });
341
356
  registerTaskApiRoutes(app, services);
@@ -1 +1 @@
1
- {"version":3,"file":"boardRoutes.js","sourceRoot":"","sources":["../../src/board/boardRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boardRoutes.js","sourceRoot":"","sources":["../../src/board/boardRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const BOARD_STYLES = "\n :root {\n --bg-page: #f1f5f9;\n --bg-surface: #ffffff;\n --bg-surface-subtle: #f8fafc;\n --bg-surface-hover: #f1f5f9;\n --border-color: #e2e8f0;\n --border-color-subtle: #f1f5f9;\n --text-primary: #1e293b;\n --text-secondary: #64748b;\n --text-muted: #94a3b8;\n --header-bg: #1e293b;\n --tag-bg: #e0f2fe;\n --tag-color: #0369a1;\n --column-count-bg: #e2e8f0;\n --column-count-color: #64748b;\n --input-bg: #ffffff;\n --burger-dropdown-bg: #ffffff;\n --drag-over-bg: #eff6ff;\n }\n [data-theme=\"dark\"] {\n --bg-page: #0f172a;\n --bg-surface: #1e293b;\n --bg-surface-subtle: #1e293b;\n --bg-surface-hover: #334155;\n --border-color: #334155;\n --border-color-subtle: #1e293b;\n --text-primary: #f1f5f9;\n --text-secondary: #94a3b8;\n --text-muted: #64748b;\n --header-bg: #0f172a;\n --tag-bg: #0c4a6e;\n --tag-color: #7dd3fc;\n --column-count-bg: #334155;\n --column-count-color: #94a3b8;\n --input-bg: #1e293b;\n --burger-dropdown-bg: #1e293b;\n --drag-over-bg: #1e3a5f;\n }\n * { box-sizing: border-box; margin: 0; padding: 0; }\n body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg-page); color: var(--text-primary); }\n header { background: var(--header-bg); color: white; padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; }\n header h1 { font-size: 18px; font-weight: 700; }\n .board-title { font-size: 14px; font-weight: 400; opacity: 0.75; }\n .board-container { display: flex; width: 100%; height: calc(100vh - 92px); gap: 0; }\n .board { display: flex; gap: 12px; padding: 16px; overflow-x: auto; flex: 1; align-items: stretch; min-width: 0; }\n .board.with-panel { padding-right: 0; }\n .column { background: var(--bg-surface-subtle); border: 1px solid var(--border-color); border-radius: 8px; width: 240px; flex-shrink: 0; display: flex; flex-direction: column; border-top: 3px solid transparent; }\n .column-header { padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }\n .column-title { font-size: 13px; font-weight: 700; }\n .column-header-right { display: flex; align-items: center; gap: 6px; }\n .column-count { background: var(--column-count-bg); color: var(--column-count-color); border-radius: 10px; font-size: 11px; font-weight: 600; padding: 2px 7px; }\n .add-btn { background: none; border: 1px solid var(--border-color); color: var(--text-secondary); border-radius: 4px; width: 22px; height: 22px; font-size: 14px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }\n .add-btn:hover { background: var(--border-color); color: var(--text-primary); }\n .column-body { padding: 8px; min-height: 60px; flex: 1; overflow-y: auto; overflow-x: hidden; min-height: 0; }\n .column.drag-over .column-body { background: var(--drag-over-bg); border-radius: 6px; }\n .card { background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; padding: 10px; margin-bottom: 6px; cursor: grab; transition: box-shadow 0.15s; }\n .card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }\n .card.active { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.25); background: #eff6ff; }\n [data-theme=\"dark\"] .card.active { border-color: #60a5fa; box-shadow: 0 0 0 2px rgba(96,165,250,0.25); background: #1e3a5f; }\n .card.dragging { opacity: 0.5; }\n .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 5px; }\n .card-id { font-size: 11px; color: var(--text-muted); font-weight: 600; }\n .card-title { font-size: 13px; font-weight: 500; line-height: 1.4; word-break: break-word; }\n .card-tags { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }\n .tag { background: var(--tag-bg); color: var(--tag-color); font-size: 10px; font-weight: 600; padding: 2px 6px; border-radius: 10px; }\n .priority { font-size: 10px; font-weight: 700; padding: 2px 6px; border-radius: 10px; text-transform: uppercase; }\n .priority-critical { background: #fee2e2; color: #dc2626; }\n .priority-high { background: #fee2e2; color: #dc2626; }\n .priority-medium { background: #fef9c3; color: #ca8a04; }\n .priority-low { background: #dcfce7; color: #16a34a; }\n .context-menu { position: fixed; background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 140px; }\n .context-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; color: var(--text-primary); }\n .context-menu-item:hover { background: var(--bg-surface-hover); }\n .context-menu-item.danger { color: #dc2626; }\n .context-menu-item.danger:hover { background: #fef2f2; }\n .modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 2000; display: none; align-items: center; justify-content: center; }\n .modal-overlay.show { display: flex; }\n .modal { background: var(--bg-surface); border-radius: 8px; padding: 24px; width: 520px; box-shadow: 0 8px 24px rgba(0,0,0,0.2); color: var(--text-primary); }\n .modal h2 { font-size: 16px; margin-bottom: 14px; }\n .modal label { display: block; font-size: 12px; font-weight: 600; color: var(--text-secondary); margin-bottom: 4px; }\n .modal input, .modal textarea, .modal select { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 8px 10px; font-size: 13px; font-family: inherit; margin-bottom: 12px; background: var(--input-bg); color: var(--text-primary); }\n .modal textarea { resize: vertical; min-height: 60px; }\n .modal input:focus, .modal textarea:focus, .modal select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .modal-actions { display: flex; justify-content: flex-end; gap: 8px; }\n .modal-actions button { padding: 6px 14px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid var(--border-color); background: var(--bg-surface); color: var(--text-secondary); }\n .modal-actions button:hover { background: var(--bg-surface-hover); }\n .modal-actions button.primary { background: #3b82f6; color: white; border-color: #3b82f6; }\n .modal-actions button.primary:hover { background: #2563eb; }\n .toast { position: fixed; bottom: 20px; right: 20px; background: #ef4444; color: white; padding: 10px 16px; border-radius: 6px; font-size: 13px; opacity: 0; transition: opacity 0.3s; pointer-events: none; }\n .toast.show { opacity: 1; }\n .detail-panel { position: relative; width: 0; height: calc(100vh - 92px); background: var(--bg-surface); box-shadow: none; border-left: 0 solid var(--border-color); display: flex; flex-direction: column; max-width: 800px; overflow: hidden; transition: width 0.25s ease; }\n .detail-panel-resize-handle { position: absolute; top: 0; left: 0; width: 6px; height: 100%; cursor: col-resize; z-index: 10; background: transparent; }\n .detail-panel-resize-handle:hover, .detail-panel-resize-handle.dragging { background: rgba(59,130,246,0.3); }\n .detail-panel.open { width: 400px; min-width: 280px; border-left-width: 1px; }\n .detail-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }\n .detail-panel-header h2 { font-size: 16px; font-weight: 700; color: var(--text-primary); margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .detail-panel-close { background: none; border: none; font-size: 20px; color: var(--text-secondary); cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; }\n .detail-panel-close:hover { background: var(--bg-surface-hover); color: var(--text-primary); }\n .detail-panel-body { flex: 1; overflow: hidden; min-width: 0; display: flex; flex-direction: column; }\n .detail-field { margin-bottom: 16px; word-wrap: break-word; }\n .description-field-wrapper { display: flex; flex-direction: column; margin-bottom: 16px; }\n .detail-field-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; letter-spacing: 0.05em; }\n .detail-field-value { font-size: 13px; color: var(--text-primary); line-height: 1.5; }\n .detail-field-value.empty { color: var(--text-muted); font-style: italic; }\n .detail-status-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 600; color: white; }\n .detail-tags { display: flex; flex-wrap: wrap; gap: 4px; }\n .detail-meta-table { width: 100%; border-collapse: collapse; }\n .detail-meta-table td { padding: 4px 0; font-size: 12px; }\n .detail-meta-table td:first-child { color: var(--text-secondary); width: 100px; }\n .detail-meta-table td:last-child { color: var(--text-primary); }\n .detail-panel-footer { padding: 12px 20px; border-top: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; flex-shrink: 0; }\n .detail-panel-footer button { padding: 7px 18px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }\n .detail-panel-footer button:hover { background: #2563eb; border-color: #2563eb; }\n .detail-edit-input { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .detail-edit-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .detail-edit-textarea { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: none; min-height: 80px; background: var(--input-bg); color: var(--text-primary); overflow: hidden; }\n .detail-edit-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .detail-edit-select { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .detail-edit-select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .tag-select-wrapper { position: relative; }\n .tag-select-control { border: 1px solid var(--border-color); border-radius: 6px; padding: 4px 8px; min-height: 36px; cursor: text; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; background: var(--input-bg); }\n .tag-select-control:focus-within { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .tag-pill { background: var(--tag-bg); color: var(--tag-color); font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; }\n .tag-pill-remove { background: none; border: none; color: var(--tag-color); cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }\n .tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }\n .tag-select-input { border: none; outline: none; font-size: 12px; font-family: inherit; min-width: 80px; flex: 1; background: transparent; padding: 2px 0; color: var(--text-primary); }\n .tag-select-input::placeholder { color: var(--text-muted); }\n .tag-select-dropdown { position: absolute; top: calc(100% + 2px); left: 0; right: 0; background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 100; max-height: 180px; overflow-y: auto; display: none; }\n .tag-select-dropdown.open { display: block; }\n .tag-select-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: var(--text-primary); }\n .tag-select-option:hover, .tag-select-option.focused { background: #eff6ff; color: #0369a1; }\n .tag-select-no-options { padding: 6px 10px; font-size: 12px; color: var(--text-muted); font-style: italic; }\n .filter-bar { display: flex; align-items: center; gap: 16px; height: 44px; background: var(--bg-surface-subtle); border-bottom: 1px solid var(--border-color); padding: 0 16px; flex-shrink: 0; overflow-x: auto; }\n .filter-group { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }\n .filter-label { font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--text-muted); letter-spacing: 0.05em; white-space: nowrap; }\n .filter-priority-btn { border: 1px solid var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 8px; font-size: 11px; font-weight: 600; cursor: pointer; text-transform: uppercase; color: var(--text-secondary); }\n .filter-priority-btn:hover { background: var(--bg-surface-hover); }\n .filter-priority-btn.active[data-priority=\"critical\"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }\n .filter-priority-btn.active[data-priority=\"high\"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }\n .filter-priority-btn.active[data-priority=\"medium\"] { background: #fef9c3; color: #ca8a04; border-color: #fde047; }\n .filter-priority-btn.active[data-priority=\"low\"] { background: #dcfce7; color: #16a34a; border-color: #86efac; }\n .filter-search-input { border: 1px solid var(--border-color); border-radius: 4px; padding: 3px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); width: 160px; }\n .filter-search-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .filter-assignee-input { border: 1px solid var(--border-color); border-radius: 4px; padding: 3px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); width: 120px; }\n .filter-assignee-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .filter-tag-pill { background: var(--tag-bg); color: var(--tag-color); font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; flex-shrink: 0; }\n .filter-tag-pill-remove { background: none; border: none; color: var(--tag-color); cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }\n .filter-tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }\n .filter-tag-dropdown-wrapper { flex-shrink: 0; }\n .filter-tag-add-btn { border: 1px dashed var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 8px; font-size: 11px; color: var(--text-secondary); cursor: pointer; white-space: nowrap; }\n .filter-tag-add-btn:hover { background: var(--bg-surface-hover); border-color: var(--text-muted); }\n .filter-tag-dropdown { position: fixed; background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 200; max-height: 180px; overflow-y: auto; display: none; min-width: 140px; }\n .filter-tag-dropdown.open { display: block; }\n .filter-tag-dropdown-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: var(--text-primary); white-space: nowrap; }\n .filter-tag-dropdown-option:hover { background: #eff6ff; color: #0369a1; }\n .filter-tag-dropdown-empty { padding: 6px 10px; font-size: 12px; color: var(--text-muted); font-style: italic; }\n .filter-clear-btn { border: 1px solid var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; color: var(--text-secondary); display: none; flex-shrink: 0; margin-left: auto; }\n .filter-clear-btn:hover { background: #fee2e2; border-color: #fca5a5; color: #dc2626; }\n .filter-clear-btn.visible { display: block; }\n .detail-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border-color); flex-shrink: 0; padding: 0 20px; background: var(--bg-surface); }\n .detail-tab { padding: 8px 14px; font-size: 12px; font-weight: 600; color: var(--text-muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; background: none; border-top: none; border-left: none; border-right: none; }\n .detail-tab:hover { color: var(--text-secondary); }\n .detail-tab.active { color: #3b82f6; border-bottom-color: #3b82f6; }\n .detail-tab-content { display: none; flex: 1; overflow-y: auto; min-height: 0; }\n .detail-tab-content.active { display: block; overflow-y: auto; }\n .detail-relations { font-size: 12px; color: var(--text-secondary); padding: 6px 0; border-bottom: 1px solid var(--border-color-subtle); margin-bottom: 12px; }\n .detail-relation-row { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }\n .detail-relation-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: var(--text-muted); width: 80px; flex-shrink: 0; letter-spacing: 0.05em; }\n .detail-relation-ids { display: flex; flex-wrap: wrap; gap: 4px; }\n .detail-relation-id { font-size: 11px; color: #3b82f6; background: #eff6ff; border-radius: 10px; padding: 1px 7px; font-weight: 600; }\n .detail-timestamp { font-size: 11px; color: var(--text-muted); margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border-color-subtle); }\n .detail-footer-timestamp { font-size: 11px; color: var(--text-muted); }\n .comment-item { position: relative; padding: 6px 0 6px 10px; border-left: 2px solid var(--border-color); margin-bottom: 10px; }\n .comment-item:hover { border-left-color: #3b82f6; }\n .comment-meta { display: flex; align-items: center; gap: 6px; margin-bottom: 3px; }\n .comment-author { font-size: 11px; font-weight: 600; color: var(--text-secondary); }\n .comment-date { font-size: 11px; color: var(--text-muted); }\n .comment-actions { display: none; margin-left: auto; gap: 4px; }\n .comment-item:hover .comment-actions { display: flex; }\n .comment-action-btn { background: none; border: none; padding: 1px 4px; cursor: pointer; color: var(--text-muted); font-size: 12px; border-radius: 3px; }\n .comment-action-btn:hover { color: var(--text-primary); background: var(--bg-surface-hover); }\n .comment-action-btn.danger:hover { color: #dc2626; background: #fef2f2; }\n .comment-content { font-size: 13px; color: var(--text-primary); line-height: 1.5; white-space: pre-wrap; }\n .comment-edit-area { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 60px; background: var(--input-bg); color: var(--text-primary); margin-top: 4px; }\n .comment-edit-area:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .comment-edit-actions { display: flex; gap: 6px; margin-top: 4px; }\n .comment-btn { background: none; border: 1px solid var(--border-color); border-radius: 4px; font-size: 11px; font-weight: 600; padding: 2px 8px; cursor: pointer; color: var(--text-secondary); }\n .comment-btn:hover { background: var(--bg-surface-hover); }\n .add-comment-trigger { background: none; border: 1px dashed var(--border-color); border-radius: 6px; padding: 8px 12px; font-size: 12px; color: var(--text-muted); cursor: pointer; width: 100%; text-align: left; margin-top: 4px; }\n .add-comment-trigger:hover { border-color: var(--text-muted); color: var(--text-secondary); background: var(--bg-surface-subtle); }\n .add-comment-form { margin-top: 4px; display: none; }\n .add-comment-form.open { display: block; }\n .add-comment-textarea { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 72px; background: var(--input-bg); color: var(--text-primary); }\n .add-comment-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .add-comment-submit { margin-top: 6px; padding: 5px 14px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }\n .add-comment-submit:hover { background: #2563eb; border-color: #2563eb; }\n .add-comment-cancel { margin-top: 6px; margin-left: 6px; padding: 5px 10px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid var(--border-color); background: var(--bg-surface); color: var(--text-secondary); }\n .add-comment-cancel:hover { background: var(--bg-surface-hover); }\n .burger-menu-wrapper { position: relative; }\n .burger-menu-btn { background: none; border: none; color: white; cursor: pointer; padding: 4px 6px; border-radius: 4px; display: flex; flex-direction: column; gap: 4px; align-items: center; justify-content: center; opacity: 0.8; }\n .burger-menu-btn:hover { opacity: 1; background: rgba(255,255,255,0.1); }\n .burger-menu-btn span { display: block; width: 18px; height: 2px; background: white; border-radius: 1px; }\n .burger-menu-dropdown { position: absolute; right: 0; top: calc(100% + 6px); background: var(--burger-dropdown-bg); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 180px; }\n .burger-menu-dropdown.open { display: block; }\n .burger-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; color: var(--text-primary); white-space: nowrap; }\n .burger-menu-item:hover { background: var(--bg-surface-hover); }\n .burger-menu-item.danger { color: #dc2626; }\n .burger-menu-item.danger:hover { background: #fef2f2; }\n .burger-menu-separator { height: 1px; background: var(--border-color); margin: 4px 0; }\n .add-metadata-row-btn { background: none; border: 1px dashed var(--border-color); border-radius: 6px; padding: 5px 10px; font-size: 12px; color: var(--text-secondary); cursor: pointer; width: 100%; text-align: left; margin-bottom: 12px; }\n .add-metadata-row-btn:hover { border-color: var(--text-muted); background: var(--bg-surface-subtle); }\n .metadata-row { display: flex; gap: 6px; align-items: center; margin-bottom: 6px; }\n .metadata-row-key { flex: 1; border: 1px solid var(--border-color); border-radius: 6px; padding: 6px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .metadata-row-key:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .metadata-row-value { flex: 2; border: 1px solid var(--border-color); border-radius: 6px; padding: 6px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .metadata-row-value:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .metadata-row-remove { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 16px; line-height: 1; padding: 2px 4px; border-radius: 4px; flex-shrink: 0; }\n .metadata-row-remove:hover { color: #dc2626; background: #fef2f2; }";
1
+ export declare const BOARD_STYLES = "\n :root {\n --bg-page: #f1f5f9;\n --bg-surface: #ffffff;\n --bg-surface-subtle: #f8fafc;\n --bg-surface-hover: #f1f5f9;\n --border-color: #e2e8f0;\n --border-color-subtle: #f1f5f9;\n --text-primary: #1e293b;\n --text-secondary: #64748b;\n --text-muted: #94a3b8;\n --header-bg: #1e293b;\n --tag-bg: #e0f2fe;\n --tag-color: #0369a1;\n --column-count-bg: #e2e8f0;\n --column-count-color: #64748b;\n --input-bg: #ffffff;\n --burger-dropdown-bg: #ffffff;\n --drag-over-bg: #eff6ff;\n }\n [data-theme=\"dark\"] {\n --bg-page: #0f172a;\n --bg-surface: #1e293b;\n --bg-surface-subtle: #1e293b;\n --bg-surface-hover: #334155;\n --border-color: #334155;\n --border-color-subtle: #1e293b;\n --text-primary: #f1f5f9;\n --text-secondary: #94a3b8;\n --text-muted: #64748b;\n --header-bg: #0f172a;\n --tag-bg: #0c4a6e;\n --tag-color: #7dd3fc;\n --column-count-bg: #334155;\n --column-count-color: #94a3b8;\n --input-bg: #1e293b;\n --burger-dropdown-bg: #1e293b;\n --drag-over-bg: #1e3a5f;\n }\n * { box-sizing: border-box; margin: 0; padding: 0; }\n body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg-page); color: var(--text-primary); }\n header { background: var(--header-bg); color: white; padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; }\n header h1 { font-size: 18px; font-weight: 700; }\n .board-title { font-size: 14px; font-weight: 400; opacity: 0.75; }\n .board-container { display: flex; width: 100%; height: calc(100vh - 92px); gap: 0; }\n .board { display: flex; gap: 12px; padding: 16px; overflow-x: auto; flex: 1; align-items: stretch; min-width: 0; }\n .board.with-panel { padding-right: 0; }\n .column { background: var(--bg-surface-subtle); border: 1px solid var(--border-color); border-radius: 8px; width: 240px; flex-shrink: 0; display: flex; flex-direction: column; border-top: 3px solid transparent; }\n .column-header { padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }\n .column-title { font-size: 13px; font-weight: 700; }\n .column-header-right { display: flex; align-items: center; gap: 6px; }\n .column-count { background: var(--column-count-bg); color: var(--column-count-color); border-radius: 10px; font-size: 11px; font-weight: 600; padding: 2px 7px; }\n .add-btn { background: none; border: 1px solid var(--border-color); color: var(--text-secondary); border-radius: 4px; width: 22px; height: 22px; font-size: 14px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }\n .add-btn:hover { background: var(--border-color); color: var(--text-primary); }\n .column-body { padding: 8px; min-height: 60px; flex: 1; overflow-y: auto; overflow-x: hidden; min-height: 0; }\n .column.drag-over .column-body { background: var(--drag-over-bg); border-radius: 6px; }\n .card { background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; padding: 10px; margin-bottom: 6px; cursor: grab; transition: box-shadow 0.15s; }\n .card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }\n .card.active { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.25); background: #eff6ff; }\n [data-theme=\"dark\"] .card.active { border-color: #60a5fa; box-shadow: 0 0 0 2px rgba(96,165,250,0.25); background: #1e3a5f; }\n .card.dragging { opacity: 0.5; }\n .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 5px; }\n .card-id { font-size: 11px; color: var(--text-muted); font-weight: 600; }\n .card-title { font-size: 13px; font-weight: 500; line-height: 1.4; word-break: break-word; }\n .card-tags { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }\n .tag { background: var(--tag-bg); color: var(--tag-color); font-size: 10px; font-weight: 600; padding: 2px 6px; border-radius: 10px; }\n .priority { font-size: 10px; font-weight: 700; padding: 2px 6px; border-radius: 10px; text-transform: uppercase; }\n .priority-critical { background: #fee2e2; color: #dc2626; }\n .priority-high { background: #fee2e2; color: #dc2626; }\n .priority-medium { background: #fef9c3; color: #ca8a04; }\n .priority-low { background: #dcfce7; color: #16a34a; }\n .context-menu { position: fixed; background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 140px; }\n .context-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; color: var(--text-primary); }\n .context-menu-item:hover { background: var(--bg-surface-hover); }\n .context-menu-item.danger { color: #dc2626; }\n .context-menu-item.danger:hover { background: #fef2f2; }\n .modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 2000; display: none; align-items: center; justify-content: center; }\n .modal-overlay.show { display: flex; }\n .modal { background: var(--bg-surface); border-radius: 8px; padding: 24px; width: 520px; box-shadow: 0 8px 24px rgba(0,0,0,0.2); color: var(--text-primary); }\n .modal h2 { font-size: 16px; margin-bottom: 14px; }\n .modal label { display: block; font-size: 12px; font-weight: 600; color: var(--text-secondary); margin-bottom: 4px; }\n .modal input, .modal textarea, .modal select { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 8px 10px; font-size: 13px; font-family: inherit; margin-bottom: 12px; background: var(--input-bg); color: var(--text-primary); }\n .modal textarea { resize: vertical; min-height: 60px; }\n .modal input:focus, .modal textarea:focus, .modal select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .modal-actions { display: flex; justify-content: flex-end; gap: 8px; }\n .modal-actions button { padding: 6px 14px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid var(--border-color); background: var(--bg-surface); color: var(--text-secondary); }\n .modal-actions button:hover { background: var(--bg-surface-hover); }\n .modal-actions button.primary { background: #3b82f6; color: white; border-color: #3b82f6; }\n .modal-actions button.primary:hover { background: #2563eb; }\n .toast { position: fixed; bottom: 20px; right: 20px; z-index: 100; background: #ef4444; color: white; padding: 10px 16px; border-radius: 6px; font-size: 13px; opacity: 0; transition: opacity 0.3s; pointer-events: none; }\n .toast.show { opacity: 1; }\n .detail-panel { position: relative; z-index: 6; width: 0; height: calc(100vh - 92px); background: var(--bg-surface); box-shadow: none; border-left: 0 solid var(--border-color); display: flex; flex-direction: column; max-width: 800px; overflow: hidden; transition: width 0.25s ease; }\n .detail-panel-resize-handle { position: absolute; top: 0; left: 0; width: 6px; height: 100%; cursor: col-resize; z-index: 10; background: transparent; }\n .detail-panel-resize-handle:hover, .detail-panel-resize-handle.dragging { background: rgba(59,130,246,0.3); }\n .detail-panel.open { width: 400px; min-width: 280px; border-left-width: 1px; }\n .detail-panel-header { display: flex; align-items: center; gap: 4px; padding: 16px 20px; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }\n .detail-panel-header h2 { font-size: 16px; font-weight: 700; color: var(--text-primary); margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n .detail-panel-close { background: none; border: none; font-size: 20px; color: var(--text-secondary); cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; margin-left: auto; }\n .detail-panel-close:hover { background: var(--bg-surface-hover); color: var(--text-primary); }\n .detail-panel-copy-id { background: none; border: none; font-size: 20px; color: var(--text-secondary); cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; }\n .detail-panel-copy-id:hover { background: var(--bg-surface-hover); color: var(--text-primary); }\n .detail-panel-body { flex: 1; overflow: hidden; min-width: 0; display: flex; flex-direction: column; }\n .detail-field { margin-bottom: 16px; word-wrap: break-word; }\n .description-field-wrapper { display: flex; flex-direction: column; margin-bottom: 16px; }\n .detail-field-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; letter-spacing: 0.05em; }\n .detail-field-value { font-size: 13px; color: var(--text-primary); line-height: 1.5; }\n .detail-field-value.empty { color: var(--text-muted); font-style: italic; }\n .detail-status-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 600; color: white; }\n .detail-tags { display: flex; flex-wrap: wrap; gap: 4px; }\n .detail-meta-table { width: 100%; border-collapse: collapse; }\n .detail-meta-table td { padding: 4px 0; font-size: 12px; }\n .detail-meta-table td:first-child { color: var(--text-secondary); width: 100px; }\n .detail-meta-table td:last-child { color: var(--text-primary); }\n .detail-panel-footer { padding: 12px 20px; border-top: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; flex-shrink: 0; }\n .detail-panel-footer button { padding: 7px 18px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }\n .detail-panel-footer button:hover { background: #2563eb; border-color: #2563eb; }\n .detail-edit-input { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .detail-edit-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .detail-edit-textarea { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: none; min-height: 80px; background: var(--input-bg); color: var(--text-primary); overflow: hidden; }\n .detail-edit-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .detail-edit-select { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .detail-edit-select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .tag-select-wrapper { position: relative; }\n .tag-select-control { border: 1px solid var(--border-color); border-radius: 6px; padding: 4px 8px; min-height: 36px; cursor: text; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; background: var(--input-bg); }\n .tag-select-control:focus-within { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .tag-pill { background: var(--tag-bg); color: var(--tag-color); font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; }\n .tag-pill-remove { background: none; border: none; color: var(--tag-color); cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }\n .tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }\n .tag-select-input { border: none; outline: none; font-size: 12px; font-family: inherit; min-width: 80px; flex: 1; background: transparent; padding: 2px 0; color: var(--text-primary); }\n .tag-select-input::placeholder { color: var(--text-muted); }\n .tag-select-dropdown { position: absolute; top: calc(100% + 2px); left: 0; right: 0; background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 100; max-height: 180px; overflow-y: auto; display: none; }\n .tag-select-dropdown.open { display: block; }\n .tag-select-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: var(--text-primary); }\n .tag-select-option:hover, .tag-select-option.focused { background: #eff6ff; color: #0369a1; }\n .tag-select-no-options { padding: 6px 10px; font-size: 12px; color: var(--text-muted); font-style: italic; }\n .filter-bar { display: flex; align-items: center; gap: 16px; height: 44px; background: var(--bg-surface-subtle); border-bottom: 1px solid var(--border-color); padding: 0 16px; flex-shrink: 0; overflow-x: auto; }\n .filter-group { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }\n .filter-label { font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--text-muted); letter-spacing: 0.05em; white-space: nowrap; }\n .filter-priority-btn { border: 1px solid var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 8px; font-size: 11px; font-weight: 600; cursor: pointer; text-transform: uppercase; color: var(--text-secondary); }\n .filter-priority-btn:hover { background: var(--bg-surface-hover); }\n .filter-priority-btn.active[data-priority=\"critical\"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }\n .filter-priority-btn.active[data-priority=\"high\"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }\n .filter-priority-btn.active[data-priority=\"medium\"] { background: #fef9c3; color: #ca8a04; border-color: #fde047; }\n .filter-priority-btn.active[data-priority=\"low\"] { background: #dcfce7; color: #16a34a; border-color: #86efac; }\n .filter-search-input { border: 1px solid var(--border-color); border-radius: 4px; padding: 3px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); width: 160px; }\n .filter-search-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .filter-assignee-input { border: 1px solid var(--border-color); border-radius: 4px; padding: 3px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); width: 120px; }\n .filter-assignee-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .filter-tag-pill { background: var(--tag-bg); color: var(--tag-color); font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; flex-shrink: 0; }\n .filter-tag-pill-remove { background: none; border: none; color: var(--tag-color); cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }\n .filter-tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }\n .filter-tag-dropdown-wrapper { flex-shrink: 0; }\n .filter-tag-add-btn { border: 1px dashed var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 8px; font-size: 11px; color: var(--text-secondary); cursor: pointer; white-space: nowrap; }\n .filter-tag-add-btn:hover { background: var(--bg-surface-hover); border-color: var(--text-muted); }\n .filter-tag-dropdown { position: fixed; background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 200; max-height: 180px; overflow-y: auto; display: none; min-width: 140px; }\n .filter-tag-dropdown.open { display: block; }\n .filter-tag-dropdown-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: var(--text-primary); white-space: nowrap; }\n .filter-tag-dropdown-option:hover { background: #eff6ff; color: #0369a1; }\n .filter-tag-dropdown-empty { padding: 6px 10px; font-size: 12px; color: var(--text-muted); font-style: italic; }\n .filter-clear-btn { border: 1px solid var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; color: var(--text-secondary); display: none; flex-shrink: 0; margin-left: auto; }\n .filter-clear-btn:hover { background: #fee2e2; border-color: #fca5a5; color: #dc2626; }\n .filter-clear-btn.visible { display: block; }\n .detail-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border-color); flex-shrink: 0; padding: 0 20px; background: var(--bg-surface); }\n .detail-tab { padding: 8px 14px; font-size: 12px; font-weight: 600; color: var(--text-muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; background: none; border-top: none; border-left: none; border-right: none; }\n .detail-tab:hover { color: var(--text-secondary); }\n .detail-tab.active { color: #3b82f6; border-bottom-color: #3b82f6; }\n .detail-tab-content { display: none; flex: 1; overflow-y: auto; min-height: 0; }\n .detail-tab-content.active { display: block; overflow-y: auto; }\n .detail-relations { font-size: 12px; color: var(--text-secondary); padding: 6px 0; border-bottom: 1px solid var(--border-color-subtle); margin-bottom: 12px; }\n .detail-relation-row { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }\n .detail-relation-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: var(--text-muted); width: 80px; flex-shrink: 0; letter-spacing: 0.05em; }\n .detail-relation-ids { display: flex; flex-wrap: wrap; gap: 4px; }\n .detail-relation-id { font-size: 11px; color: #3b82f6; background: #eff6ff; border-radius: 10px; padding: 1px 7px; font-weight: 600; }\n .detail-timestamp { font-size: 11px; color: var(--text-muted); margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border-color-subtle); }\n .detail-footer-timestamp { font-size: 11px; color: var(--text-muted); }\n .comment-item { position: relative; padding: 6px 0 6px 10px; border-left: 2px solid var(--border-color); margin-bottom: 10px; }\n .comment-item:hover { border-left-color: #3b82f6; }\n .comment-meta { display: flex; align-items: center; gap: 6px; margin-bottom: 3px; }\n .comment-author { font-size: 11px; font-weight: 600; color: var(--text-secondary); }\n .comment-date { font-size: 11px; color: var(--text-muted); }\n .comment-actions { display: none; margin-left: auto; gap: 4px; }\n .comment-item:hover .comment-actions { display: flex; }\n .comment-action-btn { background: none; border: none; padding: 1px 4px; cursor: pointer; color: var(--text-muted); font-size: 12px; border-radius: 3px; }\n .comment-action-btn:hover { color: var(--text-primary); background: var(--bg-surface-hover); }\n .comment-action-btn.danger:hover { color: #dc2626; background: #fef2f2; }\n .comment-content { font-size: 13px; color: var(--text-primary); line-height: 1.5; white-space: pre-wrap; }\n .comment-edit-area { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 60px; background: var(--input-bg); color: var(--text-primary); margin-top: 4px; }\n .comment-edit-area:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .comment-edit-actions { display: flex; gap: 6px; margin-top: 4px; }\n .comment-btn { background: none; border: 1px solid var(--border-color); border-radius: 4px; font-size: 11px; font-weight: 600; padding: 2px 8px; cursor: pointer; color: var(--text-secondary); }\n .comment-btn:hover { background: var(--bg-surface-hover); }\n .add-comment-trigger { background: none; border: 1px dashed var(--border-color); border-radius: 6px; padding: 8px 12px; font-size: 12px; color: var(--text-muted); cursor: pointer; width: 100%; text-align: left; margin-top: 4px; }\n .add-comment-trigger:hover { border-color: var(--text-muted); color: var(--text-secondary); background: var(--bg-surface-subtle); }\n .add-comment-form { margin-top: 4px; display: none; }\n .add-comment-form.open { display: block; }\n .add-comment-textarea { width: 100%; border: 1px solid var(--border-color); border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 72px; background: var(--input-bg); color: var(--text-primary); }\n .add-comment-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .add-comment-submit { margin-top: 6px; padding: 5px 14px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }\n .add-comment-submit:hover { background: #2563eb; border-color: #2563eb; }\n .add-comment-cancel { margin-top: 6px; margin-left: 6px; padding: 5px 10px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid var(--border-color); background: var(--bg-surface); color: var(--text-secondary); }\n .add-comment-cancel:hover { background: var(--bg-surface-hover); }\n .burger-menu-wrapper { position: relative; }\n .burger-menu-btn { background: none; border: none; color: white; cursor: pointer; padding: 4px 6px; border-radius: 4px; display: flex; flex-direction: column; gap: 4px; align-items: center; justify-content: center; opacity: 0.8; }\n .burger-menu-btn:hover { opacity: 1; background: rgba(255,255,255,0.1); }\n .burger-menu-btn span { display: block; width: 18px; height: 2px; background: white; border-radius: 1px; }\n .burger-menu-dropdown { position: absolute; right: 0; top: calc(100% + 6px); background: var(--burger-dropdown-bg); border: 1px solid var(--border-color); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 180px; }\n .burger-menu-dropdown.open { display: block; }\n .burger-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; color: var(--text-primary); white-space: nowrap; }\n .burger-menu-item:hover { background: var(--bg-surface-hover); }\n .burger-menu-item.danger { color: #dc2626; }\n .burger-menu-item.danger:hover { background: #fef2f2; }\n .burger-menu-separator { height: 1px; background: var(--border-color); margin: 4px 0; }\n .add-metadata-row-btn { background: none; border: 1px dashed var(--border-color); border-radius: 6px; padding: 5px 10px; font-size: 12px; color: var(--text-secondary); cursor: pointer; width: 100%; text-align: left; margin-bottom: 12px; }\n .add-metadata-row-btn:hover { border-color: var(--text-muted); background: var(--bg-surface-subtle); }\n .metadata-row { display: flex; gap: 6px; align-items: center; margin-bottom: 6px; }\n .metadata-row-key { flex: 1; border: 1px solid var(--border-color); border-radius: 6px; padding: 6px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .metadata-row-key:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .metadata-row-value { flex: 2; border: 1px solid var(--border-color); border-radius: 6px; padding: 6px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }\n .metadata-row-value:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .metadata-row-remove { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 16px; line-height: 1; padding: 2px 4px; border-radius: 4px; flex-shrink: 0; }\n .metadata-row-remove:hover { color: #dc2626; background: #fef2f2; }\n .dependency-toggle-btn { border: 1px solid var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; color: var(--text-secondary); flex-shrink: 0; transition: all 0.2s ease; }\n .dependency-toggle-btn:hover { background: var(--bg-surface-hover); border-color: var(--text-muted); color: var(--text-primary); }\n .dependency-toggle-btn.active { background: #3b82f6; border-color: #3b82f6; color: white; }\n .dependency-toggle-btn.active:hover { background: #2563eb; border-color: #2563eb; }\n svg#dependency-svg { pointer-events: none; }\n .dependency-line { transition: stroke-width 0.1s ease; }";
2
2
  //# sourceMappingURL=boardStyles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"boardStyles.d.ts","sourceRoot":"","sources":["../../src/board/boardStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,m6uBA0N+C,CAAC"}
1
+ {"version":3,"file":"boardStyles.d.ts","sourceRoot":"","sources":["../../src/board/boardStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,q+wBAkOoC,CAAC"}
@@ -90,16 +90,18 @@ exports.BOARD_STYLES = `
90
90
  .modal-actions button:hover { background: var(--bg-surface-hover); }
91
91
  .modal-actions button.primary { background: #3b82f6; color: white; border-color: #3b82f6; }
92
92
  .modal-actions button.primary:hover { background: #2563eb; }
93
- .toast { position: fixed; bottom: 20px; right: 20px; background: #ef4444; color: white; padding: 10px 16px; border-radius: 6px; font-size: 13px; opacity: 0; transition: opacity 0.3s; pointer-events: none; }
93
+ .toast { position: fixed; bottom: 20px; right: 20px; z-index: 100; background: #ef4444; color: white; padding: 10px 16px; border-radius: 6px; font-size: 13px; opacity: 0; transition: opacity 0.3s; pointer-events: none; }
94
94
  .toast.show { opacity: 1; }
95
- .detail-panel { position: relative; width: 0; height: calc(100vh - 92px); background: var(--bg-surface); box-shadow: none; border-left: 0 solid var(--border-color); display: flex; flex-direction: column; max-width: 800px; overflow: hidden; transition: width 0.25s ease; }
95
+ .detail-panel { position: relative; z-index: 6; width: 0; height: calc(100vh - 92px); background: var(--bg-surface); box-shadow: none; border-left: 0 solid var(--border-color); display: flex; flex-direction: column; max-width: 800px; overflow: hidden; transition: width 0.25s ease; }
96
96
  .detail-panel-resize-handle { position: absolute; top: 0; left: 0; width: 6px; height: 100%; cursor: col-resize; z-index: 10; background: transparent; }
97
97
  .detail-panel-resize-handle:hover, .detail-panel-resize-handle.dragging { background: rgba(59,130,246,0.3); }
98
98
  .detail-panel.open { width: 400px; min-width: 280px; border-left-width: 1px; }
99
- .detail-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }
100
- .detail-panel-header h2 { font-size: 16px; font-weight: 700; color: var(--text-primary); margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
101
- .detail-panel-close { background: none; border: none; font-size: 20px; color: var(--text-secondary); cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; }
99
+ .detail-panel-header { display: flex; align-items: center; gap: 4px; padding: 16px 20px; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }
100
+ .detail-panel-header h2 { font-size: 16px; font-weight: 700; color: var(--text-primary); margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
101
+ .detail-panel-close { background: none; border: none; font-size: 20px; color: var(--text-secondary); cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; margin-left: auto; }
102
102
  .detail-panel-close:hover { background: var(--bg-surface-hover); color: var(--text-primary); }
103
+ .detail-panel-copy-id { background: none; border: none; font-size: 20px; color: var(--text-secondary); cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; }
104
+ .detail-panel-copy-id:hover { background: var(--bg-surface-hover); color: var(--text-primary); }
103
105
  .detail-panel-body { flex: 1; overflow: hidden; min-width: 0; display: flex; flex-direction: column; }
104
106
  .detail-field { margin-bottom: 16px; word-wrap: break-word; }
105
107
  .description-field-wrapper { display: flex; flex-direction: column; margin-bottom: 16px; }
@@ -219,5 +221,11 @@ exports.BOARD_STYLES = `
219
221
  .metadata-row-value { flex: 2; border: 1px solid var(--border-color); border-radius: 6px; padding: 6px 8px; font-size: 12px; font-family: inherit; background: var(--input-bg); color: var(--text-primary); }
220
222
  .metadata-row-value:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
221
223
  .metadata-row-remove { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 16px; line-height: 1; padding: 2px 4px; border-radius: 4px; flex-shrink: 0; }
222
- .metadata-row-remove:hover { color: #dc2626; background: #fef2f2; }`;
224
+ .metadata-row-remove:hover { color: #dc2626; background: #fef2f2; }
225
+ .dependency-toggle-btn { border: 1px solid var(--border-color); background: var(--bg-surface); border-radius: 4px; padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; color: var(--text-secondary); flex-shrink: 0; transition: all 0.2s ease; }
226
+ .dependency-toggle-btn:hover { background: var(--bg-surface-hover); border-color: var(--text-muted); color: var(--text-primary); }
227
+ .dependency-toggle-btn.active { background: #3b82f6; border-color: #3b82f6; color: white; }
228
+ .dependency-toggle-btn.active:hover { background: #2563eb; border-color: #2563eb; }
229
+ svg#dependency-svg { pointer-events: none; }
230
+ .dependency-line { transition: stroke-width 0.1s ease; }`;
223
231
  //# sourceMappingURL=boardStyles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boardStyles.js","sourceRoot":"","sources":["../../src/board/boardStyles.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEA0N4C,CAAC"}
1
+ {"version":3,"file":"boardStyles.js","sourceRoot":"","sources":["../../src/board/boardStyles.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAkOiC,CAAC"}