fix(bridge): 5 bug fixes for approval signal drop and Discord relay

- DEDUP: add conversation_id guard to prevent cross-session step_index collision
- step_probe: suppress pending when projectName=default (empty window)
- watchCommandsDir: add 3s polling fallback (fs.watch silent fail on Windows)
- auto toggle: write chat_snapshot confirmation back to Discord
- bot on_message: add message ID dedup for Gateway event replay
This commit is contained in:
2026-03-15 08:18:26 +09:00
parent 1f96997831
commit 40e3cd550f
7 changed files with 136 additions and 25 deletions

View File

@@ -0,0 +1,5 @@
# 2026-03-15 Devlog
| # | 시간 | 작업 | 커밋 | 상태 |
|---|------|------|------|------|
| 001 | 07:00~08:16 | 승인 신호 누락 진단 & 5건 버그 수정 (DEDUP collision, fs.watch fail, default 보호, auto 확인, msg dedup) | `pending` | ✅ |

View File

@@ -0,0 +1,31 @@
# 승인 신호 누락 진단 & 5건 버그 수정
- **시간**: 2026-03-15 07:00~08:16
- **Commit**: `pending`
## 결정 사항
### DEDUP conversation_id 가드
- `step_index` 만으로 중복 판정 → 크로스 세션 충돌 빈번
- `project_name`만으로 불충분 (같은 Extension이 여러 세션 관찰 가능)
- **`conversation_id`까지 비교**가 정확한 DEDUP 조건
### fs.watch 대신 polling
- Windows에서 `fs.watch` silent fail 확인 (실측 테스트)
- response watcher도 같은 이슈 있음 (known-issue [2026-03-11])
- **모든 watcher에 polling fallback 병행** 원칙 확립
### stallProbed 시간 기반 리셋 — 불채택
- 유저 의견: fix #1로 DEDUP 해결되면 자연스럽게 delta>0 → stallProbed 리셋
- 30초 리셋은 LS stale 시 불필요한 RPC 호출만 증가
- LS stale은 AG 내부 문제 → AG 재시작이 올바른 해결
## 5건 수정 요약
| # | 파일 | 수정 |
|---|------|------|
| 1 | extension.ts | DEDUP `conversation_id` 가드 |
| 2 | extension.ts | `projectName=default` pending 억제 |
| 3 | extension.ts | commands dir 폴링 fallback |
| 4 | extension.ts | auto 확인 chat_snapshot |
| 5 | bot.py | `on_message` 메시지 ID 중복 방지 |