Simon Ser
|
4b306305bf
|
Move msg.tags fallback to client
|
2022-11-30 11:30:46 +01:00 |
|
Simon Ser
|
a172c810e9
|
Make first server check more robust when disconnecting
A disconnect/reconnect cycle will bump the server ID.
|
2022-11-30 11:21:54 +01:00 |
|
Simon Ser
|
ab3569e104
|
Close settings dialog when disconnecting
|
2022-11-30 11:18:23 +01:00 |
|
Simon Ser
|
dc5e64aaac
|
lib/client: unify checks for chathistory end
|
2022-11-30 10:17:50 +01:00 |
|
Simon Ser
|
2d27168529
|
Use ratified extended-monitor cap name
References: https://github.com/ircv3/ircv3-specifications/pull/508
|
2022-11-06 20:40:00 +01:00 |
|
Simon Ser
|
24ba3f5189
|
Remove unnecessary whoChannelBuffer() call
switchBuffer() will do that already, no need to do it manually here.
We risk sending two duplicate WHO commands.
|
2022-10-23 20:21:27 +02:00 |
|
Simon Ser
|
90a2c91651
|
Load initial members state via WHO when channel is selected
Closes: https://todo.sr.ht/~emersion/gamja/13
|
2022-10-23 20:18:33 +02:00 |
|
Simon Ser
|
e815295503
|
Add support for OAuth 2.0 authentication
|
2022-10-14 10:52:44 +02:00 |
|
Simon Ser
|
bbc94c88c0
|
Upgrade dependencies
|
2022-09-18 20:08:13 +02:00 |
|
Simon Ser
|
84ca0a4408
|
components/connect-form: autofocus username field
|
2022-09-12 13:43:58 +02:00 |
|
Simon Ser
|
84b68308b9
|
components/app: switch off loading state atomically
Set connectParams together with loading, to avoid intermediate
state where loading = false but connectParams isn't set yet.
|
2022-09-12 13:42:44 +02:00 |
|
Simon Ser
|
4964782c30
|
Display error in loading state
|
2022-09-12 13:41:23 +02:00 |
|
Simon Ser
|
54e1fc93d9
|
Add config option to generate random nickname
Closes: https://todo.sr.ht/~emersion/gamja/136
|
2022-09-12 13:04:59 +02:00 |
|
Simon Ser
|
34d3bd6df9
|
Remove unnecessary if in App.handleConfig
config.json is merged with baseConfig. The latter is guaranteed
to contain a "server" field.
|
2022-09-12 09:54:38 +02:00 |
|
Simon Ser
|
a13f74d466
|
Disallow server.{autoconnect,auth} mismatch in config.json
This combination doesn't make sense.
|
2022-09-12 09:48:49 +02:00 |
|
Simon Ser
|
a603b79e33
|
components/buffer-list: show buffers with errors in red
|
2022-09-05 14:00:52 +02:00 |
|
Simon Ser
|
a2d2a11d44
|
Drop support for soju.im/read
It's been superseded by draft/read-marker.
|
2022-09-03 14:41:53 +02:00 |
|
Simon Ser
|
e6618c8a1f
|
Fix draft/read-marker cap not negotiated
Fixes: 1428ec4d49 ("Add support for draft/read-marker")
|
2022-09-03 14:40:54 +02:00 |
|
Simon Ser
|
aa9aa78d71
|
Fix ignored MARKREAD messages
The prefix is a remnant of the soju extension. The IRCv3 one
doesn't have it.
Fixes: 1428ec4d49 ("Add support for draft/read-marker")
|
2022-09-03 14:40:46 +02:00 |
|
Simon Ser
|
4780b9c709
|
Fetch read marker before backlog for user targets
|
2022-09-03 14:31:56 +02:00 |
|
Simon Ser
|
e7b69cec9a
|
Limit composer length
Often times IRC servers will truncate messages which are too big.
|
2022-08-28 19:16:41 +02:00 |
|
Simon Ser
|
7138e43710
|
Ignore RPL_CHANNEL_URL
|
2022-08-22 10:35:50 +02:00 |
|
Simon Ser
|
89647472ae
|
components/app: don't open buffer for CTCP messages
These are usually completely uninteresting messages, e.g. CTCP
VERSION or whatever.
|
2022-08-22 10:30:56 +02:00 |
|
Simon Ser
|
e2dc32c0d3
|
Update dependencies
|
2022-07-11 21:02:12 +02:00 |
|
Simon Ser
|
1bcd9d3607
|
ci: deploy to new server
|
2022-07-09 12:26:39 +02:00 |
|
Simon Ser
|
e4ebf5eb80
|
ci: fix deploy host
emersion.fr is now an alias for the new server. gamja hasn't been
migrated yet.
|
2022-07-08 21:24:09 +02:00 |
|
Simon Ser
|
1428ec4d49
|
Add support for draft/read-marker
References: https://github.com/ircv3/ircv3-specifications/pull/489
|
2022-07-01 13:35:27 +02:00 |
|
Simon Ser
|
d0064dd647
|
components/buffer: show disclaimer for +draft/channel-context messages
|
2022-06-28 15:55:35 +02:00 |
|
Simon Ser
|
f6ba40046f
|
components/buffer-header: fix duplicate settings button
|
2022-06-28 15:11:48 +02:00 |
|
Simon Ser
|
54453c5f44
|
Fix invalid relative import
Worked locally because it's served at the root…
|
2022-06-27 17:16:33 +02:00 |
|
Simon Ser
|
fa80a56516
|
Add button to enable protocol handler in settings
|
2022-06-27 17:01:15 +02:00 |
|
Simon Ser
|
7cabb6f85b
|
Add a setting for seconds in timestamps
|
2022-06-27 16:34:41 +02:00 |
|
Simon Ser
|
505a6fd5ab
|
Workaround the sad state of base64 web APIs
This is necessary to make usernames/passwords with UTF-8 in them
work correctly.
|
2022-06-24 23:59:18 +02:00 |
|
Simon Ser
|
8e30806fec
|
Upgrade dependencies
|
2022-06-14 19:58:50 +02:00 |
|
Simon Ser
|
f0c398a10c
|
components/buffer-header: print bouncer network error if any
|
2022-06-09 15:54:29 +02:00 |
|
Simon Ser
|
baaf576d82
|
Add a settings dialog
Add an option to hide chat events or always expand them.
Closes: https://todo.sr.ht/~emersion/gamja/73
|
2022-06-08 16:57:16 +02:00 |
|
Simon Ser
|
e3c2d85a94
|
Fix ping config lost in ConnectForm
Reported-by: xse <xse@riseup.net>
References: https://lists.sr.ht/~emersion/public-inbox/patches/32126
|
2022-06-08 15:14:06 +02:00 |
|
Simon Ser
|
6b04cb1417
|
Add support for bot mode
References: https://ircv3.net/specs/extensions/bot-mode
|
2022-06-08 15:04:27 +02:00 |
|
Simon Ser
|
8507500d74
|
components/scroll-manager: don't crash when Buffer is empty
|
2022-04-22 12:32:54 +02:00 |
|
Simon Ser
|
aaef4e1629
|
store: use lower-case for buffer keys
|
2022-04-22 12:04:11 +02:00 |
|
Simon Ser
|
cdd2da90a9
|
Update webpage title when switching buffer
|
2022-04-22 11:49:23 +02:00 |
|
Simon Ser
|
4a981997f0
|
Handle CHATHISTORY messages when reaching end of batch
Closes: https://todo.sr.ht/~emersion/gamja/115
|
2022-04-22 11:25:41 +02:00 |
|
Simon Ser
|
f45b51d981
|
commands: fix TypeError in kickban
The ban variable was undefined.
|
2022-04-14 10:53:35 +02:00 |
|
Simon Ser
|
73db1a888e
|
Upgrade dependencies
|
2022-02-26 10:47:55 +01:00 |
|
Simon Ser
|
3dc98ec797
|
Convert remaining simple quotes to double quotes
|
2022-02-26 09:54:31 +01:00 |
|
Simon Ser
|
e37d5f363b
|
lib/irc: fix bound check in isHighlight
Doesn't seem like this was causing any issues, but let's fix the
logic regardless.
|
2022-02-25 11:38:00 +01:00 |
|
Simon Ser
|
221b1b6356
|
lib/irc: remove unnecessary non-breaking-space case
Handled by the default case already.
|
2022-02-25 11:37:18 +01:00 |
|
Simon Ser
|
86b1030b7a
|
lib/irc: add missing num range to alphaNum regexp
|
2022-02-25 11:36:43 +01:00 |
|
Simon Ser
|
08578c9a21
|
components/app: fix missing semicolons
|
2022-02-21 15:26:12 +01:00 |
|
Simon Ser
|
26cc073f41
|
store: save buffer state when user navigates away
Avoids loosing some state on page unload.
|
2022-02-18 18:22:00 +01:00 |
|
Simon Ser
|
9e703698ca
|
lib/irc: drop outdated CapRegistry TODO
|
2022-02-16 15:46:22 +01:00 |
|
Simon Ser
|
37d7f4a1c5
|
Refactor backlog fetching into function
|
2022-02-13 15:34:11 +01:00 |
|
Simon Ser
|
962c05c066
|
Prevent hole in history when reconnecting
|
2022-02-13 15:26:04 +01:00 |
|
Simon Ser
|
f2c9fd1d7f
|
Update stored unread status on READ message
|
2022-02-12 10:24:56 +01:00 |
|
Simon Ser
|
a3eec9a351
|
store: add note about comparison in Buffer.put
|
2022-02-12 10:24:34 +01:00 |
|
Simon Ser
|
2ac7be6218
|
state: add isReceiptBefore
|
2022-02-12 10:21:11 +01:00 |
|
Simon Ser
|
5f8cd976e6
|
keybindings: fix error on alt+h
Fixes the following JS error:
TypeError: e.setReceipt is not a function
|
2022-02-12 10:05:58 +01:00 |
|
Simon Ser
|
fbc42b6dab
|
components/app: move lastErrorID declaration down
Move it right before App, rather than drown in-between unrelated
functions.
|
2022-02-11 21:17:35 +01:00 |
|
Simon Ser
|
dc398baa3b
|
components/app: stop updating prevReadReceipt on READ message
prevReadReceipt is used for the unread marker. Let's not update it
before the user switches the current buffer.
|
2022-02-11 21:09:11 +01:00 |
|
Simon Ser
|
6a9a8e88f1
|
store: fix no-op read receipt update detection
If the old and new times are equal, the update is a no-op.
|
2022-02-11 21:07:49 +01:00 |
|
Simon Ser
|
f47d93af8a
|
Don't fetch backlog before read receipt
|
2022-02-11 21:02:34 +01:00 |
|
Simon Ser
|
fce0936c20
|
components/app: introduce getReceipt
|
2022-02-11 20:59:31 +01:00 |
|
Simon Ser
|
0636544c40
|
components/app: close notifications when receiving READ message
|
2022-02-11 19:32:30 +01:00 |
|
Simon Ser
|
7c6f334dbf
|
components/app: close notifications when switching buffer
|
2022-02-11 19:32:30 +01:00 |
|
Simon Ser
|
7ddd783150
|
components/app: make showNotification return null on error
We'll do more involved stuff with notifications soon, and don't
want to deal with buggy notification objects.
|
2022-02-11 19:32:30 +01:00 |
|
Simon Ser
|
bb42ff6a07
|
components/app: include server ID in notification tags
|
2022-02-11 19:32:30 +01:00 |
|
Simon Ser
|
db0ef39c6b
|
Add support for soju.im/read
|
2022-02-11 19:32:26 +01:00 |
|
Simon Ser
|
77f54080e7
|
Make delivery receipts follow read receipts
If a message has been read, it's been delivered.
Fixes #23 at least partially.
References: https://todo.sr.ht/~emersion/gamja/23
|
2022-02-11 19:29:55 +01:00 |
|
Simon Ser
|
065b3f21fc
|
Refactor receipts
They are now saved in the buffer store to allow for proper server
separation.
|
2022-02-11 19:29:55 +01:00 |
|
Simon Ser
|
d2bcea8c86
|
Introduce isMessageBeforeReceipt
|
2022-02-11 16:37:58 +01:00 |
|
Simon Ser
|
3d81466788
|
components/app: introduce receiptFromMessage
|
2022-02-11 16:30:46 +01:00 |
|
Simon Ser
|
f2923452c1
|
store: debounce buffer store saves
|
2022-02-11 16:24:32 +01:00 |
|
Simon Ser
|
39c36e7a7b
|
Fix unread marker going back
Receipts must never go back in time.
Fixes: c428e504fe ("Don't show unread marker for outgoing messages")
|
2022-02-11 16:06:06 +01:00 |
|
Simon Ser
|
e91b044134
|
components/app: make switchBuffer state changes atomic
Instead of calling App.setBufferState inside the App.setState
callback invoked when the update is done, call State.updateBuffer.
|
2022-02-11 15:48:56 +01:00 |
|
Simon Ser
|
0063a5a372
|
Set min node version in package.json
v14.13.0 is required for CommonJS named imports to work properly.
|
2022-02-10 14:46:42 +01:00 |
|
Simon Ser
|
f465e24adf
|
components/buffer-header: fix dead space above description
|
2022-02-04 14:38:28 +01:00 |
|
Simon Ser
|
7f7a7c1aac
|
components/buffer-list: remove pointless temporary variable
|
2022-02-04 14:32:29 +01:00 |
|
Simon Ser
|
e1bbe34ff2
|
state: add bouncerNetworks helpers
|
2022-02-04 14:22:50 +01:00 |
|
Simon Ser
|
9f93e200ed
|
commands: add comment param to /kick usage
|
2022-01-31 18:30:48 +01:00 |
|
Simon Ser
|
bd48f36ade
|
lib/irc: add missing Isupport.chanModes
It was called by forEachChannelModeUpdate, but wasn't implemented.
|
2022-01-31 18:24:34 +01:00 |
|
Simon Ser
|
a0f8f1f52f
|
components/buffer: fix INVITE link
It was throwing a TypeError.
|
2022-01-10 10:32:37 +01:00 |
|
Simon Ser
|
5d6de11a4c
|
commands: simplify /who usage string
As per https://modern.ircdocs.horse/#who-message
|
2022-01-09 19:30:01 +01:00 |
|
Simon Ser
|
6692ed0035
|
components/help: use bold for command name only
|
2022-01-09 19:28:23 +01:00 |
|
Simon Ser
|
5e34067d38
|
components/help: remove "/" keybinding, document middle mouse click
|
2022-01-09 19:20:44 +01:00 |
|
Simon Ser
|
b11f58b975
|
state: fix prefix() call in MODE handler
Lost during a refactoring.
Fixes: ab3d4dd661 ("Refactor ISUPPORT handling")
|
2021-12-16 23:37:33 +01:00 |
|
Simon Ser
|
4704e0f12f
|
ci: fix deploy skip
|
2021-12-16 23:14:10 +01:00 |
|
Simon Ser
|
4cabae89ff
|
lib/irc: add CapRegistry
|
2021-12-10 15:34:51 +01:00 |
|
Simon Ser
|
f6895fed32
|
Add reconnect button
|
2021-12-07 13:39:02 +01:00 |
|
Simon Ser
|
fc93a8cef5
|
state: fix server bouncerNetID
Ooops.
|
2021-12-07 13:37:14 +01:00 |
|
Simon Ser
|
f3d38859d3
|
Move isBouncer props to server state
Avoids having to pass this around.
|
2021-12-07 13:16:07 +01:00 |
|
Simon Ser
|
f81c564d23
|
Implement exponential backoff for reconnections
Closes: https://todo.sr.ht/~emersion/gamja/118
|
2021-12-07 13:05:42 +01:00 |
|
Simon Ser
|
ab3d4dd661
|
Refactor ISUPPORT handling
Add a helper class to parse ISUPPORT tokens. Instead of having
manual ISUPPORT handling all over the place, use pre-processed
values.
|
2021-12-07 12:09:10 +01:00 |
|
Simon Ser
|
31b293fa03
|
lib/client: use Error objects for error events
|
2021-12-06 23:09:30 +01:00 |
|
Simon Ser
|
f9ec578fce
|
Handle FAIL ACCOUNT_REQUIRED
|
2021-12-06 22:54:15 +01:00 |
|
Simon Ser
|
305f510501
|
Read nickname from RPL_WELCOME
References: https://github.com/ircdocs/modern-irc/pull/146
|
2021-12-06 17:55:47 +01:00 |
|
Simon Ser
|
05f7c6e9fe
|
Add Client.join, show join errors in popup
|
2021-12-04 17:44:23 +01:00 |
|
Simon Ser
|
fc8aa30756
|
lib/client: add generic error handling to roundtrip()
|
2021-12-04 17:22:36 +01:00 |
|
Simon Ser
|
8c8bd43638
|
lib/client: introduce IRCError
|
2021-12-04 17:05:34 +01:00 |
|
Simon Ser
|
30e3ec392f
|
Update channel join status when kicked
|
2021-12-04 16:52:38 +01:00 |
|
Simon Ser
|
ada9ff3b71
|
components/buffer-header: fix missing "join" button for parted channel
|
2021-12-03 19:09:52 +01:00 |
|