Skip to content
Sam3360Public

Repository files navigation

Parcel

Everything that belongs together, packaged together.

Parcel is an offline Windows desktop app (Tauri 2 + React + Rust) for collecting files, folders, notes and links from anywhere, organising them in a workspace, and packaging everything into one portable, verifiable .parcel file. A .parcel is a documented, ZIP-compatible format that does not need Parcel to open.

  • No account, no cloud, no telemetry, no analytics, no background network activity.
  • Your original files are only ever read. Parcel never modifies, moves or deletes them.
  • Imported packages are treated as hostile input (path traversal, ZIP bombs, symlinks, malformed manifests are all rejected).

Status: v1.0.0 was released; its Windows build and installer were manually tested by the maintainer. v1.1.0 is in preparation: its changes have been tested on Linux only, and Windows validation (double-click / Open With, forwarding to a running instance, drag-and-drop outside the editor, Show in folder) is still to be done. See Verification status, CHANGELOG.md and Building on Windows.

What works

Area Details
Workspaces Create (blank or from a template), rename, duplicate, trash/restore/permanently delete, recent list, everything auto-saved to SQLite.
Collecting Files, whole folders, multi-select, drag-and-drop from Explorer, notes, links, descriptions, tags, custom metadata. Files stay where they are; Parcel records path, size, SHA-256, timestamp.
Organising Folder tree, move (drag-and-drop or dialog), manual order, rename, multi-select, batch tag, remove-from-workspace (never deletes originals), list/grid views, sort, filter by type/tag, search across names, descriptions, tags, metadata and note text (kind: tag: ext: operators).
Notes & references Markdown notes with live preview and autosave, workspace-level notes, categorised references, link entries. URLs are stored as text only and opened in your browser only after you confirm.
Source intelligence Detects missing and changed sources, lets you relink (validated by checksum) or explicitly accept a change; finds duplicate content; blocks export until problems are resolved — nothing is replaced silently.
Packages Export (streaming, atomic, verified after writing, cancellable, never overwrites without the OS save-dialog confirmation), open (from the app, by double-clicking a .parcel, via Open with, or by dropping it on the window), browse, search, preview (images, text, Markdown, JSON, CSV; PDF via the WebView viewer), verify, extract all/selected with conflict policy, import as workspace (extracted outside the database lock, created atomically; cancelled or failed imports leave nothing behind), import ZIP, compare two packages.
Templates & profiles Five built-in templates, save your own (or a workspace's structure), export profiles (compression, verification, exclusions, file-name pattern).
Revisions Each export of a workspace is a numbered revision of the same package lineage.
Dependencies Declare entry→entry and external dependencies; cycles and dangling targets are diagnosed.
CLI parcel inspect verify extract create validate compare import-zip, using the same engine as the app.
Large collections Windowed list view and package table (only visible rows are rendered), grid view loads in chunks, filterable item picker; Show in folder for source files, exports and extractions.
UI Light/dark/system themes, compact density, reduced motion, keyboard shortcuts (press ?), context menus, focus-trapped dialogs, progress with cancellation.

Repository layout

crates/parcel-core        package engine: manifest, archive writer/reader, integrity, ZIP import, comparison (no Tauri)
crates/parcel-workspace   SQLite persistence, collection, export/import orchestration, templates (no Tauri)
crates/parcel-cli         `parcel` command-line tool
app/                      React + TypeScript UI; app/src-tauri = thin Tauri 2 command layer
format/                   SPECIFICATION.md and JSON Schemas
examples/                 generated example packages (+ README)
docs/                     architecture, security, user guide, development guide

Quick start (development, PowerShell)

Prerequisites: Rust ≥ 1.85 (stable, MSVC toolchain), Node.js ≥ 20, the Microsoft C++ Build Tools, and the WebView2 runtime (preinstalled on Windows 11).

git clone <your-fork-url> parcel; cd parcel

# Engine + workspace + CLI tests (no Tauri needed)
cargo test -p parcel-core -p parcel-workspace -p parcel-cli

# Frontend
cd app
npm install
npm run typecheck; npm run lint; npm run format:check; npm test

# Run the desktop app in development
npm run tauri dev

Building on Windows

cd app
npm install
npm run tauri build          # produces the NSIS installer

# Output: target\release\bundle\nsis\Parcel_1.0.0_x64-setup.exe
# (workspace-level target directory)

The installer is per-user (installMode: currentUser), is unsigned (no code-signing certificate is assumed — Windows SmartScreen may warn), and registers the .parcel file association. CI deliberately does not build or upload Windows installers.

Using the CLI

cargo build --release -p parcel-cli      # target\release\parcel.exe
.\target\release\parcel.exe inspect examples\research-collection.parcel
.\target\release\parcel.exe verify  examples\research-collection.parcel
.\target\release\parcel.exe extract examples\research-collection.parcel out --select Data
.\target\release\parcel.exe create  my.parcel .\some-folder --name "My folder"

Verification status

See CHANGELOG.md for the exact test results recorded for this release and the list of known limitations.

The v1.0.0 codebase has been tested on Linux, and the Windows build has been compiled successfully. The Windows desktop application has also been launched and manually tested. The NSIS installer has been generated successfully (all reported by the maintainer).

The v1.1.0 changes are covered by automated tests on Linux (see CHANGELOG). Behaviour that depends on Windows — file association launches, the single-instance handoff, OS drag-and-drop, revealing files in Explorer, and real WebView2 scrolling of virtualised lists — can only be confirmed by testing the Windows build.

Documentation

License

MIT — see LICENSE.