Privacy-first desktop notepad with a sliding protection window
See the Unseen is a privacy-focused writing application that protects your notes from shoulder-surfing and screen sharing. Text appears as ordinary, random-looking content to anyone nearby, while your real notes stay readable only in a small window around your cursor position.
# macOS/Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Windows
# Download from https://rustup.rs/
npm install -g pnpm
# Clone the repository
git clone https://github.com/yourusername/see-the-unseen.git
cd see-the-unseen
# Install dependencies
pnpm install
# Run desktop app in development mode
pnpm desktop:dev
# Type-check without running
pnpm desktop:check
# Build web version only
pnpm desktop:web-build
# Build desktop app for production
pnpm desktop:build
| Shortcut | Action |
|---|---|
Ctrl+Shift+H |
Toggle privacy protection on/off |
Ctrl+, |
Open settings panel |
Ctrl+S |
Save current file |
Ctrl+Shift+S |
Save as (choose new location) |
Ctrl+O |
Open file |
Ctrl+N |
New file |
see-the-unseen/
โโโ apps/
โ โโโ desktop/ # Tauri + Svelte desktop app
โ โโโ src/
โ โ โโโ lib/
โ โ โ โโโ components/
โ โ โ โ โโโ AppHeader.svelte
โ โ โ โ โโโ EditorPane.svelte
โ โ โ โ โโโ SettingsPanel.svelte
โ โ โ โโโ desktop-config.ts # Types and defaults
โ โ โ โโโ masking.ts # Text masking algorithm
โ โ โโโ routes/
โ โ โโโ +page.svelte # Main app orchestration
โ โโโ src-tauri/ # Rust backend
โ โโโ capabilities/
โ โ โโโ default.json # Permission manifest
โ โโโ tauri.conf.json # Tauri configuration
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml # CI/CD pipeline
โ โโโ release.yml # Release workflow
โโโ pnpm-workspace.yaml # Workspace configuration
โโโ LICENSE # MIT license
โโโ README.md
The masking algorithm uses a deterministic pseudo-random generator to replace characters outside the visible window with frequency-matched fake text:
The fake text maintains realistic letter frequency distribution, making it appear as genuine English text to casual observers.
pnpm desktop:check
This project uses .editorconfig for consistent code style:
# Build for your current platform
pnpm desktop:build
# Output will be in apps/desktop/src-tauri/target/release/bundle/
This project uses GitHub Actions to automatically build and publish releases.
Option 1: Manual Trigger (Recommended)
The workflow will:
Before triggering the workflow, make sure these two files use the same version:
apps/desktop/package.jsonapps/desktop/src-tauri/tauri.conf.jsonExample: set both to 0.1.0, commit and push, then run the workflow.
Option 2: Git Tags
# Tag the release
git tag v0.1.0
git push origin v0.1.0
# The workflow will trigger automatically
Users can now download the installer from the Releases page!
See-the-Unseen_{version}_x64_en-US.msi - Windows MSI installerapps/desktop/package.json and apps/desktop/src-tauri/tauri.conf.json use the same version before building.Contributions are welcome! Please feel free to submit issues or pull requests.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
Made with โค๏ธ for privacy-conscious writers