Simon Ser
a2dc045683
Add getActiveChannel
...
Simplifies the command logic
2021-06-03 10:19:09 +02:00
Simon Ser
9067b5a168
Make getActiveClient throw an error if disconnected
2021-06-03 10:19:09 +02:00
Simon Ser
a4294975a2
Add support for /ban without argument
2021-06-03 10:19:09 +02:00
Simon Ser
5004f6c89c
components/help: document that / allows to start writing a command
2021-06-02 22:53:28 +02:00
Simon Ser
91208a6d47
Add support for CHATHISTORY TARGETS
...
The main motivation is to avoid missing direct messages coming from
other users.
A nice side-effect is that we no longer need to issue CHATHISTORY
queries for each channel we JOIN: instead, we can only fetch
history for targets known to have new messages available (as indicated
by CHATHISTORY TARGETS).
We use read receipts instead of delivery receipts, so that reloading
the webapp restores the exact same state (ie, unread messages are
re-fetched).
References: https://github.com/ircv3/ircv3-specifications/pull/450
2021-06-02 20:37:20 +02:00
Simon Ser
74d9dea5bb
Use RegExp match indices in linkifyChannel
2021-06-01 09:53:11 +02:00
Simon Ser
9affdb894f
Make Alt+ArrowUp and Alt+ArrowDown wrap around
2021-05-31 19:21:54 +02:00
Simon Ser
9224ab9d0d
Set scrollbar style
2021-05-31 18:43:44 +02:00
Simon Ser
e38f35c578
Order buffers by priority in Alt+a
2021-05-31 18:26:04 +02:00
Simon Ser
958b6bf120
Set enterkeyhint in composer
2021-05-31 18:16:49 +02:00
Simon Ser
8c02cdc094
Hide server URL input if set in config or query
...
Closes: https://todo.sr.ht/~emersion/gamja/52
2021-05-31 18:13:44 +02:00
Simon Ser
04932317f6
Populate server URL in fillConnectParams
2021-05-31 18:11:33 +02:00
Simon Ser
4fff2b1b8d
Unify connect params keys
2021-05-31 18:04:02 +02:00
Simon Ser
c632ef4339
Don't save default username/realname in local storage
2021-05-31 17:57:17 +02:00
Simon Ser
bc7162ebe2
Pretty-print buffer name in buffer header
2021-05-31 17:39:37 +02:00
Simon Ser
6e16163103
Re-fold HTML in BufferList
2021-05-31 17:34:36 +02:00
Simon Ser
ced63b0abc
Print server status in header prior to RPL_MYINFO
2021-05-31 17:30:45 +02:00
Simon Ser
06ca812d06
Simplify Client.roundtrip callback arg
2021-05-31 17:14:46 +02:00
Simon Ser
619f1db08f
Introduce Client.who
2021-05-31 17:11:42 +02:00
Simon Ser
02145b45ad
Remove unused arg from Client.whois
2021-05-31 17:04:52 +02:00
Simon Ser
e271a3cd0e
Add /who
2021-05-31 17:02:56 +02:00
Simon Ser
fff0907354
Make buffer title bold
2021-05-31 16:45:46 +02:00
Simon Ser
14dbb60aec
Fix null membership on JOIN
2021-05-31 16:08:33 +02:00
Simon Ser
e90c07e64e
Remove unnecessary if in /ban
...
If whois info is unavailable, the promise is rejected.
2021-05-31 14:53:56 +02:00
Simon Ser
a6cdd64444
readme: document server.ping in config section
2021-05-31 14:48:51 +02:00
Simon Ser
2c1e4b7bea
Fix commas in folded NICK messages
2021-05-31 14:08:30 +02:00
Simon Ser
e76e71c968
Fallback to first server buffer in Alt+a keybind
...
Previously we switched to the server buffer for the current network.
2021-05-31 13:24:23 +02:00
Simon Ser
ab11af3965
Init App.config
2021-05-31 12:26:57 +02:00
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