Migration

What moved, and what stayed intentionally familiar

The repo moved from a Python CLI and REPL to a Rust-first application with a Ratatui interface and explicit Markdown and JSON output modes.

What changed

  • paperless with no subcommand launches the TUI.
  • Non-interactive commands emit Markdown or structured JSON.
  • The transport layer is a blocking reqwest client behind a testable abstraction.
  • Config moved to TOML, with legacy JSON config still accepted on read.
  • The Python REPL has been replaced by a TUI shell with document list, inspector, status, and security summary.

Compatibility choices

  • Singular command groups like document, tag, and task remain available.
  • Status still degrades gracefully when no config exists.
  • Rust now includes the high-value compatibility commands from the older workflow: document content, document edit tag mutation, tag edit, pdf read/info, and config env-var compatibility.