agkan 2.14.3 → 3.0.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 (197) hide show
  1. package/README.ja.md +62 -238
  2. package/README.md +48 -241
  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 +67 -26
  10. package/dist/board/boardRenderer.js.map +1 -1
  11. package/dist/board/boardRoutes.d.ts +4 -2
  12. package/dist/board/boardRoutes.d.ts.map +1 -1
  13. package/dist/board/boardRoutes.js +140 -13
  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 +62 -8
  18. package/dist/board/boardStyles.js.map +1 -1
  19. package/dist/board/client/board.js +1007 -29
  20. package/dist/board/server.d.ts +3 -2
  21. package/dist/board/server.d.ts.map +1 -1
  22. package/dist/board/server.js +9 -7
  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/tag/add.d.ts.map +1 -1
  35. package/dist/cli/commands/tag/add.js +10 -11
  36. package/dist/cli/commands/tag/add.js.map +1 -1
  37. package/dist/cli/commands/tag/attach.d.ts.map +1 -1
  38. package/dist/cli/commands/tag/attach.js +10 -11
  39. package/dist/cli/commands/tag/attach.js.map +1 -1
  40. package/dist/cli/commands/tag/rename.d.ts.map +1 -1
  41. package/dist/cli/commands/tag/rename.js +10 -11
  42. package/dist/cli/commands/tag/rename.js.map +1 -1
  43. package/dist/cli/commands/task/add.js +1 -1
  44. package/dist/cli/commands/task/add.js.map +1 -1
  45. package/dist/cli/commands/task/copy.d.ts +6 -0
  46. package/dist/cli/commands/task/copy.d.ts.map +1 -0
  47. package/dist/cli/commands/task/copy.js +118 -0
  48. package/dist/cli/commands/task/copy.js.map +1 -0
  49. package/dist/cli/commands/task/list.d.ts.map +1 -1
  50. package/dist/cli/commands/task/list.js +37 -17
  51. package/dist/cli/commands/task/list.js.map +1 -1
  52. package/dist/cli/commands/task/update-parent.d.ts.map +1 -1
  53. package/dist/cli/commands/task/update-parent.js +10 -11
  54. package/dist/cli/commands/task/update-parent.js.map +1 -1
  55. package/dist/cli/index.js +6 -0
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/utils/board-daemon.d.ts +7 -0
  58. package/dist/cli/utils/board-daemon.d.ts.map +1 -0
  59. package/dist/cli/utils/board-daemon.js +83 -0
  60. package/dist/cli/utils/board-daemon.js.map +1 -0
  61. package/dist/db/adapters/sqlite-storage-backend.d.ts +27 -0
  62. package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -0
  63. package/dist/db/adapters/sqlite-storage-backend.js +498 -0
  64. package/dist/db/adapters/sqlite-storage-backend.js.map +1 -0
  65. package/dist/db/connection.d.ts +19 -0
  66. package/dist/db/connection.d.ts.map +1 -1
  67. package/dist/db/connection.js +37 -2
  68. package/dist/db/connection.js.map +1 -1
  69. package/dist/db/migrations/20260328000000_initial_schema.d.ts +3 -0
  70. package/dist/db/migrations/20260328000000_initial_schema.d.ts.map +1 -0
  71. package/dist/db/migrations/20260328000000_initial_schema.js +218 -0
  72. package/dist/db/migrations/20260328000000_initial_schema.js.map +1 -0
  73. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts +3 -0
  74. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts.map +1 -0
  75. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js +7 -0
  76. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js.map +1 -0
  77. package/dist/db/migrations/index.d.ts +4 -0
  78. package/dist/db/migrations/index.d.ts.map +1 -0
  79. package/dist/db/migrations/index.js +18 -0
  80. package/dist/db/migrations/index.js.map +1 -0
  81. package/dist/db/migrations/types.d.ts +17 -0
  82. package/dist/db/migrations/types.d.ts.map +1 -0
  83. package/dist/{board/client → db/migrations}/types.js +0 -1
  84. package/dist/db/migrations/types.js.map +1 -0
  85. package/dist/db/reset.d.ts.map +1 -1
  86. package/dist/db/reset.js +8 -3
  87. package/dist/db/reset.js.map +1 -1
  88. package/dist/db/schema.d.ts +4 -4
  89. package/dist/db/schema.d.ts.map +1 -1
  90. package/dist/db/schema.js +22 -207
  91. package/dist/db/schema.js.map +1 -1
  92. package/dist/db/types/repository.d.ts +226 -0
  93. package/dist/db/types/repository.d.ts.map +1 -0
  94. package/dist/db/types/repository.js +15 -0
  95. package/dist/db/types/repository.js.map +1 -0
  96. package/dist/errors.d.ts +27 -0
  97. package/dist/errors.d.ts.map +1 -0
  98. package/dist/errors.js +51 -0
  99. package/dist/errors.js.map +1 -0
  100. package/dist/models/Task.d.ts +2 -0
  101. package/dist/models/Task.d.ts.map +1 -1
  102. package/dist/services/ClaudeProcessService.d.ts +100 -0
  103. package/dist/services/ClaudeProcessService.d.ts.map +1 -0
  104. package/dist/services/ClaudeProcessService.js +279 -0
  105. package/dist/services/ClaudeProcessService.js.map +1 -0
  106. package/dist/services/CommentService.d.ts +3 -3
  107. package/dist/services/CommentService.d.ts.map +1 -1
  108. package/dist/services/CommentService.js +13 -72
  109. package/dist/services/CommentService.js.map +1 -1
  110. package/dist/services/ExportImportService.d.ts +3 -3
  111. package/dist/services/ExportImportService.d.ts.map +1 -1
  112. package/dist/services/ExportImportService.js +29 -31
  113. package/dist/services/ExportImportService.js.map +1 -1
  114. package/dist/services/MetadataService.d.ts +3 -3
  115. package/dist/services/MetadataService.d.ts.map +1 -1
  116. package/dist/services/MetadataService.js +9 -69
  117. package/dist/services/MetadataService.js.map +1 -1
  118. package/dist/services/ProcessService.d.ts +54 -0
  119. package/dist/services/ProcessService.d.ts.map +1 -0
  120. package/dist/services/ProcessService.js +147 -0
  121. package/dist/services/ProcessService.js.map +1 -0
  122. package/dist/services/TagService.d.ts +3 -3
  123. package/dist/services/TagService.d.ts.map +1 -1
  124. package/dist/services/TagService.js +16 -41
  125. package/dist/services/TagService.js.map +1 -1
  126. package/dist/services/TaskBlockService.d.ts +3 -3
  127. package/dist/services/TaskBlockService.d.ts.map +1 -1
  128. package/dist/services/TaskBlockService.js +14 -40
  129. package/dist/services/TaskBlockService.js.map +1 -1
  130. package/dist/services/TaskService.d.ts +5 -23
  131. package/dist/services/TaskService.d.ts.map +1 -1
  132. package/dist/services/TaskService.js +57 -191
  133. package/dist/services/TaskService.js.map +1 -1
  134. package/dist/services/TaskTagService.d.ts +3 -3
  135. package/dist/services/TaskTagService.d.ts.map +1 -1
  136. package/dist/services/TaskTagService.js +23 -86
  137. package/dist/services/TaskTagService.js.map +1 -1
  138. package/dist/services/TmuxService.d.ts +2 -0
  139. package/dist/services/TmuxService.d.ts.map +1 -0
  140. package/dist/services/TmuxService.js +7 -0
  141. package/dist/services/TmuxService.js.map +1 -0
  142. package/dist/services/index.d.ts +2 -0
  143. package/dist/services/index.d.ts.map +1 -1
  144. package/dist/services/index.js +3 -1
  145. package/dist/services/index.js.map +1 -1
  146. package/dist/utils/logger.d.ts +7 -0
  147. package/dist/utils/logger.d.ts.map +1 -0
  148. package/dist/utils/logger.js +18 -0
  149. package/dist/utils/logger.js.map +1 -0
  150. package/package.json +12 -5
  151. package/dist/board/client/addTaskModal.d.ts +0 -2
  152. package/dist/board/client/addTaskModal.d.ts.map +0 -1
  153. package/dist/board/client/addTaskModal.js +0 -64
  154. package/dist/board/client/addTaskModal.js.map +0 -1
  155. package/dist/board/client/autoScroll.d.ts +0 -4
  156. package/dist/board/client/autoScroll.d.ts.map +0 -1
  157. package/dist/board/client/autoScroll.js +0 -59
  158. package/dist/board/client/autoScroll.js.map +0 -1
  159. package/dist/board/client/boardPolling.d.ts +0 -15
  160. package/dist/board/client/boardPolling.d.ts.map +0 -1
  161. package/dist/board/client/boardPolling.js +0 -144
  162. package/dist/board/client/boardPolling.js.map +0 -1
  163. package/dist/board/client/burgerMenu.d.ts +0 -2
  164. package/dist/board/client/burgerMenu.d.ts.map +0 -1
  165. package/dist/board/client/burgerMenu.js +0 -80
  166. package/dist/board/client/burgerMenu.js.map +0 -1
  167. package/dist/board/client/contextMenu.d.ts +0 -2
  168. package/dist/board/client/contextMenu.d.ts.map +0 -1
  169. package/dist/board/client/contextMenu.js +0 -52
  170. package/dist/board/client/contextMenu.js.map +0 -1
  171. package/dist/board/client/detailPanel.d.ts +0 -8
  172. package/dist/board/client/detailPanel.d.ts.map +0 -1
  173. package/dist/board/client/detailPanel.js +0 -565
  174. package/dist/board/client/detailPanel.js.map +0 -1
  175. package/dist/board/client/dragDrop.d.ts +0 -6
  176. package/dist/board/client/dragDrop.d.ts.map +0 -1
  177. package/dist/board/client/dragDrop.js +0 -82
  178. package/dist/board/client/dragDrop.js.map +0 -1
  179. package/dist/board/client/filters.d.ts +0 -6
  180. package/dist/board/client/filters.d.ts.map +0 -1
  181. package/dist/board/client/filters.js +0 -167
  182. package/dist/board/client/filters.js.map +0 -1
  183. package/dist/board/client/main.d.ts +0 -2
  184. package/dist/board/client/main.d.ts.map +0 -1
  185. package/dist/board/client/main.js +0 -20
  186. package/dist/board/client/main.js.map +0 -1
  187. package/dist/board/client/tags.d.ts +0 -6
  188. package/dist/board/client/tags.d.ts.map +0 -1
  189. package/dist/board/client/tags.js +0 -198
  190. package/dist/board/client/tags.js.map +0 -1
  191. package/dist/board/client/types.d.ts +0 -48
  192. package/dist/board/client/types.d.ts.map +0 -1
  193. package/dist/board/client/types.js.map +0 -1
  194. package/dist/board/client/utils.d.ts +0 -4
  195. package/dist/board/client/utils.d.ts.map +0 -1
  196. package/dist/board/client/utils.js +0 -44
  197. package/dist/board/client/utils.js.map +0 -1
@@ -1,565 +0,0 @@
1
- "use strict";
2
- // Detail panel functionality
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getDetailTaskId = getDetailTaskId;
5
- exports.closeDetailPanel = closeDetailPanel;
6
- exports.renderDetailPanel = renderDetailPanel;
7
- exports.openTaskDetail = openTaskDetail;
8
- exports.showUpdateWarning = showUpdateWarning;
9
- exports.initDetailPanel = initDetailPanel;
10
- const utils_1 = require("./utils");
11
- const tags_1 = require("./tags");
12
- const boardPolling_1 = require("./boardPolling");
13
- // State
14
- let detailTaskId = null;
15
- let lastTab = 'details';
16
- // Exported getter for other modules to access the current task ID
17
- function getDetailTaskId() {
18
- return detailTaskId;
19
- }
20
- function closeDetailPanel() {
21
- const detailPanel = document.getElementById('detail-panel');
22
- detailPanel.classList.remove('open');
23
- detailPanel.style.width = '';
24
- detailTaskId = null;
25
- }
26
- function switchTab(tabName) {
27
- lastTab = tabName;
28
- document.querySelectorAll('.detail-tab').forEach((btn) => {
29
- btn.classList.toggle('active', btn.dataset.tab === tabName);
30
- });
31
- document.querySelectorAll('.detail-tab-content').forEach((el) => {
32
- el.classList.toggle('active', el.id === 'detail-tab-content-' + tabName);
33
- });
34
- const footer = document.getElementById('detail-panel-footer');
35
- if (footer)
36
- footer.style.display = tabName === 'details' ? '' : 'none';
37
- }
38
- async function loadComments(taskId) {
39
- const tabBtn = document.getElementById('detail-tab-comments');
40
- const pane = document.getElementById('detail-tab-content-comments');
41
- if (!pane)
42
- return;
43
- try {
44
- const res = await fetch('/api/tasks/' + taskId + '/comments');
45
- if (!res.ok)
46
- throw new Error('Server error');
47
- const data = await res.json();
48
- const comments = data.comments || [];
49
- if (tabBtn)
50
- tabBtn.textContent = 'Comments (' + comments.length + ')';
51
- renderComments(taskId, comments);
52
- }
53
- catch {
54
- if (pane)
55
- pane.innerHTML =
56
- '<div style="padding:20px;font-size:12px;color:#94a3b8;">Failed to load comments</div>';
57
- }
58
- }
59
- function renderComments(taskId, comments) {
60
- const pane = document.getElementById('detail-tab-content-comments');
61
- if (!pane)
62
- return;
63
- pane.style.padding = '16px 20px';
64
- let html = '';
65
- comments.forEach(function (comment) {
66
- const authorText = comment.author ? (0, utils_1.escapeHtmlClient)(comment.author) : 'Anonymous';
67
- const dateRel = (0, utils_1.relativeTime)(comment.created_at);
68
- const dateAbs = (0, utils_1.escapeHtmlClient)(comment.created_at);
69
- const contentText = (0, utils_1.escapeHtmlClient)(comment.content);
70
- html += '<div class="comment-item" data-comment-id="' + comment.id + '">';
71
- html += '<div class="comment-meta">';
72
- html += '<span class="comment-author">' + authorText + '</span>';
73
- html += '<span class="comment-date" title="' + dateAbs + '">' + dateRel + '</span>';
74
- html += '<span class="comment-actions">';
75
- html +=
76
- '<button class="comment-action-btn" title="Edit" onclick="startCommentEdit(' +
77
- comment.id +
78
- ')">&#9998;</button>';
79
- html +=
80
- '<button class="comment-action-btn danger" title="Delete" onclick="deleteComment(' +
81
- comment.id +
82
- ',' +
83
- taskId +
84
- ')">&#128465;</button>';
85
- html += '</span>';
86
- html += '</div>';
87
- html +=
88
- '<div class="comment-content" id="comment-content-' + comment.id + '">' + contentText + '</div>';
89
- html += '<div id="comment-edit-' + comment.id + '" style="display:none;">';
90
- html +=
91
- '<textarea class="comment-edit-area" id="comment-edit-area-' +
92
- comment.id +
93
- '">' +
94
- contentText +
95
- '</textarea>';
96
- html += '<div class="comment-edit-actions">';
97
- html +=
98
- '<button class="comment-btn" onclick="saveCommentEdit(' +
99
- comment.id +
100
- ',' +
101
- taskId +
102
- ')">Save</button>';
103
- html +=
104
- '<button class="comment-btn" onclick="cancelCommentEdit(' + comment.id + ')">Cancel</button>';
105
- html += '</div></div>';
106
- html += '</div>';
107
- });
108
- html +=
109
- '<button class="add-comment-trigger" id="add-comment-trigger" onclick="openAddCommentForm()">+ Add comment...</button>';
110
- html += '<div class="add-comment-form" id="add-comment-form">';
111
- html +=
112
- '<textarea class="add-comment-textarea" id="add-comment-text" placeholder="Write a comment..."></textarea>';
113
- html += '<div>';
114
- html +=
115
- '<button class="add-comment-submit" onclick="submitComment(' + taskId + ')">Add Comment</button>';
116
- html += '<button class="add-comment-cancel" onclick="closeAddCommentForm()">Cancel</button>';
117
- html += '</div></div>';
118
- pane.innerHTML = html;
119
- }
120
- window.openAddCommentForm = function () {
121
- const trigger = document.getElementById('add-comment-trigger');
122
- const form = document.getElementById('add-comment-form');
123
- if (trigger)
124
- trigger.style.display = 'none';
125
- if (form) {
126
- form.classList.add('open');
127
- form.querySelector('textarea').focus();
128
- }
129
- };
130
- window.closeAddCommentForm = function () {
131
- const trigger = document.getElementById('add-comment-trigger');
132
- const form = document.getElementById('add-comment-form');
133
- if (trigger)
134
- trigger.style.display = '';
135
- if (form) {
136
- form.classList.remove('open');
137
- form.querySelector('textarea').value = '';
138
- }
139
- };
140
- window.startCommentEdit = function (commentId) {
141
- const contentEl = document.getElementById('comment-content-' + commentId);
142
- const editWrapper = document.getElementById('comment-edit-' + commentId);
143
- if (contentEl)
144
- contentEl.style.display = 'none';
145
- if (editWrapper)
146
- editWrapper.style.display = 'block';
147
- const area = document.getElementById('comment-edit-area-' + commentId);
148
- if (area)
149
- area.focus();
150
- };
151
- window.cancelCommentEdit = function (commentId) {
152
- const contentEl = document.getElementById('comment-content-' + commentId);
153
- const editWrapper = document.getElementById('comment-edit-' + commentId);
154
- if (contentEl)
155
- contentEl.style.display = '';
156
- if (editWrapper)
157
- editWrapper.style.display = 'none';
158
- };
159
- window.saveCommentEdit = async function (commentId, taskId) {
160
- const area = document.getElementById('comment-edit-area-' + commentId);
161
- if (!area)
162
- return;
163
- const content = area.value.trim();
164
- if (!content) {
165
- area.focus();
166
- return;
167
- }
168
- try {
169
- const res = await fetch('/api/comments/' + commentId, {
170
- method: 'PATCH',
171
- headers: { 'Content-Type': 'application/json' },
172
- body: JSON.stringify({ content }),
173
- });
174
- if (!res.ok)
175
- throw new Error('Server error');
176
- await loadComments(taskId);
177
- }
178
- catch {
179
- (0, utils_1.showToast)('Failed to update comment');
180
- }
181
- };
182
- window.deleteComment = async function (commentId, taskId) {
183
- if (!confirm('Delete this comment?'))
184
- return;
185
- try {
186
- const res = await fetch('/api/comments/' + commentId, { method: 'DELETE' });
187
- if (!res.ok)
188
- throw new Error('Server error');
189
- await loadComments(taskId);
190
- }
191
- catch {
192
- (0, utils_1.showToast)('Failed to delete comment');
193
- }
194
- };
195
- window.submitComment = async function (taskId) {
196
- const textarea = document.getElementById('add-comment-text');
197
- if (!textarea)
198
- return;
199
- const content = textarea.value.trim();
200
- if (!content) {
201
- textarea.focus();
202
- return;
203
- }
204
- try {
205
- const res = await fetch('/api/tasks/' + taskId + '/comments', {
206
- method: 'POST',
207
- headers: { 'Content-Type': 'application/json' },
208
- body: JSON.stringify({ content }),
209
- });
210
- if (!res.ok)
211
- throw new Error('Server error');
212
- await loadComments(taskId);
213
- }
214
- catch {
215
- (0, utils_1.showToast)('Failed to add comment');
216
- }
217
- };
218
- function renderDetailPanel(data) {
219
- const detailPanelTitle = document.getElementById('detail-panel-title');
220
- const task = data.task;
221
- const tags = data.tags || [];
222
- const metadata = data.metadata || [];
223
- const blockedBy = data.blockedBy || [];
224
- const blocking = data.blocking || [];
225
- const parent = data.parent || null;
226
- detailTaskId = task.id;
227
- detailPanelTitle.textContent = '#' + task.id;
228
- // Globals from server-side renderer
229
- const win = window;
230
- const _allStatuses = win.allStatuses;
231
- const _statusLabels = win.statusLabels;
232
- const _allPriorities = win.allPriorities;
233
- let html = '';
234
- // Status (editable)
235
- html += '<div class="detail-field">';
236
- html += '<div class="detail-field-label">Status</div>';
237
- html += '<select id="detail-edit-status" class="detail-edit-select">';
238
- _allStatuses.forEach((s) => {
239
- const selected = s === task.status ? ' selected' : '';
240
- html += '<option value="' + s + '"' + selected + '>' + _statusLabels[s] + '</option>';
241
- });
242
- html += '</select>';
243
- html += '</div>';
244
- // Priority (editable)
245
- html += '<div class="detail-field">';
246
- html += '<div class="detail-field-label">Priority</div>';
247
- html += '<select id="detail-edit-priority" class="detail-edit-select">';
248
- html += '<option value="">None</option>';
249
- _allPriorities.forEach((p) => {
250
- const selected = task.priority === p ? ' selected' : '';
251
- html +=
252
- '<option value="' +
253
- p +
254
- '"' +
255
- selected +
256
- '>' +
257
- p.charAt(0).toUpperCase() +
258
- p.slice(1) +
259
- '</option>';
260
- });
261
- html += '</select>';
262
- html += '</div>';
263
- // Tags (editable)
264
- html += '<div class="detail-field">';
265
- html += '<div class="detail-field-label">Tags</div>';
266
- html += '<div id="detail-tags-container"></div>';
267
- html += '</div>';
268
- // Relations: parent, blockedBy, blocking
269
- const hasRelations = parent || blockedBy.length > 0 || blocking.length > 0;
270
- if (hasRelations) {
271
- html += '<div class="detail-relations">';
272
- if (parent) {
273
- html += '<div class="detail-relation-row">';
274
- html += '<span class="detail-relation-label">Parent</span>';
275
- html +=
276
- '<div class="detail-relation-ids"><span class="detail-relation-id">#' +
277
- parent.id +
278
- ' ' +
279
- (0, utils_1.escapeHtmlClient)(parent.title) +
280
- '</span></div>';
281
- html += '</div>';
282
- }
283
- if (blockedBy.length > 0) {
284
- html += '<div class="detail-relation-row">';
285
- html += '<span class="detail-relation-label">Blocked by</span>';
286
- html += '<div class="detail-relation-ids">';
287
- blockedBy.forEach((t) => {
288
- html += '<span class="detail-relation-id">#' + t.id + '</span>';
289
- });
290
- html += '</div></div>';
291
- }
292
- if (blocking.length > 0) {
293
- html += '<div class="detail-relation-row">';
294
- html += '<span class="detail-relation-label">Blocking</span>';
295
- html += '<div class="detail-relation-ids">';
296
- blocking.forEach((t) => {
297
- html += '<span class="detail-relation-id">#' + t.id + '</span>';
298
- });
299
- html += '</div></div>';
300
- }
301
- html += '</div>';
302
- }
303
- // Title (editable)
304
- html += '<div class="detail-field">';
305
- html += '<div class="detail-field-label">Title</div>';
306
- html +=
307
- '<input id="detail-edit-title" class="detail-edit-input" type="text" value="' +
308
- (0, utils_1.escapeHtmlClient)(task.title) +
309
- '">';
310
- html += '</div>';
311
- // Body (editable)
312
- html += '<div class="detail-field description-field-wrapper">';
313
- html += '<div class="detail-field-label">Description</div>';
314
- html +=
315
- '<textarea id="detail-edit-body" class="detail-edit-textarea">' +
316
- (0, utils_1.escapeHtmlClient)(task.body || '') +
317
- '</textarea>';
318
- html += '</div>';
319
- // Metadata table (read-only, non-priority)
320
- const otherMeta = metadata.filter((m) => m.key !== 'priority');
321
- if (otherMeta.length > 0) {
322
- html += '<div class="detail-field">';
323
- html += '<div class="detail-field-label">Metadata</div>';
324
- html += '<table class="detail-meta-table">';
325
- otherMeta.forEach((m) => {
326
- html +=
327
- '<tr><td>' +
328
- (0, utils_1.escapeHtmlClient)(m.key) +
329
- '</td><td>' +
330
- (0, utils_1.escapeHtmlClient)(m.value) +
331
- '</td></tr>';
332
- });
333
- html += '</table></div>';
334
- }
335
- // Timestamps compressed to one line
336
- html +=
337
- '<div class="detail-timestamp">created ' +
338
- (0, utils_1.relativeTime)(task.created_at) +
339
- ' &middot; updated ' +
340
- (0, utils_1.relativeTime)(task.updated_at) +
341
- '</div>';
342
- const detailsPane = document.getElementById('detail-tab-content-details');
343
- if (detailsPane) {
344
- detailsPane.innerHTML = html;
345
- detailsPane.style.padding = '20px';
346
- }
347
- // Render tags section after DOM update
348
- (0, tags_1.loadAllTags)().then(() => (0, tags_1.renderTagsSection)([...tags]));
349
- // Load comments into the comments tab
350
- loadComments(task.id);
351
- // Restore last tab
352
- switchTab(lastTab);
353
- }
354
- async function openTaskDetail(taskId) {
355
- const detailPanel = document.getElementById('detail-panel');
356
- const PANEL_DEFAULT_WIDTH = 400;
357
- try {
358
- const res = await fetch('/api/tasks/' + taskId);
359
- if (!res.ok)
360
- throw new Error('Server error');
361
- const data = await res.json();
362
- renderDetailPanel(data);
363
- if (!detailPanel.classList.contains('open')) {
364
- const preferredWidth = detailPanel.dataset.preferredWidth || String(PANEL_DEFAULT_WIDTH);
365
- detailPanel.style.width = preferredWidth + 'px';
366
- detailPanel.classList.add('open');
367
- }
368
- }
369
- catch {
370
- (0, utils_1.showToast)('Failed to load task details');
371
- }
372
- }
373
- function showUpdateWarning() {
374
- const detailPanelBody = document.getElementById('detail-panel-body');
375
- const warning = document.getElementById('detail-panel-update-warning');
376
- if (!warning) {
377
- const warningEl = document.createElement('div');
378
- warningEl.id = 'detail-panel-update-warning';
379
- warningEl.style.cssText =
380
- 'display: flex; align-items: center; gap: 8px; color: red; font-size: 0.85em; padding: 4px 8px; background: #fff0f0; border: 1px solid #ffcccc; border-radius: 4px; margin-bottom: 8px;';
381
- const msgSpan = document.createElement('span');
382
- msgSpan.style.cssText = 'flex: 1;';
383
- msgSpan.textContent =
384
- 'This task has been updated in the database. Save or discard your changes to see the latest version.';
385
- const reloadBtn = document.createElement('button');
386
- reloadBtn.title = 'Reload latest data';
387
- reloadBtn.textContent = '↺';
388
- reloadBtn.style.cssText =
389
- 'background: none; border: none; cursor: pointer; font-size: 1.1em; color: red; padding: 0 2px; line-height: 1; flex-shrink: 0;';
390
- reloadBtn.addEventListener('click', async () => {
391
- try {
392
- const taskRes = await fetch('/api/tasks/' + detailTaskId);
393
- if (taskRes.ok) {
394
- const taskData = await taskRes.json();
395
- renderDetailPanel(taskData);
396
- }
397
- }
398
- catch {
399
- // Ignore network errors
400
- }
401
- });
402
- warningEl.appendChild(msgSpan);
403
- warningEl.appendChild(reloadBtn);
404
- detailPanelBody.insertBefore(warningEl, detailPanelBody.firstChild);
405
- }
406
- }
407
- function initDetailPanel() {
408
- const boardContainer = document.querySelector('.board-container');
409
- const detailPanelHtml = '<div class="detail-panel" id="detail-panel">' +
410
- '<div class="detail-panel-resize-handle" id="detail-panel-resize-handle"></div>' +
411
- '<div class="detail-panel-header">' +
412
- '<h2 id="detail-panel-title">Task Detail</h2>' +
413
- '<button class="detail-panel-close" id="detail-panel-close" title="Close">&times;</button>' +
414
- '</div>' +
415
- '<div class="detail-tabs" id="detail-tabs">' +
416
- '<button class="detail-tab active" data-tab="details">Details</button>' +
417
- '<button class="detail-tab" data-tab="comments" id="detail-tab-comments">Comments</button>' +
418
- '</div>' +
419
- '<div class="detail-panel-body" id="detail-panel-body">' +
420
- '<div class="detail-tab-content active" id="detail-tab-content-details"></div>' +
421
- '<div class="detail-tab-content" id="detail-tab-content-comments"></div>' +
422
- '</div>' +
423
- '<div class="detail-panel-footer" id="detail-panel-footer"><button id="detail-save-btn">Save</button></div>' +
424
- '</div>';
425
- boardContainer.insertAdjacentHTML('beforeend', detailPanelHtml);
426
- const detailPanel = document.getElementById('detail-panel');
427
- document.getElementById('detail-panel-close')?.addEventListener('click', closeDetailPanel);
428
- // Tab switching
429
- document.getElementById('detail-tabs')?.addEventListener('click', (e) => {
430
- const btn = e.target.closest('.detail-tab');
431
- if (!btn)
432
- return;
433
- switchTab(btn.dataset.tab);
434
- });
435
- // Panel resize
436
- const resizeHandle = document.getElementById('detail-panel-resize-handle');
437
- const PANEL_MIN_WIDTH = 280;
438
- const PANEL_MAX_WIDTH = 800;
439
- const PANEL_DEFAULT_WIDTH = 400;
440
- // Initialize panel width from server config (async)
441
- (async function initPanelWidth() {
442
- let targetWidth = PANEL_DEFAULT_WIDTH;
443
- try {
444
- const res = await fetch('/api/config');
445
- if (res.ok) {
446
- const data = await res.json();
447
- const savedWidth = data && data.board && data.board.detailPaneWidth;
448
- if (typeof savedWidth === 'number' &&
449
- savedWidth >= PANEL_MIN_WIDTH &&
450
- savedWidth <= PANEL_MAX_WIDTH) {
451
- targetWidth = savedWidth;
452
- }
453
- }
454
- }
455
- catch {
456
- // Ignore errors, use default width
457
- }
458
- detailPanel.dataset.preferredWidth = String(targetWidth);
459
- })();
460
- resizeHandle.addEventListener('mousedown', function (e) {
461
- e.preventDefault();
462
- if (!detailPanel.classList.contains('open'))
463
- return;
464
- const startX = e.clientX;
465
- const startWidth = detailPanel.offsetWidth;
466
- resizeHandle.classList.add('dragging');
467
- document.body.style.userSelect = 'none';
468
- document.body.style.cursor = 'col-resize';
469
- detailPanel.style.transition = 'none';
470
- function onMouseMove(e) {
471
- const delta = startX - e.clientX;
472
- const newWidth = Math.min(PANEL_MAX_WIDTH, Math.max(PANEL_MIN_WIDTH, startWidth + delta));
473
- detailPanel.style.width = newWidth + 'px';
474
- }
475
- function onMouseUp() {
476
- resizeHandle.classList.remove('dragging');
477
- document.body.style.userSelect = '';
478
- document.body.style.cursor = '';
479
- detailPanel.style.transition = '';
480
- const currentWidth = detailPanel.offsetWidth;
481
- detailPanel.dataset.preferredWidth = String(currentWidth);
482
- fetch('/api/config', {
483
- method: 'PUT',
484
- headers: { 'Content-Type': 'application/json' },
485
- body: JSON.stringify({ board: { detailPaneWidth: currentWidth } }),
486
- }).catch(function () {
487
- // Ignore errors when saving panel width
488
- });
489
- document.removeEventListener('mousemove', onMouseMove);
490
- document.removeEventListener('mouseup', onMouseUp);
491
- }
492
- document.addEventListener('mousemove', onMouseMove);
493
- document.addEventListener('mouseup', onMouseUp);
494
- });
495
- // Save button
496
- document.getElementById('detail-save-btn')?.addEventListener('click', async () => {
497
- if (detailTaskId === null)
498
- return;
499
- const titleInput = document.getElementById('detail-edit-title');
500
- const title = titleInput ? titleInput.value.trim() : '';
501
- if (!title) {
502
- if (titleInput)
503
- titleInput.focus();
504
- return;
505
- }
506
- const bodyEl = document.getElementById('detail-edit-body');
507
- const statusEl = document.getElementById('detail-edit-status');
508
- const priorityEl = document.getElementById('detail-edit-priority');
509
- try {
510
- const res = await fetch('/api/tasks/' + detailTaskId, {
511
- method: 'PATCH',
512
- headers: { 'Content-Type': 'application/json' },
513
- body: JSON.stringify({
514
- title,
515
- body: bodyEl ? bodyEl.value.trim() || null : null,
516
- status: statusEl ? statusEl.value : undefined,
517
- priority: priorityEl ? priorityEl.value || null : null,
518
- }),
519
- });
520
- if (!res.ok)
521
- throw new Error('Server error');
522
- // Fetch updated task data and refresh detail panel instead of reloading
523
- const getRes = await fetch('/api/tasks/' + detailTaskId);
524
- if (!getRes.ok)
525
- throw new Error('Failed to fetch updated task');
526
- const data = await getRes.json();
527
- renderDetailPanel(data);
528
- (0, utils_1.showToast)('Task saved successfully');
529
- // Update lastUpdatedAt so polling doesn't treat our own save as an external update
530
- try {
531
- const tsRes = await fetch('/api/board/updated-at');
532
- if (tsRes.ok) {
533
- const tsData = await tsRes.json();
534
- (0, boardPolling_1.setLastUpdatedAt)(tsData.updatedAt);
535
- }
536
- }
537
- catch {
538
- // Ignore errors when syncing timestamp
539
- }
540
- // Refresh board cards in the background
541
- (0, boardPolling_1.refreshBoardCards)();
542
- }
543
- catch {
544
- (0, utils_1.showToast)('Failed to update task');
545
- }
546
- });
547
- // Card click handler
548
- document.querySelectorAll('.card').forEach((card) => {
549
- card.addEventListener('click', async (e) => {
550
- if (e.defaultPrevented)
551
- return;
552
- await openTaskDetail(card.dataset.id);
553
- });
554
- });
555
- // Register callbacks to break circular dependencies
556
- (0, boardPolling_1.registerDetailPanelCallbacks)({
557
- openTaskDetail,
558
- renderDetailPanel,
559
- showUpdateWarning,
560
- getDetailTaskId,
561
- });
562
- // Register getDetailTaskId with the tags module
563
- (0, tags_1.registerGetDetailTaskId)(getDetailTaskId);
564
- }
565
- //# sourceMappingURL=detailPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detailPanel.js","sourceRoot":"","sources":["../../../src/board/client/detailPanel.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare let draggedCard: HTMLElement | null;
2
- export declare let sourceBody: HTMLElement | null;
3
- export declare function updateCount(status: string): void;
4
- export declare function attachDragListeners(card: HTMLElement): void;
5
- export declare function initDragDrop(): void;
6
- //# sourceMappingURL=dragDrop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dragDrop.d.ts","sourceRoot":"","sources":["../../../src/board/client/dragDrop.ts"],"names":[],"mappings":"AAIA,eAAO,IAAI,WAAW,EAAE,WAAW,GAAG,IAAW,CAAC;AAClD,eAAO,IAAI,UAAU,EAAE,WAAW,GAAG,IAAW,CAAC;AAEjD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQhD;AAmCD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAY3D;AAED,wBAAgB,YAAY,IAAI,IAAI,CAanC"}