seal files now, open them later
Project description
MAGICICADA !!!!!!
magicicapsula
install
pip install magicicapsula
needs python 3.10+
the mcap command is a shorthand alias for magicicapsula; the two are
interchangeable (mcap seal, mcap open capsule.mcap, ...).
how it works
the workflow is staged, so you don't have to add everything at once:
magicicapsula init -u 2030-01-01 # start a draft here
magicicapsula add letter.txt photos/ # stage files/folders
magicicapsula add diary.txt # add more later
magicicapsula status # see what's staged
magicicapsula seal # pack it all into capsule.mcap
the draft lives in a .capsule/ directory (found by walking up from the
current dir). seal reads everything staged and writes the .mcap file.
later, when the date has passed:
magicicapsula open capsule.mcap -d ./out
commands
init
start a new capsule draft in the current directory.
magicicapsula init [-u DATE] [-n NOTE] [-o OUT]
-u, --unlock DATE unlock date, can also be set at seal
-n, --note NOTE plaintext note shown by info
-o, --out OUT output file name (default: capsule.mcap)
add
stage files or folders to put in the capsule.
magicicapsula add <paths...>
magicicapsula add --text "dear future me" [--name letter.txt]
echo "..." | magicicapsula add -
--text TEXT stage text directly, no file needed
--name NAME filename for --text or stdin (default: note.txt)
status
show the draft: unlock date and staged files.
magicicapsula status
rm
unstage files. does not delete them from disk.
magicicapsula rm <paths...>
seal
seal everything staged into a capsule file. flags override the draft's settings and stick.
magicicapsula seal [-u DATE] [-o FILE] [-n NOTE] [-f] [-P] [--rm]
-u, --unlock DATE unlock date, overrides the draft's
-o, --out FILE output capsule file, overrides the draft's
-n, --note NOTE plaintext note, overrides the draft's
-f, --force overwrite the output if it exists
-P, --no-password seal without a password (anyone can open it after the date)
--rm delete staged files after sealing
info
show a capsule's dates and status. no password needed.
magicicapsula info <file> [--json]
--json print capsule metadata as JSON
open
open a capsule and extract it, once the unlock date has passed.
magicicapsula open [-d DEST] <file>
-d, --dest DEST directory to extract into (default: current dir)
verify
check a capsule's integrity (and the password, if any) without opening it.
magicicapsula verify <file>
remind
write a calendar (.ics) reminder for a capsule's unlock date. no account
or api needed: import the file into any calendar (google, apple, outlook).
magicicapsula remind <file> [-o FILE] [-b DAYS] [-f]
-o, --out FILE output .ics path (default: <capsule>.ics)
-b, --before DAYS remind this many days before the unlock date
-f, --force overwrite the output if it exists
version
magicicapsula version
config
show or edit configuration. settings resolve in the order
default < config file < environment variable. the config file is
~/.config/magicicapsula/config.json; MAGICICAPSULA_PASSWORD overrides it.
magicicapsula config # list all (secrets masked)
magicicapsula config --reveal # list all, secrets shown
magicicapsula config get <key> # show one value and its source
magicicapsula config set <key> <val> # write to the config file
magicicapsula config unset <key> # remove from the config file
date format
absolute YYYY-MM-DD or YYYY-MM-DDTHH:MM (2030-01-01, 2030-01-01T08:00),
or relative from now: +30d, +2w, +6m, +1y.
development
pip install -e ".[dev]" # installs ruff + pytest
ruff check . && ruff format --check .
pytest # runs the suite with a 90% coverage gate
tests are spec-driven: each core feature (crypto, capsule, draft,
ics, config) is exercised through its public api, and the command layer
is tested by asserting the printed output with the core mocked out. lint and
tests both run in CI on every push and pull request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file magicicapsula-1.1.0.tar.gz.
File metadata
- Download URL: magicicapsula-1.1.0.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a662ba33c4a77ad38cfa326792ec21b2d6834fdbaf1557e9350d4224b7bfc25
|
|
| MD5 |
a434bb2a4e12a44d94490de15fda553a
|
|
| BLAKE2b-256 |
535ea27999890b1f16d8d19216ad5428a18ef5a13639dae1a3da3d1efc553fb1
|
Provenance
The following attestation bundles were made for magicicapsula-1.1.0.tar.gz:
Publisher:
publish.yml on iDavi/magicicapsula
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magicicapsula-1.1.0.tar.gz -
Subject digest:
6a662ba33c4a77ad38cfa326792ec21b2d6834fdbaf1557e9350d4224b7bfc25 - Sigstore transparency entry: 2138602466
- Sigstore integration time:
-
Permalink:
iDavi/magicicapsula@79fa553219de03a9f718de6f08078fd0106657e7 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/iDavi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79fa553219de03a9f718de6f08078fd0106657e7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file magicicapsula-1.1.0-py3-none-any.whl.
File metadata
- Download URL: magicicapsula-1.1.0-py3-none-any.whl
- Upload date:
- Size: 27.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9cae37ef07de1ba5ddb58245141311da9aa5c8e06fa07dc6f068dfb93dd8087
|
|
| MD5 |
a7a7bbf3e035ff4770c2d4d663e4a2d3
|
|
| BLAKE2b-256 |
1ec7a2f44777a2af64fa23232a996a2b77641e4aabc6afed78a10d3800b3f226
|
Provenance
The following attestation bundles were made for magicicapsula-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on iDavi/magicicapsula
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magicicapsula-1.1.0-py3-none-any.whl -
Subject digest:
d9cae37ef07de1ba5ddb58245141311da9aa5c8e06fa07dc6f068dfb93dd8087 - Sigstore transparency entry: 2138602473
- Sigstore integration time:
-
Permalink:
iDavi/magicicapsula@79fa553219de03a9f718de6f08078fd0106657e7 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/iDavi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79fa553219de03a9f718de6f08078fd0106657e7 -
Trigger Event:
push
-
Statement type: