Document RC1 release-candidate state

This commit is contained in:
stan44 2026-04-05 17:15:11 -05:00
parent b7de938919
commit f19dc7c26c
6 changed files with 144 additions and 63 deletions

View File

@ -1,6 +1,6 @@
# Legacy Hardware Validation # Legacy Hardware Validation
This report exists to close the remaining Phase 2 validation work against the target profile: older desktop hardware with limited RAM where Thisper must remain responsive and low-overhead. This report exists to close the remaining release-candidate validation work against the target profile: older desktop hardware with limited RAM where Thisper must remain responsive and low-overhead.
## Validation Checklist ## Validation Checklist
@ -13,40 +13,46 @@ This report exists to close the remaining Phase 2 validation work against the ta
### Repeated Cross-App Rewrite ### Repeated Cross-App Rewrite
- Scenario: Use `Ctrl + Alt + R` repeatedly across plain-text targets such as Notepad and browser text boxes. - Scenario: Use `Ctrl + Alt + R` repeatedly across plain-text targets such as Notepad, browser text boxes, and lightweight game chat surfaces.
- Acceptance target: No destructive replacement on provider failure, no clipboard corruption after failures, stable repeated use without restart. - Acceptance target: No destructive replacement on provider failure, no clipboard corruption after failures, stable repeated use without restart.
- Current evidence: Informal real-world usage is positive, but no structured pass is recorded yet. - Current evidence: Informal real-world usage is positive across multiple programs and even some games. One known host-app incompatibility exists where the T3 Chat app steals focus on the hotkey path.
- Status: `remaining` - Status: `partially validated`
### Long-Form Desktop Rewrite ### Long-Form Desktop Rewrite
- Scenario: Rewrite a multi-paragraph block through the main window and inspect diff/output toggles. - Scenario: Rewrite a multi-paragraph block through the main window and inspect diff/output toggles.
- Acceptance target: UI remains responsive during rewrite and the diff view reflects only actual edits. - Acceptance target: UI remains responsive during rewrite and the diff view reflects only actual edits.
- Current evidence: Main UI build path is working and has been used successfully, but no formal timing pass is logged yet. - Current evidence: Main UI rewrite has been used successfully in normal writing flow, but no structured timing pass is logged yet.
- Status: `remaining` - Status: `partially validated`
### Successive Rewrites Without Restart ### Successive Rewrites Without Restart
- Scenario: Perform multiple rewrites in sequence from both the main UI and the global shortcut flow. - Scenario: Perform multiple rewrites in sequence from both the main UI and the global shortcut flow.
- Acceptance target: No cumulative instability, no stale model state, no stuck loading state. - Acceptance target: No cumulative instability, no stale model state, no stuck loading state, and no credential-loss regression after restart.
- Current evidence: Runtime observability is now present to support this pass, but the pass itself is still pending. - Current evidence: Runtime observability and secure key persistence are in place. Informal usage is positive, but the pass itself is not fully recorded yet.
- Status: `remaining` - Status: `partially validated`
### Resource Footprint ### Resource Footprint
- Scenario: Observe memory use and responsiveness on constrained hardware during idle, active rewrite, and tray-hidden states. - Scenario: Observe memory use and responsiveness on constrained hardware during idle, active rewrite, and tray-hidden states.
- Acceptance target: No runaway memory growth and acceptable perceived latency for short text. - Acceptance target: No runaway memory growth and acceptable perceived latency for short text.
- Current evidence: Build/runtime artifacts are large in development, but that is mostly `target/`; release footprint still needs explicit validation. - Current evidence: Development footprint is dominated by build artifacts in `target/`, so the meaningful missing data is runtime memory and release-build behavior on older hardware.
- Status: `remaining` - Status: `remaining`
## Known Compatibility Notes
- `T3 Chat`: hotkey path can defocus the text box because the host app reacts to the shortcut first
- rich editors and secure fields: still best-effort and may not behave like plain-text targets
## What To Record During The Pass ## What To Record During The Pass
- idle memory use - idle memory use
- active rewrite latency for short and medium inputs - active rewrite latency for short and medium inputs
- whether the tray/hotkey path remains responsive after long idle time - whether the tray/hotkey path remains responsive after long idle time
- whether clipboard restoration remains correct after both success and failure - whether clipboard restoration remains correct after both success and failure
- whether secure credential persistence survives multiple app restarts
- any target app classes that consistently fail or behave inconsistently - any target app classes that consistently fail or behave inconsistently
## Completion Rule ## Completion Rule
Phase 2 desktop validation is complete when each scenario above has an explicit observed result recorded here, including failures or caveats. The desktop release candidate is fully validated when each scenario above has an explicit observed result recorded here, including failures or caveats.

View File

@ -2,6 +2,23 @@
Thisper is a typing-first communication translator. It rewrites raw text into clearer text while staying as close as possible to the original meaning, voice, uncertainty, and tone. Thisper is a typing-first communication translator. It rewrites raw text into clearer text while staying as close as possible to the original meaning, voice, uncertainty, and tone.
## Release Candidate Status
Thisper is currently a `desktop typed-workflow release candidate`.
What is considered in-scope and ready for release-candidate use:
- desktop text-to-text rewrite workflow
- cross-app selected-text rewrite via `Ctrl + Alt + R`
- tray/background operation
- native secure API key persistence
- protected URL preservation
What still remains before a broader general release:
- structured legacy hardware validation
- final commercial license allowlist decision
## Current Desktop Scope ## Current Desktop Scope
- Desktop text-to-text rewrite UI with diff review - Desktop text-to-text rewrite UI with diff review
@ -50,6 +67,7 @@ If no API key is configured, Thisper brings the main window forward instead of a
- Secure fields and some application surfaces may block selection, copy, paste, or synthetic key events. - Secure fields and some application surfaces may block selection, copy, paste, or synthetic key events.
- Clipboard restoration currently preserves prior plain-text clipboard contents. Non-text clipboard formats are not yet restored. - Clipboard restoration currently preserves prior plain-text clipboard contents. Non-text clipboard formats are not yet restored.
- If a rewrite attempts to drop a protected URL, Thisper now fails that rewrite instead of silently removing the link. - If a rewrite attempts to drop a protected URL, Thisper now fails that rewrite instead of silently removing the link.
- Some host apps can intercept the hotkey before Thisper sees it. The known example so far is the T3 Chat app defocusing its own text box.
- Model fidelity still depends on prompt behavior. High-value detail protection is planned, but not part of the current Phase 2 completion scope. - Model fidelity still depends on prompt behavior. High-value detail protection is planned, but not part of the current Phase 2 completion scope.
## Setup ## Setup
@ -107,6 +125,8 @@ Current status:
See: See:
- `RELEASE_CANDIDATE.md` for the current desktop release-candidate lock
- `THISPER_STATUS.md` for current completion status - `THISPER_STATUS.md` for current completion status
- `THISPER_IMPLEMENTATION_PLAN.md` for the release-candidate scope
- `LEGACY_HARDWARE_VALIDATION.md` for the Phase 2 validation checklist and report - `LEGACY_HARDWARE_VALIDATION.md` for the Phase 2 validation checklist and report
- `PHASE3_SPEECH_PLAN.md` for the queued next-phase speech scope - `PHASE3_SPEECH_PLAN.md` for the queued next-phase speech scope

36
RELEASE_CANDIDATE.md Normal file
View File

@ -0,0 +1,36 @@
# Thisper Release Candidate
Current designation: `RC1 candidate`
This document locks the current desktop typed workflow into a release-candidate state.
## Included In RC1
- desktop text-to-text rewrite UI
- diff review
- explicit rewrite modes
- cross-app selected-text rewrite via `Ctrl + Alt + R`
- tray/background operation
- native secure API key persistence
- protected URL preservation
- local-only runtime observability
## Known Issues Accepted In RC1
- some host apps may intercept the hotkey before Thisper can act
- rich editors and secure fields remain best-effort
- non-text clipboard formats are not restored yet
- broader protected-term handling is not implemented yet
## Exit Criteria Before General Release
- legacy hardware validation report completed
- commercial license allowlist decision finalized
- Rust license audit policy aligned with that decision
## Primary Reference Docs
- `README.md`
- `THISPER_STATUS.md`
- `THISPER_IMPLEMENTATION_PLAN.md`
- `LEGACY_HARDWARE_VALIDATION.md`

View File

@ -1,18 +1,41 @@
# Thisper Implementation Plan # Thisper Implementation Plan
This plan reflects the current repo state and the remaining work needed to close desktop Phase 2 before speech begins. This plan reflects the current repo state and the work needed to move the desktop typed workflow from release candidate to general release.
## Completed Baseline ## Current State
- Desktop text-to-text MVP is complete. - Desktop text-to-text MVP is complete.
- The provider boundary exists and Gemini is integrated. - The provider boundary exists and Gemini is integrated.
- Secure credential storage is implemented. - Native secure credential storage is implemented.
- Global shortcut and clipboard rewrite are implemented. - Global shortcut and clipboard rewrite are implemented.
- Streaming rewrite is implemented.
- Tray and background lifecycle are implemented. - Tray and background lifecycle are implemented.
- Runtime observability is implemented locally in-memory. - Runtime observability is implemented locally in-memory.
- Protected URL preservation is implemented.
## Remaining To Close Phase 2 ## Release Candidate Scope
The current release candidate covers the desktop typed workflow only.
### Included
- main rewrite UI
- explicit rewrite modes
- diff review
- copy output
- secure settings for the Gemini API key
- `Ctrl + Alt + R` selected-text rewrite
- tray/background operation
- native secure credential handling
- protected URL preservation
### Known Limits Accepted For The Release Candidate
- rich editors and some browser surfaces are still best-effort
- non-text clipboard formats are not restored yet
- host-app hotkey conflicts can still occur in specific apps
- broader high-value term protection is not implemented yet
## Remaining To Close Before General Release
### 1. Validation ### 1. Validation
@ -25,34 +48,10 @@ This plan reflects the current repo state and the remaining work needed to close
- Decide the commercial allowlist policy. - Decide the commercial allowlist policy.
- Update Rust audit configuration to match that policy. - Update Rust audit configuration to match that policy.
## Current Desktop Contract
### Main UI
- typed input and output panes
- explicit rewrite modes
- diff review
- copy output
- secure settings for the Gemini API key
### Cross-App Utility
- `Ctrl + Alt + R` triggers selected-text rewrite
- default global mode is `Preserve Voice`
- selected text is only replaced after a complete rewrite succeeds
- app can remain hidden in the tray while the hotkey stays active
### Tray Lifecycle
- closing the main window does not quit by default
- first close shows a tray hint
- later closes hide to tray
- tray menu supports show, rewrite, and quit
## Queued Next ## Queued Next
After Phase 2 is closed: After the desktop release candidate is validated:
1. start the speech phase from `PHASE3_SPEECH_PLAN.md` 1. start the speech phase from `PHASE3_SPEECH_PLAN.md`
2. queue trust refinements such as protected terms and high-value detail preservation 2. expand trust protections beyond URLs into protected terms and factual tokens
3. revisit optimization work only after validation data exists 3. revisit optimization work only after validation data exists

View File

@ -2,28 +2,32 @@
This is the single source of truth for current delivery status. This is the single source of truth for current delivery status.
Current release state: `desktop typed-workflow release candidate`
Phase 2 feature scope is implemented. The remaining work is validation and release-policy closure, not missing core desktop functionality.
## Completed ## Completed
### Desktop MVP Foundation ### Desktop MVP Foundation
- Status: `completed` - Status: `completed`
- Rationale: The desktop app, main rewrite UI, mode selector, copy flow, and diff review are all implemented and working. - Rationale: The desktop app, main rewrite UI, mode selector, copy flow, and diff review are implemented and in active use.
- Acceptance condition: User can paste text, rewrite it, inspect diff, and copy output without leaving the app. - Acceptance condition: User can paste text, rewrite it, inspect diff, and copy output without leaving the app.
- Repo pointer: `src/`, `index.html`, `src/styles.css`, `src-tauri/src/lib.rs` - Repo pointer: `src/`, `index.html`, `src/styles.css`, `src-tauri/src/lib.rs`
### Provider Abstraction And Gemini Integration ### Provider Abstraction And Gemini Integration
- Status: `completed` - Status: `completed`
- Rationale: Rewrite logic is abstracted behind a provider trait and Gemini is implemented as the current backend, including streaming. - Rationale: Rewrite logic is abstracted behind a provider trait and Gemini is implemented as the current backend.
- Acceptance condition: Main UI and cross-app rewrite both run through the provider boundary instead of hard-coded prompt logic in the UI. - Acceptance condition: Main UI and cross-app rewrite both run through the provider boundary instead of hard-coded prompt logic in the UI.
- Repo pointer: `src-tauri/src/translator.rs`, `src-tauri/src/gemini.rs`, `src-tauri/src/lib.rs` - Repo pointer: `src-tauri/src/translator.rs`, `src-tauri/src/gemini.rs`, `src-tauri/src/lib.rs`
### Secure Credential Storage ### Native Secure Credential Storage
- Status: `completed` - Status: `completed`
- Rationale: The Gemini API key is stored in the system credential store rather than a plaintext app file. - Rationale: API key storage now uses native platform protection instead of a misleading generic claim. On Windows this is DPAPI-encrypted app-local storage; other supported desktop platforms continue to use the native credential backend.
- Acceptance condition: Saving a key through Settings persists it securely across app restarts. - Acceptance condition: Saving a key through Settings persists it securely across app restarts and the key is never written in plaintext.
- Repo pointer: `src-tauri/src/lib.rs`, `README.md` - Repo pointer: `src-tauri/src/credentials.rs`, `src-tauri/src/lib.rs`, `README.md`
### Global Shortcut And Clipboard Rewrite ### Global Shortcut And Clipboard Rewrite
@ -35,17 +39,24 @@ This is the single source of truth for current delivery status.
### Tray And Background Operation ### Tray And Background Operation
- Status: `completed` - Status: `completed`
- Rationale: Thisper now supports tray-based lifecycle management and continued hotkey operation while the window is hidden. - Rationale: Thisper supports tray-based lifecycle management and continued hotkey operation while the window is hidden.
- Acceptance condition: Closing the window hides to tray after the first hint, tray actions restore or quit correctly, and the hotkey remains active while hidden. - Acceptance condition: Closing the window hides to tray after the first hint, tray actions restore or quit correctly, and the hotkey remains active while hidden.
- Repo pointer: `src-tauri/src/lib.rs`, `src/main.ts`, `index.html`, `src/styles.css` - Repo pointer: `src-tauri/src/lib.rs`, `src/main.ts`, `index.html`, `src/styles.css`
### Runtime Observability ### Runtime Observability
- Status: `completed` - Status: `completed`
- Rationale: In-memory runtime metrics now track rewrite attempts, success/failure counts, last error, last model, and last rewrite duration. - Rationale: In-memory runtime metrics track rewrite attempts, success/failure counts, last error, last model, and last rewrite duration without storing raw user text.
- Acceptance condition: Frontend can query and display runtime status without storing raw user text. - Acceptance condition: Frontend can query and display runtime status locally.
- Repo pointer: `src-tauri/src/lib.rs`, `src/main.ts` - Repo pointer: `src-tauri/src/lib.rs`, `src/main.ts`
### Protected URL Preservation
- Status: `completed`
- Rationale: Links are now treated as protected content and may not be silently removed during rewrites.
- Acceptance condition: If a rewrite tries to drop a protected URL, it fails instead of returning altered text.
- Repo pointer: `src-tauri/src/gemini.rs`, `README.md`
### License Audit Automation ### License Audit Automation
- Status: `completed` - Status: `completed`
@ -53,13 +64,13 @@ This is the single source of truth for current delivery status.
- Acceptance condition: `licenses:npm`, `licenses:rust`, and `licenses:all` are available and documented. - Acceptance condition: `licenses:npm`, `licenses:rust`, and `licenses:all` are available and documented.
- Repo pointer: `package.json`, `src-tauri/deny.toml`, `README.md` - Repo pointer: `package.json`, `src-tauri/deny.toml`, `README.md`
## Remaining For Phase 2 Completion ## Remaining Before General Release
### Legacy Hardware Validation Pass ### Legacy Hardware Validation Pass
- Status: `remaining` - Status: `remaining`
- Rationale: The implementation is in place, but the acceptance report still depends on a structured pass against the target hardware profile. - Rationale: The implementation is in place, but the acceptance report still depends on a structured pass against the target hardware profile.
- Acceptance condition: The validation checklist is executed and the report is updated with actual observed results. - Acceptance condition: The validation checklist is executed and the report is updated with explicit observed results.
- Repo pointer: `LEGACY_HARDWARE_VALIDATION.md` - Repo pointer: `LEGACY_HARDWARE_VALIDATION.md`
### Commercial License Allowlist Decision ### Commercial License Allowlist Decision
@ -69,19 +80,19 @@ This is the single source of truth for current delivery status.
- Acceptance condition: A written allowlist decision is made and the Rust audit configuration is aligned with that decision. - Acceptance condition: A written allowlist decision is made and the Rust audit configuration is aligned with that decision.
- Repo pointer: `src-tauri/deny.toml`, `README.md` - Repo pointer: `src-tauri/deny.toml`, `README.md`
## Queued After Phase 2 ## Queued After Release Candidate
### Speech Input Phase ### Speech Input Phase
- Status: `queued` - Status: `queued`
- Rationale: Speech is the next planned phase after desktop Phase 2 is closed, but it is not part of current completion criteria. - Rationale: Speech is the next planned phase after the current desktop release candidate is validated.
- Acceptance condition: Phase 2 is marked complete and the speech scope starts from the queued plan. - Acceptance condition: Release-candidate validation is closed and the speech scope starts from the queued plan.
- Repo pointer: `PHASE3_SPEECH_PLAN.md` - Repo pointer: `PHASE3_SPEECH_PLAN.md`
### High-Value Detail Protection ### High-Value Detail Protection Expansion
- Status: `queued` - Status: `queued`
- Rationale: Protected terms, factual token preservation, and drift flags are important trust refinements, but they are not blocking current Phase 2 completion. - Rationale: URLs are protected now, but broader protected terms, factual token preservation, and drift flags are still future trust refinements.
- Acceptance condition: Add protected-term rules, token-preservation checks, and a stricter retry path without breaking current flows. - Acceptance condition: Add protected-term rules, token-preservation checks, and a stricter retry path without breaking current flows.
- Repo pointer: `communication_translator_project_plan.md` - Repo pointer: `communication_translator_project_plan.md`
@ -90,20 +101,20 @@ This is the single source of truth for current delivery status.
### Mobile Platforms ### Mobile Platforms
- Status: `deferred` - Status: `deferred`
- Rationale: Android and iOS are not part of current Phase 2 desktop completion. - Rationale: Android and iOS are not part of the current desktop release candidate.
- Acceptance condition: Revisit after speech planning and desktop validation. - Acceptance condition: Revisit after speech planning and desktop validation.
- Repo pointer: `PHASE3_SPEECH_PLAN.md` - Repo pointer: `PHASE3_SPEECH_PLAN.md`
### Local Models And Multi-Provider Routing ### Local Models And Multi-Provider Routing
- Status: `deferred` - Status: `deferred`
- Rationale: The provider boundary exists, but local execution and multi-provider fallback are not required to close the current desktop scope. - Rationale: The provider boundary exists, but local execution and multi-provider fallback are not required for the current desktop release candidate.
- Acceptance condition: Re-enter scope only after current desktop workflow is fully validated. - Acceptance condition: Re-enter scope only after the current desktop workflow is fully validated.
- Repo pointer: `src-tauri/src/translator.rs` - Repo pointer: `src-tauri/src/translator.rs`
### Major UI Redesign ### Major UI Redesign
- Status: `deferred` - Status: `deferred`
- Rationale: Current priority is lifecycle reliability and trust, not visual redesign. - Rationale: Current priority is reliability, trust, and release readiness, not visual redesign.
- Acceptance condition: Only revisit after Phase 2 acceptance and trust refinements. - Acceptance condition: Only revisit after release-candidate validation and trust refinements.
- Repo pointer: `src/`, `index.html`, `src/styles.css` - Repo pointer: `src/`, `index.html`, `src/styles.css`

View File

@ -1,5 +1,14 @@
# Communication Translator Project Plan # Communication Translator Project Plan
This document is the long-term product vision and design philosophy.
For current implementation state and release readiness, use:
- `README.md`
- `RELEASE_CANDIDATE.md`
- `THISPER_STATUS.md`
- `THISPER_IMPLEMENTATION_PLAN.md`
## Working Name ## Working Name
Use a placeholder name until the product identity becomes obvious through use. Use a placeholder name until the product identity becomes obvious through use.