Text Improvement
How Vibe Manager rewrites highlighted text without changing formatting and links the result back to your workspace.
Text improvement is available everywhere you edit copy in the desktop app. Selecting text inside the Monaco editors or task inputs raises a floating action button that sends the selection through a dedicated background job. The job uses the text-improvement task configuration, rewrites the content while preserving whitespace, and then replaces the original selection in place.
Selection popover behaviour
The TextImprovementProvider
listens for selection events on standard inputs and Monaco editors. When you highlight non-empty text it positions a popover near the cursor, stores the selected range, and tracks whether the popover should be visible. Clicking the button kicks off the job and disables the control until the result returns. When the job completes the provider applies the improved text back into the same selection and flushes any pending saves to keep session state in sync.
The popover itself is a minimal component rendered by TextImprovementPopover
, which simply triggers the provider hook and shows a loading indicator while a rewrite is running. Because the provider registers global listeners, the popover appears in Monaco plan viewers, the plan terminal dictation field, and any task description inputs without extra wiring.
What happens when you trigger an improvement
Pressing the popover button calls createImproveTextJobAction
. The action validates the selection, ensures a session identifier exists, and invokes the Rust commandimprove_text_command
via Tauri. The command builds aTextImprovementPayload
containing the original text and queues a background job against the active session.
On the backend, the TextImprovementProcessor
resolves the configured model for the text_improvement
task, wraps the selection in XML tags, and runs the request through the LlmTaskRunner
without streaming. When the model response returns it records token usage, cost, and the system prompt template before emitting the improved text back to the UI. The default configuration ships with Claude Sonnet 4 and Gemini 2.5 Flash as the approved models, capped at 4,096 tokens with a temperature of 0.7.
The background jobs sidebar records the original text in job metadata, so you can review what was sent alongside the rewritten copy. If the selection changes while a job is running, the provider skips replacing the text to avoid clobbering manual edits.
Voice transcription integration
Voice recordings use the useVoiceTranscription
hook. It loads per-project transcription defaults, requests microphone access, and inserts transcripts at the cursor inside the task description or terminal dictation buffer. The inserted text can immediately be highlighted and passed through the same improvement popover, and the original transcription job identifier is stored with the improvement payload for auditing.
Language, model, and temperature preferences persist at the project level, so teams get consistent transcription quality before refining the copy. Silence detection warns about bad audio levels, and a ten-minute cap prevents oversized recordings from blocking improvement jobs with large payloads.
Video capture and prompt scaffolding
Screen recordings pass through the video analysis dialog, which combines your current task description with an optional prompt block wrapped in semantic XML tags before sending the request to the Gemini video analysis job. Any notes you dictate during the recording are available as text once analysis completes, so you can feed the resulting summary back through the improvement popover to tighten the instructions before planning.
Video jobs include frame-rate controls, audio capture toggles, and cost reporting. Results appear in the same background jobs sidebar as text improvements, keeping all prompt preparation artefacts in one place.
Try text improvement in the desktop app
Download Vibe Manager to combine voice capture, video context, and inline rewriting before you generate implementation plans.