Repository navigation
Releases
Releases · asheliahut/deaddrop
v2.0.0
Breaking
- age encryption is now off by default. In 1.0, every file was always
age-encrypted andservealways printed a decryption key. In 2.0,serve
sends the files as they are (iroh still encrypts the connection end to end)
unless you pass--encryptor setserve.encrypt = true. To keep the 1.0
behaviour, addencrypt = trueunder[serve]in your config file. - stdout format depends on encryption.
serveandresetprint one line
per ticket on stdout:<ticket>without encryption,<ticket> <key>with
--encrypt(and<ticket>again with--hide-key). Scripts that do
read -r TICKET KEYstill work, butKEYis empty when there is no key to
show. - A 2.0 client can't download from a 1.0 single-use server. Before
downloading, the client now sends a small size-probe request so it can show
a total and an ETA. A 1.0 single-use server counts that probe as the
download and then refuses the real one. Upgrade servers and clients
together. A 1.0 multi-use server still works.
Added
deaddrop skillinstalls an Agent Skill
that teaches AI coding agents to use deaddrop and to set up its config file
step by step. It shipsSKILL.mdplusreferences/config.md, generated
from this version's config template.install,uninstall,statusandshowsubcommands.--global(your user) or--project(the enclosing git repository, or
--dir).--harness claude,codex,copilot,agentsor--all, writing to
.claude/skills,.agents/skills,.copilot/skills(global) and
.github/skills(project).- Asks interactively on a terminal when the scope or agents aren't given,
pre-selecting the agents it finds. - Never replaces or removes a
deaddropskill it didn't write unless you
pass--force, and keeps other files in the skill folder on uninstall. - The skill is also committed at
skills/deaddrop/, so tools that install
skills straight from a GitHub repository can use it too.
--encrypt/serve.encrypt: opt-in age encryption at rest. Files are
encrypted with a new X25519 key per torrent, the plaintext is deleted, and
file names are hidden in an encrypted manifest, as in 1.0.--hide-key/serve.hide_key: with--encrypt, the decryption key is
never printed on stderr or stdout, and never sent back todeaddrop reset.
Only notifiers withinclude_key(+key) receive it. The server refuses to
start if no notifier would receive the key, and prints an error if every
one of them failed to send. Without--encrypt, the setting has no effect.[relay]config section for iroh's relay servers, used byserve,
fetchandreset:mode = "default": n0's public relays (same as 1.0).mode = "custom"withurls = [...]: only your relays, for example your
owniroh-relay. Settingurlsalone impliescustom.mode = "disabled": no relays, so a transfer only works if the two sides
can reach each other directly or by hole punching.- Invalid combinations are errors at startup, and
deaddrop config check
shows the setting.
- Connection path reporting: every connection prints whether it uses a
relay or a direct path, and prints again when it switches, for example:
connection to e86045b272 switched to a direct path (203.0.113.7:50687).
This works on the server, the client andreset. - Progress bars (indicatif) on stderr when it's a terminal:
serve: a bar for the torrent download (spinner while metadata resolves,
then bytes, speed, ETA and peer count).serve: one bar per client transfer, named by the client's short id.
With--multi-use, several run at once.fetch: a bar for the download, with total size and ETA.- Finished bars become one-line summaries, e.g.
✔ sent 500.00 MiB in 6.3s (79.42 MiB/s) to b2319767b8. - Status lines (client connected, notifications, connection paths) print
above the bars without breaking them.
fetchkeeps the download when the key is missing. If the data is
encrypted and no key was given, the download stays in.deaddrop-<hash>
in the output folder. Running the same command again with the key finishes
without contacting the server, even after a single-use server has shut
down.fetchworks out by itself whether the data is encrypted. If you pass a
key for data that isn't encrypted, it prints a note and ignores the key.
Changed
- Plain progress output when stderr isn't a terminal (logs, systemd,
pipes): no bars, just a progress line every few seconds and a summary at
the end. The torrent progress line keeps its 1.0 format. --no-progress/DEADDROP_NO_PROGRESS/progress = falseforce
plain progress lines even on a terminal, for recorded sessions (script,
tmux logging, CI pseudo-terminals).TERM=dumbdoes the same.- Log lines have no color codes unless stderr is a terminal. 1.0 colored
tracinglog lines even when written to a file or pipe. Colors now follow
NO_COLOR,CLICOLOR=0,CLICOLOR_FORCEandTERM=dumb, like the
progress bars. - Single-use gate: size-probe requests are answered but never count as
the one download. - Notifiers send the decryption key only when the data is encrypted, and only
to notifiers withinclude_key. Without--encrypt, every notifier gets
just the ticket. - Docs:
- The package description,
--helptext, README,SECURITY.mdand
config.example.tomldescribe age encryption as an optional extra layer. - They document
--hide-key,[relay], connection paths, progress output,
--no-progressanddeaddrop skill, and--helphas examples for them. SECURITY.mdnow covers size probes,deaddrop skill, what relays can
see, and hardening tips for--hide-keyand running your own relay.
- The package description,
- Releases: GitHub release notes now come from this changelog (the tag's
section must exist, or the release fails early). Release archives include
CHANGELOG.md. The Homebrew formula's description no longer says the data
is always age-encrypted.
Dependencies
- Added
indicatif0.18.6.
What's Changed
- 2.0 release base by @asheliahut in #3
Full Changelog: v1.0.0...v2.0.0
v1.0.0
What's Changed
- initial 1.0 release by @asheliahut in #2
New Contributors
- @asheliahut made their first contribution in #2
Full Changelog: https://github.com/asheliahut/deaddrop/commits/v1.0.0