Commit Graph
100 Commits
Author SHA1 Message Date
Simon Ser 50f10a43dd components/buffer: show MODE target if different from buffer name
This happens for user modes, for instance.
2021-11-03 21:58:26 +01:00
Simon Ser eb66045371 lib/client: use Client.isMyNick to handle self-NICK messages
This handles case-mapping.
2021-11-03 21:50:33 +01:00
Simon Ser a1ab87c71c Route self-NICK messages to server buffer 2021-11-03 21:49:53 +01:00
Simon Ser 8ebb61cb0e Route user MODE messages to server buffer 2021-11-03 21:44:24 +01:00
Simon Ser 8f90613951 components/buffer-header: add help text for user details
This makes it easier for users new to IRC to figure out what these
things mean. Additionally, it's not possible for a malicious user
to spoof the <abbr> style.
2021-11-03 17:23:32 +01:00
Simon Ser 0888af4a6f Request more messages for event-playback infinite scrolling
When the server supports draft/event-playback, some messages (like
join/part/etc) may be collapsed together. Request more messages to
avoid ending up with a half-filled page.
2021-11-03 16:31:12 +01:00
Simon Ser 08cd94d775 lib/irc: add "fullname" to isMeaningfulRealname 2021-11-02 18:12:18 +01:00
Simon Ser eec4126562 components/buffer-header: mark unauthenticated users as such 2021-11-02 18:04:53 +01:00
Simon Ser 6acf6d544a components/buffer-header: skip account name if it matches nick 2021-11-02 18:01:07 +01:00
Simon Ser ac7785aa7f lib/client: fix missing account in WHOX 2021-11-02 17:58:00 +01:00
Simon Ser 85e73d0ee8 Add RPL_WELCOME to server buffer 2021-11-02 15:27:24 +01:00
Simon Ser 483f0c65b1 Add hint in server operators buffer header 2021-11-01 18:45:16 +01:00
Simon Ser 33c3cf3278 Remove unnecessary irc.formatDate call 2021-10-29 16:34:50 +02:00
Simon Ser 40210f8b00 Upgrade http-server 2021-10-29 16:25:58 +02:00
Simon Ser a1057092e0 state: move in QUIT and NICK update logic 2021-10-23 23:24:11 +02:00
Simon Ser bf471abb1b Add App.routeMessage
This splits handleMessage into two functions: one decides in which
buffers the message should be appended to, the other performs
message side-effects like auto-join.
2021-10-23 23:01:32 +02:00
Simon Ser c4a1f38b33 state: process RPL_NAMREPLY atomically
This allows updating the buf.members map only once when receiving
RPL_ENDOFNAMES, instead of repeatedly re-creating it each time a
RPL_NAMREPLY message is received.
2021-10-23 20:05:07 +02:00
Simon Ser 92043ded2c lib/client: generalize pendingWHOIS, store list in ENDOF* messages
This allows processing a list of replies atomically and receiving
the ENDOF* marker.
2021-10-23 20:03:57 +02:00
Simon Ser b059e034e2 lib/client: rename whoisDB to pendingWHOIS, garbage collect 2021-10-23 19:48:04 +02:00
Simon Ser 49a59077b7 lib/irc: extend parseURL to support flags and skip auth + options 2021-10-20 14:33:16 +02:00
Simon Ser a313363ed7 gitignore: add Parcel files 2021-10-20 10:55:49 +02:00
Simon Ser ab2f8092a8 Add minimal Parcel integration
Closes: https://todo.sr.ht/~emersion/gamja/107
2021-10-19 00:50:02 +02:00
Simon Ser 4309cf44d3 Avoid using export * as namespace
This isn't supported by Safari.
2021-10-18 23:59:18 +02:00
Simon Ser 2d032259db Pretty-print RPL_LOGGEDIN and RPL_LOGGEDOUT 2021-10-18 22:11:14 +02:00
Simon Ser 3d09c43a91 Don't add RPL_YOURHOST to server buffer 2021-10-18 22:08:21 +02:00
Simon Ser e7054eab13 Don't add RPL_SASLSUCCESS to server buffer 2021-10-18 22:05:25 +02:00
Simon Ser d9f36c82ba Allow bouncers to set NETWORK in ISUPPORT
This allows bouncers to customize the name they appear with.
2021-10-18 19:51:30 +02:00
Simon Ser 12440691c9 Unescape ISUPPORT values
This allows ISUPPORT values to contain spaces.

References: https://github.com/ircdocs/modern-irc/pull/137
2021-10-18 13:29:11 +02:00
Simon Ser 34aea84dde Close buffer tabs on middle click 2021-10-17 19:33:02 +02:00
Simon Ser a31976586c Fallback to bouncer network host if name is unset 2021-10-15 18:23:56 +02:00
Simon Ser 8bdde589bb lib/irc: "unknown" is not a meaningful realname 2021-10-15 17:44:33 +02:00
Simon Ser bfef13824e Use ISUPPORT NETWORK if user hasn't specified custom name 2021-10-15 14:05:39 +02:00
Simon Ser 1a8d539c9e Use linkifyjs module 2021-10-14 20:55:55 +02:00
Simon Ser a120d79585 Handle IRC URLs without channel name 2021-10-13 16:47:01 +02:00
Simon Ser 3562478946 Open dialog to create new network on IRC URL click
If we're running under a bouncer and the user clicks a link with
a server we aren't connected to yet, open the dialog to add a new
network.

References: https://todo.sr.ht/~emersion/gamja/71
2021-10-13 16:40:34 +02:00
Simon Ser 405bc51c26 Handle click on irc:// channel URLs inside buffers
References: https://todo.sr.ht/~emersion/gamja/71
2021-10-13 16:18:59 +02:00
Simon Ser 631f119061 Switch from anchorme to linkifyjs 2021-10-13 15:33:41 +02:00
Simon Ser a7d3a3940a readme: mention server.ping when server doesn't send PINGs
For instance, soju doesn't send PINGs.
2021-10-12 20:18:29 +02:00
Simon Ser 21a4a71542 Add support for SASL EXTERNAL
Can be useful when the server is using e.g. a cookie for
authentication purposes.
2021-10-12 17:29:56 +02:00
Simon Ser a890665775 Allow revealing server field with ?server 2021-10-09 13:33:01 +02:00
Simon Ser a920914b4c Add nick to config.json 2021-10-09 10:45:44 +02:00
Simon Ser 47b12cc5d9 Add autoconnect to config.json 2021-10-09 10:45:44 +02:00
Simon Ser 312a3f812e Don't allow overriding server URL if set in config.json
This has security implications.
2021-10-09 10:34:51 +02:00
Simon Ser e3e3315125 Inherit from default connectParams in handleConfig
When handleConfig is called, this.state.connectParams will be set
to its default value. Inherit from it so that autoconnect isn't
missing any. If we ever add a new connect parameter, we don't want
an old localStorage to break connect() because it's missing the
param.
2021-10-09 10:10:51 +02:00
Simon Ser d2ac1e152a Add more type checks for config.json 2021-10-09 09:57:54 +02:00
Simon Ser 8cc61bf577 lib/client: handle MONITOR without value in ISUPPORT 2021-10-07 21:49:54 +02:00
Simon Ser 4577f0a27f components/buffer: pretty-print RPL_CHANNELMODEIS and RPL_CREATIONTIME 2021-10-06 12:12:49 +02:00
Simon Ser 19ee5553f6 components/buffer: add RPL_UMODEIS pretty-printing 2021-10-05 11:22:20 +02:00
Simon Ser 0b4302e059 Clear autojoin when loading autoconnect
This is handled by the buffer store.
2021-09-21 19:25:59 +02:00
Simon Ser 7bf9a0ca25 Auto-join previous channels on reconnect
Closes: https://todo.sr.ht/~emersion/gamja/47
2021-09-21 19:20:39 +02:00
Simon Ser 5c90764718 Upgrade dependencies 2021-09-21 18:50:59 +02:00
Simon Ser 65674cb45d Narrow down syncBufferUnread to new buffers
syncBufferUnread might override the previous unread value.

Closes: https://todo.sr.ht/~emersion/gamja/105
2021-09-21 18:41:14 +02:00
Simon Ser 1dd55367e9 Send WHO queries for saved user buffers after ISUPPORT
This allows WHOX to be used.
2021-09-21 18:31:11 +02:00
Simon Ser fdb90ec95d Drop dangling var keyword 2021-09-21 18:26:42 +02:00
Simon Ser 184b29b6e3 Hide meaningless real names 2021-09-21 17:24:39 +02:00
Simon Ser a9cfbcd6b6 Fix duplicate declaration in State.handleMessage 2021-09-21 17:24:13 +02:00
Simon Ser da4da01e34 Query WHO when switching to a user buffer without info
Closes: https://todo.sr.ht/~emersion/gamja/101
2021-09-21 17:06:32 +02:00
Simon Ser 329f9063d0 Add support for WHOX
This allows querying the account of the user.
2021-09-21 16:58:00 +02:00
Simon Ser 0b32d9295a Display account name 2021-09-21 15:38:59 +02:00
Simon Ser d12e1109b3 Add support for account-notify 2021-09-21 14:49:32 +02:00
Simon Ser 8e631f97ef Add tooltip with full date to timestamp component 2021-09-21 14:34:30 +02:00
Simon Ser 11878aaaa9 Add support for extended-join 2021-09-21 14:29:31 +02:00
Simon Ser 010009e3e0 Display username/hostname in member list 2021-09-21 14:19:30 +02:00
Simon Ser 3746095175 Update user username/hostname on JOIN 2021-09-21 14:12:07 +02:00
Simon Ser ecb2ee041b Update user on QUIT and NICK 2021-09-21 14:00:52 +02:00
Simon Ser c66ce61029 Introduce per-server user map
This allows us to store information about users in a signle place,
instead of putting it in user buffers. This is required to display
metadata about users in the channel members list.
2021-09-21 13:33:15 +02:00
Simon Ser e7f8620933 Add State.create() 2021-09-21 12:33:22 +02:00
Simon Ser 0b0467f019 lib/irc: drop CRLF for outgoing messages
Trailing CRLF must not be included in WebSocket messages.

Closes: https://todo.sr.ht/~emersion/gamja/104
2021-09-18 12:16:54 +02:00
Simon Ser 9f0177dea0 store: fix undefined load call in Buffer.clear 2021-09-13 10:33:14 +02:00
Simon Ser f17d61ed86 lib/irc: fix formatMessage when last arg starts with colon
Fixes: a51be5037d ("lib/irc: only add colon to trailing arg when necessary")
2021-09-08 10:42:36 +02:00
Simon Ser 76f097e8a8 lib/client: error out on unsupported WebSocket data type 2021-09-06 17:15:52 +02:00
Simon Ser beef13d273 lib/client: remove WebSocket error event handler
The error event handler is useless, because the error event is never
emitted without a close event, and doesn't give any details about
the error.
2021-09-06 17:11:28 +02:00
Simon Ser ed41f08ba4 Get rid of a wild var keyword 2021-09-06 16:53:25 +02:00
Simon Ser 0137a95268 Add support for chghost
See https://ircv3.net/specs/extensions/chghost
2021-09-06 11:20:33 +02:00
Simon Ser a51be5037d lib/irc: only add colon to trailing arg when necessary
This mirrors go-irc's behavior:

https://github.com/go-irc/irc/blob/7ba1a1858f5ee2a44f18501b486ec11dd1990018/parser.go#L374

Closes: https://todo.sr.ht/~emersion/gamja/103
2021-09-06 10:52:06 +02:00
Simon Ser c428e504fe Don't show unread marker for outgoing messages
Closes: https://todo.sr.ht/~emersion/gamja/100
2021-08-30 10:27:24 +02:00
Simon Ser c65ecd66eb Avoid sending empty MONITOR command on startup
Closes: https://todo.sr.ht/~emersion/gamja/102
2021-08-30 10:14:05 +02:00
Simon Ser 73a2bcab94 Update buffer store when marking all buffers as read 2021-08-25 08:47:35 +02:00
Simon Ser 77683937d7 Narrow down syncBufferUnread call to self-JOIN 2021-08-25 08:46:37 +02:00
Simon Ser 4278265c65 Open new buffer on self-message
Closes: https://todo.sr.ht/~emersion/gamja/96
2021-08-24 14:46:51 +02:00
Simon Ser 8a5e52ed9a Rename buffer lastReadReceipt to prevReadReceipt
This field is intentionally behind the latest read receipt. Let's
rename it to make that clearer.
2021-08-24 14:01:57 +02:00
Simon Ser 6e59a77672 Don't drop unread marker in addMessage
Closes: https://todo.sr.ht/~emersion/gamja/76
2021-08-24 13:59:33 +02:00
Simon Ser b14cddc0d0 Ignore server buffer in latestReceipt
When we've received RPL_WELCOME, latestReceipt will return the
current time if we don't filter out the server buffer.
2021-08-24 13:49:25 +02:00
Simon Ser e283d9c7ab Add support for MONITOR 2021-08-24 12:53:46 +02:00
Simon Ser dd67e0789e Auto-complete channel names
Closes: https://todo.sr.ht/~emersion/gamja/84
2021-08-23 15:21:24 +02:00
Simon Ser aa9ce73d5a Restore channel unread status from local storage
Closes: https://todo.sr.ht/~emersion/gamja/75
Closes: https://todo.sr.ht/~emersion/gamja/89
2021-08-23 14:17:58 +02:00
Simon Ser c470c9f2c0 Fix typo 2021-08-23 12:31:11 +02:00
Simon Ser c47af780f6 Restore user query buffer unread status 2021-08-23 12:25:43 +02:00
Simon Ser 016ca27f2d Restore opened user query buffers
Closes: https://todo.sr.ht/~emersion/gamja/93
2021-08-23 12:02:36 +02:00
Simon Ser 4dd1fac002 Hide buffer focus outline 2021-08-18 08:55:23 +02:00
Simon Ser 2fb4393f24 store: remove dead code 2021-07-30 18:01:42 +02:00
Simon Ser d18cbbafb0 composer: focus on paste 2021-07-21 19:48:09 +02:00
Simon Ser c98ad539d5 Add message arg to /query
Closes: https://todo.sr.ht/~emersion/gamja/94
2021-07-21 15:21:58 +02:00
Simon Ser 51883292f9 lib/client: fix caps with equal sign in value
CAP=a=b wouldn't parse correctly.
2021-07-04 22:26:31 +02:00
Simon Ser 5b53fb6fe9 connect-form: improve HTML indentation 2021-07-04 21:51:42 +02:00
Simon Ser a1d79cda4b Drop ConnectForm key 2021-07-04 21:43:47 +02:00
Simon Ser 52ddda4e82 Unify dialog data in App.state 2021-07-04 21:41:36 +02:00
Simon Ser af1e2e144a Hide everything while loading config.json 2021-07-04 21:29:15 +02:00
Simon Ser dee9e06b2f connect-form: focus nickname input 2021-07-04 21:28:45 +02:00
Simon Ser 7b11b10955 Add /whowas command 2021-07-03 19:24:20 +02:00