ayn2op
f9bb10d846
refactor(ui): update to tview's Widget and help style builders
2026-10-03 23:41:25 -04:00
ayn2op
31c5d185ca
refactor(ui): update to tview's layout package and Element methods
2026-10-01 22:45:52 -04:00
ayn2op
74f8438bc1
refactor(ui): simplify models and messages
2026-09-30 16:45:13 -04:00
ayn2op
151eb89a1a
feat(messageslist): draw previews with kitty graphics protocol
2026-09-29 20:22:46 -04:00
ayn2op
08cdb3645c
refactor(attachmentspicker): use picker.Items directly
2026-09-29 01:13:48 -04:00
ayn2op
acd2fe0050
build(deps): bump arikawa and ningen
2026-09-28 21:19:37 -04:00
ayn2op
08f27eb60d
feat(chat): add members tree
2026-09-28 18:51:38 -04:00
ayn2op
07733bc436
refactor(ui): use tview/inert for dialogs and pickers
2026-09-27 20:46:49 -04:00
ayn2op
24342490e5
refactor(ui)!: make models immutable values
2026-09-27 20:33:19 -04:00
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