133 lines
4.8 KiB
Markdown
133 lines
4.8 KiB
Markdown
# Thisper
|
|
|
|
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
|
|
|
|
- Desktop text-to-text rewrite UI with diff review
|
|
- Rewrite modes: `Preserve Voice`, `Clean`, `Readable`, `Formal`, `Concise`
|
|
- Gemini-backed cloud rewrite provider with typed model selection
|
|
- Secure Gemini API key storage through native platform protection
|
|
- Global cross-app rewrite shortcut: `Ctrl + Alt + R`
|
|
- System tray support with background operation
|
|
- Non-destructive clipboard replacement flow: selected text is only replaced after the full rewrite succeeds
|
|
- URL protection: links are treated as protected content and must survive rewrites unchanged
|
|
- Local-only runtime observability for rewrite attempts, failures, model use, and last error category
|
|
|
|
## Desktop Workflow
|
|
|
|
### Main Window
|
|
|
|
1. Paste or type raw text.
|
|
2. Choose a mode and model.
|
|
3. Run `Rewrite`.
|
|
4. Review either the final output or the diff.
|
|
5. Copy the result.
|
|
|
|
### Cross-App Rewrite
|
|
|
|
1. Select plain text in another app.
|
|
2. Press `Ctrl + Alt + R`.
|
|
3. Thisper copies the selection, rewrites it in `Preserve Voice`, then pastes the full replacement only after the provider returns a complete result.
|
|
4. The previous text clipboard contents are restored after the operation when they were available as plain text.
|
|
|
|
If no API key is configured, Thisper brings the main window forward instead of attempting a destructive rewrite.
|
|
|
|
## Tray And Background Behavior
|
|
|
|
- Thisper starts with a tray icon on desktop platforms where tray icons are supported.
|
|
- Closing the window does not quit the app by default. The first close shows a tray hint, and later closes hide the window to the tray.
|
|
- The tray menu provides:
|
|
- `Show Thisper`
|
|
- `Run Clipboard Rewrite`
|
|
- `Quit`
|
|
- The global shortcut remains active while the window is hidden.
|
|
- `Quit` from the tray exits the app fully.
|
|
|
|
## Known Limitations
|
|
|
|
- Cross-app rewrite is designed for plain-text targets first. Rich editors, browser text surfaces, and heavily customized inputs are best-effort.
|
|
- 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.
|
|
- 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.
|
|
|
|
## Setup
|
|
|
|
### Prerequisites
|
|
|
|
- [Rust](https://rustup.rs/) stable toolchain
|
|
- [Node.js](https://nodejs.org/) LTS
|
|
- A Gemini API key from [Google AI Studio](https://aistudio.google.com/)
|
|
|
|
### Credentials
|
|
|
|
Use the in-app Settings dialog to save the Gemini API key using native platform protection.
|
|
|
|
- Windows: DPAPI-encrypted local app storage tied to your Windows user account
|
|
- Other supported desktop platforms: native credential store backend
|
|
|
|
For development, Thisper also accepts:
|
|
|
|
```powershell
|
|
$env:GEMINI_API_KEY = "YOUR_API_KEY_HERE"
|
|
```
|
|
|
|
### Run Development
|
|
|
|
```powershell
|
|
npm install
|
|
npm run tauri dev
|
|
```
|
|
|
|
## License Auditing
|
|
|
|
Thisper includes automated license-audit commands:
|
|
|
|
```powershell
|
|
npm run licenses:npm
|
|
npm run licenses:rust
|
|
npm run licenses:all
|
|
```
|
|
|
|
Current status:
|
|
- automation is present
|
|
- the final commercial allowlist policy is still pending
|
|
- current Rust audit output includes weak-copyleft and platform-stack licenses that need an explicit policy decision before monetization
|
|
|
|
## Architecture
|
|
|
|
- Frontend: Vanilla TypeScript, HTML, CSS, Vite
|
|
- Backend: Tauri v2, Rust
|
|
- Provider boundary: pluggable rewrite provider trait
|
|
- Current provider: Gemini
|
|
- Desktop integration: global shortcut, clipboard pipeline, tray/background mode
|
|
|
|
## Project Tracking
|
|
|
|
See:
|
|
|
|
- `RELEASE_CANDIDATE.md` for the current desktop release-candidate lock
|
|
- `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
|
|
- `PHASE3_SPEECH_PLAN.md` for the queued next-phase speech scope
|