@chojs23/concord 2.1.13 → 2.2.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/CHANGELOG.md +25 -6
- package/README.md +46 -23
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## [2.
|
|
5
|
+
## [2.2.0] - 2026-06-07
|
|
6
|
+
|
|
7
|
+
Concord save token in system keychain and use it for authentication, so you may need to re-login after this update.
|
|
8
|
+
|
|
9
|
+
### Documentation
|
|
10
|
+
|
|
11
|
+
- Update homebrew installation by @chojs23
|
|
12
|
+
- Update image by @chojs23
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- Wrap message text at word boundaries (#174) in [#174](https://github.com/chojs23/concord/pull/174) by @chojs23
|
|
17
|
+
- Use system keychain and move ui state to XDG_STATE_HOME (#173) in [#173](https://github.com/chojs23/concord/pull/173) by @chojs23
|
|
18
|
+
|
|
19
|
+
## [2.1.13] - 2026-06-07
|
|
6
20
|
|
|
7
21
|
### Bug Fixes
|
|
8
22
|
|
|
@@ -707,9 +721,18 @@ All notable changes to this project will be documented in this file.
|
|
|
707
721
|
|
|
708
722
|
### Bug Fixes
|
|
709
723
|
|
|
710
|
-
- _(flake)_ Use crane (#4) in [#4](https://github.com/chojs23/concord/pull/4) by @M4jor-Tom
|
|
711
724
|
- Keep original image width:height ratio (#6) in [#6](https://github.com/chojs23/concord/pull/6) by @chojs23
|
|
712
725
|
|
|
726
|
+
### Cd
|
|
727
|
+
|
|
728
|
+
- Chain crates publish after release by @chojs23
|
|
729
|
+
|
|
730
|
+
## [1.1.0] - 2026-05-09
|
|
731
|
+
|
|
732
|
+
### Bug Fixes
|
|
733
|
+
|
|
734
|
+
- _(flake)_ Use crane (#4) in [#4](https://github.com/chojs23/concord/pull/4) by @M4jor-Tom
|
|
735
|
+
|
|
713
736
|
### Documentation
|
|
714
737
|
|
|
715
738
|
- Add CONTRIBUTING.md by @chojs23
|
|
@@ -724,10 +747,6 @@ All notable changes to this project will be documented in this file.
|
|
|
724
747
|
|
|
725
748
|
- Enable generated github release notes by @chojs23
|
|
726
749
|
|
|
727
|
-
### Cd
|
|
728
|
-
|
|
729
|
-
- Chain crates publish after release by @chojs23
|
|
730
|
-
|
|
731
750
|
### New Contributors
|
|
732
751
|
|
|
733
752
|
- @M4jor-Tom made their first contribution in [#4](https://github.com/chojs23/concord/pull/4)
|
package/README.md
CHANGED
|
@@ -20,6 +20,12 @@ Concord is a feature-rich TUI (terminal user interface) client for Discord, writ
|
|
|
20
20
|
|
|
21
21
|
### Homebrew
|
|
22
22
|
|
|
23
|
+
```sh
|
|
24
|
+
brew install concord
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Or with the tap for the latest version:
|
|
28
|
+
|
|
23
29
|
```sh
|
|
24
30
|
brew install chojs23/tap/concord
|
|
25
31
|
```
|
|
@@ -40,7 +46,9 @@ The npm package installs a prebuilt binary from the GitHub Release artifacts.
|
|
|
40
46
|
|
|
41
47
|
### Cargo
|
|
42
48
|
|
|
43
|
-
Install native
|
|
49
|
+
Install native dependencies first.
|
|
50
|
+
|
|
51
|
+
On macOS with Homebrew:
|
|
44
52
|
|
|
45
53
|
```sh
|
|
46
54
|
brew install opus pkg-config
|
|
@@ -58,12 +66,6 @@ On Debian or Ubuntu:
|
|
|
58
66
|
sudo apt install libopus-dev libasound2-dev pkg-config
|
|
59
67
|
```
|
|
60
68
|
|
|
61
|
-
On macOS with Homebrew:
|
|
62
|
-
|
|
63
|
-
```sh
|
|
64
|
-
brew install opus pkg-config
|
|
65
|
-
```
|
|
66
|
-
|
|
67
69
|
```sh
|
|
68
70
|
cargo install concord --locked
|
|
69
71
|
```
|
|
@@ -162,7 +164,9 @@ aplay -D pulse /usr/share/sounds/alsa/Front_Center.wav
|
|
|
162
164
|
|
|
163
165
|
Email and QR code logins may trigger a CAPTCHA challenge on Discord's side. We cannot solve that, so I strongly recommend using token authentication.
|
|
164
166
|
|
|
165
|
-
|
|
167
|
+
By default, tokens are saved in the system keychain when available. In the
|
|
168
|
+
default `auto` mode, Concord falls back to its state directory when keychain
|
|
169
|
+
storage is unavailable. See the Security section below for details.
|
|
166
170
|
|
|
167
171
|
### Guilds & Channels
|
|
168
172
|
|
|
@@ -274,7 +278,7 @@ With default vim-style navigation:
|
|
|
274
278
|
| `/` | Filter Guilds/Channels, search Messages/Members |
|
|
275
279
|
| `Space` | Open leader shortcut window |
|
|
276
280
|
| `i` | Text insert mode |
|
|
277
|
-
| `Esc`
|
|
281
|
+
| `Esc` / `q` | Close popup, cancel mode, or go back |
|
|
278
282
|
| `q` | Quit Concord |
|
|
279
283
|
|
|
280
284
|
`Ctrl+n` and `Ctrl+p` are fixed row movement keys. The default `j` and `k`
|
|
@@ -367,14 +371,14 @@ Voice commands:
|
|
|
367
371
|
You can paste copied files into the composer to attach them. Pending uploads
|
|
368
372
|
are shown above the input before sending.
|
|
369
373
|
|
|
370
|
-
| Shortcut
|
|
371
|
-
|
|
|
372
|
-
| `Ctrl+v`
|
|
373
|
-
| `Ctrl+e`
|
|
374
|
-
| `Ctrl+c`
|
|
375
|
-
| `Ctrl+Left`/ `Ctrl+Right`
|
|
376
|
-
| `Ctrl+Backspace
|
|
377
|
-
| `Delete`
|
|
374
|
+
| Shortcut | Action | Description |
|
|
375
|
+
| -------------------------------------------- | ----------------- | ---------------------------------------------------------------- |
|
|
376
|
+
| `Ctrl+v` | paste clipboard | Attach copied files or images when present, otherwise paste text |
|
|
377
|
+
| `Ctrl+e` | open $EDITOR | Open $EDITOR on the current draft for long editing |
|
|
378
|
+
| `Ctrl+c` | clear | Clear current draft |
|
|
379
|
+
| `Ctrl+Left`/ `Ctrl+Right` | Jump word | Jump the cursor by word |
|
|
380
|
+
| `Alt+Backspace`, `Ctrl+Backspace` / `Ctrl+w` | Delete word | Delete the word before the cursor |
|
|
381
|
+
| `Delete` | Detach attachment | Removes the last pending attachment |
|
|
378
382
|
|
|
379
383
|
#### Mention picker
|
|
380
384
|
|
|
@@ -407,6 +411,13 @@ Otherwise it uses the platform config directory. The usual fallback is
|
|
|
407
411
|
matching files under `~/Library/Application Support/concord/` on macOS, and the
|
|
408
412
|
roaming AppData config directory on Windows.
|
|
409
413
|
|
|
414
|
+
Local UI state and plaintext fallback credentials are stored under Concord's
|
|
415
|
+
state directory instead. If `XDG_STATE_HOME` is set, Concord uses
|
|
416
|
+
`$XDG_STATE_HOME/concord/state.toml` and
|
|
417
|
+
`$XDG_STATE_HOME/concord/credentials.toml`. Otherwise it uses
|
|
418
|
+
`~/.local/state/concord/state.toml` and
|
|
419
|
+
`~/.local/state/concord/credentials.toml`.
|
|
420
|
+
|
|
410
421
|
You can change some configuration from the in-app Options menu, and Concord saves them back
|
|
411
422
|
to `config.toml`. Key settings are read from `keymap.toml`.
|
|
412
423
|
|
|
@@ -437,6 +448,11 @@ circular_avatars = false
|
|
|
437
448
|
# Send custom emoji your account cannot use directly as image links.
|
|
438
449
|
emojis_as_links = false
|
|
439
450
|
|
|
451
|
+
[credentials]
|
|
452
|
+
# Credential storage: auto, keychain, or plain.
|
|
453
|
+
# auto tries the system keychain first and falls back to the state file.
|
|
454
|
+
store = "auto"
|
|
455
|
+
|
|
440
456
|
[notifications]
|
|
441
457
|
# Show desktop notifications for Discord messages that pass notification rules.
|
|
442
458
|
desktop_notifications = true
|
|
@@ -483,6 +499,12 @@ voice_output_volume = 100
|
|
|
483
499
|
This setting only applies to attachment, embed, and attachment viewer previews.
|
|
484
500
|
Avatars and custom emoji keep their separate small-image behavior.
|
|
485
501
|
|
|
502
|
+
`credentials.store` supports these values:
|
|
503
|
+
|
|
504
|
+
- `auto`: try the system keychain first, then fall back to the state-file credential store.
|
|
505
|
+
- `keychain`: use only the system keychain. If keychain storage is unavailable, the token is not saved.
|
|
506
|
+
- `plain`: use only the plain-text state-file credential store.
|
|
507
|
+
|
|
486
508
|
<details>
|
|
487
509
|
<summary>Default keymap config</summary>
|
|
488
510
|
|
|
@@ -491,6 +513,7 @@ Avatars and custom emoji keep their separate small-image behavior.
|
|
|
491
513
|
leader = "space"
|
|
492
514
|
StartComposer = "i"
|
|
493
515
|
OpenPaneFilter = "/"
|
|
516
|
+
ClosePopup = "q"
|
|
494
517
|
FocusGuildPane = "1"
|
|
495
518
|
FocusChannelPane = "2"
|
|
496
519
|
FocusMessagePane = "3"
|
|
@@ -565,13 +588,13 @@ ShowProfile = "p"
|
|
|
565
588
|
[keymap.composer]
|
|
566
589
|
OpenEditor = "<C-e>"
|
|
567
590
|
PasteClipboard = "<C-v>"
|
|
568
|
-
InsertNewline = { keys = ["<S-enter>", "<C-enter>", "<A-enter>"] }
|
|
591
|
+
InsertNewline = { keys = ["<C-j>", "<S-enter>", "<C-enter>", "<A-enter>"] }
|
|
569
592
|
Submit = "enter"
|
|
570
593
|
Close = "esc"
|
|
571
594
|
ClearInput = "<C-c>"
|
|
572
595
|
RemoveLastAttachment = "delete"
|
|
573
596
|
DeletePreviousChar = "backspace"
|
|
574
|
-
DeletePreviousWord = { keys = ["<C-backspace>", "<C-w>"] }
|
|
597
|
+
DeletePreviousWord = { keys = ["<A-backspace>", "<C-backspace>", "<C-w>"] }
|
|
575
598
|
MoveCursorUp = "up"
|
|
576
599
|
MoveCursorDown = "down"
|
|
577
600
|
MoveCursorWordLeft = "<C-left>"
|
|
@@ -632,10 +655,10 @@ No. If Discord requires a CAPTCHA during login, use token login instead.
|
|
|
632
655
|
|
|
633
656
|
## Security
|
|
634
657
|
|
|
635
|
-
-
|
|
636
|
-
- On
|
|
637
|
-
-
|
|
638
|
-
-
|
|
658
|
+
- By default, tokens are stored in the system keychain when available.
|
|
659
|
+
- On Linux, keychain storage uses Secret Service when a compatible service is available.
|
|
660
|
+
- In `credentials.store = "auto"`, Concord falls back to **plain text** credentials under Concord's state directory when keychain storage is unavailable. In `keychain` mode, Concord does not fall back to plain storage. Keep fallback credential files secure and do not share them. You can use a token from that file to log in to the official Discord client, so treat it like a password.
|
|
661
|
+
- On Unix, the fallback credential's parent directory is created with `0700` and the credential file with `0600` permissions.
|
|
639
662
|
|
|
640
663
|
## Contributing
|
|
641
664
|
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"hasInstallScript": true,
|
|
24
24
|
"license": "GPL-3.0-only",
|
|
25
25
|
"name": "@chojs23/concord",
|
|
26
|
-
"version": "2.
|
|
26
|
+
"version": "2.2.0"
|
|
27
27
|
},
|
|
28
28
|
"node_modules/@isaacs/cliui": {
|
|
29
29
|
"engines": {
|
|
@@ -542,5 +542,5 @@
|
|
|
542
542
|
}
|
|
543
543
|
},
|
|
544
544
|
"requires": true,
|
|
545
|
-
"version": "2.
|
|
545
|
+
"version": "2.2.0"
|
|
546
546
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/chojs23/concord/releases/download/v2.
|
|
3
|
+
"https://github.com/chojs23/concord/releases/download/v2.2.0"
|
|
4
4
|
],
|
|
5
5
|
"bin": {
|
|
6
6
|
"concord": "run-concord.js"
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"zipExt": ".tar.xz"
|
|
94
94
|
}
|
|
95
95
|
},
|
|
96
|
-
"version": "2.
|
|
96
|
+
"version": "2.2.0",
|
|
97
97
|
"volta": {
|
|
98
98
|
"node": "18.14.1",
|
|
99
99
|
"npm": "9.5.0"
|