NOW.md is TalkType's only task tracker and cross-agent restart point.
This file does:
- show current plain-language state and the exact next safe action;
- keep a short stage map without pretending the whole roadmap is fixed;
- expand at most one primary active stage with outcome and done predicates;
- compress completed stages to outcome + evidence + residual risk;
- change when predicates, blockers, next actions, or material risks change.
This file does not:
- redefine the product; see PRODUCT.md;
- explain durable choices; see DECISION.md;
- store research, raw sources, code diffs, routine test output, or commit narration;
- record every attempt or conversation;
- grow a permanent detailed history of finished work (
CHANGELOG.mdfor releases); - mark unverified predicates complete or redefine done when blocked.
Stage labels: DONE, ACTIVE, NEXT, LATER, BLOCKED.
Current state: v3.2.0 released (2026-08-29): overlay level fix, vDSP decimation, mic-fault handling (D009). Owner should run a few real Grok dictations, then continue the real-usage window.
Resume with: Build/run the app → Speech Provider ▸ Grok → paste xAI key → daily use. Log only material issues. Promotion still gated on name collision.
- DONE — Single-provider Doubao v3 shell. Stream + file fallback, Keychain
key, hot words, no polish/local engine. Evidence:
CHANGELOG.mdv3.0.0 and currentTalkType/sources. - DONE — Repository governance migration. Canonical files and directories match the portable standard; competing trackers retired to Git history.
- DONE — Grok STT Stage-0 spike. Direct
api.x.aivs Doubao file; synthesisresearch/2026-08-09-grok-stt-stage0-spike.md. - DONE — Grok exclusive switch (Stage 1). Menu bar provider pick; Grok REST
- keyterms; separate Keychain; D006 / PRODUCT / README updated. Residual: owner live acceptance on Grok; Chinese still best-effort on xAI; no Grok stream.
- ACTIVE — Real-usage batch (macOS). Collect daily-use issues for at least a week; ship one small tested batch. Keep scope tight.
- NEXT — Pre-promotion gates. Optional support link decision; TalkType name collision research before meaningful promotion.
- LATER — Grok stream (same provider only). Only if REST release latency bothers after quality is accepted.
- LATER — Speech regression micro-set. Tiny real-speech set before further request tuning (CN-primary, EN-primary, mixed terms, numbers, self-correction).
- LATER — Mobile. iOS keyboard is architecturally impossible and the dormant targets are gone; Android is the only viable target and waits on hardware (D001, D007). Needs an explicit product decision before any stage opens.
Outcome: A short, evidence-backed list of daily-use defects or non-issues, with any crash/privacy/upstream exceptions fixed promptly and the rest batched.
Done predicates:
- At least one week of real use has been observed (or Simon explicitly ends the window early with a reason).
- Open items below are either done, explicitly deferred with reason, or moved to a later stage — not left as silent drift.
- No known crash, security/privacy, data-loss, or upstream-break issue remains untracked here.
Non-goals: more STT providers, cross-provider auto-failover, iOS revive, large UI redesign, automatic session diaries.
Negative / fail-closed: Do not call promotion-ready while the commercial name-collision item is unaddressed. Do not reintroduce polish/local engine or provider cascade without a new decision.
Next action: Use TalkType daily; log only material issues into this stage (or fix immediately if they are crash/privacy/data-loss/upstream).
Open items (batch candidates):
- Optional support / donation link on README/GitHub (provider choice TBD; payment must read as voluntary; crypto address is a separate decision).
- Name collision: CareScribe ships a commercial dictation product named
TalkType (
talk-type.com). Research a distinct name before meaningful promotion; do not rush-rename the installed app. - Tiny real-speech regression set before further model-request tuning. Live checks already seen: ~1.2–1.8 s; hot words fixed “Cloud Code” → “Claude Code” in at least one trial.
- Deferred unless requested: overlay dragging (
ignoresMouseEvents = true, fixed bottom-centre). - Standing note: signing cert backup lives in
secrets/(gitignored). Do not move it to a tracked path. Loss costs one extra Accessibility grant per machine after reinstall, once. - USB webcam mic (HD Pro Webcam C920) verified (2026-08-18). With the
lid closed and the webcam attached through its current USB 2.1 hub,
AVFoundation captured 3 seconds / 48,000 non-zero samples. TalkType's
current
AudioRecorderthen completed five consecutive captures at16000 Hz x2, with non-zero audio and no fallback; Automatic resolved to the C920. The same recorder also switched C920 → built-in → C920 → Automatic at the expected 16/48/16/16 kHz rates without fallback. This verifies the generic device-selection path, not a C920 special case; macOS microphone permission is app-wide, while TalkType chooses each input by stable device UID. Bluetooth uses the same path but was not connected for this check. The priorAudioDeviceStart/EAGAIN/ isochronous-transfer failure was a transient device or USB state that disappeared after reconnecting. Do not add anAVCaptureSessionfallback without a new reproducible failure; on recurrence, compare the system input meter and~/.talktype/talktype.logbefore changing capture code. - Overlay pill hidden above some apps' windows — fixed in v3.2.0
(2026-08-29). Panel level moved
.statusBar(25) →.screenSaver(1000); verified live during a real dictation: the panel is on-screen at layer 1000. Same batch moved the 48k→16k anti-alias filter ontovDSP_conv(outputs identical within float rounding, ~12x faster), rebuilt, reinstalled, and confirmed the Keychain key and mic grants carry over under the same signing identity (real dictations succeeded immediately after the update). Deferred:reposition()still usesNSScreen.main; wrong-screen placement on a multi-display setup stays open until observed — unverifiable here with one active display. - Lid-closed built-in mic returns digital silence. With
AppleClamshellState = Yes, both the signed app and a separate test process read exactlyrms=0.00000fromMacBook Pro Microphone, so the new fall-back-to-another-input path cannot rescue a dictation in clamshell. Not yet confirmed against an open lid. If clamshell is the cause, decide whether falling back to a silent device is worse than failing loudly.
Blockers: None for daily use. Promotion is gated on item 2.
Residual risk: Bluetooth mic still trades playback quality (system headset mode). Provider quality is fully visible; some former polish masks are gone by design (D003).
- Dormant iOS targets were deleted (D007). Do not restore them. Mobile, if it ever happens, is Android and waits on hardware.
- Historical bake-off numbers and multi-engine designs live in
research/and Git history; they do not authorize product reversals by proximity. CHANGELOG.mdremains the release history surface for humans and GitHub.
Outcome: Root governance files and directories are the only project-management
authorities. Competing TODO.md, CONTEXT.md, PLAN.md, and docs/adr/* were
removed after content landed in the canonical owners; full prior text remains in
Git history. Agent process constraints were hardened to Petal-level must/must-not
lists.
Evidence: Governance commits on main after 2026-08-09.
Residual: Old filenames may still appear inside historical research notes; those notes are not current instructions.