Commit Graph
100 Commits
Author SHA1 Message Date
Simon Ser b3d825c9d1 Hide composer when disconnected from server 2021-05-31 12:04:54 +02:00
Simon Ser 68753afb8e Ensure connect form has padding
Even on small screens.
2021-05-31 10:55:26 +02:00
Simon Ser 8fbc0a5c62 Fix Alt+h messing up all buffers 2021-05-31 10:46:41 +02:00
Simon Ser b0671fe336 Group folded events by type 2021-05-31 10:35:34 +02:00
Simon Ser ce239e5785 Improve FoldGroup key and shouldComponentUpdate 2021-05-31 10:35:34 +02:00
Simon Ser 8b20b463ff Display last event time when folding messages 2021-05-31 10:35:34 +02:00
Simon Ser 2bc89a6655 Filter out PART → JOIN pairs 2021-05-31 10:35:34 +02:00
Simon Ser 64674bdd9f Fold unimportant messages together 2021-05-31 10:35:34 +02:00
Simon Ser b4367eb13c Simplify /query usage string 2021-05-28 13:58:39 +02:00
Simon Ser 9e9dcff401 Mute date separator line color in dark theme 2021-05-28 11:22:18 +02:00
Simon Ser 5b29cf83f6 Add /motd 2021-05-28 11:17:37 +02:00
Simon Ser e080e87cb7 Pretty-print MOTD 2021-05-28 10:50:42 +02:00
Simon Ser 8123ff3844 Misc theme improvements
- Mute unimportant messages on dark theme
- Adjust button background on light theme
2021-05-28 10:34:39 +02:00
Simon Ser 99ac0151a5 Use Client.isMyNick in NOTICE/PRIVMSG handling 2021-05-28 10:24:40 +02:00
Simon Ser 5a3edf4769 Fix WHOIS DB not using case-mapping fallback
In case the server advertises an unsupported case-mapping, we have
a fallback.
2021-05-28 09:59:51 +02:00
Simon Ser 7b762b3e8a Unregister PING timer when destroying client 2021-05-28 09:58:06 +02:00
Simon Ser 24fe62f1de Ensure msg.prefix is always populated 2021-05-28 09:49:21 +02:00
Simon Ser e9d90d4927 Fix TypeError in isHighlight
TypeError: msg.prefix is null
2021-05-28 09:49:21 +02:00
Simon Ser fc9dfa2dca Implement case-mapping for buffers and message handler 2021-05-27 23:40:08 +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
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
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
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
Simon Ser 9e163b7647 Switch it isuser in irc:// URLs
This is what the most recent draft [1] uses.

[1]: https://datatracker.ietf.org/doc/html/draft-butcher-irc-url-04
2021-05-25 12:42:24 +02:00
Simon Ser 07c10b3b1f Only switch to autojoin channel once 2021-05-25 12:40:33 +02:00
Simon Ser f943d8ea15 readme: update IRC channel 2021-05-25 12:35:43 +02:00
Simon Ser d261886199 Add support for config file
Closes: https://todo.sr.ht/~emersion/gamja/20
2021-05-25 12:33:22 +02:00
Simon Ser e0cde27d66 Add simple /mode command 2021-05-23 11:41:04 +02:00
Simon Ser 22e54dac56 Update dependencies
Fixes a security vuln.
2021-05-17 09:52:42 +02:00
Simon Ser f122e44e9b Use ISUPPORT CHATHISTORY to discover max page size 2021-05-11 16:10:50 +02:00
Simon Ser 305ffb569c Parse ISUPPORT tokens in client 2021-05-11 16:03:16 +02:00
Simon Ser e242d5222e Fix TypeError in App.render()
Fixes the following error:

    Uncaught (in promise) TypeError: activeBuffer is undefined
2021-05-10 15:09:49 +02:00
Simon Ser 870a9b6be5 Add CSS for email fields 2021-04-27 12:25:57 +02:00
Simon Ser 5b29e2656e Improve dark theme style for text inputs 2021-04-27 11:23:44 +02:00
Simon Ser 727331c859 Remove client from map on disconnect 2021-03-10 11:01:04 +01:00
Simon Ser 4991518ed5 Display error popup on FAIL 2021-03-09 21:48:04 +01:00
Simon Ser 97e75805fa Add some space between error message and close button 2021-03-09 21:47:39 +01:00
Simon Ser d0b5f63a22 Move dialog submit buttons to the right 2021-03-09 19:08:16 +01:00
Simon Ser 88c0e5ae94 Break long tag attributes on multiple lines
Makes that stuff more readable.
2021-03-09 18:11:59 +01:00
Simon Ser 8ab10cf2a5 lib/irc: escape/unescape everything in tags
Without the greedy flag on the regexp, String.replace will just
replace the first match.

While at it, also make sure to convert to a string when formatting
tag values. This allows tag values to be e.g. numbers.
2021-03-09 17:40:57 +01:00
Simon Ser 2d4409e7aa lib/irc: accept tags without value 2021-03-09 17:31:12 +01:00
Simon Ser 4257463b46 Rename Connect/Join to ConnectForm/JoinForm 2021-03-09 13:25:31 +01:00
Simon Ser c83a74cc50 Cleanup compareBuffers 2021-03-09 12:04:12 +01:00
Simon Ser 5fea13df0a Trigger client error if server doesn't support SASL 2021-03-09 09:44:48 +01:00
Simon Ser 56e705b6de Only switch buffer on connect if there's no active buffer 2021-03-09 09:38:55 +01:00
Simon Ser bf30038b41 Fix whitespace issues 2021-03-09 09:17:01 +01:00
Simon Ser bc45fce557 readme: add IRC discussion channel 2021-03-08 19:04:38 +01:00
Simon Ser 6c5f4f73df readme: document query params 2021-03-08 19:02:31 +01:00
Simon Ser 7139e4511b Remove unused DEFAULT_NETWORK constant 2021-03-08 17:34:00 +01:00
Simon Ser ed5a771ea0 Fix overflowed dialogs 2021-03-08 17:26:51 +01:00
Simon Ser 78f22fce4e Add help section for commands 2021-03-08 17:25:00 +01:00
Simon Ser 17a2d48b2e Add help dialog with keybindings reference 2021-03-08 17:05:48 +01:00
Simon Ser 30157383e8 Add dialog for join form 2021-03-08 16:23:16 +01:00
Simon Ser 996d7d06d4 Extract error message popup 2021-03-08 15:05:43 +01:00
Simon Ser 194168c062 Display server messages in server buffer
References: https://todo.sr.ht/~emersion/gamja/21
2021-03-08 14:27:05 +01:00
Simon Ser 718929f0d2 Sort commands by name 2021-03-07 21:06:26 +01:00
Simon Ser 6c0878eeac Remove duplicate command impl 2021-03-07 21:03:52 +01:00
Simon Ser 6430fa252a lib/client: log close code 2021-03-03 18:30:15 +01:00
Simon Ser aa79067179 lib/client: extract fetchBatch function from roundtripChatHistory 2021-03-03 14:13:05 +01:00
Simon Ser 3ece5f1ca5 Fix buffer not removed in close() 2021-03-03 09:59:40 +01:00
Simon Ser ae914d4106 Fix buffer refs in commands 2021-03-03 09:58:09 +01:00
Simon Ser 72977b30b4 Log errors to console on command failure 2021-03-03 09:56:23 +01:00
Simon Ser eaf3b0a5ac Fix TypeError when clicking on nick in buffer 2021-03-03 09:41:19 +01:00
Simon Ser 3536331f94 lib/client: throw error in send if disconnected 2021-03-03 09:37:26 +01:00
Simon Ser 8a5fa4d5c2 lib/client: reset state when websocket is closed 2021-03-03 09:36:48 +01:00
Simon Ser 80e0175d36 Make all resource paths relative
Closes: https://todo.sr.ht/~emersion/gamja/17
2021-03-02 22:46:48 +01:00
Simon Ser a5608a40d5 Fix server URL field not auto-populated 2021-03-02 22:46:15 +01:00
Simon Ser 81f3159e8f Make date separators more readable 2021-03-02 22:17:52 +01:00