Commit Graph
100 Commits
Author SHA1 Message Date
Simon Ser af1e2e144a Hide everything while loading config.json 2021-07-04 21:29:15 +02:00
Simon Ser dee9e06b2f connect-form: focus nickname input 2021-07-04 21:28:45 +02:00
Simon Ser 7b11b10955 Add /whowas command 2021-07-03 19:24:20 +02:00
Simon Ser 00eebc9859 composer: cycle through auto-completions
Closes: https://todo.sr.ht/~emersion/gamja/42
2021-06-30 22:20:40 +02:00
Simon Ser 08aefc9dc5 composer: add smart suffix after auto-completion
Append a space after a command name, so that arguments can be typed
directly. Append a colon after a nickname.
2021-06-30 21:56:45 +02:00
Simon Ser 856dd021e2 composer: auto-complete word at carret position 2021-06-30 21:50:55 +02:00
Simon Ser b289fd10b7 Always mark own messages as read 2021-06-24 18:04:26 +02:00
Simon Ser 429450e060 Handle RPL_INVITING 2021-06-24 18:01:24 +02:00
Simon Ser 0fa6381c07 Preserve white space sequences in log lines
This allows e.g. the MOTD to have properly-formatted ASCII art.
2021-06-24 10:41:48 +02:00
Simon Ser bc05fd5c11 Treat server broadcasts as highlights 2021-06-23 19:52:45 +02:00
Simon Ser 095006e961 Don't focus composer on key press if modifier is also pressed 2021-06-22 17:25:24 +02:00
Simon Ser 0d36e8a3fc Turn dialog close button into a <button>
This is semantically more correct.
2021-06-22 16:02:55 +02:00
Simon Ser 1ea3180f5b Use semantically more correct elements for error bubble 2021-06-22 15:48:42 +02:00
Simon Ser 724d7318cf Focus buffer scrollview instead of composer
Instead of focusing the composer, focus the buffer scrollview when
switching to a buffer. This allows keyboard navigation to work as
expected, with arrow up/down and page up/down scrolling the buffer
instead of doing nothing.

Focus back the composer when a KeyboardEvent produces text. This
allows users to start typing a message right after switching to a
buffer.

Closes: https://todo.sr.ht/~emersion/gamja/64
2021-06-22 14:47:39 +02:00
Simon Ser dc8f95c74d Improve composer form indentation 2021-06-22 13:38:05 +02:00
Simon Ser 7d15525c7d Allow resetting nick and auto-join with query params 2021-06-22 10:44:20 +02:00
Simon Ser ca8649c506 Add web app manifest
We'll need this to register protocol handlers.
2021-06-22 10:42:16 +02:00
Simon Ser c187eac3c8 lib/client: reject Client.roundtrip promise on disconnect 2021-06-21 00:18:17 +02:00
Simon Ser f8060c9be2 Allow resetting server URL with query param 2021-06-20 13:00:40 +02:00
Simon Ser 2203553519 Use cursor pointer for buttons
I'm usually not a fan of changing the default browser styles for
things like the cursor image, but here it actually improves
accessibility: it's clearer for the user what can be clicked on.

Closes: https://todo.sr.ht/~emersion/gamja/81
2021-06-11 14:46:45 +02:00
Simon Ser f875426826 Add /unvoice 2021-06-11 13:02:04 +02:00
Simon Ser 0b3f5ef88b Add irc.forEachChannelModeUpdate helper 2021-06-11 12:54:42 +02:00
Simon Ser 37cff435a3 Move MODE state updates outof App 2021-06-11 12:44:14 +02:00
Simon Ser ef50e62498 Add STATUSMSG indicator
Closes: https://todo.sr.ht/~emersion/gamja/65
2021-06-11 11:18:29 +02:00
Simon Ser d19f127952 Move message key generation to State.addMessage 2021-06-11 10:58:09 +02:00
Simon Ser c05dcffa7a readme: s/bare-bones/simple/
We used to be bare-bones, we're a little bit more than that now.
2021-06-11 10:19:46 +02:00
Simon Ser 02ba4be438 Don't try to reconnect if the network is down 2021-06-11 09:36:11 +02:00
Simon Ser 56c18e3810 Make "Remove network" button red 2021-06-11 00:33:22 +02:00
Simon Ser 4249da4ba8 Add /quiet and /unquiet 2021-06-11 00:27:19 +02:00
Simon Ser 5507b3253b Mark server buffer as unread after server query command
When a command will print its reply in the server buffer, mark it
as unread to make it more obvious where to look.

Closes: https://todo.sr.ht/~emersion/gamja/53
2021-06-10 19:33:59 +02:00
Simon Ser 61e35dd68a Bump direct message unread priority 2021-06-10 18:57:57 +02:00
Simon Ser e56deb35c9 Ensure config has a server object
Simplifies code accessing the config.
2021-06-10 18:34:34 +02:00
Simon Ser 093eecff91 readme: make it clear server.url can be a path in config.json 2021-06-10 18:28:44 +02:00
Simon Ser 77030931cb Reset config.server.auth when using custom server URL 2021-06-10 18:28:01 +02:00
Simon Ser 4df9328be8 Move auto-join field out of advanced options if pre-filled
Closes: https://todo.sr.ht/~emersion/gamja/82
2021-06-10 18:21:18 +02:00
Simon Ser 8972130252 s/var/let/ 2021-06-10 18:11:11 +02:00
Simon Ser 4db845a4b1 Show again connect form when last server is closed 2021-06-10 18:06:45 +02:00
Simon Ser 6039e13411 Add notification tags
This makes it so multiple messages from the same user will only
produce a single notification.
2021-06-10 17:11:21 +02:00
Simon Ser 63773f99ee Add Notification workaround for Chrome on Android
Closes: https://todo.sr.ht/~emersion/gamja/78
2021-06-10 17:08:24 +02:00
Simon Ser a952742d86 Make Client.roundtripChatHistory return an array of messages 2021-06-10 12:47:28 +02:00
Simon Ser 5b0bb43a24 Make Client.fetchBatch more reliable 2021-06-10 12:43:09 +02:00
Simon Ser ba92b3f677 lib/client: fix batch cleanup 2021-06-10 12:10:08 +02:00
Simon Ser 20f20b18df Linkify MOTD 2021-06-10 12:09:07 +02:00
Simon Ser 02800dd21b Don't open a new buffer on NOTICE 2021-06-10 12:07:17 +02:00
Simon Ser dd8eca1cfe Switch to server buffer on server name click
Closes: https://todo.sr.ht/~emersion/gamja/68
2021-06-10 12:03:50 +02:00
Simon Ser d2e41666ad lib/client: set a default server prefix
Set the default server prefix to "*". This allows the rest of the
code to assume all messages always have a prefix.
2021-06-10 11:53:53 +02:00
Simon Ser e28769216a Remove callback arg from App.createBuffer 2021-06-10 10:56:18 +02:00
Simon Ser bf76eaa669 Add State.createServer 2021-06-10 10:54:33 +02:00
Simon Ser 5fcbfa446c Use server buffer if name is unspecified in State.getBuffer 2021-06-10 09:25:17 +02:00
Simon Ser 41354d3035 lib/client: gracefully handle null in isMyNick/isChannel 2021-06-10 08:51:59 +02:00
Simon Ser 0705f4b182 lib/client: always populate prefix for incoming messages 2021-06-10 08:49:17 +02:00
Simon Ser 52ca3bb91c lib/linkify: add comma to punctuation in channel regex 2021-06-09 16:28:07 +02:00
Simon Ser 0c0f0ab79e Fix /me failing in user query buffers
This is a regression.
2021-06-09 10:17:32 +02:00
Simon Ser 2546d31af0 Blur the composer when hiding it
This should make toggling the composer in a server buffer more
reliable.
2021-06-07 15:18:15 +02:00
Simon Ser a9c1abb064 Route channel mode and invite/except list to channel buffer 2021-06-07 14:13:00 +02:00
Simon Ser dd753aab2e Add support for /mode without arguments 2021-06-07 14:12:49 +02:00
Simon Ser 5b7ab2652b Improve buffer header layout on mobile
Put buffer title above buffer description.
2021-06-06 17:27:05 +02:00
Simon Ser a419e660c0 Don't match punctuation suffix when linkifying channels 2021-06-06 16:00:37 +02:00
Simon Ser 403d7ec7f7 Add case-mapping support to irc.isHighlight
Closes: https://todo.sr.ht/~emersion/gamja/77
2021-06-06 15:52:58 +02:00
Simon Ser b9dc17db97 Disallow selecting text in <summary role="button">
This supersedes the cursor rule.
2021-06-06 12:08:21 +02:00
Simon Ser 6b75985f96 Make <summary> easier to click on Firefox Mobile
Add role=button to mark the element as a touch target.

Closes: https://todo.sr.ht/~emersion/gamja/80
2021-06-06 12:05:57 +02:00
Simon Ser 41c113be9a Show connect form during connection
This improves UX when the connection parameters (server URL,
username, password, and so on) are incorrect.
2021-06-06 11:33:00 +02:00
Simon Ser 48ae55942f Make @media queries whitespace consistent 2021-06-06 10:53:06 +02:00
Simon Ser efabd69476 Increase buffer/member list item height on mobile
Closes: https://todo.sr.ht/~emersion/gamja/62
2021-06-06 10:46:41 +02:00
Simon Ser 0dfb7623db Add support for labeled-response
It's just used to avoid mixing up messages coming from the server
so far.
2021-06-04 20:38:01 +02:00
Simon Ser 34078d5da7 Add support for draft/event-playback 2021-06-04 19:45:51 +02:00
Simon Ser 651e255ddb Use ISUPPORT CHANTYPES in Client.isChannel 2021-06-04 19:17:39 +02:00
Simon Ser db7aa337cb Remove App.isChannel
Replace all remaining usage with Client.isChannel. Client will be
able to use the ISUPPORT tokens to check if a name is a channel.
2021-06-04 19:13:59 +02:00
Simon Ser 87588abf27 Add State.addMessage 2021-06-04 19:07:14 +02:00
Simon Ser 04362644bf Handle TOPIC in State.handleMessage 2021-06-04 18:57:02 +02:00
Simon Ser 30a345298f Handle JOIN/PART in State.handleMessage 2021-06-04 18:53:06 +02:00
Simon Ser 2af58f8d0b Move createBuffer to State 2021-06-04 18:37:34 +02:00
Simon Ser 2c1bb4ce6a Introduce State.handleMessage
Takes an IRC message, updates the state.

Doesn't yet handle all messages, this will be a step-by-step process.
2021-06-04 18:27:21 +02:00
Simon Ser 4d988cafeb Move some state utilities to state.js 2021-06-04 18:03:03 +02:00
Simon Ser 791b742684 Allow config.server.ping to be a String
Workaround for existing config files in the wild.
2021-06-04 17:50:49 +02:00
Simon Ser 6e20ad872e Add support for STATUSMSG
Closes: https://todo.sr.ht/~emersion/gamja/65
2021-06-03 13:31:43 +02:00
Simon Ser 3b5b693403 Use bufName in addMessage, fix missing Client.isMyNick() 2021-06-03 13:29:32 +02:00
Simon Ser 283f8af4b1 lib/irc: rename IRC prefix utilities 2021-06-03 13:18:28 +02:00
Simon Ser 04c9f0211a Fix undefined server variable in BufferHeader 2021-06-03 13:10:44 +02:00
Simon Ser fe9c483570 s/network/server/
Closes: https://todo.sr.ht/~emersion/gamja/46
2021-06-03 11:46:50 +02:00
Simon Ser 63a71e5f5d Add support for incoming INVITE messages 2021-06-03 11:04:32 +02:00
Simon Ser 55882776b0 Make command descriptions more consistent 2021-06-03 10:28:04 +02:00
Simon Ser 291c9e177d Add /unban 2021-06-03 10:25:33 +02:00
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