@chojs23/concord 2.1.12 → 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 +41 -5
- package/README.md +50 -25
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
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
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
- _(tui)_ Preserve member search selection across member cache refreshes by @chojs23
|
|
24
|
+
- _(tui)_ Prevent popup residue on terminal images by @chojs23
|
|
25
|
+
- Retain member cache for more recent guilds by @chojs23
|
|
26
|
+
|
|
27
|
+
### Documentation
|
|
28
|
+
|
|
29
|
+
- Update readme by @chojs23
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
- Add --check-config validation command by @chojs23
|
|
34
|
+
- _(tui)_ Keep voice indicators visible after name truncation by @chojs23
|
|
35
|
+
|
|
5
36
|
## [2.1.12] - 2026-06-07
|
|
6
37
|
|
|
7
38
|
### Bug Fixes
|
|
@@ -690,9 +721,18 @@ All notable changes to this project will be documented in this file.
|
|
|
690
721
|
|
|
691
722
|
### Bug Fixes
|
|
692
723
|
|
|
693
|
-
- _(flake)_ Use crane (#4) in [#4](https://github.com/chojs23/concord/pull/4) by @M4jor-Tom
|
|
694
724
|
- Keep original image width:height ratio (#6) in [#6](https://github.com/chojs23/concord/pull/6) by @chojs23
|
|
695
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
|
+
|
|
696
736
|
### Documentation
|
|
697
737
|
|
|
698
738
|
- Add CONTRIBUTING.md by @chojs23
|
|
@@ -707,10 +747,6 @@ All notable changes to this project will be documented in this file.
|
|
|
707
747
|
|
|
708
748
|
- Enable generated github release notes by @chojs23
|
|
709
749
|
|
|
710
|
-
### Cd
|
|
711
|
-
|
|
712
|
-
- Chain crates publish after release by @chojs23
|
|
713
|
-
|
|
714
750
|
### New Contributors
|
|
715
751
|
|
|
716
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
|
|
|
@@ -191,7 +195,7 @@ Tokens are saved under Concord's config directory in plain text. See the Securit
|
|
|
191
195
|
- Direct message shortcuts for copy, reply, edit, delete, reactions, URL opening,
|
|
192
196
|
and image viewing. More message actions are available from the action menu.
|
|
193
197
|
|
|
194
|
-
#### Markdown Rendering
|
|
198
|
+
#### Markdown Rendering & Code syntax highlighting
|
|
195
199
|
|
|
196
200
|

|
|
197
201
|
|
|
@@ -202,6 +206,7 @@ Concord renders a practical subset of Discord-style Markdown in message bodies:
|
|
|
202
206
|
- Bullets: `- item` and `* item`
|
|
203
207
|
- Inline styles: `**bold**`, `*italic*`, and `` `inline code` ``
|
|
204
208
|
- Fenced code blocks with optional language labels, rendered as compact boxes
|
|
209
|
+
with syntax highlighting
|
|
205
210
|
- Raw URLs and markdown link destinations are underlined and can be opened from message actions
|
|
206
211
|
|
|
207
212
|
### Reactions & Polls
|
|
@@ -227,8 +232,9 @@ You can toggle image viewing on or off in the configuration file. When image vie
|
|
|
227
232
|
### Members & Profiles
|
|
228
233
|
|
|
229
234
|
- Member list with grouping
|
|
235
|
+
- Search members in server
|
|
230
236
|
- Presence indicators (Online, Idle, DND, Offline)
|
|
231
|
-
-
|
|
237
|
+
- Configure user profile and custom activity status
|
|
232
238
|
|
|
233
239
|
### Typing Indicators & Read State
|
|
234
240
|
|
|
@@ -272,7 +278,7 @@ With default vim-style navigation:
|
|
|
272
278
|
| `/` | Filter Guilds/Channels, search Messages/Members |
|
|
273
279
|
| `Space` | Open leader shortcut window |
|
|
274
280
|
| `i` | Text insert mode |
|
|
275
|
-
| `Esc`
|
|
281
|
+
| `Esc` / `q` | Close popup, cancel mode, or go back |
|
|
276
282
|
| `q` | Quit Concord |
|
|
277
283
|
|
|
278
284
|
`Ctrl+n` and `Ctrl+p` are fixed row movement keys. The default `j` and `k`
|
|
@@ -365,14 +371,14 @@ Voice commands:
|
|
|
365
371
|
You can paste copied files into the composer to attach them. Pending uploads
|
|
366
372
|
are shown above the input before sending.
|
|
367
373
|
|
|
368
|
-
| Shortcut
|
|
369
|
-
|
|
|
370
|
-
| `Ctrl+v`
|
|
371
|
-
| `Ctrl+e`
|
|
372
|
-
| `Ctrl+c`
|
|
373
|
-
| `Ctrl+Left`/ `Ctrl+Right`
|
|
374
|
-
| `Ctrl+Backspace
|
|
375
|
-
| `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 |
|
|
376
382
|
|
|
377
383
|
#### Mention picker
|
|
378
384
|
|
|
@@ -405,6 +411,13 @@ Otherwise it uses the platform config directory. The usual fallback is
|
|
|
405
411
|
matching files under `~/Library/Application Support/concord/` on macOS, and the
|
|
406
412
|
roaming AppData config directory on Windows.
|
|
407
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
|
+
|
|
408
421
|
You can change some configuration from the in-app Options menu, and Concord saves them back
|
|
409
422
|
to `config.toml`. Key settings are read from `keymap.toml`.
|
|
410
423
|
|
|
@@ -435,6 +448,11 @@ circular_avatars = false
|
|
|
435
448
|
# Send custom emoji your account cannot use directly as image links.
|
|
436
449
|
emojis_as_links = false
|
|
437
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
|
+
|
|
438
456
|
[notifications]
|
|
439
457
|
# Show desktop notifications for Discord messages that pass notification rules.
|
|
440
458
|
desktop_notifications = true
|
|
@@ -481,6 +499,12 @@ voice_output_volume = 100
|
|
|
481
499
|
This setting only applies to attachment, embed, and attachment viewer previews.
|
|
482
500
|
Avatars and custom emoji keep their separate small-image behavior.
|
|
483
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
|
+
|
|
484
508
|
<details>
|
|
485
509
|
<summary>Default keymap config</summary>
|
|
486
510
|
|
|
@@ -489,6 +513,7 @@ Avatars and custom emoji keep their separate small-image behavior.
|
|
|
489
513
|
leader = "space"
|
|
490
514
|
StartComposer = "i"
|
|
491
515
|
OpenPaneFilter = "/"
|
|
516
|
+
ClosePopup = "q"
|
|
492
517
|
FocusGuildPane = "1"
|
|
493
518
|
FocusChannelPane = "2"
|
|
494
519
|
FocusMessagePane = "3"
|
|
@@ -563,13 +588,13 @@ ShowProfile = "p"
|
|
|
563
588
|
[keymap.composer]
|
|
564
589
|
OpenEditor = "<C-e>"
|
|
565
590
|
PasteClipboard = "<C-v>"
|
|
566
|
-
InsertNewline = { keys = ["<S-enter>", "<C-enter>", "<A-enter>"] }
|
|
591
|
+
InsertNewline = { keys = ["<C-j>", "<S-enter>", "<C-enter>", "<A-enter>"] }
|
|
567
592
|
Submit = "enter"
|
|
568
593
|
Close = "esc"
|
|
569
594
|
ClearInput = "<C-c>"
|
|
570
595
|
RemoveLastAttachment = "delete"
|
|
571
596
|
DeletePreviousChar = "backspace"
|
|
572
|
-
DeletePreviousWord = { keys = ["<C-backspace>", "<C-w>"] }
|
|
597
|
+
DeletePreviousWord = { keys = ["<A-backspace>", "<C-backspace>", "<C-w>"] }
|
|
573
598
|
MoveCursorUp = "up"
|
|
574
599
|
MoveCursorDown = "down"
|
|
575
600
|
MoveCursorWordLeft = "<C-left>"
|
|
@@ -630,10 +655,10 @@ No. If Discord requires a CAPTCHA during login, use token login instead.
|
|
|
630
655
|
|
|
631
656
|
## Security
|
|
632
657
|
|
|
633
|
-
-
|
|
634
|
-
- On
|
|
635
|
-
-
|
|
636
|
-
-
|
|
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.
|
|
637
662
|
|
|
638
663
|
## Contributing
|
|
639
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"
|