Skip to content

Releases: soffits/seafile-vault-cli

Seafile Vault CLI v0.4.1

Choose a tag to compare

@soffits soffits released this 13 Aug 18:04
2572149

Fixes

  • Removed the default 1 MiB cap from streamed download operations, so normal PDFs, scans, archives, and other files can be saved to disk without per-command overrides.
  • Added optional SEAFILE_MAX_DOWNLOAD_SIZE for deployments that want an explicit on-disk download cap.
  • Kept SEAFILE_MAX_READ_SIZE as the bounded in-memory limit for text, bytes, and base64 reads.
  • Added named-library profile support for the new download limit and documented the distinction.

Safety and correctness

  • Downloads still stream through mode-0600 temporary files, validate Content-Length, calculate SHA-256 while writing, and publish atomically.
  • Explicit download limits still reject oversized responses and clean up temporary files without corrupting an existing destination.
  • Path validation, same-origin download-link checks, token redaction, read-only mode, and MCP boundaries are unchanged.

Verification

  • 259 tests passed with Ruff clean.
  • Both wheel and source distribution passed twine check.
  • A clean Python 3.14 virtual environment installed the wheel with the MCP extra and passed CLI, library-launcher, and package-version smoke tests.
  • Live downloads succeeded for files of 1,485,615 bytes and 2,434,047 bytes that previously failed under the old default.

AGPL-3.0-only.

Seafile Vault CLI v0.4.0

Choose a tag to compare

@soffits soffits released this 01 Aug 01:03
e93a388

Highlights

This release includes all changes since v0.2.0, including the previously unreleased agent-facing workflow improvements.

  • Added secure named library profiles through seafile-library, preserving one repo token and one library per process.
  • Added bounded recursive filename search with glob, type, case-sensitivity, and overbroad-result protection.
  • Added native chunked/resumable uploads with final remote-size verification and safer retry reconciliation.
  • Added file copy and synchronous single-directory copy within the scoped library.
  • Added finite file locks with an atomic local registry, stale-lock auditing, paired cleanup guidance, and explicit untracked recovery.
  • Added optional account-token library/file history, current-library public-share lifecycle, and generated thumbnail previews without changing the default repo-token boundary.
  • Added repo-token file/directory restore using explicit commit IDs and confirmation.
  • Added Seafile v13 metadata records, views, tags, tag links, file tags, and capability-aware handling for deployments where metadata or tags are disabled.
  • Expanded the read-only MCP server with filename search and selected history, share-list, and metadata tools.

Safety and correctness

  • Normal unlock refuses paths that are absent from the local registry; recovery requires --force-untracked --confirm.
  • Lock acquisition rolls back the server lock if local registry persistence fails.
  • Public share creation requires finite expiry and explicit public confirmation; passwords and raw revoke tokens are redacted.
  • Share URLs and redirects are constrained to the configured server origin.
  • Thumbnail downloads use mode-0600 temporary files, never fall back to the original file, enforce image content/size limits, verify Content-Length, and publish atomically.
  • Metadata writes require read_write, explicit confirmation, and a bounded single JSON object on stdin.
  • MCP remains read-only.

Verification

  • 251 local tests passed with Ruff clean.
  • GitHub Actions passed on Python 3.11, 3.12, and 3.13, followed by the build job.
  • twine check passed for both release artifacts.
  • Clean wheel installation with the MCP extra passed CLI, profile launcher, and FastMCP smoke tests on Python 3.14.
  • Reversible live acceptance against Seafile Pro 13.0.25 passed file copy, directory copy, lock audit, unlock cleanup, metadata capability checks, and complete removal of temporary remote data.
  • Account-token-backed operations were contract-tested but not exercised against that live instance because no account token was configured.

AGPL-3.0-only.

Seafile Vault CLI v0.2.0

Choose a tag to compare

@soffits soffits released this 27 Jul 02:51
14a3e25

Highlights

  • Added a secure streamed download command with bounded reads, SHA-256 results, mode-0600 temporary files, held parent-directory descriptors, and atomic publish/overwrite behavior.
  • Added file-only stat for direct remote metadata and deterministic remote_not_found errors.
  • Added list --compact, --recursive, and --type file|dir; compact output omits modifier emails, lock metadata, object/repository IDs, and other Seafile internals.
  • Added idempotent mkdir --parents.
  • Plain mkdir now rejects exact-name conflicts instead of allowing Seafile to silently create names such as Housing (1).

Safety and correctness

  • Temporary download links remain internal to download and are redacted from errors.
  • Destination symlinks, directories, and special files are rejected.
  • Partial writes, truncated responses, size-limit failures, HTTP failures, and missing remote files do not publish partial downloads or corrupt an existing destination.
  • Download destination operations use a held parent directory descriptor for validation, temporary creation, atomic publication, cleanup, and fsync.
  • Seafile directory-create responses are checked for implicit conflict renames; unexpected renamed directories are cleaned up and reported as errors.

Verification

  • 195 local tests passed with Ruff clean.
  • GitHub Actions passed on Python 3.11, 3.12, and 3.13, followed by wheel/sdist build and artifact verification.
  • twine check passed for both release artifacts.
  • Clean wheel installation passed CLI and optional MCP smoke tests.
  • A reversible live Seafile smoke test passed recursive/idempotent mkdir, conflict rejection, upload, stat, compact/recursive listing, download, no-overwrite, overwrite, SHA-256 verification, missing-file handling, and complete remote cleanup.

AGPL-3.0-only.

Seafile Vault CLI v0.1.0

Choose a tag to compare

@soffits soffits released this 26 Jul 02:05
2a11a40

Initial public release.

Highlights:

  • Repo-token-scoped Seafile CLI with stable JSON output and bounded read/write permissions.
  • Native multi-request chunked and resumable uploads with configurable chunk sizes (64MiB, 64MB, or raw bytes).
  • Complete multipart request bodies stay below the 100,000,000-byte proxy boundary by default.
  • Remote final-size verification, bounded retry reconciliation, token/link redaction, and same-origin/TLS checks.
  • Optional MCP server for agent workflows.
  • AGPL-3.0-only.

Verification:

  • 164 local tests passed.
  • GitHub Actions passed on Python 3.11, 3.12, and 3.13, followed by artifact verification.
  • A reversible 101 MiB upload through a proxied public endpoint completed in two requests; remote size and downloaded SHA-256 matched, and the test artifact was deleted.