@roman-16/proton-cli-win32-x64 2.2.3 → 2.4.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.
package/README.md CHANGED
@@ -18,7 +18,7 @@ _Unofficial, community-built, not affiliated with Proton AG._
18
18
  </div>
19
19
  <br />
20
20
 
21
- Read your mail, move files in and out of Drive, manage calendars, passwords, and contacts, all without opening a browser. proton-cli logs in the way the Proton apps do and does the encryption on your machine, so your keys stay yours.
21
+ Read your mail, move files in and out of Drive, manage calendars, passwords, and contacts, all without opening a browser. proton logs in the way the Proton apps do and does the encryption on your machine, so your keys stay yours.
22
22
 
23
23
  - **Real end-to-end encryption.** SRP login and the full PGP key hierarchy, handled locally with Proton's own [go-srp](https://github.com/ProtonMail/go-srp) and [gopenpgp](https://github.com/ProtonMail/gopenpgp). No bridge, no proxy, no browser in the middle.
24
24
  - **Five apps, one binary.** Mail, Drive, Calendar, Pass, and Contacts, in a single static executable on Linux, macOS, and Windows.
@@ -38,12 +38,14 @@ Read your mail, move files in and out of Drive, manage calendars, passwords, and
38
38
 
39
39
  There's also an APT repository for Debian and Ubuntu, `.rpm` and `.apk` packages, plain binaries with checksums, and `go install`. See [Installation](https://github.com/roman-16/proton-cli/blob/main/docs/installation.md).
40
40
 
41
- Already installed? `proton-cli update`.
41
+ The command is `proton`, and `proton-cli` works too - every install puts both names on your `PATH`.
42
+
43
+ Already installed? `proton update`.
42
44
 
43
45
  ## Get started
44
46
 
45
47
  ```console
46
- $ proton-cli account login
48
+ $ proton account login
47
49
  Email: you@proton.me
48
50
  Password:
49
51
  Two-factor code: 123456
@@ -54,29 +56,29 @@ Two-factor code: 123456
54
56
  That's the whole setup. Signing in saves the session **and** unlocks your keys, so your password is needed once on this machine and not again. Every command documents itself with `--help`:
55
57
 
56
58
  ```bash
57
- proton-cli mail messages list
58
- proton-cli mail messages send --help
59
+ proton mail messages list
60
+ proton mail messages send --help
59
61
  ```
60
62
 
61
- Scripting it? `proton-cli account login --user you@proton.me --password-file /run/secrets/proton` needs no terminal. Juggling a personal and a work account? `proton-cli account login --profile work`. More in [Getting started](https://github.com/roman-16/proton-cli/blob/main/docs/getting-started.md).
63
+ Scripting it? `proton account login --user you@proton.me --password-file /run/secrets/proton` needs no terminal. Juggling a personal and a work account? `proton account login --profile work`. More in [Getting started](https://github.com/roman-16/proton-cli/blob/main/docs/getting-started.md).
62
64
 
63
65
  ## What you can do
64
66
 
65
- Every command reads the same way - `proton-cli <app> <collection> <verb>` - and anywhere one wants an ID, a subject, name, or URL works too. Lists shorten IDs to 8 characters you can paste straight back. See [The language](https://github.com/roman-16/proton-cli/blob/main/docs/language.md).
67
+ Every command reads the same way - `proton <app> <collection> <verb>` - and anywhere one wants an ID, a subject, name, or URL works too. Lists shorten IDs to 8 characters you can paste straight back. See [The language](https://github.com/roman-16/proton-cli/blob/main/docs/language.md).
66
68
 
67
69
  ### Mail
68
70
 
69
71
  ```bash
70
- proton-cli mail messages list --unread
71
- proton-cli mail messages search --from billing@example.com --after 2026-01-01
72
- proton-cli mail messages get "Invoice #2291"
73
- proton-cli mail messages send --to alice@proton.me --subject Report --body "See attached." --attach ./report.pdf
74
- proton-cli mail messages reply "Invoice #2291" --body "Thanks, paid today."
75
- proton-cli mail messages forward "Invoice #2291" --to alice@proton.me
76
- proton-cli mail drafts create --to team@example.com --subject Standup --body "Notes to follow."
77
- proton-cli mail messages label "Invoice #2291" --label Accounting
78
- proton-cli mail messages export --folder archive --older-than 1y --output-dir ./backup
79
- proton-cli mail messages trash --unread --older-than 30d
72
+ proton mail messages list --unread
73
+ proton mail messages search --from billing@example.com --after 2026-01-01
74
+ proton mail messages get "Invoice #2291"
75
+ proton mail messages send --to alice@proton.me --subject Report --body "See attached." --attach ./report.pdf
76
+ proton mail messages reply "Invoice #2291" --body "Thanks, paid today."
77
+ proton mail messages forward "Invoice #2291" --to alice@proton.me
78
+ proton mail drafts create --to team@example.com --subject Standup --body "Notes to follow."
79
+ proton mail messages label "Invoice #2291" --label Accounting
80
+ proton mail messages export --folder archive --older-than 1y --output-dir ./backup
81
+ proton mail messages trash --unread --older-than 30d
80
82
  ```
81
83
 
82
84
  Threads, attachments, filters, and auto-reply. → [Mail](https://github.com/roman-16/proton-cli/blob/main/docs/commands/mail.md)
@@ -84,12 +86,13 @@ Threads, attachments, filters, and auto-reply. → [Mail](https://github.com/rom
84
86
  ### Drive
85
87
 
86
88
  ```bash
87
- proton-cli drive items list /Documents
88
- proton-cli drive items upload --recursive ./project /Backup
89
- proton-cli drive items download /Documents/report.pdf --output-dir .
90
- proton-cli drive items move /Documents/report.pdf --into /Archive
91
- proton-cli drive share link /Documents/report.pdf --expires 7d --password hunter2
92
- proton-cli drive items trash --pattern "*.tmp" --scope /Build --recursive
89
+ proton drive items list /Documents
90
+ proton drive items upload --recursive ./project /Backup
91
+ proton drive items upload --if-exists replace ./report.pdf /Documents
92
+ proton drive items download /Documents/report.pdf --output-dir .
93
+ proton drive items move /Documents/report.pdf --into /Archive
94
+ proton drive share link /Documents/report.pdf --expires 7d --password hunter2
95
+ proton drive items trash --pattern "*.tmp" --scope /Build --recursive
93
96
  ```
94
97
 
95
98
  Revisions, sharing with people, and photo albums. → [Drive](https://github.com/roman-16/proton-cli/blob/main/docs/commands/drive.md)
@@ -97,12 +100,12 @@ Revisions, sharing with people, and photo albums. → [Drive](https://github.com
97
100
  ### Calendar
98
101
 
99
102
  ```bash
100
- proton-cli calendar events list --start 2026-04-15 --end 2026-04-30
101
- proton-cli calendar events create --title Dentist --start 2026-04-16T14:00 --duration 1h
102
- proton-cli calendar events create --title Standup --start 2026-04-16T09:00 --duration 15m --rrule "FREQ=WEEKLY;COUNT=10" --remind 15m
103
- proton-cli calendar events update 4f2a1b9c@2026-04-22T09:00 --start 2026-04-22T10:30
104
- proton-cli calendar events delete 4f2a1b9c@2026-05-04T09:00 --future
105
- proton-cli calendar events respond "Team sync" --status accept
103
+ proton calendar events list --start 2026-04-15 --end 2026-04-30
104
+ proton calendar events create --title Dentist --start 2026-04-16T14:00 --duration 1h
105
+ proton calendar events create --title Standup --start 2026-04-16T09:00 --duration 15m --rrule "FREQ=WEEKLY;COUNT=10" --remind 15m
106
+ proton calendar events update 4f2a1b9c@2026-04-22T09:00 --start 2026-04-22T10:30
107
+ proton calendar events delete 4f2a1b9c@2026-05-04T09:00 --future
108
+ proton calendar events respond "Team sync" --status accept
106
109
  ```
107
110
 
108
111
  Recurring events occurrence by occurrence, your own calendars, all-day events, and attendees. → [Calendar](https://github.com/roman-16/proton-cli/blob/main/docs/commands/calendar.md)
@@ -110,10 +113,10 @@ Recurring events occurrence by occurrence, your own calendars, all-day events, a
110
113
  ### Pass
111
114
 
112
115
  ```bash
113
- proton-cli pass items list --vault Work
114
- proton-cli pass items get github.com
115
- proton-cli pass items create --name GitHub --username roman --password "$(openssl rand -base64 24)" --url github.com
116
- proton-cli pass aliases create --prefix shop --mailbox me@proton.me
116
+ proton pass items list --vault Work
117
+ proton pass items get github.com
118
+ proton pass items create --name GitHub --username roman --password "$(openssl rand -base64 24)" --url github.com
119
+ proton pass aliases create --prefix shop --mailbox me@proton.me
117
120
  ```
118
121
 
119
122
  Notes, cards, SSH keys, and identities. → [Pass](https://github.com/roman-16/proton-cli/blob/main/docs/commands/pass.md)
@@ -121,10 +124,10 @@ Notes, cards, SSH keys, and identities. → [Pass](https://github.com/roman-16/p
121
124
  ### Contacts
122
125
 
123
126
  ```bash
124
- proton-cli contacts list
125
- proton-cli contacts create --name "Jane Roe" --email jane@example.com
126
- proton-cli contacts keys pin jane --key jane-pubkey.asc
127
- proton-cli contacts groups add GROUP_ID jane
127
+ proton contacts list
128
+ proton contacts create --name "Jane Roe" --email jane@example.com
129
+ proton contacts keys pin jane --key jane-pubkey.asc
130
+ proton contacts groups add GROUP_ID jane
128
131
  ```
129
132
 
130
133
  Multiple addresses, organizations, and birthdays. → [Contacts](https://github.com/roman-16/proton-cli/blob/main/docs/commands/contacts.md)
@@ -132,34 +135,34 @@ Multiple addresses, organizations, and birthdays. → [Contacts](https://github.
132
135
  ### Account
133
136
 
134
137
  ```bash
135
- proton-cli account get
136
- proton-cli account sessions list
137
- proton-cli account settings set locale de_AT
138
- proton-cli account logout --revoke
138
+ proton account get
139
+ proton account sessions list
140
+ proton account settings set locale de_AT
141
+ proton account logout --revoke
139
142
  ```
140
143
 
141
144
  Profiles and per-app settings. → [Account](https://github.com/roman-16/proton-cli/blob/main/docs/commands/account.md)
142
145
 
143
- [`proton-cli api`](https://github.com/roman-16/proton-cli/blob/main/docs/commands/api.md) reaches any endpoint the commands don't.
146
+ [`proton api`](https://github.com/roman-16/proton-cli/blob/main/docs/commands/api.md) reaches any endpoint the commands don't.
144
147
 
145
148
  ## Automate it
146
149
 
147
150
  ```bash
148
151
  # creating something prints its new ID to stdout
149
- ID=$(proton-cli mail settings labels create --name Work --color "#8080FF")
152
+ ID=$(proton mail settings labels create --name Work --color purple)
150
153
 
151
154
  # every list is an envelope keyed by its plural name, always with a count
152
- proton-cli mail messages list --unread --output json | jq -r '.messages[].subject'
153
- proton-cli drive items list /Backup --output json | jq '[.items[].size] | add'
155
+ proton mail messages list --unread --output json | jq -r '.messages[].subject'
156
+ proton drive items list /Backup --output json | jq '[.items[].size] | add'
154
157
 
155
158
  # stream through, no temporary files
156
- pg_dump mydb | gzip | proton-cli drive items upload - /Backups/db.sql.gz
159
+ pg_dump mydb | gzip | proton drive items upload - /Backups/db.sql.gz
157
160
 
158
161
  # archive a folder to disk as ordinary .eml files
159
- proton-cli mail messages export --folder archive --all --output-dir ./mail-backup
162
+ proton mail messages export --folder archive --all --output-dir ./mail-backup
160
163
 
161
164
  # check what a bulk change would touch before it happens
162
- proton-cli mail messages trash --from newsletter@example.com --older-than 90d --dry-run
165
+ proton mail messages trash --from newsletter@example.com --older-than 90d --dry-run
163
166
  ```
164
167
 
165
168
  Data goes to stdout and progress to stderr, so redirects stay clean. Exit codes tell user error, auth failure, not-found, ambiguity, and network trouble apart, so scripts can react to each. → [Scripting](https://github.com/roman-16/proton-cli/blob/main/docs/scripting.md)
@@ -170,7 +173,7 @@ Anything that removes permanently, or that removes what a filter picked out rath
170
173
 
171
174
  Your password never reaches Proton: login is SRP, and the key password it derives stays local and unlocks your PGP keys in memory. Mail, files, events, contacts, and Pass items are decrypted after they arrive and encrypted before they leave, with the same key hierarchy the web clients use. Signatures on incoming mail are checked and reported.
172
175
 
173
- The saved session keeps your key password encrypted with a key held server-side, so revoking the session from any Proton app makes a leaked copy of the file useless. proton-cli is unaudited, and the whole storage model is written down in [Security](https://github.com/roman-16/proton-cli/blob/main/SECURITY.md). The mechanics are in [How it works](https://github.com/roman-16/proton-cli/blob/main/docs/how-it-works.md).
176
+ The saved session keeps your key password encrypted with a key held server-side, so revoking the session from any Proton app makes a leaked copy of the file useless. proton is unaudited, and the whole storage model is written down in [Security](https://github.com/roman-16/proton-cli/blob/main/SECURITY.md). The mechanics are in [How it works](https://github.com/roman-16/proton-cli/blob/main/docs/how-it-works.md).
174
177
 
175
178
  ## Documentation
176
179
 
@@ -189,11 +192,13 @@ Everything lives in [`docs/`](https://github.com/roman-16/proton-cli/blob/main/d
189
192
  | [How it works](https://github.com/roman-16/proton-cli/blob/main/docs/how-it-works.md) | Login, keys, what's encrypted with what |
190
193
  | [Limitations](https://github.com/roman-16/proton-cli/blob/main/docs/limitations.md) | Platform constraints and gaps |
191
194
 
195
+ [`CHANGELOG.md`](https://github.com/roman-16/proton-cli/blob/main/CHANGELOG.md) records what each version changed.
196
+
192
197
  ## Good to know
193
198
 
194
199
  - **Search lags a few seconds.** Proton's index is eventually consistent, so act on the ID a command printed rather than searching for the same subject again.
195
200
  - **CAPTCHAs need a desktop.** Proton occasionally asks for human verification at login, which opens a small window. On a headless machine, log in elsewhere and copy the session. See [Human verification](https://github.com/roman-16/proton-cli/blob/main/docs/human-verification.md).
196
- - **Colors are Proton's.** Labels, folders, calendars, and groups accept only the 20 accent colors; an invalid `--color` prints the whole palette.
201
+ - **Label colors are Proton's; the interface's colors are yours.** Labels, folders, calendars, and groups accept only the 20 accent colors, by name (`--color purple`) or hex (`--color "#8080FF"`); an invalid `--color` prints the whole palette, and lists show the swatch and the name rather than a hex code. Everything proton colors on its own account it asks for by name, so the shades come from your terminal theme rather than from here.
197
202
  - **Folders and labels are different.** A message lives in one folder and carries any number of labels, so `move --into` and `label --label` are separate verbs.
198
203
 
199
204
  ## Contributing
@@ -202,7 +207,7 @@ Bug reports, ideas, and pull requests are all welcome. [`CONTRIBUTING.md`](https
202
207
 
203
208
  ## Disclaimer
204
209
 
205
- proton-cli is an independent, community-built project. It is not endorsed by, affiliated with, or supported by Proton AG. Proton is a trademark of Proton AG. Use it at your own risk, and mind Proton's terms of service.
210
+ proton is an independent, community-built project. It is not endorsed by, affiliated with, or supported by Proton AG. Proton is a trademark of Proton AG. Use it at your own risk, and mind Proton's terms of service.
206
211
 
207
212
  ## License
208
213
 
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roman-16/proton-cli-win32-x64",
3
- "version": "2.2.3",
3
+ "version": "2.4.0",
4
4
  "description": "proton-cli native binary for win32-x64",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/roman-16/proton-cli",