see-the-unseen Svelte Themes

See The Unseen

Privacy-first desktop notepad with a sliding protection window

See the Unseen

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.

โœจ Features

  • ๐ŸŽญ Masked Editor - Real content visible only around cursor, fake text shown everywhere else
  • ๐Ÿ”’ Content Protection - Screenshot and screen recording protection (Windows/macOS)
  • ๐ŸŒ“ Theme Support - Light/dark/system theme modes
  • ๐Ÿ’พ Auto-save - Configurable automatic file saving
  • โšก Alt-Tab Protection - Auto-mask when you switch windows
  • ๐Ÿ“ Adjustable Window - Control the visible text radius (tight/medium/wide)
  • โŒจ๏ธ Keyboard Shortcuts - Fast navigation and protection toggle
  • ๐ŸŽจ Modern UI - Clean, native-feeling interface built with Svelte 5

๐Ÿ›  Tech Stack

  • Tauri v2 - Lightweight desktop framework with Rust backend
  • Svelte 5 - Reactive frontend framework with modern runes API
  • SvelteKit - Meta-framework with SSR/SSG support
  • TypeScript - Type-safe development
  • Vite - Fast build tool and dev server
  • pnpm - Efficient package manager with workspace support

๐Ÿ“‹ Prerequisites

  • Node.js >= 20.0.0
  • pnpm >= 10.0.0
  • Rust (latest stable) - Required for Tauri
  • System dependencies for Tauri (varies by platform)

Install Rust

# macOS/Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Windows
# Download from https://rustup.rs/

Install pnpm

npm install -g pnpm

๐Ÿš€ Getting Started

Installation

# Clone the repository
git clone https://github.com/yourusername/see-the-unseen.git
cd see-the-unseen

# Install dependencies
pnpm install

Development

# 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

โŒจ๏ธ Keyboard Shortcuts

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

๐Ÿ“ Project Structure

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

๐ŸŽฏ How It Works

The masking algorithm uses a deterministic pseudo-random generator to replace characters outside the visible window with frequency-matched fake text:

  1. Session Seed - Random seed generated on app launch
  2. Character Mapping - Each position maps to a fake character based on English letter frequency
  3. Cursor Window - Real text visible within configurable radius (10-35 chars)
  4. Seamless Transitions - Smooth reveal as you type or move the cursor

The fake text maintains realistic letter frequency distribution, making it appear as genuine English text to casual observers.

๐Ÿ” Privacy & Security

  • Local-first - All files stored on your device, no cloud sync
  • Screenshot Protection - Leverages native OS APIs to block screenshots/recordings
  • Window Blur Protection - Auto-mask when switching apps (configurable)
  • No Telemetry - Zero data collection or tracking

๐Ÿงช Development

Type Checking

pnpm desktop:check

Linting & Formatting

This project uses .editorconfig for consistent code style:

  • UTF-8 encoding
  • LF line endings
  • 2-space indentation (4 spaces for Rust)
  • Trim trailing whitespace

๐Ÿ“ฆ Building for Production

# Build for your current platform
pnpm desktop:build

# Output will be in apps/desktop/src-tauri/target/release/bundle/

๐Ÿšข Releasing

This project uses GitHub Actions to automatically build and publish releases.

Creating a Release

Option 1: Manual Trigger (Recommended)

  1. Go to the Actions tab in your GitHub repository
  2. Select the Release workflow
  3. Click Run workflow
  4. Click Run workflow button

The workflow will:

  • Build Windows installer (.msi)
  • Create a draft GitHub Release
  • Upload the installer as a release asset

Before triggering the workflow, make sure these two files use the same version:

  • apps/desktop/package.json
  • apps/desktop/src-tauri/tauri.conf.json

Example: 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

Publishing the Release

  1. Go to the Releases page
  2. Find your draft release
  3. Edit the release notes (add changelog, breaking changes, etc.)
  4. Click Publish release

Users can now download the installer from the Releases page!

Release Artifacts

  • See-the-Unseen_{version}_x64_en-US.msi - Windows MSI installer

Important Notes

  • Code Signing: The app is currently not code-signed. Users will see a Windows SmartScreen warning. Click "More info" โ†’ "Run anyway" to install.
  • Version Management: The workflow validates that apps/desktop/package.json and apps/desktop/src-tauri/tauri.conf.json use the same version before building.
  • Draft Releases: All releases are created as drafts first, giving you time to review before publishing.
  • Build Scope: The release workflow currently builds the Windows MSI installer only, which keeps release time shorter and reduces CI failure surface.

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Built with Tauri for secure, lightweight desktop apps
  • UI powered by Svelte 5 and its modern runes API
  • Inspired by privacy-focused writing tools and the need for shoulder-surfing protection

Made with โค๏ธ for privacy-conscious writers

Top categories

Loading Svelte Themes