dev #1

Merged
miles merged 4 commits from dev into main 2026-10-11 22:42:43 -05:00
Owner
No description provided.
Structure: cli.rs (clap), config.rs (settings and local state),
output.rs (results on stdout, status and progress on stderr),
e2ee.rs, api/{mod,tus}.rs, and commands/{send,get,manage,account}.rs.

Uploads
- Files go through TUS: creation-with-upload, chunked PATCH with
  retries from the server's offset, parallel parts joined with
  Upload-Concat when the server allows, and resume state so running
  the same command after an interruption continues the upload.
  Plain multipart is the fallback when TUS is unavailable.
- Piped binary data with --encrypted is now encrypted (it was sent as
  plaintext labelled "encrypted").

E2EE v2, compatible with the web app: segmented AES-GCM files with
the name and type in an encrypted header, text payloads carrying the
language and attachment name; v1 still decrypts. Files are encrypted
once into a temporary file before uploading, so a retried chunk can
never reuse a nonce for different plaintext. Shared test vectors.

Downloads stream to a temporary file and are renamed into place; the
overwrite check happens before downloading; names from the server or
an encrypted header can't escape the directory. Moderation responses
(423 pending, 403 quarantined, 410 removed) get clear messages and
`get --wait` waits out a scan. `.../id/raw` URLs parse correctly, and
URLs on another server are fetched without sending credentials there.

HTTP: Accept: application/json, a User-Agent, the API token as
Bearer (BINKS_TOKEN / --token), errors from {"error"} bodies, connect
and read timeouts instead of a 5-minute total timeout.

Fixes: global options (--password, -e, ...) now apply to every
subcommand; delete no longer wipes the saved login on a 403 and uses
the deletion token saved at upload or the owner's credentials; status
messages no longer pollute stdout or --json; the Linux clipboard
helper gets the URL on stdin instead of argv (it held the #k= key).

New: whoami, logout, token create --scope/--save, completions.
login and register save a revocable API token for the machine instead
of an expiring session cookie.

Dependencies updated (aes-gcm 0.11, base64 0.23, infer 0.22, ...),
is-terminal replaced by std, toolchain pinned to 1.97.1. The
integration tests run the binary against an in-process server from
the server repository.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZeHvWbLY5XsYNApM1dUFK
CI runs fmt, clippy on all targets and the full test suite (the
integration tests need BINKS_REPO_TOKEN to fetch the private server
repository) plus cargo-audit from a prebuilt binary. The release
workflow builds with the pinned toolchain and packages the binary
under its real name, `binks`. The README documents the new commands
and options.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZeHvWbLY5XsYNApM1dUFK
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZeHvWbLY5XsYNApM1dUFK
Remove compatibility code and aliases
Some checks failed
CI / Cargo Audit (push) Successful in 22s
CI / Rust (push) Failing after 1m32s
CI / Rust (pull_request) Failing after 30s
CI / Cargo Audit (pull_request) Successful in 22s
c4a9bdeaa0
- E2EE v2 only (the server no longer accepts v1); shared vectors
  regenerated without v1 cases.
- No --api-url / --url aliases. Config keys match the flags: server,
  token, token_id (were api_url, api_token, api_token_id).
- A failing /api/config is an error instead of silently using defaults.
- Dropped the unused zeroize dependency; rust-version matches the
  pinned toolchain; the server dev-dependency points at the current
  server commit.
- Release: the release is created first and builds attach to it
  (no artifact actions); the publish job no longer has fallback chains
  or duplicate validation. CI and release always use BINKS_REPO_TOKEN.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZeHvWbLY5XsYNApM1dUFK
miles merged commit cdc72ecabe into main 2026-10-11 22:42:43 -05:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
miles/binks-cli!1
No description provided.