01 · PROBLEM
Vấn đề tôi muốn giải quyết
Tôi thường nghĩ nhanh hơn tốc độ gõ. Nhưng việc rời app đang làm, chuyển sang ChatGPT Dictation rồi copy transcript trở lại làm đứt flow. DictaBridge thử giữ con trỏ ở nơi công việc bắt đầu và đưa transcript đã hoàn tất trở về đó.
02 · FIT
Vì sao giải pháp có sẵn chưa phù hợp
ChatGPT Web Dictation cho chất lượng transcription phù hợp với workflow cá nhân, nhưng tab switching và copy/paste làm mất focus. Một API/backend riêng lại thêm chi phí, credential và hạ tầng mà thử nghiệm này không muốn mang vào.
03 · REQUIREMENTS
Requirements và constraints
- Gọi workflow từ hotkey và ghi lại target cursor khi editor được hỗ trợ.
- Clipboard là success contract; auto-insert chỉ là best effort.
- Không xóa hoặc ghi đè composer text khi trạng thái mơ hồ.
- Starting và processing phải có timeout, cancel và cleanup; recording vẫn do user chủ động dừng.
- Phụ thuộc ChatGPT Web, phiên đăng nhập và DOM có thể thay đổi.
04 · DESIGN
Workflow
Hotkey / Side Panel ↓ Capture supported target ↓ Dedicated ChatGPT Dictation engine ↓ Transcript detection + bounded recovery ↓ Restore target + copy clipboard ↓ Optional best-effort insertion
05 · DECISIONS
AI làm gì, tôi quyết định gì
AI hỗ trợ
Code review, test planning, failure analysis, refactor và documentation.
Human quyết định
Requirement, acceptable friction, privacy boundary, success contract, fallback và điều kiện release.
06 · BUILD LOG
Build log
- v1.0.1 · rollback baseline được giữ nguyên để có đường quay lại.
- v1.0.7 · bổ sung bounded recovery, persisted-state reconciliation, cancel path và composer fail-closed.
07 · EVIDENCE
Đã kiểm tra gì, còn thiếu gì
Package v1.0.7 đã qua ZIP integrity, manifest/HTML parsing, JavaScript syntax và source-to-archive equivalence. Audit đi kèm báo cáo 27/27 fail-safe invariants và 6/6 composer fixtures; máy hiện tại chưa tự chạy lại fixture harness cũ vì thiếu dependency. Live acceptance trên phiên ChatGPT đã đăng nhập với microphone vẫn là gate mở. Chưa có benchmark tốc độ hoặc failure rate công khai.
08 · FAILURE
Những thứ đã không hoạt động
Việc dựa vào ordinary ChatGPT tab và các đường chờ thiếu boundary làm transcript finalization khó tin cậy. Composer có tool UI hoặc text mơ hồ cũng cho thấy parser không được phép đoán đúng; false positive an toàn tốt hơn ghi đè nội dung.
09 · LESSONS
Bài học có thể chuyển giao
Một extension phụ thuộc UI bên ngoài phải giả định UI sẽ đổi. Success contract nên đơn giản hơn convenience layer, và mọi phase có thể stall phải có bounded wait hoặc escape hatch rõ ràng.