aizuchi 0.1.0 → 0.3.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.
- package/CHANGELOG.md +121 -0
- package/README.md +79 -18
- package/dist/bin/aizuchi.js +9 -1
- package/dist/server/app.js +392 -10
- package/dist/server/board.js +35 -5
- package/dist/server/lib/config-paths.js +60 -19
- package/dist/server/lib/files.js +56 -21
- package/dist/server/lib/pinpoint.js +50 -0
- package/dist/server/lib/proposal.js +10 -0
- package/dist/server/lib/task-ops.js +102 -2
- package/dist/server/lib/trash.js +122 -0
- package/dist/server/watcher.js +17 -4
- package/dist/shared/board-diff.js +48 -0
- package/dist/shared/diff.js +16 -0
- package/dist/shared/schema.js +125 -10
- package/dist/shared/stats.js +117 -1
- package/dist/web/assets/index-B4RPR1mO.css +1 -0
- package/dist/web/assets/index-DG0paXSh.js +93 -0
- package/dist/web/index.html +2 -2
- package/package.json +3 -2
- package/templates/config.json +8 -7
- package/dist/web/assets/index-BLN_aXBe.css +0 -1
- package/dist/web/assets/index-BS_n8d9B.js +0 -82
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# 変更履歴 (Changelog)
|
|
2
|
+
|
|
3
|
+
このファイルの記法は [Keep a Changelog](https://keepachangelog.com/ja/1.1.0/) に、
|
|
4
|
+
バージョン番号は [セマンティックバージョニング](https://semver.org/lang/ja/) に従います。
|
|
5
|
+
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
## [0.3.0] - 2026-06-16
|
|
9
|
+
|
|
10
|
+
UI を大幅に刷新し、協働ループ・自己診断・グローバル設定編集などを追加した節目のリリース。
|
|
11
|
+
|
|
12
|
+
### Added (追加)
|
|
13
|
+
|
|
14
|
+
- キーボードによるカード移動 (KeyboardSensor): カードにフォーカスして **Space で掴み**、矢印でカラム間移動、
|
|
15
|
+
Space で確定 (Enter はカード詳細を開く)。ポインタ D&D と同じ status 更新経路。実機キーボードで
|
|
16
|
+
掴む→矢印→確定→永続化まで動作確認済み。
|
|
17
|
+
- モーダルの focus trap (Tab/Shift+Tab フォーカスをダイアログ内に閉じ込める・全ダイアログ共通)
|
|
18
|
+
- 空ボード時のオンボーディング案内 (「最初のタスクを起票」+ AI 指示コピー導線)
|
|
19
|
+
- AI 設定ファイルの保存前に変更差分 (diff) を確認するステップを追加 (F-4-1)。JSON 構文チェック後、
|
|
20
|
+
現行内容と編集内容の差分を提示してから保存する。
|
|
21
|
+
- 設定画面でカラムと AI 設定ファイルパスを GUI で編集できるように (F-5-1)。カラムは id / 表示名 /
|
|
22
|
+
WIP 上限 / 空のとき隠す + 並べ替え・追加・削除、パスは settings / browse / root の 3 種を行編集。
|
|
23
|
+
「詳細 (生 JSON)」に残るのはマイルストーン定義のみ。
|
|
24
|
+
- 設定画面でビュー切替タブ ([ボード][クリティカルパス] など) の**表示順の並べ替え**と**表示/非表示**を
|
|
25
|
+
切り替えられるように (`config.views`)。タブ・コマンドパレット (⌘K) の双方に反映。すべて隠した場合は
|
|
26
|
+
ボードへフォールバックして締め出しを防ぐ。
|
|
27
|
+
- AI 設定のカタログ (skill / agent) を**スキルディレクトリ単位でグループ表示**に。`references/*.md` 等の
|
|
28
|
+
補助ファイルが「名前なし」で散らばらず、`figma-to-html` のように 1 つの折りたたみグループにまとまる。
|
|
29
|
+
name を持たないファイルはファイル名 (相対パス) で表示。
|
|
30
|
+
- AI 設定画面で**グローバル (`~/.claude/skills`, `~/.claude/agents`) の skill / agent も閲覧・編集**できるように。
|
|
31
|
+
対象は skills / agents のみ (settings.json 等は対象外)。グローバルファイルの**保存時は「全プロジェクトに影響する」
|
|
32
|
+
警告ダイアログ**を表示。パス検証はプロジェクト用と同一の許可リスト・deny-list・symlink 拒否を `~/.claude` に
|
|
33
|
+
限定して再利用 (反証セキュリティレビュー済・skills/agents 外への読み書きは全経路で拒否)。
|
|
34
|
+
|
|
35
|
+
### Changed (変更)
|
|
36
|
+
|
|
37
|
+
- クリティカルパスビューをボードと同じカラム型レイアウトに刷新。トポロジカル深さ (レベル) ごとに
|
|
38
|
+
カラムを分け、各カラムにヘッダー (レベル名 + 件数) を付けてレベルの区切りを明確化。カード表示・
|
|
39
|
+
クリティカルパス強調・循環警告は従来どおり。
|
|
40
|
+
- `README.md` を ship 済み機能の実態に合わせて全面更新 (旧「Phase 1 / MVP」「Phase 2 以降」章を撤廃し、
|
|
41
|
+
機能群で再編)。`CHANGELOG.md` を新設し README からリンク。
|
|
42
|
+
|
|
43
|
+
### Fixed (修正)
|
|
44
|
+
|
|
45
|
+
- 狭幅 (画面分割など) でのレイアウト崩れを修正: ヘッダーの操作群が折り返し、タブが多くても潰れず横スクロール、
|
|
46
|
+
2 ペイン系ビュー (ドキュメント / アーカイブ / ごみ箱 / マイルストーン / 日次ダイジェスト / ファイル) の
|
|
47
|
+
左サイドバーが幅に応じて縮小、ボードの絞り込みバーが折り返すように。
|
|
48
|
+
- やり直し依頼 (差し戻し) で、競合以外の理由 (差し戻せない状態など) でも差分ダイアログが開こうとして
|
|
49
|
+
画面が固まる不具合を修正。競合以外はエラー表示で返すように。
|
|
50
|
+
- 停滞アラート / 統計の完了集計が作業ログを正しく読むように修正: (1) 作業ログが時系列でない (古い行の追記)
|
|
51
|
+
場合でも最新の日時で判定、(2) 「やりとり」セクションのコメント行を作業ログと取り違えない。
|
|
52
|
+
- 複数タスクの一括指示コピーで、選択中に他端末や AI がタスクを移動・削除すると選択件数がずれる不具合を修正。
|
|
53
|
+
- アクセシビリティ改善: 進捗バーにスクリーンリーダー用の名前を付与、ビュー本体を `main` ランドマーク化
|
|
54
|
+
(Lighthouse アクセシビリティ 94 → 100)。
|
|
55
|
+
- キーボード D&D が一度も掴めなかった不具合を修正: カード独自の `onKeyDown` (Enter/Space で詳細を開く) が
|
|
56
|
+
dnd-kit の KeyboardSensor 起動を上書きしていた。Space を dnd-kit へ委譲し Enter を詳細表示に役割分担。
|
|
57
|
+
- タスク詳細パネルが Escape で閉じなかった不具合を修正 (他のダイアログと挙動を統一)。編集・コメント入力中や
|
|
58
|
+
入れ子のダイアログ表示中は誤って閉じないよう配慮。
|
|
59
|
+
- コマンドパレット (⌘K) とタスク詳細パネルにも focus trap を追加 (Tab がダイアログ外へ抜けないように・a11y)。
|
|
60
|
+
- AI 設定ファイル管理で、ファイルツリー / カタログの読み込み失敗が無音で空表示になっていたのを通知するように。
|
|
61
|
+
- AI 設定ファイルで親ディレクトリが未作成のとき、読込が 403 ではなく 404 (新規作成扱い) を返すように修正。
|
|
62
|
+
保存時に親ディレクトリを自動作成するため、新規設定ファイルの作成 (読込→編集→保存) が成立する。
|
|
63
|
+
パストラバーサル / symlink による範囲外アクセスは従来どおり拒否 (最も近い実在祖先で containment 判定)。
|
|
64
|
+
- コメント / 作業ログ追記でも、上書き直前に旧版を `.kanban/.trash` へ退避するように (他の書込操作と統一)。
|
|
65
|
+
外部 (AI / エディタ) の同時編集と交錯して上書きで失われても、ごみ箱から復元できる。
|
|
66
|
+
|
|
67
|
+
## [0.2.0] - 2026-06-14
|
|
68
|
+
|
|
69
|
+
協働ループの強化と、誤操作からの回復手段 (アーカイブ復元 / ごみ箱) を追加。
|
|
70
|
+
UI をデザイントークン体系で刷新しました。
|
|
71
|
+
|
|
72
|
+
### Added (追加)
|
|
73
|
+
|
|
74
|
+
- **協働ループ 3 機能**: 差し戻し導線 (やり直しを依頼)、判断待ちセンチネル (pending + decision の常時集計)、
|
|
75
|
+
停滞アラート (status 別閾値超過の検知)。
|
|
76
|
+
- **アーカイブ検索 + 復元 (unarchive)**: archive のタスクを一覧・検索し、ボードへ戻せるように。
|
|
77
|
+
- **ごみ箱 (.kanban/.trash 自動退避 + 復元)**: タスクの破壊的書込の直前に旧版を退避する安全網。
|
|
78
|
+
- **Saved Views (絞り込みプリセット)**: ボードの絞り込みを config に名前付きで保存しワンクリック適用。
|
|
79
|
+
- **新着インジケータ (board-diff)**: 見ていない間の AI による変更をカードのハイライトで可視化。
|
|
80
|
+
- **複数タスク一括指示コピー**: 選択した複数タスクを依存順に 1 つの指示文へまとめてコピー。
|
|
81
|
+
- **member 移譲**: member のスラッグ (id) と表示名 (label) を分離し、スラッグの変更・削除時に
|
|
82
|
+
参照タスクの `created_by` / `assignee` を付け替え。
|
|
83
|
+
|
|
84
|
+
### Changed (変更)
|
|
85
|
+
|
|
86
|
+
- **UI デザイン刷新**: デザイントークン体系を導入し、ニュートラルで高密度なツール系の見た目へ。
|
|
87
|
+
- マイルストーン / 日次ダイジェストを関連資料と同じ 2 ペイン構成に統一。統計を横幅 100% 化・
|
|
88
|
+
2 カラムグリッド化 (1200px 以下は 1 カラム)。
|
|
89
|
+
- 言語設定を config に永続化し、カラム名が表示言語に追随するように。ボードにドラッグ横パンを追加。
|
|
90
|
+
|
|
91
|
+
### Fixed (修正)
|
|
92
|
+
|
|
93
|
+
- デザイン QA 指摘の修正 (コントラスト / カラム輪郭 / スクリムの 3 件 + トークンの役割ずれ)。
|
|
94
|
+
- 既定テンプレートの member 例を実名から汎用名 (member1 / member2) に変更。
|
|
95
|
+
|
|
96
|
+
## [0.1.0] - 2026-06-12
|
|
97
|
+
|
|
98
|
+
初公開。npm パッケージ `aizuchi` を公開しました。
|
|
99
|
+
|
|
100
|
+
### Added (追加)
|
|
101
|
+
|
|
102
|
+
- **カンバンボード (MVP)**: config の `columns` どおりのカラム表示、カード (ID / タイトル / 担当 /
|
|
103
|
+
優先度 / ラベル / 経過時間)、ドラッグ&ドロップ (status のピンポイント書換)、ライブ反映 (watcher → SSE)、
|
|
104
|
+
タスク追加・詳細 (Markdown プレビュー / 編集 / 競合検知)、警告バナー。
|
|
105
|
+
- **意思疎通コア**: 指示コピー (instructionTemplate 展開)、提案ワークフロー (承認 / 却下 / モード違反検知)、
|
|
106
|
+
設定画面、i18n (en / ja・既定 en)。
|
|
107
|
+
- **見通し**: クリティカルパスビュー、マイルストーン、日次ダイジェスト、受け入れ条件の進捗バー、
|
|
108
|
+
WIP 超過警告。
|
|
109
|
+
- **管理と往復**: AI 設定ファイル管理、検索 / フィルタ、アーカイブ、重複 ID リネーム支援、タスクコメント (往復)。
|
|
110
|
+
- **自動化 / 分析**: AI 用 CLI (`task add / move / done / block / log / comment`)、統計ビュー。
|
|
111
|
+
- **体験 / 射程**: コマンドパレット ⌘K、タスクテンプレート、複数案件横断 `aizuchi overview` (read-only)、
|
|
112
|
+
関連資料機能 (タスク ⇄ 設計資料の相互リンク)。
|
|
113
|
+
- **CLI**: `init` (`.kanban/` 生成 + CLAUDE.md へ規約追記)、`serve` (127.0.0.1 限定起動)、
|
|
114
|
+
`task`、`overview`。
|
|
115
|
+
- **セキュリティ**: ローカル限定 (127.0.0.1)・書込パス許可リスト + symlink / トラバーサル拒否・
|
|
116
|
+
アトミック書込 + mtime 競合検知・秘匿情報のログ非出力・git 履歴連携 (read-only)。
|
|
117
|
+
|
|
118
|
+
[Unreleased]: https://github.com/megaphone-tokyo/AIzuchi/compare/v0.3.0...HEAD
|
|
119
|
+
[0.3.0]: https://github.com/megaphone-tokyo/AIzuchi/compare/v0.2.0...v0.3.0
|
|
120
|
+
[0.2.0]: https://github.com/megaphone-tokyo/AIzuchi/compare/v0.1.0...v0.2.0
|
|
121
|
+
[0.1.0]: https://github.com/megaphone-tokyo/AIzuchi/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -13,6 +13,8 @@ AI も人間も通常のファイル読み書きだけで参加できます。
|
|
|
13
13
|
- **ファイルが唯一の正**: DB を使いません。git 管理でき、サーバー停止中も読めます。
|
|
14
14
|
- **規約ベースの AI 連携**: AI は専用 API なしで、ファイル読み書きだけで参加します。
|
|
15
15
|
|
|
16
|
+
変更履歴は [CHANGELOG.md](CHANGELOG.md) を参照してください。
|
|
17
|
+
|
|
16
18
|
## 必要環境
|
|
17
19
|
|
|
18
20
|
- Node.js **20.1 以上**(`fs.readdir` の `recursive` を使うため)
|
|
@@ -39,20 +41,65 @@ npx aizuchi overview <dir...> # 例: npx aizuchi overview ~/proj-a ~/proj-b
|
|
|
39
41
|
serve(5151)と衝突しない 5152 で、`--port <番号>` で変更できます。
|
|
40
42
|
- `127.0.0.1` 以外にはバインドせず、外部へのネットワーク送信は一切行いません。
|
|
41
43
|
|
|
42
|
-
##
|
|
44
|
+
## できること
|
|
45
|
+
|
|
46
|
+
ブラウザのボードで AI への委任を一望・操作します。エディタや AI がファイルを書き換えると、
|
|
47
|
+
watcher → SSE で開いているボードへ約 1 秒以内に反映されます(ライブ更新)。
|
|
48
|
+
UI 表示言語は英語 / 日本語(en / ja・既定 en)を切り替えられます。
|
|
49
|
+
|
|
50
|
+
### ボード運用
|
|
43
51
|
|
|
44
|
-
- **カンバンボード**: config の `columns` どおりにカラム表示。カードに ID・タイトル・担当(human/ai の種別を
|
|
45
|
-
色で区別)・優先度・ラベル・最終更新からの経過時間を表示。
|
|
46
52
|
- **ドラッグ&ドロップ**: カラム移動で frontmatter の `status` / `updated` だけをピンポイント書換(本文は保全)。
|
|
47
53
|
Pending へ移すと種別(decision / external / dependency)と理由を尋ねるダイアログが出ます。
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
54
|
+
- **検索フィルタ**: タイトル / ラベル / 担当でカードを絞り込み。
|
|
55
|
+
- **Saved Views(保存済みビュー)**: 絞り込み条件を config に名前付きで保存し、chip からワンクリックで適用。
|
|
56
|
+
- **新着ハイライト**: 画面を見ていない間に AI が動かしたタスク(status 変化 / 作業ログ追記 / 新規)を
|
|
57
|
+
カードのハイライトと「新着」バッジで可視化。カードを開くと既読化、ヘッダから一括既読も可能。
|
|
58
|
+
- **停滞バッジ**: 一定期間更新が止まったタスクにバッジを表示(閾値は status 別に設定可能)。
|
|
59
|
+
- **差し戻し(やり直しを依頼)**: カード / 詳細から理由を添えて `todo` へ戻し、作業ログに記録。
|
|
60
|
+
直近の差し戻し理由は再依頼の指示コピーに自動で載ります。
|
|
61
|
+
- **複数選択の一括指示コピー**: 複数選択モードでカードを選び、依存関係のトポロジカル順に並べた
|
|
62
|
+
1 つの指示文へまとめてクリップボードへコピー(AI へのバッチ委任を 1 操作で)。
|
|
63
|
+
- **ドラッグ横パン**: カラムの空白部分を掴んで横スクロール(カード等のインタラクティブ要素からの操作は除外)。
|
|
64
|
+
|
|
65
|
+
### 見通し
|
|
66
|
+
|
|
67
|
+
- **クリティカルパス**: `depends_on` の DAG をトポロジカル深さで列配置し、クリティカルパスを強調。
|
|
68
|
+
循環は検出して警告し、再編成の指示コピーも提供。
|
|
69
|
+
- **マイルストーン**: 予定表(milestone 別・done/total 付き)と対応履歴(月別)の 2 ペイン表示。
|
|
70
|
+
- **日次ダイジェスト**: 日付別に作業ログをまとめて表示。
|
|
71
|
+
- **統計**: 完了数推移 / サイクルタイム / ステータス滞留 / member 別完了数 / ボトルネック /
|
|
72
|
+
停滞中(静かな)タスクの一覧。
|
|
73
|
+
|
|
74
|
+
### 管理と健全性
|
|
75
|
+
|
|
76
|
+
- **アーカイブ検索 + 復元**: done タスクを archive へ退避し、一覧・検索・プレビュー。
|
|
77
|
+
「ボードに戻す」で `tasks/` へ復元(unarchive)。
|
|
78
|
+
- **ごみ箱(.trash 退避 + 復元)**: タスクを破壊的に書き換える直前に旧版を `.kanban/.trash/` へ
|
|
79
|
+
自動退避する安全網。一覧・現行との差分プレビュー・復元が可能(誤上書きからの回復)。
|
|
80
|
+
- **AI 設定ファイル管理**: `aiConfigPaths` で許可したファイル(CLAUDE.md / settings 等)を
|
|
81
|
+
GUI から編集(JSON 構文チェック・`.bak` バックアップ・パーミッション保全)。
|
|
82
|
+
- **git 履歴連携(read-only)**: 詳細パネルのコミットタブで、タスク ID を含むコミット履歴を表示。
|
|
83
|
+
`git log` を read-only で実行するだけで、fetch / pull 等の外部通信はしません。
|
|
84
|
+
|
|
85
|
+
### AI 連携規約 + CLI
|
|
86
|
+
|
|
87
|
+
- **規約ベースの連携**: `init` が CLAUDE.md に運用規約(着手 / 進捗 / 完了 / ブロック / 起票 / 書式)を
|
|
88
|
+
マーカー区切りで追記。AI は専用 API なしでファイルを読み書きするだけで参加できます。
|
|
89
|
+
- **提案ワークフロー**: `aiTaskCreation` が `proposal` のとき、AI 起票は `proposed` で入り、
|
|
90
|
+
承認 / 却下を経て `todo` へ。モード違反は警告で検知。
|
|
91
|
+
- **AI 用 CLI(必須でない安全弁)**: `aizuchi task add / move <id> <status> / done <id> /
|
|
92
|
+
block <id> --type --reason / log <id> "msg" / comment <id> "msg" / revise <id> --reason` を提供。
|
|
93
|
+
既存のスキーマ検証・採番直列化・行置換検証を再利用します(生ファイル編集も従来どおり可)。
|
|
94
|
+
|
|
95
|
+
### そのほか
|
|
96
|
+
|
|
97
|
+
- **複数案件横断 overview**: `aizuchi overview <dir...>` で複数 `.kanban` を read-only 集約表示。
|
|
98
|
+
- **コマンドパレット ⌘K**: ビュー切替 / タスク検索ジャンプ / 起票 / 設定を 1 操作で。
|
|
99
|
+
- **タスク詳細**: Markdown プレビュー / 本文編集(保存時に競合検知 → 行差分提示)/
|
|
100
|
+
作業ログ・やりとり(双方向コメント)のタイムライン。
|
|
51
101
|
- **警告バナー**: 壊れた frontmatter・重複 ID・未登録メンバー・不正な config を表示(ボードは落ちません)。
|
|
52
102
|
|
|
53
|
-
> Phase 2 以降: 提案ワークフロー・設定画面・AI 設定ファイル管理・検索/フィルタ/アーカイブ UI・
|
|
54
|
-
> 指示コピー・重複 ID リネーム支援・多言語対応(i18n)・マイルストーン/ガント。
|
|
55
|
-
|
|
56
103
|
## 開発
|
|
57
104
|
|
|
58
105
|
```bash
|
|
@@ -76,7 +123,7 @@ npm run typecheck # tsc(server)+ tsc -p web/tsconfig.json(web)
|
|
|
76
123
|
(React SPA) ◀SSE─│ server/static.ts server/app.ts events │──watch/read/write──▶ .kanban/
|
|
77
124
|
│ chokidar watcher (server/watcher) │ (プレーンテキスト)
|
|
78
125
|
└────────────────────────────────────────────┘ ▲
|
|
79
|
-
AI / 人間が直接編集
|
|
126
|
+
AI / 人間が直接編集 or CLI
|
|
80
127
|
```
|
|
81
128
|
|
|
82
129
|
```
|
|
@@ -88,7 +135,7 @@ aizuchi/
|
|
|
88
135
|
│ ├── board.ts # .kanban 読込・zod 検証・警告生成
|
|
89
136
|
│ ├── watcher.ts # chokidar(debounce 200ms)→ SSE
|
|
90
137
|
│ ├── static.ts # ビルド済み SPA の配信(トラバーサル拒否)
|
|
91
|
-
│ └── lib/ # task-file / pinpoint / id / fs-safe / time
|
|
138
|
+
│ └── lib/ # task-file / pinpoint / id / fs-safe / time / git / trash / task-ops
|
|
92
139
|
├── web/ # Vite + React SPA(ビルド成果物を dist/web に同梱)
|
|
93
140
|
│ └── src/ # App / useBoard / components / lib
|
|
94
141
|
├── shared/ # task / config の zod スキーマ・型・行 LCS diff(server / web 共有)
|
|
@@ -100,13 +147,13 @@ aizuchi/
|
|
|
100
147
|
|
|
101
148
|
- タスク = `.kanban/tasks/<ID>.md`(1 タスク 1 ファイル、**ID=ファイル名**)。
|
|
102
149
|
- frontmatter: `id` / `title` / `status` / `assignee` / `created_by` / `priority` / `labels` /
|
|
103
|
-
`blocked_type` / `blocked_reason` / `depends_on` / `created` / `updated`。
|
|
150
|
+
`blocked_type` / `blocked_reason` / `depends_on` / `milestone` / `created` / `updated`。
|
|
104
151
|
- `status`: `proposed` / `backlog` / `todo` / `in_progress` / `pending` / `done`。
|
|
105
152
|
- 日時は ISO 8601(タイムゾーン付き、例: `2026-06-10T10:00:00+09:00`)。UTC へ変換しません。
|
|
106
|
-
- 設定は `.kanban/config.json`(プロジェクト名・ID
|
|
107
|
-
|
|
153
|
+
- 設定は `.kanban/config.json`(プロジェクト名・ID 接頭辞・ポート・メンバー・カラム・マイルストーン・
|
|
154
|
+
タスクテンプレート・保存済みビュー・停滞閾値・言語 ほか)。設定ゼロでも既定値で動作します。
|
|
108
155
|
|
|
109
|
-
|
|
156
|
+
各フィールドの enum 値・必須条件など完全な frontmatter スキーマは、`aizuchi init` が `CLAUDE.md` に追記する運用規約(frontmatter スキーマ表)に記載されます。init 後すぐ手元で確認できます。
|
|
110
157
|
|
|
111
158
|
## 手動確認チェックリスト(受け入れ基準 / DoD)
|
|
112
159
|
|
|
@@ -126,23 +173,37 @@ aizuchi/
|
|
|
126
173
|
- [ ] **警告**: frontmatter を壊したファイルを置くと警告バナーに表示され、ボード自体は落ちない。
|
|
127
174
|
- [ ] **詳細**: タスク詳細でプレビュー・編集・作業ログのタイムラインが使える。保存時に外部変更と競合したら
|
|
128
175
|
上書き確認(差分提示)が出る。
|
|
176
|
+
- [ ] **アーカイブ / ごみ箱**: done をアーカイブ → アーカイブビューから復元できる。破壊的書換の前に
|
|
177
|
+
`.kanban/.trash/` へ退避され、ごみ箱から復元できる。
|
|
129
178
|
- [ ] **ネットワーク**: 動作中、外部へのネットワーク通信が一切発生しない。
|
|
130
179
|
- [ ] **終了**: ブラウザでボードを開いたまま `Ctrl+C` で serve が速やかに終了する。
|
|
131
180
|
- [ ] **再現性**: 本 README の手順だけで第三者が環境構築〜起動まで再現できる。
|
|
132
181
|
|
|
182
|
+
## アクセシビリティ
|
|
183
|
+
|
|
184
|
+
キーボードとスクリーンリーダーでの操作を考慮しています。
|
|
185
|
+
|
|
186
|
+
- **キーボード操作**: フォームやボタンは Tab で移動・操作できます。コマンドパレット(⌘K / Ctrl+K)から
|
|
187
|
+
ビュー切替・タスク検索ジャンプ・起票・設定をキーボードだけで実行できます。
|
|
188
|
+
- **キーボードでのカード移動**: カードにフォーカスして **Space で掴み**、矢印キーでカラム間を移動、
|
|
189
|
+
再度 Space で確定(Enter はカード詳細を開く)。ポインタ D&D と同じ status 更新経路・Pending 行きは保留ダイアログを起動。
|
|
190
|
+
- **モーダル**: 開いた時に内部へフォーカスを移し、Tab / Shift+Tab はダイアログ内をループ(focus trap)、
|
|
191
|
+
Escape で閉じ、閉じたら元の要素へフォーカスを戻します。
|
|
192
|
+
- **ARIA / 役割**: カラムやカード、ツールバー、ダイアログに `role` と `aria-label` を付与しています。
|
|
193
|
+
|
|
133
194
|
## 技術スタック
|
|
134
195
|
|
|
135
196
|
Node.js 20.1+ / Hono + @hono/node-server / chokidar / SSE / React 18 + TypeScript + Vite /
|
|
136
197
|
@dnd-kit / react-markdown + remark-gfm / gray-matter / zod / CSS Modules / vitest。
|
|
137
198
|
|
|
138
|
-
###
|
|
199
|
+
### 主要スタックに追加した依存とその理由
|
|
139
200
|
|
|
140
201
|
- **@hono/node-server** — Hono を Node ランタイムで起動し、ビルド済み SPA を静的配信するため
|
|
141
202
|
- **js-yaml (+ @types/js-yaml)** — gray-matter に `JSON_SCHEMA` エンジンを注入し、`+09:00` 付き日時を Date 化せず文字列のまま往復させるため(gray-matter 内蔵の旧 3.x に transitive 依存しない)
|
|
142
203
|
- **@vitejs/plugin-react** — Vite で React(JSX / Fast Refresh)を使うため
|
|
143
|
-
- **@dnd-kit/utilities** — @dnd-kit ファミリ。D&D の CSS transform
|
|
204
|
+
- **@dnd-kit/utilities** — @dnd-kit ファミリ。D&D の CSS transform 補助
|
|
144
205
|
- **tsx** — 開発時に TypeScript サーバーを直接実行するため(本番は dist のコンパイル済み JS を使用)
|
|
145
|
-
- **typescript / vitest / @types/\*** —
|
|
206
|
+
- **typescript / vitest / @types/\*** — 型安全とテストの基盤
|
|
146
207
|
|
|
147
208
|
## ライセンス
|
|
148
209
|
|
package/dist/bin/aizuchi.js
CHANGED
|
@@ -28,6 +28,9 @@ const KANBAN_README = `# .kanban — AIzuchi タスクボード
|
|
|
28
28
|
- \`config.json\` — ボード設定 (メンバー・カラム・ID 接頭辞・指示テンプレート)
|
|
29
29
|
- \`tasks/\` — アクティブなタスク (1 タスク = 1 Markdown ファイル、ID = ファイル名)
|
|
30
30
|
- \`archive/\` — 完了・却下タスク (アーカイブ実行月の月別フォルダ)
|
|
31
|
+
- \`.trash/\` — 破壊的書込 (編集保存・D&D・差し戻し等) の直前に自動退避した旧版 (\`<ID>.<epoch_ms>.md\`)。
|
|
32
|
+
ダッシュボードの「ごみ箱」から復元できます。世代は \`config.json\` の \`trashKeep\` 件まで保持し、古いものは自動削除。
|
|
33
|
+
履歴に含めたくない場合は \`.gitignore\` に \`.kanban/.trash/\` を追加してください。
|
|
31
34
|
|
|
32
35
|
タスクの書式・運用規約はプロジェクトの CLAUDE.md「AIzuchi 運用規約」を参照してください。
|
|
33
36
|
`;
|
|
@@ -457,6 +460,11 @@ export async function runTaskCli(argv, io = {
|
|
|
457
460
|
});
|
|
458
461
|
return emit(view, `保留: ${view.frontmatter.id} (${view.frontmatter.blocked_type ?? ''})`);
|
|
459
462
|
}
|
|
463
|
+
case 'revise': {
|
|
464
|
+
// やり直し依頼 (差し戻し): done/in_progress/pending → todo へ戻し、理由を作業ログに残す
|
|
465
|
+
const view = await ops.revise(positional[0] ?? '', { reason: opts.get('reason') });
|
|
466
|
+
return emit(view, `差し戻し: ${view.frontmatter.id} → ${view.frontmatter.status}`);
|
|
467
|
+
}
|
|
460
468
|
case 'log': {
|
|
461
469
|
const view = await ops.appendLog(positional[0] ?? '', opts.get('member') ?? 'claude', positional[1] ?? '');
|
|
462
470
|
return emit(view, `作業ログ追記: ${view.frontmatter.id}`);
|
|
@@ -466,7 +474,7 @@ export async function runTaskCli(argv, io = {
|
|
|
466
474
|
return emit(view, `コメント追記: ${view.frontmatter.id}`);
|
|
467
475
|
}
|
|
468
476
|
default:
|
|
469
|
-
io.err('task サブコマンド: add / move <id> <status> / done <id> / block <id> --type --reason / log <id> "msg" / comment <id> "msg"');
|
|
477
|
+
io.err('task サブコマンド: add / move <id> <status> / done <id> / block <id> --type --reason / revise <id> [--reason "..."] / log <id> "msg" / comment <id> "msg"');
|
|
470
478
|
return 1;
|
|
471
479
|
}
|
|
472
480
|
}
|