squasheroo is a small Tauri + Vue desktop app for macOS that compresses files and folders you drag onto the window, and keep global ignore rules in one place.
It currently uses zstd for compression:
- Dropped files are written as
filename.ext.zst - Dropped folders are archived and compressed as
folder.tar.zst
The app also includes:
- A global compression level control
- Global ignore lists for files and folders
- Persistent settings stored in the app config directory
- Launch the app.
- Adjust the compression level if needed.
- Add file or folder patterns to the ignore lists.
- Save preferences.
- Drag files or folders onto the window.
Ignored files and folders are skipped during compression. If an output file already exists, the app creates a new name such as report.txt (1).zst.
Ignore lists support simple glob-style patterns.
Examples:
- Files:
.DS_Store - Files:
*.tmp - Files:
build/*.map - Folders:
.git - Folders:
node_modules - Folders:
build/cache
Folder ignore rules apply inside dropped directories before the archive is created.
- macOS
- Node.js with
pnpm - Rust toolchain
- A local zstd library available to the Rust build
The Tauri build links zstd statically from your machine. By default it looks in common Homebrew locations:
/opt/homebrew/Cellar/zstd/.../usr/local/Cellar/zstd/...
If your zstd install lives somewhere else, set:
export ZSTD_LIB_DIR=/path/to/zstd/libInstall frontend dependencies:
pnpm installRun the app in development:
pnpm tauri devUseful commands:
pnpm test
pnpm build
cd src-tauri && cargo test --offlinesrc/: Vue frontendsrc-tauri/src/: Rust backend and Tauri commandssrc/settings.ts: frontend settings normalization helperssrc-tauri/src/lib.rs: settings persistence, ignore handling, archive creation, and zstd compression
This project is licensed under the MIT License. See LICENSE.
- Compression work runs in Rust, not through external CLI commands.
- The UI is designed around drag-and-drop; there is no file picker flow yet.
- The app is currently focused on macOS first.

