Revert the app to v0.1.34 - #102
Conversation
Rolls the tree back to e08a9ce (v0.1.34) by reverting everything merged since, newest first: - #101 chore: bump to v0.1.36 - #100 feat(stt): stop sending anything about the running app to the LLM - #99 chore: bump to v0.1.35 - #98 Add app-kind guidance to transcription prompts #98 and #100 partly cancelled — #100 removed the app-kind clause #98 added — but #98 carried much more than that, and all of it is undone here. Restored as a result: - `config.prompt` is sent again, built by `TranscriptionPrompt` from the focused app, window, and field plus the user's key terms and the text around the cursor. - `TranscriptionSteering` is gone, and with it the split into `conversation_context`, `keyterms_prompt`, and `llm.instruction`. Key terms are back to a `Keywords: a, b, c.` clause inside the prompt; prior-cursor text is contextual priming in the prompt rather than a conversation turn. - `DictationLog` records the assembled prompt again, alongside the frontmost app's bundle ID. - `AppKindPriming` returns with #98 and is not re-removed: #100's removal was reverted too, so the bundle-ID → app-kind table is live again. Docs (AGENTS.md, BLURTENGINE.md, README.md, the project-guardrails skill) go back to describing that design. `CFBundleShortVersionString` is 0.1.34. `git diff e08a9ce` is empty, so this is an exact rollback rather than an approximation. Verified: swift test (424 tests, 67 suites) and the Debug app build both pass. scripts/check.sh as a whole does not pass on this machine — it aborts in the XCUITest suite with the "harness window was not presented" failures that predate all of this work. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
| transcript: transcript, ts: now.formatted(timestampFormat), | ||
| conversationContext: steering.conversationContext, | ||
| keytermsPrompt: steering.keyterms) | ||
| app: context?.appName, window: context?.windowTitle, field: context?.fieldLabel, |
There was a problem hiding this comment.
DictationLog.write now includes and persists the assembled prompt and focus-context fields (app, window, field, prior, selected), which contain user-controlled text (transcripts, prior/selected text). Avoid writing raw prompts or user speech to disk or sanitize/mask them before logging.
Details
✨ AI Reasoning
The PR reintroduces writing the fully-assembled transcription prompt and several focus-context fields into the append-only dictation log. The assembled prompt is built from user-controllable inputs (priorText, selectedText, keyTerms) and contextual metadata (appName, windowTitle, fieldLabel). Persisting that prompt and the raw prior/selected text increases the amount of user-provided content written out. Writing raw transcripts or prompt payloads to a developer-visible JSONL file risks exposing sensitive user speech or other PII. This change therefore increases the surface for leaking unsanitized user data compared to the previous version, where those fields were omitted.
🔧 How do I fix it?
Keep sensitive data such as emails, passwords, and tokens out of logs. When logging values tied to a user, prefer a safe identifier like a user ID over the raw input, and strip line breaks from any user-provided text you do log.
Reply @AikidoSec feedback: [FEEDBACK] to get better review comments in the future.
Reply @AikidoSec ignore: [REASON] to ignore this issue.
More info
There was a problem hiding this comment.
Pull request overview
Rolls the repository back to v0.1.34 (e08a9ce) by reverting the changes introduced in PRs #98–#101, restoring the prior dictation-request shape and documentation.
Changes:
- Replaces
TranscriptionSteering(and its tests) withTranscriptionPromptfor per-utteranceconfig.promptpriming, and updatesAssemblyAITranscriber+ related tests accordingly. - Restores/updates dictation logging to record focus-context fields and the assembled prompt again.
- Reverts app versioning back to
0.1.34/ build35, and rolls docs back to match the v0.1.34 behavior.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| Tests/BlurtEngineTests/TranscriptionSteeringTests.swift | Removes steering-field contract tests (rollback). |
| Tests/BlurtEngineTests/TranscriptionPromptTests.swift | Adds prompt-building contract + cap/keywords tests (rollback behavior). |
| Tests/BlurtEngineTests/TranscriptionContextTests.swift | Updates emptiness contract to match prompt-building semantics. |
| Tests/BlurtEngineTests/DictationLogTests.swift | Updates log schema expectations to include context fields + assembled prompt. |
| Tests/BlurtEngineTests/AssemblyAITranscriberTests.swift | Updates config-part expectations to use prompt and pins llm presence. |
| Sources/BlurtEngine/STT/TranscriptionSteering.swift | Deletes steering-field builder (rollback). |
| Sources/BlurtEngine/STT/TranscriptionPrompt.swift | Adds prompt builder used for config.prompt priming (rollback behavior). |
| Sources/BlurtEngine/STT/TranscriptionContext.swift | Updates context documentation/semantics to match prompt priming. |
| Sources/BlurtEngine/STT/AssemblyAITranscriber.swift | Switches from steering fields to prompt generation in config encoding. |
| Sources/BlurtEngine/Pipeline/DictationSession+Pipeline.swift | Updates pipeline commentary about losing priming/prompt on context loss. |
| Sources/BlurtEngine/Pipeline/DictationLog.swift | Changes log entry schema to include focus context + assembled prompt. |
| Sources/BlurtEngine/FocusCapture/FocusCapture.swift | Updates terminology/docs around captured priming signals and secure-field handling. |
| Sources/BlurtEngine/Config/KeyTermsStore.swift | Updates documentation to reflect keyword priming via prompt. |
| README.md | Updates engine map description to reference TranscriptionPrompt. |
| BLURTENGINE.md | Reverts API/design docs to prompt-based priming and updated log description. |
| App/Blurt/project.yml | Reverts bundle versioning to 0.1.34 / build 35. |
| App/Blurt/Blurt/Wizard/Steps/KeyTermsStepView.swift | Updates UI copy to describe key terms as prompt priming. |
| App/Blurt/Blurt/Info.plist | Reverts CFBundleShortVersionString/CFBundleVersion to 0.1.34/35. |
| AGENTS.md | Reverts architecture/docs to prompt-based priming and updated STT section naming. |
| .claude/skills/project-guardrails/SKILL.md | Updates guardrails text to match reverted design (contains one incorrect statement noted in review). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - **No separate LLM cleanup pass.** Cleanup rides in the Sync STT request's | ||
| `config.prompt` (`TranscriptionPrompt`). No LLM Gateway client, no | ||
| `StylerProtocol`, no post-transcription styling stage. |
Rolls the tree back to
e08a9ce(v0.1.34) by reverting everything merged since, newest first:All four reverts applied with no conflicts, and
git diff e08a9ceis empty — this is a byte-exact rollback, not an approximation.CFBundleShortVersionStringis back to0.1.34.This undoes more than the app-kind work
#98 and #100 partly cancel each other — #100 removed the app-kind clause #98 introduced — but #98 carried the whole dictation-API steering rework, and all of it is undone here:
config.promptis sent again, built byTranscriptionPromptfrom the focused app, window, and field plus the user's key terms and the text around the cursor.TranscriptionSteeringis gone, and with it the split intoconversation_context,keyterms_prompt, andllm.instruction. Key terms revert to aKeywords: a, b, c.clause inside the prompt; prior-cursor text becomes contextual priming in the prompt rather than a conversation turn.AppKindPrimingis live again — Stop sending anything about the running app to the LLM #100's removal was itself reverted, so the bundle-ID → app-kind table is back and Blurt once more describes the running app to the LLM.DictationLogrecords the assembled prompt again, alongside the frontmost app's bundle ID.Docs (
AGENTS.md,BLURTENGINE.md,README.md,.claude/skills/project-guardrails) go back to describing that design.Verification
swift test— 424 tests / 67 suites pass. Debug app build succeeds.scripts/check.shas a whole does not pass on the machine this was prepared on: it aborts in the XCUITest suite with nineharness window was not presentedfailures. Those reproduce onv0.1.34itself and on unrelated branches, so they predate this change and this revert neither causes nor fixes them. CI is the authority here.🤖 Generated with Claude Code