Commit graph

59 commits

Author SHA1 Message Date
ayn2op
f45dfd58ad fix(chat): expire typing indicators by deadline instead of timestamp equality
On Windows the coarse clock can return the same time for two addTyper
calls, so a stale expiry matched the extended indicator and removed it
early. Compare the stored deadline against the current time instead.
2026-09-27 19:19:07 -04:00
ayn2op
30810afde2 refactor(ui): migrate to declarative tview 2026-09-27 18:12:18 -04:00
ayn2op
219e34aa78 refactor(ui): update tview and migrate to Model.Init 2026-09-24 18:09:16 -04:00
ayn2op
7fb5e8fdf7
feat(config): add sidebar.visible field to hide sidebar (guilds tree) on startup (#839) 2026-09-20 11:34:15 -04:00
ayn2op
c38fc3d9c0 refactor(ui): bump tview and adapt to tview.Screen API 2026-09-09 18:34:29 -04:00
ayn2op
091d4711ea fix(chat): preserve focus without guilds tree 2026-09-02 20:24:03 -04:00
ayn2op
5df8f14d7b refactor(ui): modularize guilds tree 2026-08-31 22:35:23 -04:00
ayn2op
0509f47775 feat(ui): open and download message attachments
Closes #558
2026-08-31 18:57:21 -04:00
ayn2op
94eaf25286 text: migrate to tview text package 2026-08-30 20:06:45 -04:00
ayn2op
811c5e4418
refactor(ui): move focus ownership to containers (#834) 2026-08-29 01:10:17 -04:00
ayn2op
f016d62bc5 style: format gateway capabilities 2026-08-18 14:07:57 -04:00
ayn2op
1d441a972a gateway: enable debounced reactions 2026-08-18 02:56:29 -04:00
ayn2op
a0c2f10c35 gateway: enable modern ready capabilities 2026-08-18 02:11:36 -04:00
ayn2op
c6305c0510 gateway: enable versioned ready fields 2026-08-17 23:19:29 -04:00
ayn2op
3ea0de50f9 refactor: pass *ningen.State to newGuildsTree instead of *chat.Model 2026-08-12 00:50:02 -04:00
ayn2op
1197e4b204 refactor(ui): decouple commands from models 2026-08-10 16:46:21 -04:00
ayn2op
f4621bc321 refactor(chat): simplify typing throttle 2026-08-10 00:13:41 -04:00
ayn2op
f00a66835c refactor(ui): adopt message-driven focus 2026-08-09 23:23:37 -04:00
ayn2op
71805de597 refactor(chat): extract attachments picker package 2026-08-05 14:54:00 -04:00
ayn2op
7abc3e4003 refactor(chat): extract channels picker package 2026-08-05 00:51:24 -04:00
ayn2op
eab73a3b19
feat: impersonate browser TLS fingerprints (#824) 2026-08-04 21:04:22 -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
RedSlime.
2501deac82
feat(chat): update dm node on presence update (#814) 2026-07-19 04:08:31 -04:00
ayn2op
391f3b974c refactor(ui): replace tview modal usage 2026-07-09 04:12:33 -04:00
ayn2op
6c3727cb7c refactor(chat): avoid blocking member chunks 2026-07-03 18:31:49 -04:00
ayn2op
e6c7f26fcd refactor: use forked arikawa and ningen 2026-06-19 18:00:39 -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
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
30ee90a8ef refactor(ui): match tview getter api 2026-06-13 18:29:52 -04:00
ayn2op
6eb4b56122
refactor!: rename message input to composer (#801) 2026-06-08 22:45:51 -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
7b8a3d0fd6 refactor(chat): remove gateway event wrapper 2026-04-29 12:15:46 -04:00
ayn2op
cfd7452f8d fix(chat): avoid waiting for ready before processing events 2026-04-20 22:25:47 -04:00
ayn2op
99e9481a72 fix(ui): sequence state-sensitive command flows and bump tview 2026-04-20 20:39:26 -04:00
ayn2op
5f6d0296c3 fix(ui): use value messages instead of pointers
Closes #791
2026-04-20 13:53:51 -04:00
ayn2op
c998580e0e refactor(ui): use value messages in models 2026-04-13 18:49:26 -04:00
ayn2op
044430857d refactor(chat): clarify local condition variables in UI flows 2026-04-09 00:04:51 -04:00
ayn2op
bd045c1ac2 fix(chat): keep input focus when closing mentions
Make stopTabCompletion return a Cmd and remove closeLayer message indirection so Esc/close paths keep focus on message input consistently.
2026-04-05 22:43:58 -04:00
ayn2op
7202d95907 refactor(chat): replace QueueUpdateDraw with Cmd/Msg tab completion flow 2026-04-05 21:35:19 -04:00
ayn2op
6807e194c4 refactor(internal): rename Event to Msg 2026-04-05 18:11:34 -04:00
ayn2op
51beca67e9 build(deps): upgrade deps to latest 2026-04-03 00:18:50 -04:00
ayn2op
3d014dd6d2 Merge branch 'dev' 2026-03-20 12:23:07 -04:00
ayn2op
aae782fb3c refactor(ui/chat): align attachments picker layer naming 2026-03-20 12:21:35 -04:00
ayn2op
7dcdff9d27 refactor(ui/chat): migrate onMessageCreate to command-based arch 2026-03-19 20:59:09 -04:00
ayn2op
926dd8cedd refactor(ui/chat): migrate onReady to command-based arch 2026-03-19 20:51:36 -04:00
ayn2op
6e3f340b55
refactor(ui/chat): unify gateway and ui updates under event commands (#775) 2026-03-19 19:15:14 -04:00
ayn2op
6167d7d3d8
refactor(ui,picker)!: upgrade tview to latest and use newer api (#771) 2026-03-17 21:09:33 -04:00