ignission / ignission/claude-code-ark
[web] 完了通知を「通った / 落ちた」に割る
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 2
- Forks
- 0
- Avg merge
- 1h 31m
- Merged PRs (30d)
- 77
Description
次のタスク: 完了通知を「通った / 落ちた」に割る
問題
IDLE / READY / ERR / STOP の 4 状態がすべて同じ kind: "completed" になり、
通知文面も一律「Ark: 作業が完了しました / 実行が停止しました」になる。
離席して戻ったとき、どれが成功でどれが落ちたか開くまで分からない。
待ち行列を作るなら、区別が無いと失敗を素通りして次へ進むので、こちらが先。
触る場所(すべて packages/web/src/lib/session-notifications.ts)
| 行 | 現状 | 変更 |
|---|---|---|
| 3 | type SessionNotificationKind = "awaiting" | "question" | "completed" |
"failed" を追加 |
| 60-65 | COMPLETED_STATUSES = {IDLE, READY, ERR, STOP} |
FINISHED = {IDLE, READY} と FAILED = {ERR, STOP} に分割 |
| 96 | kind: "completed" を返す |
状態で "completed" / "failed" を返し分ける |
| 169-172 | case "completed" の文面 1 つ |
case "failed" を追加。tag も別にする(通知が上書きされないよう) |
packages/web/src/hooks/useSessionNotifications.ts:65 の union も同じく "failed" を足す。
(SessionNotificationKind を import して使えるなら、重複定義をやめる方がよい)
文面の案
completed: "Ark: 作業が完了しました" / "<label> が入力待ちに戻りました"
failed: "Ark: 作業が失敗しました" / "<label> がエラーで停止しました"
STOP は「tmux ごと消えた」なので、ERR と分けるかは実装時に判断してよい。
分けるなら 3 種類(completed / failed / stopped)になる。
確認すること
- 既存テスト 16 件(
session-notifications.test.ts)を壊さない - 追加テスト
TOOL → IDLEがcompletedTHINK → ERRがfailedTOOL → STOPがfailed(またはstopped)- tag が種別ごとに別(通知が互いを上書きしない)
- 変異テスト:
FAILEDをFINISHEDに混ぜ戻す変異で、追加したテストが落ちること pnpm check/pnpm test/pnpm build
守ること
CLAUDE.mdと.claude/rules/の規約に従う- 実装したら codex にレビューさせる(実装者 ≠ レビュアー)
- push と PR は作ってよい。マージは人間のゲート
- CodeRabbit はレビュー上限に当たることがある。その場合は codex で代替し、PR に明記する
背景(読むと早い)
project_ark_direction(メモリ)— 4 軸とこのタスクが最優先である理由.claude/rules/context-engineering.md— 機構を足す前の検査項目
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with packages/web/src/lib/session-notifications.ts and packages/web/src/hooks/useSessionNotifications.ts, then run the existing session-notifications.test.ts tests. Split IDLE/READY from ERR/STOP, add the failed notification kind and distinct tags and wording, and update or add tests for each transition. Done means pnpm check, pnpm test, and pnpm build pass without breaking the existing 16 tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100