Commit graph

775 commits

Author SHA1 Message Date
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
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
07c9cdebb6 Add usage message to development server 2021-12-01 10:44:03 +01:00
Simon Ser
aef2812348 Add custom developement server
This implements a tiny WebSocket proxy useful for development
purposes.
2021-12-01 10:34:41 +01:00
Simon Ser
a1ff1be342 Mark auth dialog as loading 2021-11-30 16:05:08 +01:00
Simon Ser
47f56f06b9 Mark register/verify dialogs as loading 2021-11-30 15:49:52 +01:00
Simon Ser
1e84412172 Show "Manage network" even if upstream is disconnected
Fixes: 86853eb2e5 ("components/buffer-header: hide action buttons when disconnected")
2021-11-30 15:29:24 +01:00
Simon Ser
451bb4c73f Add link to verify account next to VERIFICATION_REQUIRED message 2021-11-30 15:13:34 +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
Drew DeVault
b1d5f1436e Improve noscript UI appearance 2021-11-29 13:53:23 +01:00
Simon Ser
c4a78283af Linkify error messages
Sometimes servers will put links and channels in their error
messages. Make it easy for users to click them.
2021-11-29 13:38:07 +01:00
Simon Ser
25e69a551e Clear channel joined field when disconnected 2021-11-29 11:44:45 +01:00
Simon Ser
86853eb2e5 components/buffer-header: hide action buttons when disconnected 2021-11-29 11:44:28 +01:00
Simon Ser
1800b6bea1 components/member-list: re-render on State.users update 2021-11-28 20:13:08 +01:00
Simon Ser
fcce340846 Dim away users in member list
References: https://todo.sr.ht/~emersion/gamja/13
2021-11-28 20:09:48 +01:00
Simon Ser
e29ccf7220 Add embedded Content-Security-Policy
Add a baseline CSP applicable to all gamja deployments. Resources
can only be loaded from the current host, frames and objects are
disallowed, and scripts are allowed to connect to any host (to allow
cross-site WebSocket connections).

If the server returns a different CSP via an HTTP header, the
effective CSP will be the intersection.
2021-11-27 12:35:02 +01:00
Simon Ser
d8d2cbe0f7 readme: add nginx file server directive 2021-11-27 12:26:25 +01:00
Simon Ser
0d2067e33e components/connect-form: replace auto-join text field with checkbox
The intent of the auto-join field is to ask the user whether they
really want to join the pre-filled channel. Users rarely want to
customize this field, they can just manually click "Join" after
connecting if they want to join another channel.
2021-11-27 12:08:23 +01:00
Simon Ser
3e309e9dfe Ignore RPL_AWAY 2021-11-23 17:58:49 +01:00
Simon Ser
3e2ac307f6 Add post-connect UI to login via SASL
If the server supports SASL and if we aren't logged in with any
account, add a UI to authenticate via SASL. This allows users to
login anonymously then login via SASL.

This will also ease the draft/account-registration implementation.
2021-11-21 16:40:46 +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
0af40a1a8e state: add account to server 2021-11-21 12:13:44 +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
Cara Salter
723951a07b commands: Add LIST command
Signed-off-by: Cara Salter <cara@devcara.com>
2021-11-18 16:24:18 +01:00
Simon Ser
c4c0a77162 Avoid inline script in index.html
This helps Parcel generate a proper standalone JS bundle.
2021-11-17 10:58:02 +01:00
Simon Ser
3f2553291f ci: fix deploy branch check again, exclude config.json 2021-11-17 10:45:18 +01:00
Simon Ser
debd50f482 ci: fix deploy branch check 2021-11-17 10:33:16 +01:00
Simon Ser
a57428002f ci: add deploy task 2021-11-17 10:31:09 +01:00
Simon Ser
bbfeb5bcbc ci: add .build.yml 2021-11-17 10:20:49 +01:00
Simon Ser
0980983bdc readme: add link to IRC channel 2021-11-17 10:17:41 +01:00
Simon Ser
e37c2a2cec Auto-dismiss client error on reconnect
References: https://todo.sr.ht/~emersion/gamja/74
2021-11-17 10:12:36 +01:00
Simon Ser
82e5a2795d Properly handle port in irc:// URLs 2021-11-16 11:52:38 +01:00
Simon Ser
a0b250df3f Reword ProtocolHandlerNagger message 2021-11-16 11:30:33 +01:00
Simon Ser
321140327e Add UI to enable protocol handler 2021-11-16 11:19:25 +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