Roll ROADMAP Unreleased items (modal record-flow + secrets bootstrap fixes) into the 1.1.1 release heading.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
WiseGuru 2026-06-19 22:36:42 -07:00
parent f3b93d5ab9
commit cb1b0dcede
4 changed files with 14 additions and 10 deletions

View file

@ -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 `### <version> — <date>` 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 `### <version> — <date>` heading above this archive.
### 1.1.0 and earlier (historical archive, not tracked per-version)
### Template maintenance: Update, default history, and Load prior versions

View file

@ -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",

4
package-lock.json generated
View file

@ -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",

View file

@ -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",