Metadata-Version: 2.4
Name: magicicapsula
Version: 1.0.3
Summary: seal files now, open them later
Author-email: iDavi <odavi20527@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/iDavi/magicicapsula
Project-URL: Repository, https://github.com/iDavi/magicicapsula
Project-URL: Issues, https://github.com/iDavi/magicicapsula/issues
Keywords: time-capsule,encryption,cli,archive,vault
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography>=42
Provides-Extra: dev
Requires-Dist: ruff>=0.15; extra == "dev"
Dynamic: license-file

# MAGICICADA !!!!!!
<img width="932" height="718" alt="image" src="https://github.com/user-attachments/assets/bf9ab92c-4933-42d6-8941-3accdf392a51" />

# magicicapsula
<img width="512" height="512" alt="image" src="https://github.com/user-attachments/assets/db00444f-3795-45f1-8176-3f26aaa64498" />

## install

```
pip install magicicapsula
```

needs python 3.10+

## 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]

  -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)
```

### 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`.

