# Thisper Status

This is the single source of truth for current delivery status.

## Completed

### Desktop MVP Foundation

- Status: `completed`
- Rationale: The desktop app, main rewrite UI, mode selector, copy flow, and diff review are all implemented and working.
- 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`

### Provider Abstraction And Gemini Integration

- Status: `completed`
- Rationale: Rewrite logic is abstracted behind a provider trait and Gemini is implemented as the current backend, including streaming.
- 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`

### Secure Credential Storage

- Status: `completed`
- Rationale: The Gemini API key is stored in the system credential store rather than a plaintext app file.
- Acceptance condition: Saving a key through Settings persists it securely across app restarts.
- Repo pointer: `src-tauri/src/lib.rs`, `README.md`

### Global Shortcut And Clipboard Rewrite

- Status: `completed`
- Rationale: `Ctrl + Alt + R` captures selected text, rewrites it in `Preserve Voice`, and pastes only after a full rewrite succeeds.
- Acceptance condition: Cross-app rewrite works without deleting the original selection before the provider finishes.
- Repo pointer: `src-tauri/src/lib.rs`, `README.md`

### Tray And Background Operation

- Status: `completed`
- Rationale: Thisper now 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.
- Repo pointer: `src-tauri/src/lib.rs`, `src/main.ts`, `index.html`, `src/styles.css`

### Runtime Observability

- Status: `completed`
- Rationale: In-memory runtime metrics now track rewrite attempts, success/failure counts, last error, last model, and last rewrite duration.
- Acceptance condition: Frontend can query and display runtime status without storing raw user text.
- Repo pointer: `src-tauri/src/lib.rs`, `src/main.ts`

### License Audit Automation

- Status: `completed`
- Rationale: npm and Rust license audit commands are wired into the repo.
- Acceptance condition: `licenses:npm`, `licenses:rust`, and `licenses:all` are available and documented.
- Repo pointer: `package.json`, `src-tauri/deny.toml`, `README.md`

## Remaining For Phase 2 Completion

### Legacy Hardware Validation Pass

- Status: `remaining`
- 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.
- Repo pointer: `LEGACY_HARDWARE_VALIDATION.md`

### Commercial License Allowlist Decision

- Status: `remaining`
- Rationale: Audit automation exists, but the final commercial policy for weak-copyleft and platform-stack licenses is intentionally not locked yet.
- 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`

## Queued After Phase 2

### Speech Input Phase

- Status: `queued`
- Rationale: Speech is the next planned phase after desktop Phase 2 is closed, but it is not part of current completion criteria.
- Acceptance condition: Phase 2 is marked complete and the speech scope starts from the queued plan.
- Repo pointer: `PHASE3_SPEECH_PLAN.md`

### High-Value Detail Protection

- Status: `queued`
- Rationale: Protected terms, factual token preservation, and drift flags are important trust refinements, but they are not blocking current Phase 2 completion.
- 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`

## Deferred / Explicitly Out Of Scope

### Mobile Platforms

- Status: `deferred`
- Rationale: Android and iOS are not part of current Phase 2 desktop completion.
- Acceptance condition: Revisit after speech planning and desktop validation.
- Repo pointer: `PHASE3_SPEECH_PLAN.md`

### Local Models And Multi-Provider Routing

- Status: `deferred`
- Rationale: The provider boundary exists, but local execution and multi-provider fallback are not required to close the current desktop scope.
- Acceptance condition: Re-enter scope only after current desktop workflow is fully validated.
- Repo pointer: `src-tauri/src/translator.rs`

### Major UI Redesign

- Status: `deferred`
- Rationale: Current priority is lifecycle reliability and trust, not visual redesign.
- Acceptance condition: Only revisit after Phase 2 acceptance and trust refinements.
- Repo pointer: `src/`, `index.html`, `src/styles.css`
