@roman-16/proton-cli-win32-x64 2.3.0 → 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,13 +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 upload --if-exists replace ./report.pdf /Documents
90
- proton-cli drive items download /Documents/report.pdf --output-dir .
91
- proton-cli drive items move /Documents/report.pdf --into /Archive
92
- proton-cli drive share link /Documents/report.pdf --expires 7d --password hunter2
93
- 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
94
96
  ```
95
97
 
96
98
  Revisions, sharing with people, and photo albums. → [Drive](https://github.com/roman-16/proton-cli/blob/main/docs/commands/drive.md)
@@ -98,12 +100,12 @@ Revisions, sharing with people, and photo albums. → [Drive](https://github.com
98
100
  ### Calendar
99
101
 
100
102
  ```bash
101
- proton-cli calendar events list --start 2026-04-15 --end 2026-04-30
102
- proton-cli calendar events create --title Dentist --start 2026-04-16T14:00 --duration 1h
103
- proton-cli calendar events create --title Standup --start 2026-04-16T09:00 --duration 15m --rrule "FREQ=WEEKLY;COUNT=10" --remind 15m
104
- proton-cli calendar events update 4f2a1b9c@2026-04-22T09:00 --start 2026-04-22T10:30
105
- proton-cli calendar events delete 4f2a1b9c@2026-05-04T09:00 --future
106
- 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
107
109
  ```
108
110
 
109
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)
@@ -111,10 +113,10 @@ Recurring events occurrence by occurrence, your own calendars, all-day events, a
111
113
  ### Pass
112
114
 
113
115
  ```bash
114
- proton-cli pass items list --vault Work
115
- proton-cli pass items get github.com
116
- proton-cli pass items create --name GitHub --username roman --password "$(openssl rand -base64 24)" --url github.com
117
- 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
118
120
  ```
119
121
 
120
122
  Notes, cards, SSH keys, and identities. → [Pass](https://github.com/roman-16/proton-cli/blob/main/docs/commands/pass.md)
@@ -122,10 +124,10 @@ Notes, cards, SSH keys, and identities. → [Pass](https://github.com/roman-16/p
122
124
  ### Contacts
123
125
 
124
126
  ```bash
125
- proton-cli contacts list
126
- proton-cli contacts create --name "Jane Roe" --email jane@example.com
127
- proton-cli contacts keys pin jane --key jane-pubkey.asc
128
- 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
129
131
  ```
130
132
 
131
133
  Multiple addresses, organizations, and birthdays. → [Contacts](https://github.com/roman-16/proton-cli/blob/main/docs/commands/contacts.md)
@@ -133,34 +135,34 @@ Multiple addresses, organizations, and birthdays. → [Contacts](https://github.
133
135
  ### Account
134
136
 
135
137
  ```bash
136
- proton-cli account get
137
- proton-cli account sessions list
138
- proton-cli account settings set locale de_AT
139
- 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
140
142
  ```
141
143
 
142
144
  Profiles and per-app settings. → [Account](https://github.com/roman-16/proton-cli/blob/main/docs/commands/account.md)
143
145
 
144
- [`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.
145
147
 
146
148
  ## Automate it
147
149
 
148
150
  ```bash
149
151
  # creating something prints its new ID to stdout
150
- ID=$(proton-cli mail settings labels create --name Work --color purple)
152
+ ID=$(proton mail settings labels create --name Work --color purple)
151
153
 
152
154
  # every list is an envelope keyed by its plural name, always with a count
153
- proton-cli mail messages list --unread --output json | jq -r '.messages[].subject'
154
- 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'
155
157
 
156
158
  # stream through, no temporary files
157
- 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
158
160
 
159
161
  # archive a folder to disk as ordinary .eml files
160
- proton-cli mail messages export --folder archive --all --output-dir ./mail-backup
162
+ proton mail messages export --folder archive --all --output-dir ./mail-backup
161
163
 
162
164
  # check what a bulk change would touch before it happens
163
- 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
164
166
  ```
165
167
 
166
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)
@@ -171,7 +173,7 @@ Anything that removes permanently, or that removes what a filter picked out rath
171
173
 
172
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.
173
175
 
174
- 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).
175
177
 
176
178
  ## Documentation
177
179
 
@@ -196,7 +198,7 @@ Everything lives in [`docs/`](https://github.com/roman-16/proton-cli/blob/main/d
196
198
 
197
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.
198
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).
199
- - **Colors are Proton's.** 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. Lists show the swatch and the name rather than a hex code.
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.
200
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.
201
203
 
202
204
  ## Contributing
@@ -205,7 +207,7 @@ Bug reports, ideas, and pull requests are all welcome. [`CONTRIBUTING.md`](https
205
207
 
206
208
  ## Disclaimer
207
209
 
208
- 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.
209
211
 
210
212
  ## License
211
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.3.0",
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",