ad304913e4a5d810c8121a7ce936fb6f0f5c9a44
The mic captured speech and the transcript reached rawText, but it never appeared in the field. NLTaskField.updateUIView (UITextView representable) returned early when the field wasn't focused (`guard coordinator.isEditing`), so externally-set text (voice dictation, the normal not-focused case) was dropped and the placeholder stayed. Fix: render non-empty `text` even when not editing, placing the caret at the end; keep the cursor-preserving fast path while actively editing. No new voice system — this only fixes the existing mic button's transcript→field binding. Verified on simulator via the real speech.transcript path: "Buy milk tomorrow" → field shows it (chip: Tomorrow); "Call Romeo at 11 AM" → field shows it (chip: Today 11:00). Adds DEBUG-only test hooks KISANI_AUTOADD / KISANI_VOICE_SIM (compiled out of Release). Logged under KC-38. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
Personal productivity and fitness companion — iOS SwiftUI app
Languages
Swift
99.3%
HTML
0.4%
Shell
0.3%