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
bbb8cf0d65
refactor(config): use shellwords to parse editor commands ( #838 )
2026-09-12 14:23:32 -07:00
ayn2op
c38fc3d9c0
refactor(ui): bump tview and adapt to tview.Screen API
2026-09-09 18:34:29 -04:00
ayn2op
24ced4d8bf
fix(chat): keep original attachment extension and surface open errors
2026-09-06 23:03:07 -04:00
ayn2op
1750d7dfb6
test: use identifier-based names and subtests
2026-09-06 19:38:11 -04:00
ayn2op
39cb1b5698
refactor(chat): unify message list items
2026-09-06 19:38:11 -04:00
ayn2op
8390e9773a
feat(chat): edit latest own message with configurable Up keybind ( #837 )
2026-09-05 01:56:23 -04:00
ayn2op
bdea99d4f9
refactor(chat): simplify member search cache
2026-09-05 01:17:15 -04:00
ayn2op
b7ddfdc050
refactor(ui): simplify picker keybind setup
2026-09-04 16:20:26 -04:00
ayn2op
358ccd546d
refactor(guildstree): simplify model initialization
2026-09-04 14:59:24 -04:00
ayn2op
091d4711ea
fix(chat): preserve focus without guilds tree
2026-09-02 20:24:03 -04:00
ayn2op
8f38996b8a
feat(chat): toggle reply mentions from composer
2026-09-02 20:03:49 -04:00
ayn2op
5122bdea4a
fix(root): do not block quit on session cleanup
2026-09-02 18:17:08 -04:00
ayn2op
8b9c28ce56
test(markdown,guildstree,qr,root): use identifier-based names and subtests
2026-09-02 18:09:21 -04:00
ayn2op
7972504293
refactor: use default markdown link parser
2026-09-02 00:23:11 -04:00
ayn2op
5003a15cc8
refactor: migrate markdown parser to arikawa
2026-09-01 22:54:32 -04:00
ayn2op
5df8f14d7b
refactor(ui): modularize guilds tree
2026-08-31 22:35:23 -04:00
ayn2op
5e4018a742
refactor(config): simplify MIME type lookup
2026-08-31 18:57:21 -04:00
ayn2op
0509f47775
feat(ui): open and download message attachments
...
Closes #558
2026-08-31 18:57:21 -04:00
ayn2op
52e7d6ed0e
fix(ui): sort dms on message create ( #835 )
2026-08-30 21:10:37 -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
fb39147eae
feat: toggle keybind help at runtime ( #833 )
2026-08-27 20:31:52 -04:00
ayn2op
e53354a738
feat: allow disabling keybind help ( #832 )
2026-08-27 15:06:10 -04:00
ayn2op
774e4059df
build(deps): update to latest
2026-08-21 23:28:51 -04:00
ayn2op
764a9b3775
refactor(ui,config): flatten embedded literals
2026-08-21 20:10:38 -04:00
ayn2op
cf6c343fd5
refactor: use encoding/json/v2
2026-08-21 19:59:40 -04:00
ayn2op
f880378568
fix: acknowledge current channel cursor
2026-08-19 01:51:01 -04:00
ayn2op
e0aa1e857d
refactor: adopt standard slice helpers
2026-08-18 17:53:17 -04:00
ayn2op
f016d62bc5
style: format gateway capabilities
2026-08-18 14:07:57 -04:00
ayn2op
26dc8cf748
refactor: adopt generic options
2026-08-18 03:42:17 -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
8f5e923fe1
refactor(ui): simplify login error handling
2026-08-10 21:02:51 -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
be5aebdd14
refactor(ui): adapt to tview input changes
2026-08-07 21:45:38 -04:00
ayn2op
7d66f3b20b
refactor(chat): adapt to read-only list view
2026-08-07 17:40:54 -04:00
ayn2op
8a64c33ce5
refactor(chat): adapt to tree view changes
2026-08-07 02:17:19 -04:00
ayn2op
228bfaeb05
feat(ui): add password login
2026-08-06 21:45:16 -04:00
ayn2op
10de0d0ed6
fix(ui): make attachment links clickable
2026-08-05 21:05:36 -04:00
ayn2op
0924be9c65
refactor(ui): embed mentions list model
2026-08-05 20:26:41 -04:00
ayn2op
71805de597
refactor(chat): extract attachments picker package
2026-08-05 14:54:00 -04:00
ayn2op
3e2222414a
refactor(ui): make ConfigureBox mutate in place
2026-08-05 00:59:09 -04:00