Commit graph

326 commits

Author SHA1 Message Date
Simon Ser
fc9dfa2dca Implement case-mapping for buffers and message handler 2021-05-27 23:40:08 +02:00
Drew DeVault
e000832483 Add /ban, /kickban commands 2021-05-27 23:21:01 +02:00
Drew DeVault
121d7ec075 Add /whois command
This also rigs up some helpers in Client for handling the whois
response, which I will use for /ban and /quiet and such shortly.
2021-05-27 23:15:53 +02:00
Drew DeVault
f5debac388 Add /op, /deop commands 2021-05-27 23:05:21 +02:00
Drew DeVault
f0a532dbd6 style: minor adjustment to buttons
This makes the borders appear more uniform within the buffer header.
2021-05-27 23:00:06 +02:00
Simon Ser
558548e6f7 Fix typo in Unread.union 2021-05-27 22:35:41 +02:00
Simon Ser
06f7651bef Ignore TAGMSG messages
We get these from clients that support typing notifications, for
instance.
2021-05-27 21:58:37 +02:00
Simon Ser
74dc78a20b Fix lib/irc.js import path in commands.js 2021-05-27 21:46:56 +02:00
Drew DeVault
258b0b0a3c Restyle action buttons 2021-05-27 21:45:41 +02:00
Simon Ser
9567d56f53 Switch to channel buffer on /join
Closes: https://todo.sr.ht/~emersion/gamja/37
2021-05-27 19:10:42 +02:00
Drew DeVault
64900fbe80 Implement togglable sidebars for narrow viewports
Closed: https://l.sr.ht/96AD.jpg
Open:   https://l.sr.ht/gr_9.jpg
2021-05-27 19:00:11 +02:00
Drew DeVault
d612c91016 Implement optional opportunistic pings 2021-05-27 18:31:04 +02:00
Drew DeVault
3021eae9af Improve contrast of nick colors on dark theme 2021-05-27 18:04:45 +02:00
Drew DeVault
e2e2f7a8fc /mode: use active buffer if omitted 2021-05-27 18:02:51 +02:00
Drew DeVault
a0c85c3372 Handle incoming MODE messages in appropriate buffer 2021-05-27 18:01:58 +02:00
Drew DeVault
0b1c4da0ce Add /stats command 2021-05-27 17:58:54 +02:00
Drew DeVault
51d775dc4c Add /j alias for /join 2021-05-27 17:52:48 +02:00
Simon Ser
70c0dd1d78 readme: add notes about nginx 2021-05-27 17:47:31 +02:00
Simon Ser
f36bba897e Fix cross-network mixups when handling QUIT and NICK
Only mutate buffers if they belong to our connection.
2021-05-27 15:19:28 +02:00
Simon Ser
b2cdab86aa Add case-mapping support for channel members
Make a buffer's members an irc.CaseMapMap.
2021-05-27 15:17:18 +02:00
Simon Ser
615e746ec5 lib/client: add Client.cm
This contains the current connection case-mapping, parsed from the
CASEMAPPING ISUPPORT token.
2021-05-27 15:14:03 +02:00
Simon Ser
3110a9e2df lib/irc: add case-mapping primitives
irc.CaseMapping contains the basic canonicalization functions for
the three supported case-mappings. irc.CaseMapMap is a Map-like
class that supports case-mapped keys.
2021-05-27 15:13:32 +02:00
Simon Ser
d880b23d32 Add hint to run /help in unknown command error message 2021-05-27 12:55:28 +02:00
Simon Ser
45c12fb684 Add nick URL param
Closes: https://todo.sr.ht/~emersion/gamja/40
2021-05-27 12:32:22 +02:00
Simon Ser
37492e319b Style dialogs for dark theme
Closes: https://todo.sr.ht/~emersion/gamja/32
2021-05-27 12:05:24 +02:00
Simon Ser
fa80817168 Accomodate for empty BOUNCER host
BOUNCER doesn't support describing UNIX domain socket connections.
2021-05-27 11:51:29 +02:00
Simon Ser
071c2626d5 Open error bubbles for IRC numeric errors 2021-05-27 11:34:23 +02:00
Simon Ser
b8c4bb3112 Improve command error reporting
state.error is expected to be a String, not an Error.
2021-05-27 11:26:42 +02:00
Simon Ser
d5e21097f8 Add /quote command
Closes: https://todo.sr.ht/~emersion/gamja/22
2021-05-27 11:22:34 +02:00
Drew DeVault
d34bff9ed6 Implement /kick and KICK handling in buffers 2021-05-27 10:58:57 +02:00
Simon Ser
1d983bd142 Downgrade IRC network logging to debug level 2021-05-27 10:39:24 +02:00
Simon Ser
08678ba57e Always parse autojoin channels from URL params
Even if connection parameters were previously saved to local storage.
2021-05-27 10:36:03 +02:00
Simon Ser
ac5bbafdc3 Fix config.json relative path
The path should be relative to index.html, not the JS file.
2021-05-26 23:17:23 +02:00
Simon Ser
17cd38f0b9 Read auto-join channels from browser URL hash
This is easier to type than trying to escape the # in ?channels=#XXX.
2021-05-26 22:57:49 +02:00
Simon Ser
7c81fa6e8c Set the viewport meta tag 2021-05-26 22:42:35 +02:00
Simon Ser
695b02caaa Introduce store helper
Responsible for serializing/deserializing data to be saved in
localStorage. Add a prefix to all localStorage entries to avoid
conflicts with other webapps. Stop guarding against localStorage
not existing, browsers can just implement a dumb interface to
disable it.
2021-05-26 18:43:11 +02:00
Simon Ser
12a38ace90 Add support for IRCv3 setname 2021-05-25 20:22:21 +02:00
Simon Ser
92535fae24 Ignore BOUNCER NETWORK messages if we're already bound to a network 2021-05-25 17:11:06 +02:00
Simon Ser
9dba1b3736 Add vendor prefix to bouncer-networks BATCH type 2021-05-25 17:03:29 +02:00
Simon Ser
1b21f5f076 Display bouncer network status 2021-05-25 17:01:57 +02:00
Simon Ser
6524dc5dd2 Add support for the soju.im/bouncer-networks-notify cap 2021-05-25 17:01:20 +02:00
Simon Ser
94fba920cd Fix close() for bouncer networks 2021-05-25 17:01:18 +02:00
Simon Ser
5165df718f Disconnect on BOUNCER BIND error 2021-05-25 16:59:59 +02:00
Simon Ser
11642e1ab4 Add UI to edit/delete a network 2021-05-25 16:59:59 +02:00
Simon Ser
f84334c31e Add UI to add a new bouncer network 2021-05-25 16:59:57 +02:00
Simon Ser
4c62b7571e Indent channels and nicks in buffer list 2021-05-25 16:58:50 +02:00
Simon Ser
b429243573 Add support for the soju.im/bouncer-networks extension 2021-05-25 16:58:50 +02:00
Simon Ser
982a945932 Fix TypeError in handleBufferScrollTop
Fixes the following:

    TypeError: client is undefined
2021-05-25 14:28:48 +02:00
Simon Ser
ed92c3c61a Clear local storage when clicking "Disconnect" 2021-05-25 12:57:40 +02:00
Simon Ser
811984878c Switch to query params for msgid/timestamp in irc:// URLs
The hash is confusing because channels often start with a # too.
Instead, use a query parameter. This is consistent with [1], which
uses query params for the channel key.

[1]: https://datatracker.ietf.org/doc/html/draft-butcher-irc-url-04
2021-05-25 12:46:00 +02:00