sefy-cli 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +33 -0
  2. package/package.json +43 -43
package/README.md CHANGED
@@ -134,6 +134,34 @@ pass --i-know-this-writes-plaintext to go ahead
134
134
 
135
135
  Full command reference: **[lacodda.github.io/sefy](https://lacodda.github.io/sefy/)**.
136
136
 
137
+ ## Transports
138
+
139
+ Carrying a vault to another machine is the job of a **plugin**: any executable
140
+ named `sefy-plugin-*`, found in sefy's data directory or on `PATH`. sefy knows
141
+ nothing about git, FTP or any cloud drive - it asks a plugin what it can do and
142
+ what happened.
143
+
144
+ ```
145
+ $ sefy plugin list
146
+ ftp 0.2.1 push
147
+ future 9.0.0 unusable: it speaks protocol 99 and this build speaks 1
148
+ github 0.1.0 pull, push
149
+ ```
150
+
151
+ A transport is handed the **path of the sealed file** and nothing else - no
152
+ master password, no key, no item. What it carries is what anyone would find on
153
+ your disk: a blob it cannot read. That is also why a plugin cannot merge; it
154
+ fetches the other copy to a file, and `sefy merge` folds the two together where
155
+ both sides can actually be read.
156
+
157
+ Broken plugins are listed with the reason rather than skipped: an omitted line
158
+ would look exactly like a plugin that was never installed.
159
+
160
+ The protocol is small enough to implement in a shell script - manifest on
161
+ `--manifest`, one JSON request on stdin for `run`. Writing one:
162
+ [plugin reference](https://lacodda.github.io/sefy/reference/plugin/) ·
163
+ [ADR-0002](https://github.com/lacodda/sefy/blob/main/docs/adr/0002-plugin-protocol.md).
164
+
137
165
  ## How it works
138
166
 
139
167
  - The master password is stretched into a key with **Argon2id**.
@@ -190,6 +218,11 @@ The database inside the ciphertext is versioned separately, and it does move:
190
218
  from 0.1.x opens, is migrated on the way in, and is still readable by 0.1.x
191
219
  afterwards - the file on disk did not change shape.
192
220
 
221
+ The **plugin protocol is at version 1** as of 0.3.0. Optional fields may be
222
+ added to the manifest without breaking a plugin that predates them; changing
223
+ what an existing field means would arrive as version 2, with both accepted for a
224
+ time.
225
+
193
226
  Released versions and what landed in each: [CHANGELOG on the Releases page](https://github.com/lacodda/sefy/releases).
194
227
 
195
228
  ## Building
package/package.json CHANGED
@@ -1,43 +1,43 @@
1
- {
2
- "name": "sefy-cli",
3
- "version": "0.2.0",
4
- "sefy": {
5
- "binary": "v0.2.0"
6
- },
7
- "description": "An inconspicuous encrypted store for notes, credentials and files",
8
- "license": "MIT",
9
- "author": "Kirill Lakhtachev <lahtachev@gmail.com> (https://lacodda.com)",
10
- "homepage": "https://lacodda.github.io/sefy/",
11
- "repository": {
12
- "type": "git",
13
- "url": "git+https://github.com/lacodda/sefy.git"
14
- },
15
- "keywords": [
16
- "cli",
17
- "secrets",
18
- "password-manager",
19
- "encryption",
20
- "vault"
21
- ],
22
- "bin": {
23
- "sefy": "run.js"
24
- },
25
- "files": [
26
- "download.js",
27
- "install.js",
28
- "run.js",
29
- "README.md"
30
- ],
31
- "scripts": {
32
- "prepack": "node -e \"require('fs').copyFileSync('../README.md','README.md')\"",
33
- "postinstall": "node install.js"
34
- },
35
- "os": [
36
- "win32",
37
- "darwin",
38
- "linux"
39
- ],
40
- "engines": {
41
- "node": ">=18"
42
- }
43
- }
1
+ {
2
+ "name": "sefy-cli",
3
+ "version": "0.3.0",
4
+ "sefy": {
5
+ "binary": "v0.3.0"
6
+ },
7
+ "description": "An inconspicuous encrypted store for notes, credentials and files",
8
+ "license": "MIT",
9
+ "author": "Kirill Lakhtachev <lahtachev@gmail.com> (https://lacodda.com)",
10
+ "homepage": "https://lacodda.github.io/sefy/",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/lacodda/sefy.git"
14
+ },
15
+ "keywords": [
16
+ "cli",
17
+ "secrets",
18
+ "password-manager",
19
+ "encryption",
20
+ "vault"
21
+ ],
22
+ "bin": {
23
+ "sefy": "run.js"
24
+ },
25
+ "files": [
26
+ "download.js",
27
+ "install.js",
28
+ "run.js",
29
+ "README.md"
30
+ ],
31
+ "scripts": {
32
+ "prepack": "node -e \"require('fs').copyFileSync('../README.md','README.md')\"",
33
+ "postinstall": "node install.js"
34
+ },
35
+ "os": [
36
+ "win32",
37
+ "darwin",
38
+ "linux"
39
+ ],
40
+ "engines": {
41
+ "node": ">=18"
42
+ }
43
+ }