Commit graph

427 commits

Author SHA1 Message Date
ayn2op
eab73a3b19
feat: impersonate browser TLS fingerprints (#824) 2026-08-04 21:04:22 -04:00
ayn2op
50850f5e13
feat(chat)!: use terminal notifications (#823) 2026-07-31 21:03:02 -04:00
ayn2op
ccfaaa52e8 fix(chat): gate message deletion by permissions 2026-07-30 14:44:40 -04:00
ayn2op
ec0e68ef54
feat(markdown): mask spoilers (#820) 2026-07-30 14:32:26 -04:00
ayn2op
d13ce0ea4a
fix(ui): use dedicated modal model (#821) 2026-07-30 14:32:05 -04:00
ayn2op
226936310d
feat(chat): render message reactions (#819) 2026-07-30 02:22:21 -04:00
ayn2op
1d21a4b0c0 build: bump client build number 2026-07-27 15:31:00 -04:00
ayn2op
aa27aea627 refactor(config): cache config directory 2026-07-20 21:19:10 -04:00
RedSlime.
2501deac82
feat(chat): update dm node on presence update (#814) 2026-07-19 04:08:31 -04:00
ayn2op
84c6615956 fix(login): forward token submit 2026-07-09 15:38:28 -04:00
ayn2op
391f3b974c refactor(ui): replace tview modal usage 2026-07-09 04:12:33 -04:00
ayn2op
c1af115e27 refactor(chat): inline clipboard callbacks 2026-07-08 20:24:38 -04:00
ayn2op
8d8e855777 fix(chat): hide redundant help actions 2026-07-08 20:23:51 -04:00
ayn2op
235cecb3eb clipboard: ignore Write return value 2026-07-08 05:13:17 -04:00
ayn2op
37a6394826 refactor(chat): extract mentions list 2026-07-08 01:48:19 -04:00
ayn2op
6c3727cb7c refactor(chat): avoid blocking member chunks 2026-07-03 18:31:49 -04:00
ayn2op
bb3ee02edc refactor(cache): remove exists lookup 2026-07-02 21:37:15 -04:00
ayn2op
825745e9e2 refactor(consts): lazily initialize cache dir 2026-07-02 20:59:50 -04:00
ayn2op
e211bd8807 feat(http): go generate client build number 2026-07-02 18:09:08 -04:00
ayn2op
c7edbc3947 fix(markdown): apply combined inline styles 2026-06-30 17:27:55 -04:00
ayn2op
70584c7694 http: go generate client build number 2026-06-25 13:03:31 -04:00
ayn2op
e6c7f26fcd refactor: use forked arikawa and ningen 2026-06-19 18:00:39 -04:00
ayn2op
695576c5b1 refactor: switch to upstream clipboard 2026-06-19 12:34:59 -04:00
ayn2op
6a930ac2ac refactor(chat): use gateway identifier constructor 2026-06-16 03:53:20 -04:00
ayn2op
a8e9aa92f8 fix(chat): omit large threshold 2026-06-16 02:35:54 -04:00
ayn2op
5e8bbe1351 fix(http): update priority header 2026-06-16 02:30:31 -04:00
ayn2op
493b8c2409 refactor(http): split discord client properties 2026-06-16 01:35:46 -04:00
Evan Genske
ab731f06fd
feat(chat): add sidebar.width_percent field for guilds tree width (#805)
Co-authored-by: ayn2op <ayn2op@gmail.com>
2026-06-15 21:46:25 -04:00
ayn2op
6a2a5fa7fb feat(http): generate client build number instead of hardcoding it 2026-06-14 22:10:25 -04:00
ayn2op
30ee90a8ef refactor(ui): match tview getter api 2026-06-13 18:29:52 -04:00
ayn2op
85ce6cae34 refactor(ui): match tview.InputField api 2026-06-12 21:07:42 -04:00
ayn2op
5f72acbfeb
refactor(config)!: replace NavigationKeybinds with SelectionKeybinds (#802) 2026-06-10 21:22:21 -04:00
ayn2op
6eb4b56122
refactor!: rename message input to composer (#801) 2026-06-08 22:45:51 -04:00
ayn2op
c96474bc9c refactor(ui,chat,markdown): use tview.MergeStyle and uniseg.StringWidth 2026-06-04 19:48:46 -04:00
ayn2op
3cbbce6aeb refactor(chat): drive guilds tree navigation through tree keybinds 2026-06-04 17:41:19 -04:00
ayn2op
3089000935 refactor(chat): migrate guilds tree to tview tree package 2026-06-02 23:53:44 -04:00
ayn2op
318bf731ec
feat(chat): auto-expanding message input with shift+enter newline (#799) 2026-05-27 16:03:25 -04:00
ayn2op
19907d7889
feat(chat): forward Tab to textarea when mentions list is hidden (#800) 2026-05-27 15:57:38 -04:00
ayn2op
15f95fb617 refactor(chat): add isMe helper to dedupe self-author checks 2026-05-24 19:25:27 -04:00
ayn2op
83f9c049cf refactor(chat): return comma-ok from selectedMessage and SelectedChannel 2026-05-24 19:10:19 -04:00
ayn2op
b9152f8b21 refactor(config): make config.toml the sole source of keybind keys
defaultKeybinds() now supplies only help descriptions; the actual keys
are read from the embedded config.toml at load time, eliminating the
duplicate key definitions that could drift out of sync.

Add a test that walks every keybind after loading the defaults and fails
if any is missing a key (config.toml) or description (defaultKeybinds).
2026-05-22 23:12:15 -04:00
ayn2op
d3b5c21263 refactor(qr): match QR pixel pairs to half-block glyphs 2026-05-21 21:27:08 -04:00
ayn2op
2d027f54c3 refactor(chat): collapse forum-thread filtering with isThread 2026-05-21 21:21:25 -04:00
ayn2op
1760b13f3c refactor(chat): drop redundant comments in onReady 2026-05-21 21:17:24 -04:00
ayn2op
fcf6c01c39 refactor(markdown): separate code-block header choice from rendering 2026-05-21 20:48:07 -04:00
ayn2op
7f34127560 refactor(chat): flatten open() into a switch 2026-05-21 20:42:01 -04:00
ayn2op
309f24e728 refactor(chat): extract isMentionChar predicate 2026-05-21 20:37:28 -04:00
ayn2op
bcac58c7cf refactor(chat): extract pure cursorAfterDelete helper 2026-05-21 20:35:37 -04:00
ayn2op
5bcd124361 refactor(config): flatten config-file load into a switch 2026-05-21 20:34:32 -04:00
ayn2op
4d59013a71 refactor(config): collapse multi-line slog call 2026-05-21 20:34:12 -04:00