Commit Graph

143 Commits

Author SHA1 Message Date
Simon Ser 93ba0e6443 Disable debug logs in production
console.debug logs cause some performance issues because the browser
is forced to save the logged objects just in case the user opens the
debugging tools.

They can be force-enabled back by adding ?debug=1 to the URL.

Only console.debug is disabled, console.log and other levels are a lot
less verbose and still enabled by default.
2021-12-01 11:40:59 +01:00
Simon Ser be08302c1f Add support for draft/account-registration
A new UI to register and verify accounts is added.
2021-11-30 14:59:44 +01:00
Simon Ser 3e309e9dfe Ignore RPL_AWAY 2021-11-23 17:58:49 +01:00
Simon Ser 24b50a332c lib/client: make authenticate() return a promise
This lets the caller handle the success/failure.
2021-11-21 16:06:13 +01:00
Simon Ser adefc620de lib/client: send BOUNCER BIND and CAP END immediately
Don't wait for auth to finish. This reduces the number of roundtrips.
2021-11-21 13:48:41 +01:00
Simon Ser bc3abbec32 lib/client: catch handleMessage errors 2021-11-21 13:48:07 +01:00
Simon Ser 4f927b5536 lib/client: always request sasl cap when available
This will allow us to issue post-registration SASL commands.
2021-11-21 13:35:32 +01:00
Simon Ser 86b08296a0 lib/client: don't disconnect on SASL error if registered
This will let users try multiple auth attempts when we'll implement
post-registration auth.
2021-11-21 13:23:14 +01:00
Simon Ser 25dd6aabf6 lib/client: remove one roundtrip during SASL auth
Instead of waiting for the server's empty challenge, send two
AUTHENTICATE commands in a row.
2021-11-21 13:21:42 +01:00
Simon Ser 51bf8da3d6 lib/client: don't error out if SASL isn't available on RPL_WELCOME
Some servers (soju) might remove the sasl cap on connection
registration.
2021-11-19 19:32:13 +01:00
Simon Ser be475026c8 lib/irc: fix handling for prefixes without host
name!user is a valid prefix.
2021-11-15 16:05:51 +01:00
Simon Ser 55361c5a2b Store WHO list in RPL_ENDOFWHO
This allows the state-tracker to figure out whether a WHO query
returned no result.
2021-11-10 10:32:23 +01:00
Simon Ser c11bf6508a Only allow one WHO command at a time
Closes: https://todo.sr.ht/~emersion/gamja/120
2021-11-10 10:08:47 +01:00
Simon Ser 195e4ca371 Don't stop fetching backlog on error
Some servers allow fetching history from some targets but not
others. Don't completely stop fetching chat history on error.

The root cause was a variable shadowing in Client.fetchBatch.
2021-11-10 09:53:17 +01:00
Simon Ser 1206cfae37 Add support for draft/extended-monitor
References: https://github.com/ircv3/ircv3-specifications/pull/466
2021-11-09 12:50:11 +01:00
Simon Ser 74fe6ee944 Auto-join when adding new network on irc:// link click
Closes: https://todo.sr.ht/~emersion/gamja/111
2021-11-07 19:47:49 +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 08cd94d775 lib/irc: add "fullname" to isMeaningfulRealname 2021-11-02 18:12:18 +01:00
Simon Ser ac7785aa7f lib/client: fix missing account in WHOX 2021-11-02 17:58:00 +01: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 4309cf44d3 Avoid using export * as namespace
This isn't supported by Safari.
2021-10-18 23:59:18 +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 8bdde589bb lib/irc: "unknown" is not a meaningful realname 2021-10-15 17:44:33 +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 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 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 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 184b29b6e3 Hide meaningless real names 2021-09-21 17:24:39 +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 d12e1109b3 Add support for account-notify 2021-09-21 14:49:32 +02:00
Simon Ser 11878aaaa9 Add support for extended-join 2021-09-21 14:29:31 +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
Hubert Hirtz f78cb8c23b Fix double space introduced before last param 2021-09-17 14:07:58 +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 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 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 e283d9c7ab Add support for MONITOR 2021-08-24 12:53:46 +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 429450e060 Handle RPL_INVITING 2021-06-24 18:01:24 +02:00
Simon Ser bc05fd5c11 Treat server broadcasts as highlights 2021-06-23 19:52:45 +02:00
Simon Ser c187eac3c8 lib/client: reject Client.roundtrip promise on disconnect 2021-06-21 00:18:17 +02:00