diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 9e843ea..9b0d664 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -43,6 +43,16 @@ Voxtral exposes a real-time STT model that doesn't accept whole-file uploads, an Merged to `master`, not yet tagged. These become the next version's release notes. +_Nothing yet._ + +--- + +## Released + +> Per-version attribution starts with the first release cut after this roadmap was adopted. The archive below collects work that shipped across **1.0.0 through 1.1.0** before per-version tracking began; it is grouped as one historical block rather than retro-fitted to individual tags. New releases get their own `### ` heading above this archive. + +### 1.1.1 — 2026-06-19 + ### Fix: recording the modal now closes on Stop and reports via notices, instead of holding the modal open The main modal's **Record** tab used to keep the popup open after Stop, showing an inline "Working... / Transcribing..." line (and an inline **Retry** button on error) while the transcribe → cleanup → insert pipeline ran. It now closes the modal the moment recording stops and runs the pipeline detached, reporting progress through a sticky `Notice` (`setMessage` per stage: "ReWrite: Saving audio... / Transcribing... / Cleaning up... / Inserting...") and surfacing errors as a `Notice` — the same UX as reprocessing a saved file ([src/ui/audio-source.ts](../src/ui/audio-source.ts) `runAudioFilePipeline`). New private method `startRecordingPipeline(source)` in [src/ui/modal.ts](../src/ui/modal.ts) captures `profile` / `destinationOverride` / `contextHint` into locals, calls `this.close()`, then runs `runPipeline` inside a detached async IIFE. Safe because the `persist-audio` stage writes the recording to the vault before transcription, so the saved file is the recovery path on error (no inline Retry needed). **Paste** and **From note** keep the prior in-modal `execute` flow (inline progress + Retry), since their input is not persisted and closing would lose it. Docs updated in [CLAUDE.md](../CLAUDE.md) (Pipeline section) and [wiki/Commands-and-Menus.md](../wiki/Commands-and-Menus.md) (The main modal). @@ -55,12 +65,6 @@ Two coupled bugs in the secrets bootstrap, both surfacing as "I can't create a p **`setEncryptionMode` early-return ([src/secrets.ts](../src/secrets.ts)).** Because the envelope had cached as unconfigured `passphrase` mode, the create-passphrase flow called `setEncryptionMode(plugin, 'passphrase', pass)`, hit the blanket `if (envelope.mode === newMode) return;`, and silently did nothing — no kdf/verifier built, no `secrets.json.nosync` written. The modal reported success (onSubmit never threw) while status stayed unconfigured/locked, hence "set a passphrase first." Replaced the blanket guard with per-branch logic: secretStorage no-ops only if already active; configured passphrase flips mode only if not already active; an unconfigured passphrase store (no kdf/verifier) always builds a fresh envelope, *even when `mode` is already `passphrase`*. This also fixes a latent bug where a genuine Linux-without-keyring user (correctly defaulting to passphrase) could never create one through that path. Docs updated in [docs/SECRETS.md](SECRETS.md) (the `setEncryptionMode` model, the `warmSecretStorage` ordering note, and the probe gotcha). ---- - -## Released - -> Per-version attribution starts with the first release cut after this roadmap was adopted. The archive below collects work that shipped across **1.0.0 through 1.1.0** before per-version tracking began; it is grouped as one historical block rather than retro-fitted to individual tags. New releases get their own `### ` heading above this archive. - ### 1.1.0 and earlier (historical archive, not tracked per-version) ### Template maintenance: Update, default history, and Load prior versions diff --git a/manifest.json b/manifest.json index 4986e8a..2536442 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "rewrite-voice-notes", "name": "ReWrite (Voice Notes)", - "version": "1.1.0", + "version": "1.1.1", "minAppVersion": "1.4.4", "description": "Record or paste speech and have it transcribed and structured by AI.", "author": "WiseGuru", diff --git a/package-lock.json b/package-lock.json index dca143b..3ae3efd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rewrite-voice-notes", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rewrite-voice-notes", - "version": "1.1.0", + "version": "1.1.1", "license": "0BSD", "dependencies": { "@zxcvbn-ts/core": "^3.0.4", diff --git a/package.json b/package.json index a07d9da..376a2c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rewrite-voice-notes", - "version": "1.1.0", + "version": "1.1.1", "description": "Record or paste speech and have it transcribed and structured by AI.", "main": "main.js", "type": "module",