agkan 2.0.0 → 2.1.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.
- package/README.ja.md +17 -17
- package/README.md +17 -17
- package/dist/board/server.d.ts +2 -1
- package/dist/board/server.d.ts.map +1 -1
- package/dist/board/server.js +141 -41
- package/dist/board/server.js.map +1 -1
- package/dist/cli/commands/task/add-helpers.d.ts.map +1 -1
- package/dist/cli/commands/task/add-helpers.js +1 -0
- package/dist/cli/commands/task/add-helpers.js.map +1 -1
- package/dist/cli/commands/task/add.d.ts.map +1 -1
- package/dist/cli/commands/task/add.js +11 -0
- package/dist/cli/commands/task/add.js.map +1 -1
- package/dist/cli/commands/task/get.d.ts.map +1 -1
- package/dist/cli/commands/task/get.js +9 -0
- package/dist/cli/commands/task/get.js.map +1 -1
- package/dist/cli/commands/task/purge.d.ts +6 -0
- package/dist/cli/commands/task/purge.d.ts.map +1 -0
- package/dist/cli/commands/task/purge.js +138 -0
- package/dist/cli/commands/task/purge.js.map +1 -0
- package/dist/cli/commands/task/update.d.ts.map +1 -1
- package/dist/cli/commands/task/update.js +26 -1
- package/dist/cli/commands/task/update.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +28 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/models/Task.d.ts +4 -0
- package/dist/models/Task.d.ts.map +1 -1
- package/dist/services/TaskService.d.ts +9 -0
- package/dist/services/TaskService.d.ts.map +1 -1
- package/dist/services/TaskService.js +35 -3
- package/dist/services/TaskService.js.map +1 -1
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -199,34 +199,34 @@ agkan task delete 1
|
|
|
199
199
|
|
|
200
200
|
タグを作成:
|
|
201
201
|
```bash
|
|
202
|
-
agkan
|
|
202
|
+
agkan tag add "frontend"
|
|
203
203
|
```
|
|
204
204
|
|
|
205
205
|
タグ一覧を表示:
|
|
206
206
|
```bash
|
|
207
|
-
agkan
|
|
207
|
+
agkan tag list
|
|
208
208
|
```
|
|
209
209
|
|
|
210
210
|
タグを削除:
|
|
211
211
|
```bash
|
|
212
|
-
agkan
|
|
212
|
+
agkan tag delete "frontend"
|
|
213
213
|
```
|
|
214
214
|
|
|
215
215
|
### タスクへのタグ付け
|
|
216
216
|
|
|
217
217
|
タスクにタグを付与:
|
|
218
218
|
```bash
|
|
219
|
-
agkan
|
|
219
|
+
agkan tag attach 1 "frontend"
|
|
220
220
|
```
|
|
221
221
|
|
|
222
222
|
タスクからタグを削除:
|
|
223
223
|
```bash
|
|
224
|
-
agkan
|
|
224
|
+
agkan tag detach 1 "frontend"
|
|
225
225
|
```
|
|
226
226
|
|
|
227
227
|
タスクに付けられたタグを表示:
|
|
228
228
|
```bash
|
|
229
|
-
agkan
|
|
229
|
+
agkan tag show 1
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
### メタデータの管理
|
|
@@ -551,7 +551,7 @@ agkan task count --status in_progress --json
|
|
|
551
551
|
|
|
552
552
|
JSON出力フォーマット:
|
|
553
553
|
```bash
|
|
554
|
-
agkan
|
|
554
|
+
agkan tag list --json
|
|
555
555
|
```
|
|
556
556
|
|
|
557
557
|
```json
|
|
@@ -576,7 +576,7 @@ agkan task tag list --json
|
|
|
576
576
|
|
|
577
577
|
JSON出力フォーマット:
|
|
578
578
|
```bash
|
|
579
|
-
agkan
|
|
579
|
+
agkan tag show 1 --json
|
|
580
580
|
```
|
|
581
581
|
|
|
582
582
|
```json
|
|
@@ -693,21 +693,21 @@ agkan task block remove 1 2
|
|
|
693
693
|
|
|
694
694
|
```bash
|
|
695
695
|
# タグを作成
|
|
696
|
-
agkan
|
|
697
|
-
agkan
|
|
698
|
-
agkan
|
|
696
|
+
agkan tag add "frontend"
|
|
697
|
+
agkan tag add "backend"
|
|
698
|
+
agkan tag add "urgent"
|
|
699
699
|
|
|
700
700
|
# タスクを作成してタグを付与
|
|
701
701
|
agkan task add "ログイン画面の実装"
|
|
702
702
|
# 出力: Task created with ID: 1
|
|
703
703
|
|
|
704
|
-
agkan
|
|
705
|
-
agkan
|
|
704
|
+
agkan tag attach 1 "frontend"
|
|
705
|
+
agkan tag attach 1 "urgent"
|
|
706
706
|
|
|
707
707
|
agkan task add "API開発"
|
|
708
708
|
# 出力: Task created with ID: 2
|
|
709
709
|
|
|
710
|
-
agkan
|
|
710
|
+
agkan tag attach 2 "backend"
|
|
711
711
|
|
|
712
712
|
# タグでフィルタリング
|
|
713
713
|
agkan task list --tag "frontend"
|
|
@@ -715,17 +715,17 @@ agkan task list --tag "frontend"
|
|
|
715
715
|
# 1 [backlog] ログイン画面の実装 (tags: frontend, urgent)
|
|
716
716
|
|
|
717
717
|
# タスクのタグを確認
|
|
718
|
-
agkan
|
|
718
|
+
agkan tag show 1
|
|
719
719
|
# 出力:
|
|
720
720
|
# Tags for task 1:
|
|
721
721
|
# - frontend
|
|
722
722
|
# - urgent
|
|
723
723
|
|
|
724
724
|
# タグを削除
|
|
725
|
-
agkan
|
|
725
|
+
agkan tag detach 1 "urgent"
|
|
726
726
|
|
|
727
727
|
# タグ自体を削除(関連するすべてのタスクから削除される)
|
|
728
|
-
agkan
|
|
728
|
+
agkan tag delete "urgent"
|
|
729
729
|
```
|
|
730
730
|
|
|
731
731
|
## タスクステータス
|
package/README.md
CHANGED
|
@@ -358,22 +358,22 @@ agkan task delete 1
|
|
|
358
358
|
|
|
359
359
|
Create a tag:
|
|
360
360
|
```bash
|
|
361
|
-
agkan
|
|
361
|
+
agkan tag add "frontend"
|
|
362
362
|
```
|
|
363
363
|
|
|
364
364
|
List all tags:
|
|
365
365
|
```bash
|
|
366
|
-
agkan
|
|
366
|
+
agkan tag list
|
|
367
367
|
```
|
|
368
368
|
|
|
369
369
|
Delete a tag:
|
|
370
370
|
```bash
|
|
371
|
-
agkan
|
|
371
|
+
agkan tag delete "frontend"
|
|
372
372
|
```
|
|
373
373
|
|
|
374
374
|
JSON output format for tag list:
|
|
375
375
|
```bash
|
|
376
|
-
agkan
|
|
376
|
+
agkan tag list --json
|
|
377
377
|
```
|
|
378
378
|
|
|
379
379
|
```json
|
|
@@ -400,22 +400,22 @@ agkan task tag list --json
|
|
|
400
400
|
|
|
401
401
|
Attach a tag to a task:
|
|
402
402
|
```bash
|
|
403
|
-
agkan
|
|
403
|
+
agkan tag attach 1 "frontend"
|
|
404
404
|
```
|
|
405
405
|
|
|
406
406
|
Remove a tag from a task:
|
|
407
407
|
```bash
|
|
408
|
-
agkan
|
|
408
|
+
agkan tag detach 1 "frontend"
|
|
409
409
|
```
|
|
410
410
|
|
|
411
411
|
Display tags on a task:
|
|
412
412
|
```bash
|
|
413
|
-
agkan
|
|
413
|
+
agkan tag show 1
|
|
414
414
|
```
|
|
415
415
|
|
|
416
416
|
JSON output format for tag show:
|
|
417
417
|
```bash
|
|
418
|
-
agkan
|
|
418
|
+
agkan tag show 1 --json
|
|
419
419
|
```
|
|
420
420
|
|
|
421
421
|
```json
|
|
@@ -708,21 +708,21 @@ Example of classifying tasks with tags:
|
|
|
708
708
|
|
|
709
709
|
```bash
|
|
710
710
|
# Create tags
|
|
711
|
-
agkan
|
|
712
|
-
agkan
|
|
713
|
-
agkan
|
|
711
|
+
agkan tag add "frontend"
|
|
712
|
+
agkan tag add "backend"
|
|
713
|
+
agkan tag add "urgent"
|
|
714
714
|
|
|
715
715
|
# Create tasks and attach tags
|
|
716
716
|
agkan task add "Implement login screen"
|
|
717
717
|
# Output: Task created with ID: 1
|
|
718
718
|
|
|
719
|
-
agkan
|
|
720
|
-
agkan
|
|
719
|
+
agkan tag attach 1 "frontend"
|
|
720
|
+
agkan tag attach 1 "urgent"
|
|
721
721
|
|
|
722
722
|
agkan task add "API development"
|
|
723
723
|
# Output: Task created with ID: 2
|
|
724
724
|
|
|
725
|
-
agkan
|
|
725
|
+
agkan tag attach 2 "backend"
|
|
726
726
|
|
|
727
727
|
# Filter by tag
|
|
728
728
|
agkan task list --tag "frontend"
|
|
@@ -730,17 +730,17 @@ agkan task list --tag "frontend"
|
|
|
730
730
|
# 1 [backlog] Implement login screen (tags: frontend, urgent)
|
|
731
731
|
|
|
732
732
|
# Display task tags
|
|
733
|
-
agkan
|
|
733
|
+
agkan tag show 1
|
|
734
734
|
# Output:
|
|
735
735
|
# Tags for task 1:
|
|
736
736
|
# - frontend
|
|
737
737
|
# - urgent
|
|
738
738
|
|
|
739
739
|
# Remove a tag
|
|
740
|
-
agkan
|
|
740
|
+
agkan tag detach 1 "urgent"
|
|
741
741
|
|
|
742
742
|
# Delete a tag (removes from all associated tasks)
|
|
743
|
-
agkan
|
|
743
|
+
agkan tag delete "urgent"
|
|
744
744
|
```
|
|
745
745
|
|
|
746
746
|
## Task Statuses
|
package/dist/board/server.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Hono } from 'hono';
|
|
|
2
2
|
import { TaskService } from '../services/TaskService';
|
|
3
3
|
import { TaskTagService } from '../services/TaskTagService';
|
|
4
4
|
import { MetadataService } from '../services/MetadataService';
|
|
5
|
-
|
|
5
|
+
import { StorageProvider } from '../db/types/storage';
|
|
6
|
+
export declare function createBoardApp(taskService?: TaskService, taskTagService?: TaskTagService, metadataService?: MetadataService, db?: StorageProvider): Hono;
|
|
6
7
|
export declare function startBoardServer(port: number): void;
|
|
7
8
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAwhBtD,wBAAgB,cAAc,CAC5B,WAAW,CAAC,EAAE,WAAW,EACzB,cAAc,CAAC,EAAE,cAAc,EAC/B,eAAe,CAAC,EAAE,eAAe,EACjC,EAAE,CAAC,EAAE,eAAe,GACnB,IAAI,CAmIN;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMnD"}
|
package/dist/board/server.js
CHANGED
|
@@ -8,6 +8,7 @@ const TaskService_1 = require("../services/TaskService");
|
|
|
8
8
|
const TaskTagService_1 = require("../services/TaskTagService");
|
|
9
9
|
const MetadataService_1 = require("../services/MetadataService");
|
|
10
10
|
const models_1 = require("../models");
|
|
11
|
+
const connection_1 = require("../db/connection");
|
|
11
12
|
const STATUSES = ['icebox', 'backlog', 'ready', 'in_progress', 'review', 'done', 'closed'];
|
|
12
13
|
const STATUS_LABELS = {
|
|
13
14
|
icebox: 'Icebox',
|
|
@@ -35,8 +36,8 @@ function escapeHtml(text) {
|
|
|
35
36
|
.replace(/"/g, '"')
|
|
36
37
|
.replace(/'/g, ''');
|
|
37
38
|
}
|
|
38
|
-
function renderCard(task, tags
|
|
39
|
-
const priority =
|
|
39
|
+
function renderCard(task, tags) {
|
|
40
|
+
const priority = task.priority;
|
|
40
41
|
const priorityBadge = priority
|
|
41
42
|
? `<span class="priority priority-${escapeHtml(priority)}">${escapeHtml(priority)}</span>`
|
|
42
43
|
: '';
|
|
@@ -51,12 +52,12 @@ function renderCard(task, tags, metadata) {
|
|
|
51
52
|
${tagBadges ? `<div class="card-tags">${tagBadges}</div>` : ''}
|
|
52
53
|
</div>`;
|
|
53
54
|
}
|
|
54
|
-
function renderBoard(tasksByStatus, tagMap
|
|
55
|
+
function renderBoard(tasksByStatus, tagMap) {
|
|
55
56
|
const columns = STATUSES.map((status) => {
|
|
56
57
|
const tasks = tasksByStatus.get(status) || [];
|
|
57
58
|
const color = STATUS_COLORS[status];
|
|
58
59
|
const label = STATUS_LABELS[status];
|
|
59
|
-
const cards = tasks.map((t) => renderCard(t, tagMap.get(t.id) || []
|
|
60
|
+
const cards = tasks.map((t) => renderCard(t, tagMap.get(t.id) || [])).join('');
|
|
60
61
|
return `
|
|
61
62
|
<div class="column" data-status="${status}">
|
|
62
63
|
<div class="column-header" style="border-top-color:${color}">
|
|
@@ -142,6 +143,15 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
142
143
|
.detail-meta-table td { padding: 4px 0; font-size: 12px; }
|
|
143
144
|
.detail-meta-table td:first-child { color: #64748b; width: 100px; }
|
|
144
145
|
.detail-meta-table td:last-child { color: #1e293b; }
|
|
146
|
+
.detail-panel-footer { padding: 12px 20px; border-top: 1px solid #e2e8f0; display: flex; justify-content: flex-end; }
|
|
147
|
+
.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; }
|
|
148
|
+
.detail-panel-footer button:hover { background: #2563eb; border-color: #2563eb; }
|
|
149
|
+
.detail-edit-input { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }
|
|
150
|
+
.detail-edit-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
|
|
151
|
+
.detail-edit-textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 80px; background: white; color: #1e293b; }
|
|
152
|
+
.detail-edit-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
|
|
153
|
+
.detail-edit-select { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }
|
|
154
|
+
.detail-edit-select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
|
|
145
155
|
</style>
|
|
146
156
|
</head>
|
|
147
157
|
<body>
|
|
@@ -175,6 +185,9 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
175
185
|
<button class="detail-panel-close" id="detail-panel-close" title="Close">×</button>
|
|
176
186
|
</div>
|
|
177
187
|
<div class="detail-panel-body" id="detail-panel-body"></div>
|
|
188
|
+
<div class="detail-panel-footer">
|
|
189
|
+
<button id="detail-save-btn">Save</button>
|
|
190
|
+
</div>
|
|
178
191
|
</div>
|
|
179
192
|
<div class="toast" id="toast">Failed to update task</div>
|
|
180
193
|
<script>
|
|
@@ -276,7 +289,7 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
276
289
|
});
|
|
277
290
|
|
|
278
291
|
addTitle.addEventListener('keydown', e => {
|
|
279
|
-
if (e.key === 'Enter') { e.preventDefault(); document.getElementById('add-submit').click(); }
|
|
292
|
+
if (e.key === 'Enter' && !e.isComposing) { e.preventDefault(); document.getElementById('add-submit').click(); }
|
|
280
293
|
});
|
|
281
294
|
|
|
282
295
|
document.getElementById('add-submit').addEventListener('click', async () => {
|
|
@@ -345,51 +358,66 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
345
358
|
const detailPanel = document.getElementById('detail-panel');
|
|
346
359
|
const detailPanelTitle = document.getElementById('detail-panel-title');
|
|
347
360
|
const detailPanelBody = document.getElementById('detail-panel-body');
|
|
361
|
+
let detailTaskId = null;
|
|
348
362
|
|
|
349
363
|
function closeDetailPanel() {
|
|
350
364
|
detailPanel.classList.remove('open');
|
|
365
|
+
detailTaskId = null;
|
|
351
366
|
}
|
|
352
367
|
|
|
353
368
|
document.getElementById('detail-panel-close').addEventListener('click', closeDetailPanel);
|
|
354
369
|
|
|
355
370
|
const statusColors = ${JSON.stringify(STATUS_COLORS)};
|
|
371
|
+
const allStatuses = ${JSON.stringify(STATUSES)};
|
|
372
|
+
const statusLabels = ${JSON.stringify(STATUS_LABELS)};
|
|
373
|
+
const allPriorities = ${JSON.stringify(models_1.PRIORITIES)};
|
|
356
374
|
|
|
357
375
|
function renderDetailPanel(data) {
|
|
358
376
|
const task = data.task;
|
|
359
377
|
const tags = data.tags || [];
|
|
360
378
|
const metadata = data.metadata || [];
|
|
361
|
-
const priority = metadata.find(m => m.key === 'priority');
|
|
362
379
|
|
|
380
|
+
detailTaskId = task.id;
|
|
363
381
|
detailPanelTitle.textContent = '#' + task.id + ' ' + task.title;
|
|
364
382
|
|
|
365
383
|
let html = '';
|
|
366
384
|
|
|
367
|
-
//
|
|
368
|
-
|
|
385
|
+
// Title (editable)
|
|
386
|
+
html += '<div class="detail-field">';
|
|
387
|
+
html += '<div class="detail-field-label">Title</div>';
|
|
388
|
+
html += '<input id="detail-edit-title" class="detail-edit-input" type="text" value="' + escapeHtmlClient(task.title) + '">';
|
|
389
|
+
html += '</div>';
|
|
390
|
+
|
|
391
|
+
// Status (editable)
|
|
369
392
|
html += '<div class="detail-field">';
|
|
370
393
|
html += '<div class="detail-field-label">Status</div>';
|
|
371
|
-
html += '<
|
|
394
|
+
html += '<select id="detail-edit-status" class="detail-edit-select">';
|
|
395
|
+
allStatuses.forEach(s => {
|
|
396
|
+
const selected = s === task.status ? ' selected' : '';
|
|
397
|
+
html += '<option value="' + s + '"' + selected + '>' + statusLabels[s] + '</option>';
|
|
398
|
+
});
|
|
399
|
+
html += '</select>';
|
|
372
400
|
html += '</div>';
|
|
373
401
|
|
|
374
|
-
// Priority
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
402
|
+
// Priority (editable)
|
|
403
|
+
html += '<div class="detail-field">';
|
|
404
|
+
html += '<div class="detail-field-label">Priority</div>';
|
|
405
|
+
html += '<select id="detail-edit-priority" class="detail-edit-select">';
|
|
406
|
+
html += '<option value="">None</option>';
|
|
407
|
+
allPriorities.forEach(p => {
|
|
408
|
+
const selected = task.priority === p ? ' selected' : '';
|
|
409
|
+
html += '<option value="' + p + '"' + selected + '>' + p.charAt(0).toUpperCase() + p.slice(1) + '</option>';
|
|
410
|
+
});
|
|
411
|
+
html += '</select>';
|
|
412
|
+
html += '</div>';
|
|
381
413
|
|
|
382
|
-
// Body
|
|
414
|
+
// Body (editable)
|
|
383
415
|
html += '<div class="detail-field">';
|
|
384
416
|
html += '<div class="detail-field-label">Description</div>';
|
|
385
|
-
|
|
386
|
-
html += '<div class="detail-field-value">' + escapeHtmlClient(task.body) + '</div>';
|
|
387
|
-
} else {
|
|
388
|
-
html += '<div class="detail-field-value empty">No description</div>';
|
|
389
|
-
}
|
|
417
|
+
html += '<textarea id="detail-edit-body" class="detail-edit-textarea">' + escapeHtmlClient(task.body || '') + '</textarea>';
|
|
390
418
|
html += '</div>';
|
|
391
419
|
|
|
392
|
-
// Tags
|
|
420
|
+
// Tags (read-only)
|
|
393
421
|
if (tags.length > 0) {
|
|
394
422
|
html += '<div class="detail-field">';
|
|
395
423
|
html += '<div class="detail-field-label">Tags</div>';
|
|
@@ -398,7 +426,7 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
398
426
|
html += '</div></div>';
|
|
399
427
|
}
|
|
400
428
|
|
|
401
|
-
// Metadata table
|
|
429
|
+
// Metadata table (read-only, non-priority)
|
|
402
430
|
const otherMeta = metadata.filter(m => m.key !== 'priority');
|
|
403
431
|
if (otherMeta.length > 0) {
|
|
404
432
|
html += '<div class="detail-field">';
|
|
@@ -410,7 +438,7 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
410
438
|
html += '</table></div>';
|
|
411
439
|
}
|
|
412
440
|
|
|
413
|
-
// Timestamps
|
|
441
|
+
// Timestamps (read-only)
|
|
414
442
|
html += '<div class="detail-field">';
|
|
415
443
|
html += '<div class="detail-field-label">Created</div>';
|
|
416
444
|
html += '<div class="detail-field-value">' + escapeHtmlClient(task.created_at) + '</div>';
|
|
@@ -430,6 +458,33 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
430
458
|
return div.innerHTML;
|
|
431
459
|
}
|
|
432
460
|
|
|
461
|
+
document.getElementById('detail-save-btn').addEventListener('click', async () => {
|
|
462
|
+
if (detailTaskId === null) return;
|
|
463
|
+
const titleInput = document.getElementById('detail-edit-title');
|
|
464
|
+
const title = titleInput ? titleInput.value.trim() : '';
|
|
465
|
+
if (!title) { if (titleInput) titleInput.focus(); return; }
|
|
466
|
+
const bodyEl = document.getElementById('detail-edit-body');
|
|
467
|
+
const statusEl = document.getElementById('detail-edit-status');
|
|
468
|
+
const priorityEl = document.getElementById('detail-edit-priority');
|
|
469
|
+
|
|
470
|
+
try {
|
|
471
|
+
const res = await fetch('/api/tasks/' + detailTaskId, {
|
|
472
|
+
method: 'PATCH',
|
|
473
|
+
headers: { 'Content-Type': 'application/json' },
|
|
474
|
+
body: JSON.stringify({
|
|
475
|
+
title,
|
|
476
|
+
body: bodyEl ? (bodyEl.value.trim() || null) : null,
|
|
477
|
+
status: statusEl ? statusEl.value : undefined,
|
|
478
|
+
priority: priorityEl ? (priorityEl.value || null) : null
|
|
479
|
+
})
|
|
480
|
+
});
|
|
481
|
+
if (!res.ok) throw new Error('Server error');
|
|
482
|
+
location.reload();
|
|
483
|
+
} catch {
|
|
484
|
+
showToast('Failed to update task');
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
|
|
433
488
|
document.querySelectorAll('.card').forEach(card => {
|
|
434
489
|
card.addEventListener('click', async e => {
|
|
435
490
|
if (e.defaultPrevented) return;
|
|
@@ -445,28 +500,48 @@ function renderBoard(tasksByStatus, tagMap, metaMap) {
|
|
|
445
500
|
}
|
|
446
501
|
});
|
|
447
502
|
});
|
|
503
|
+
|
|
504
|
+
// Board polling: reload when updated_at changes (skip during drag or detail panel open)
|
|
505
|
+
let lastUpdatedAt = null;
|
|
506
|
+
async function pollBoardUpdates() {
|
|
507
|
+
if (draggedCard !== null) return;
|
|
508
|
+
if (detailPanel.classList.contains('open')) return;
|
|
509
|
+
try {
|
|
510
|
+
const res = await fetch('/api/board/updated-at');
|
|
511
|
+
if (!res.ok) return;
|
|
512
|
+
const data = await res.json();
|
|
513
|
+
const ts = data.updatedAt;
|
|
514
|
+
if (lastUpdatedAt === null) {
|
|
515
|
+
lastUpdatedAt = ts;
|
|
516
|
+
} else if (ts !== lastUpdatedAt) {
|
|
517
|
+
location.reload();
|
|
518
|
+
}
|
|
519
|
+
} catch {
|
|
520
|
+
// Ignore network errors during polling
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
setInterval(pollBoardUpdates, 10000);
|
|
524
|
+
pollBoardUpdates();
|
|
448
525
|
</script>
|
|
449
526
|
</body>
|
|
450
527
|
</html>`;
|
|
451
528
|
}
|
|
452
|
-
function sortByPriority(tasks
|
|
529
|
+
function sortByPriority(tasks) {
|
|
453
530
|
return [...tasks].sort((a, b) => {
|
|
454
|
-
const
|
|
455
|
-
const
|
|
456
|
-
const oa = pa && (0, models_1.isPriority)(pa) ? models_1.PRIORITY_ORDER[pa] : 4;
|
|
457
|
-
const ob = pb && (0, models_1.isPriority)(pb) ? models_1.PRIORITY_ORDER[pb] : 4;
|
|
531
|
+
const oa = a.priority ? models_1.PRIORITY_ORDER[a.priority] : 4;
|
|
532
|
+
const ob = b.priority ? models_1.PRIORITY_ORDER[b.priority] : 4;
|
|
458
533
|
return oa - ob;
|
|
459
534
|
});
|
|
460
535
|
}
|
|
461
|
-
function createBoardApp(taskService, taskTagService, metadataService) {
|
|
536
|
+
function createBoardApp(taskService, taskTagService, metadataService, db) {
|
|
462
537
|
const app = new hono_1.Hono();
|
|
463
538
|
const ts = taskService ?? new TaskService_1.TaskService();
|
|
464
539
|
const tts = taskTagService ?? new TaskTagService_1.TaskTagService();
|
|
465
540
|
const ms = metadataService ?? new MetadataService_1.MetadataService();
|
|
541
|
+
const database = db ?? (0, connection_1.getDatabase)();
|
|
466
542
|
app.get('/', (c) => {
|
|
467
543
|
const tasks = ts.listTasks({}, 'id', 'asc');
|
|
468
544
|
const tagMap = tts.getAllTaskTags();
|
|
469
|
-
const metaMap = ms.getAllTasksMetadata();
|
|
470
545
|
const tasksByStatus = new Map();
|
|
471
546
|
for (const status of STATUSES) {
|
|
472
547
|
tasksByStatus.set(status, []);
|
|
@@ -475,9 +550,20 @@ function createBoardApp(taskService, taskTagService, metadataService) {
|
|
|
475
550
|
tasksByStatus.get(task.status)?.push(task);
|
|
476
551
|
}
|
|
477
552
|
for (const [status, statusTasks] of tasksByStatus) {
|
|
478
|
-
tasksByStatus.set(status, sortByPriority(statusTasks
|
|
553
|
+
tasksByStatus.set(status, sortByPriority(statusTasks));
|
|
479
554
|
}
|
|
480
|
-
return c.html(renderBoard(tasksByStatus, tagMap
|
|
555
|
+
return c.html(renderBoard(tasksByStatus, tagMap));
|
|
556
|
+
});
|
|
557
|
+
app.get('/api/board/updated-at', (c) => {
|
|
558
|
+
const stmt = database.prepare(`
|
|
559
|
+
SELECT MAX(updated_at) as max_updated_at FROM (
|
|
560
|
+
SELECT updated_at FROM tasks
|
|
561
|
+
UNION ALL
|
|
562
|
+
SELECT updated_at FROM task_metadata
|
|
563
|
+
)
|
|
564
|
+
`);
|
|
565
|
+
const row = stmt.get();
|
|
566
|
+
return c.json({ updatedAt: row.max_updated_at });
|
|
481
567
|
});
|
|
482
568
|
app.get('/api/tasks', (c) => {
|
|
483
569
|
const tasks = ts.listTasks({}, 'id', 'asc');
|
|
@@ -489,10 +575,8 @@ function createBoardApp(taskService, taskTagService, metadataService) {
|
|
|
489
575
|
return c.json({ error: 'Title is required' }, 400);
|
|
490
576
|
}
|
|
491
577
|
const status = body.status && STATUSES.includes(body.status) ? body.status : 'backlog';
|
|
492
|
-
const
|
|
493
|
-
|
|
494
|
-
ms.setMetadata({ task_id: task.id, key: 'priority', value: body.priority });
|
|
495
|
-
}
|
|
578
|
+
const priority = body.priority && (0, models_1.isPriority)(body.priority) ? body.priority : undefined;
|
|
579
|
+
const task = ts.createTask({ title: body.title.trim(), body: body.body || undefined, status, priority });
|
|
496
580
|
return c.json(task, 201);
|
|
497
581
|
});
|
|
498
582
|
app.get('/api/tasks/:id', (c) => {
|
|
@@ -514,10 +598,26 @@ function createBoardApp(taskService, taskTagService, metadataService) {
|
|
|
514
598
|
return c.json({ error: 'Invalid task id' }, 400);
|
|
515
599
|
}
|
|
516
600
|
const body = await c.req.json();
|
|
517
|
-
|
|
518
|
-
|
|
601
|
+
const updateInput = {};
|
|
602
|
+
if (body.status !== undefined) {
|
|
603
|
+
if (!STATUSES.includes(body.status)) {
|
|
604
|
+
return c.json({ error: 'Invalid status' }, 400);
|
|
605
|
+
}
|
|
606
|
+
updateInput.status = body.status;
|
|
607
|
+
}
|
|
608
|
+
if (body.title !== undefined) {
|
|
609
|
+
if (typeof body.title !== 'string' || !body.title.trim()) {
|
|
610
|
+
return c.json({ error: 'Title cannot be empty' }, 400);
|
|
611
|
+
}
|
|
612
|
+
updateInput.title = body.title.trim();
|
|
613
|
+
}
|
|
614
|
+
if (body.body !== undefined) {
|
|
615
|
+
updateInput.body = body.body ?? '';
|
|
616
|
+
}
|
|
617
|
+
if (body.priority !== undefined) {
|
|
618
|
+
updateInput.priority = body.priority && (0, models_1.isPriority)(body.priority) ? body.priority : null;
|
|
519
619
|
}
|
|
520
|
-
const task = ts.updateTask(id,
|
|
620
|
+
const task = ts.updateTask(id, updateInput);
|
|
521
621
|
if (!task) {
|
|
522
622
|
return c.json({ error: 'Task not found' }, 404);
|
|
523
623
|
}
|
package/dist/board/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/add-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOhF;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAuBN;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAA;CAAE,CAKzE;
|
|
1
|
+
{"version":3,"file":"add-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/add-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOhF;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAuBN;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAA;CAAE,CAKzE;AAiBD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,GAAG,IAAI,EACvB,YAAY,EAAE,IAAI,EAAE,EACpB,YAAY,EAAE,IAAI,EAAE,GACnB,MAAM,CAQR;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,GAAG,IAAI,EACvB,YAAY,EAAE,IAAI,EAAE,EACpB,YAAY,EAAE,IAAI,EAAE,GACnB,IAAI,CAwCN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-helpers.js","sourceRoot":"","sources":["../../../../src/cli/commands/task/add-helpers.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AASH,4CAQC;AAED,sCAOC;AAED,sDA4BC;AAED,8CAUC;
|
|
1
|
+
{"version":3,"file":"add-helpers.js","sourceRoot":"","sources":["../../../../src/cli/commands/task/add-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoJ1D"}
|