~emersion/gamja

v1.0.0-beta.9 1 year, 1 month ago .tar.gz browse log

gamja v1.0.0-beta.9

Simon Ser (25):
      store: stop matching server URL and nick
      store: protect against dup buffers
      store: fix clearing buffers for a specific server
      Upgrade dependencies
      lib/irc: add formatURL
      Migrate to async/await
      components/app: prevent multiple WHO channel commands in parallel
      state: handle WHO replies in bulk
      Keep closed buffers in store
      store: fix undefined Unread
      components/help: fix typo for Ctrl key bindings
      Add buffer switcher
      components/switcher-form: match topics and realnames
      Send PING on window focus
      lib/client: ensure server prefix is never null
      Upgrade dependencies
      state: simplify MONITOR reply handling
      Show MONITOR online/offline notifications in user buffers
      Fix ReferenceError when adding new bouncer network
      Set targets.default.context in package.json
      components/buffer: drop duplicate MONITOR events
      Move docs to a separate directory
      doc/setup: improve gamja config instructions for webircgateway
      doc/setup: add kimchi instructions
      components/app: throttle our focus PINGs

v1.0.0-beta.8 1 year, 10 months ago .tar.gz browse log

gamja v1.0.0-beta.8

Giorgi Taba Kobakhidze (1):
      components/app: ensure msg.tags is initialized

Simon Ser (5):
      Upgrade dependencies
      components/composer: focus composer on keydown if a link is active
      Don't perform OAuth redirection after server meteadata error
      readme: document default for server.url in config.json
      lib/client: encode empty SASL response as "+"

v1.0.0-beta.7 2 years ago .tar.gz browse log

gamja v1.0.0-beta.7

Juan Cruz Orioli (1):
      components: Use onInput instead of onChange

Nolan Prescott (1):
      Sort lists with localeCompare

Simon Ser (25):
      Update dependencies
      components/app: don't open buffer for CTCP messages
      Ignore RPL_CHANNEL_URL
      Limit composer length
      Fetch read marker before backlog for user targets
      Fix ignored MARKREAD messages
      Fix draft/read-marker cap not negotiated
      Drop support for soju.im/read
      components/buffer-list: show buffers with errors in red
      Disallow server.{autoconnect,auth} mismatch in config.json
      Remove unnecessary if in App.handleConfig
      Add config option to generate random nickname
      Display error in loading state
      components/app: switch off loading state atomically
      components/connect-form: autofocus username field
      Upgrade dependencies
      Add support for OAuth 2.0 authentication
      Load initial members state via WHO when channel is selected
      Remove unnecessary whoChannelBuffer() call
      Use ratified extended-monitor cap name
      lib/client: unify checks for chathistory end
      Close settings dialog when disconnecting
      Make first server check more robust when disconnecting
      Move msg.tags fallback to client
      Skip regular chat message handling for infinite scroll

delthas (1):
      Fix stripping hex color formatting

xse (1):
      Make use of destBuffers when fetching history.

v1.0.0-beta.6 2 years ago .tar.gz browse log

gamja v1.0.0-beta.6

Arik (1):
      Use monospace on <input> too

Simon Ser (5):
      components/buffer-header: fix duplicate settings button
      components/buffer: show disclaimer for +draft/channel-context messages
      Add support for draft/read-marker
      ci: fix deploy host
      ci: deploy to new server

delthas (1):
      Support @+draft/channel-context

v1.0.0-beta.5 2 years ago .tar.gz browse log

gamja v1.0.0-beta.5

Simon Ser (14):
      commands: fix TypeError in kickban
      Handle CHATHISTORY messages when reaching end of batch
      Update webpage title when switching buffer
      store: use lower-case for buffer keys
      components/scroll-manager: don't crash when Buffer is empty
      Add support for bot mode
      Fix ping config lost in ConnectForm
      Add a settings dialog
      components/buffer-header: print bouncer network error if any
      Upgrade dependencies
      Workaround the sad state of base64 web APIs
      Add a setting for seconds in timestamps
      Add button to enable protocol handler in settings
      Fix invalid relative import

Umar Getagazov (1):
      components/app: switch to server buffer on close only if active

v1.0.0-beta.4 2 years ago .tar.gz browse log

gamja v1.0.0-beta.4

This version fixes errors when using the Parcel build.

Simon Ser (1):
      Upgrade dependencies

v1.0.0-beta.3 2 years ago .tar.gz browse log

gamja v1.0.0-beta.3

Isaac Freund (1):
      Better handle long topics on small screen sizes

Noelle Leigh (1):
      Display persistant command input on server buffer

Simon Ser (40):
      components/help: remove "/" keybinding, document middle mouse click
      components/help: use bold for command name only
      commands: simplify /who usage string
      components/buffer: fix INVITE link
      lib/irc: add missing Isupport.chanModes
      commands: add comment param to /kick usage
      state: add bouncerNetworks helpers
      components/buffer-list: remove pointless temporary variable
      components/buffer-header: fix dead space above description
      Set min node version in package.json
      components/app: make switchBuffer state changes atomic
      Fix unread marker going back
      store: debounce buffer store saves
      components/app: introduce receiptFromMessage
      Introduce isMessageBeforeReceipt
      Refactor receipts
      Make delivery receipts follow read receipts
      Add support for soju.im/read
      components/app: include server ID in notification tags
      components/app: make showNotification return null on error
      components/app: close notifications when switching buffer
      components/app: close notifications when receiving READ message
      components/app: introduce getReceipt
      Don't fetch backlog before read receipt
      store: fix no-op read receipt update detection
      components/app: stop updating prevReadReceipt on READ message
      components/app: move lastErrorID declaration down
      keybindings: fix error on alt+h
      state: add isReceiptBefore
      store: add note about comparison in Buffer.put
      Update stored unread status on READ message
      Prevent hole in history when reconnecting
      Refactor backlog fetching into function
      lib/irc: drop outdated CapRegistry TODO
      store: save buffer state when user navigates away
      components/app: fix missing semicolons
      lib/irc: add missing num range to alphaNum regexp
      lib/irc: remove unnecessary non-breaking-space case
      lib/irc: fix bound check in isHighlight
      Convert remaining simple quotes to double quotes

delthas (2):
      commands: add password param to /join
      components/connect-form: make the server password field password-typed

xse (1):
      components/buffer: use browser locale for date-separator

Дамјан Георгиевски (1):
      fix ping after reconnect

v1.0.0-beta.2 3 years ago .tar.gz browse log

gamja v1.0.0-beta.2

Cara Salter (1):
      commands: Add LIST command

Drew DeVault (1):
      Improve noscript UI appearance

Rafael Castillo (1):
      Add away command

Simon Ser (116):
      components/buffer: add RPL_UMODEIS pretty-printing
      components/buffer: pretty-print RPL_CHANNELMODEIS and RPL_CREATIONTIME
      lib/client: handle MONITOR without value in ISUPPORT
      Add more type checks for config.json
      Inherit from default connectParams in handleConfig
      Don't allow overriding server URL if set in config.json
      Add autoconnect to config.json
      Add nick to config.json
      Allow revealing server field with ?server
      Add support for SASL EXTERNAL
      readme: mention server.ping when server doesn't send PINGs
      Switch from anchorme to linkifyjs
      Handle click on irc:// channel URLs inside buffers
      Open dialog to create new network on IRC URL click
      Handle IRC URLs without channel name
      Use linkifyjs module
      Use ISUPPORT NETWORK if user hasn't specified custom name
      lib/irc: "unknown" is not a meaningful realname
      Fallback to bouncer network host if name is unset
      Close buffer tabs on middle click
      Unescape ISUPPORT values
      Allow bouncers to set NETWORK in ISUPPORT
      Don't add RPL_SASLSUCCESS to server buffer
      Don't add RPL_YOURHOST to server buffer
      Pretty-print RPL_LOGGEDIN and RPL_LOGGEDOUT
      Avoid using `export * as namespace`
      Add minimal Parcel integration
      gitignore: add Parcel files
      lib/irc: extend parseURL to support flags and skip auth + options
      lib/client: rename whoisDB to pendingWHOIS, garbage collect
      lib/client: generalize pendingWHOIS, store list in ENDOF* messages
      state: process RPL_NAMREPLY atomically
      Add App.routeMessage
      state: move in QUIT and NICK update logic
      Upgrade http-server
      Remove unnecessary irc.formatDate call
      Add hint in server operators buffer header
      Add RPL_WELCOME to server buffer
      lib/client: fix missing account in WHOX
      components/buffer-header: skip account name if it matches nick
      components/buffer-header: mark unauthenticated users as such
      lib/irc: add "fullname" to isMeaningfulRealname
      Request more messages for event-playback infinite scrolling
      components/buffer-header: add help text for user details
      Route user MODE messages to server buffer
      Route self-NICK messages to server buffer
      lib/client: use Client.isMyNick to handle self-NICK messages
      components/buffer: show MODE target if different from buffer name
      Add Parcel to dev dependencies
      Keep track of channel join status
      De-duplicate nicks in folded JOIN/PART/QUIT lines
      Disconnect previous server on connect re-submit
      s/var/let/
      Auto-join when adding new network on irc:// link click
      Ask confirmation before JOIN on irc:// link click
      Add "open" URL param
      Don't auto-join without prompting user
      Request WHO info w/ empty message list in switchBuffer
      Always insert non-chathistory messages at the end
      Add support for draft/extended-monitor
      Don't stop fetching backlog on error
      Only allow one WHO command at a time
      Store WHO list in RPL_ENDOFWHO
      lib/irc: fix handling for prefixes without host
      Add UI to enable protocol handler
      Reword ProtocolHandlerNagger message
      Properly handle port in irc:// URLs
      Auto-dismiss client error on reconnect
      readme: add link to IRC channel
      ci: add .build.yml
      ci: add deploy task
      ci: fix deploy branch check
      ci: fix deploy branch check again, exclude config.json
      Avoid inline script in index.html
      lib/client: don't error out if SASL isn't available on RPL_WELCOME
      state: add account to server
      lib/client: remove one roundtrip during SASL auth
      lib/client: don't disconnect on SASL error if registered
      lib/client: always request sasl cap when available
      lib/client: catch handleMessage errors
      lib/client: send BOUNCER BIND and CAP END immediately
      lib/client: make authenticate() return a promise
      Add post-connect UI to login via SASL
      Ignore RPL_AWAY
      components/connect-form: replace auto-join text field with checkbox
      readme: add nginx file server directive
      Add embedded Content-Security-Policy
      Dim away users in member list
      components/member-list: re-render on State.users update
      components/buffer-header: hide action buttons when disconnected
      Clear channel joined field when disconnected
      Linkify error messages
      Add support for draft/account-registration
      Add link to verify account next to VERIFICATION_REQUIRED message
      Show "Manage network" even if upstream is disconnected
      Mark register/verify dialogs as loading
      Mark auth dialog as loading
      Add custom developement server
      Add usage message to development server
      Disable debug logs in production
      components/buffer-header: fix missing "join" button for parted channel
      Update channel join status when kicked
      lib/client: introduce IRCError
      lib/client: add generic error handling to roundtrip()
      Add Client.join, show join errors in popup
      Read nickname from RPL_WELCOME
      Handle FAIL ACCOUNT_REQUIRED
      lib/client: use Error objects for error events
      Refactor ISUPPORT handling
      Implement exponential backoff for reconnections
      Move isBouncer props to server state
      state: fix server bouncerNetID
      Add reconnect button
      lib/irc: add CapRegistry
      ci: fix deploy skip
      state: fix prefix() call in MODE handler

v1.0.0-beta.1 3 years ago .tar.gz browse log

gamja v1.0.0-beta.1

This is the first gamja pre-release.

Drew DeVault (19):
      Implement /kick and KICK handling in buffers
      Add /j alias for /join
      Add /stats command
      Handle incoming MODE messages in appropriate buffer
      /mode: use active buffer if omitted
      Improve contrast of nick colors on dark theme
      Implement optional opportunistic pings
      Implement togglable sidebars for narrow viewports
      Restyle action buttons
      style: minor adjustment to buttons
      Add /op, /deop commands
      Add /whois command
      Add /ban, /kickban commands
      composer: turn off browser autocomplete
      Add /voice, /devoice
      Add /invite command
      Add /lusers command
      Display prefixes in member list
      Add "auth" parameter to tune connect form

Hubert Hirtz (2):
      irc: Strip lone backslashes from tag values
      Fix double space introduced before last param

Simon Ser (437):
      Initial commit
      Remove dead appendMessage function
      Colorful nicknames
      Fix addMessage always adding to last buffer
      Avoid sending empty messages
      Add README.md
      Replace getElementById with querySelector
      Rename #log to #buffer
      Handle messages sent to *
      Don't hardcode grid cell sizes
      Add support for /me
      Show join/leave messages
      Add connect form, add /join command
      Handle self NICK messages
      Handle RPL_WELCOME
      Add "remember me" checkbox in connect form
      Handle ERR_PASSWDMISMATCH
      Add /quit command
      Prevent text selection cursor over <summary>
      Forget credentials on /quit
      Add /part
      Add "server" query parameter
      Add option to auto-join channels
      Log outgoing messages
      Rename server buffer
      Smarter server URL auto-detection
      Add /msg command
      Add support for TOPIC messages
      Keep track of channel members, add /nick command
      Implement capability negociation
      Add support for SASL PLAIN
      Add back form input for PASS
      Move server URL to advanced options
      Add support for message tags
      Request message-tags cap
      Add support for server-time
      Enable multi-prefix
      Add dev server
      Switch to ES6 imports
      Fix TypeError when sending message
      Mark package as private
      Introduce Client class
      Fix empty buffers on switch
      Remove assets/
      Switch to react
      readme: add usage
      readme: extend copyright holder
      Reset buffers on disconnect
      Add <noscript> message
      Fix missing channel name in setBufferState call
      Add isChannel
      Implement /close
      Remove disconnect()
      Make setBufferState merge the new state with the prev one
      Mark buffers as unread on new message
      Store message date in addMessage
      Fix unread indicator not showing up
      Fix TypeError when auto-filling server URL
      Set default connect params in App constructor
      Break long words in buffer
      Save and restore buffer scroll position
      Hide CAP and AUTHENTICATE messages in server buffer
      Change buffer list style
      Fix buffer list overflow
      Fix buffer and buffer list padding
      Linkify messages
      Add buffer header
      Add missing buffer-header.js
      Make nick links clickable
      Fix unclickable nick in NICK message
      Implement /buffer
      Introduce buffer type
      Convert server/channel/nick links to irc:// scheme
      Send WHO query when opening nick buffer
      Parse RPL_MYINFO
      Request caps on CAP NEW
      Add away indicator
      Add member list
      Sort buffers and members
      Set key attr in buffer list items
      Enable echo-message
      Listen to input evbent in composer
      Rename sidebar and topbar
      Implement /me
      Add reason arg to /part
      Add key attr to log lines
      Avoid String.prototype.replaceAll
      Expand buffer column
      Add button to join new channel
      Hide composer input outline
      Detect highlights
      Open notification on new highlight
      Add basic autocompletion
      Print IRC error messages in red
      Fix RPL_NAMREPLY handling with multiple nicks
      Only nag about notifications in server buffer
      Reply to PING
      Allow paths in server URL query param
      readme: add more detailed usage instructions
      Remove outdated TODO
      readme: add link to sr.ht hub project
      Handle QUIT messages
      Implement /topic command
      Don't use `this` in functional components
      Optimize Buffer
      Implement chathistory support
      Fix TypeError in Composer.focus
      Use strict equality comparison in shouldComponentUpdate
      Add shouldComponentUpdate to member list
      Hide horizontal scrollbars on Firefox
      Show offline user status
      Linkify topic
      Extract commands to separate file
      Autocomplete commands
      Avoid sending multiple CHATHISTORY commands in parallel
      Mark FAIL as an error
      Fetch all unread messages on reconnect
      Add message URLs, unify URL generation
      Use msgid in message URL if available
      Add .editorconfig
      readme: add links to mailing list and issue tracker
      Add keybinding infrastructure
      Add keybinding to jump to next unread buffer
      readme: add screenshot
      Fix wrong variable name App.close
      Sort buffers when inserting, not when rendering
      Add Alt+Up/Down key bindings
      Handle RPL_NOTOPIC
      Fix inverted channel list sorting
      Strip ANSI escape sequences
      Clear error when submitting connect form
      Improve SASL error message
      Add /notice command
      lib/irc: make isHighlight operate on messages
      Display messages with a highlight differently
      Don't send CHATHISTORY command if server doesn't support it
      Strip ANSI sequences from notifications text
      Make Alt+a fallback to server buffer
      Parse all CTCP messages
      Add date separators to buffer
      Format NOTICE messages differently
      Better handle registration errors
      Ignore RPL_TOPICWHOTIME
      Add unread message separator
      Reconnect when loosing connection
      Add disconnect/reconnect commands
      Update preact
      Introduce state.networks
      Add network to buffer state
      Introduce buffer IDs
      Take a buffer ID in getBuffer
      Take a buffer ID in switchBuffer
      Take buffer ID in close
      Sort buffers by network
      Drop state.activeNetwork
      Remove network from map when closing
      Nuke DEFAULT_NETWORK
      Add support for RPL_ISUPPORT
      Extract network name from ISUPPORT
      Print current connection status
      Fix composer not hidden in server buffer
      Convert caps to lower case
      Use buffer IDs in endOfHistory
      Multiple clients per app
      Delay Client error event
      Keep track of client status in Client
      Move auto-reconnect logic into Client
      Move chat history operations into Client
      Spread it like butter
      Log WebSocket constructor error in the console
      Harmonise client connection params
      Use buffer ID in BufferItem.onBufferClick
      Fix undefined CHATHISTORY_PAGE_SIZE
      Fix inverted condition in fetchHistoryBefore
      Move join button to buffer header
      Improve scroll position save/restore mechanism
      Fix messages in current buffer not marked as read
      Make date separators more readable
      Fix server URL field not auto-populated
      Make all resource paths relative
      lib/client: reset state when websocket is closed
      lib/client: throw error in send if disconnected
      Fix TypeError when clicking on nick in buffer
      Log errors to console on command failure
      Fix buffer refs in commands
      Fix buffer not removed in close()
      lib/client: extract fetchBatch function from roundtripChatHistory
      lib/client: log close code
      Remove duplicate command impl
      Sort commands by name
      Display server messages in server buffer
      Extract error message popup
      Add dialog for join form
      Add help dialog with keybindings reference
      Add help section for commands
      Fix overflowed dialogs
      Remove unused DEFAULT_NETWORK constant
      readme: document query params
      readme: add IRC discussion channel
      Fix whitespace issues
      Only switch buffer on connect if there's no active buffer
      Trigger client error if server doesn't support SASL
      Cleanup compareBuffers
      Rename Connect/Join to ConnectForm/JoinForm
      lib/irc: accept tags without value
      lib/irc: escape/unescape everything in tags
      Break long tag attributes on multiple lines
      Move dialog submit buttons to the right
      Add some space between error message and close button
      Display error popup on FAIL
      Remove client from map on disconnect
      Improve dark theme style for text inputs
      Add CSS for email fields
      Fix TypeError in App.render()
      Parse ISUPPORT tokens in client
      Use ISUPPORT CHATHISTORY to discover max page size
      Update dependencies
      Add simple /mode command
      Add support for config file
      readme: update IRC channel
      Only switch to autojoin channel once
      Switch it isuser in irc:// URLs
      Switch to query params for msgid/timestamp in irc:// URLs
      Clear local storage when clicking "Disconnect"
      Fix TypeError in handleBufferScrollTop
      Add support for the soju.im/bouncer-networks extension
      Indent channels and nicks in buffer list
      Add UI to add a new bouncer network
      Add UI to edit/delete a network
      Disconnect on BOUNCER BIND error
      Fix close() for bouncer networks
      Add support for the soju.im/bouncer-networks-notify cap
      Display bouncer network status
      Add vendor prefix to bouncer-networks BATCH type
      Ignore BOUNCER NETWORK messages if we're already bound to a network
      Add support for IRCv3 setname
      Introduce store helper
      Set the viewport meta tag
      Read auto-join channels from browser URL hash
      Fix config.json relative path
      Always parse autojoin channels from URL params
      Downgrade IRC network logging to debug level
      Add /quote command
      Improve command error reporting
      Open error bubbles for IRC numeric errors
      Accomodate for empty BOUNCER host
      Style dialogs for dark theme
      Add nick URL param
      Add hint to run /help in unknown command error message
      lib/irc: add case-mapping primitives
      lib/client: add Client.cm
      Add case-mapping support for channel members
      Fix cross-network mixups when handling QUIT and NICK
      readme: add notes about nginx
      Switch to channel buffer on /join
      Fix lib/irc.js import path in commands.js
      Ignore TAGMSG messages
      Fix typo in Unread.union
      Implement case-mapping for buffers and message handler
      Fix TypeError in isHighlight
      Ensure msg.prefix is always populated
      Unregister PING timer when destroying client
      Fix WHOIS DB not using case-mapping fallback
      Use Client.isMyNick in NOTICE/PRIVMSG handling
      Misc theme improvements
      Pretty-print MOTD
      Add /motd
      Mute date separator line color in dark theme
      Simplify /query usage string
      Fold unimportant messages together
      Filter out PART → JOIN pairs
      Display last event time when folding messages
      Improve FoldGroup key and shouldComponentUpdate
      Group folded events by type
      Fix Alt+h messing up all buffers
      Ensure connect form has padding
      Hide composer when disconnected from server
      Init App.config
      Fallback to first server buffer in Alt+a keybind
      Fix commas in folded NICK messages
      readme: document server.ping in config section
      Remove unnecessary if in /ban
      Fix null membership on JOIN
      Make buffer title bold
      Add /who
      Remove unused arg from Client.whois
      Introduce Client.who
      Simplify Client.roundtrip callback arg
      Print server status in header prior to RPL_MYINFO
      Re-fold HTML in BufferList
      Pretty-print buffer name in buffer header
      Don't save default username/realname in local storage
      Unify connect params keys
      Populate server URL in fillConnectParams
      Hide server URL input if set in config or query
      Set enterkeyhint in composer
      Order buffers by priority in Alt+a
      Set scrollbar style
      Make Alt+ArrowUp and Alt+ArrowDown wrap around
      Use RegExp match indices in linkifyChannel
      Add support for CHATHISTORY TARGETS
      components/help: document that / allows to start writing a command
      Add support for /ban without argument
      Make getActiveClient throw an error if disconnected
      Add getActiveChannel
      Add /unban
      Make command descriptions more consistent
      Add support for incoming INVITE messages
      s/network/server/
      Fix undefined server variable in BufferHeader
      lib/irc: rename IRC prefix utilities
      Use bufName in addMessage, fix missing Client.isMyNick()
      Add support for STATUSMSG
      Allow config.server.ping to be a String
      Move some state utilities to state.js
      Introduce State.handleMessage
      Move createBuffer to State
      Handle JOIN/PART in State.handleMessage
      Handle TOPIC in State.handleMessage
      Add State.addMessage
      Remove App.isChannel
      Use ISUPPORT CHANTYPES in Client.isChannel
      Add support for draft/event-playback
      Add support for labeled-response
      Increase buffer/member list item height on mobile
      Make @media queries whitespace consistent
      Show connect form during connection
      Make <summary> easier to click on Firefox Mobile
      Disallow selecting text in <summary role="button">
      Add case-mapping support to irc.isHighlight
      Don't match punctuation suffix when linkifying channels
      Improve buffer header layout on mobile
      Add support for /mode without arguments
      Route channel mode and invite/except list to channel buffer
      Blur the composer when hiding it
      Fix /me failing in user query buffers
      lib/linkify: add comma to punctuation in channel regex
      lib/client: always populate prefix for incoming messages
      lib/client: gracefully handle null in isMyNick/isChannel
      Use server buffer if name is unspecified in State.getBuffer
      Add State.createServer
      Remove callback arg from App.createBuffer
      lib/client: set a default server prefix
      Switch to server buffer on server name click
      Don't open a new buffer on NOTICE
      Linkify MOTD
      lib/client: fix batch cleanup
      Make Client.fetchBatch more reliable
      Make Client.roundtripChatHistory return an array of messages
      Add Notification workaround for Chrome on Android
      Add notification tags
      Show again connect form when last server is closed
      s/var/let/
      Move auto-join field out of advanced options if pre-filled
      Reset config.server.auth when using custom server URL
      readme: make it clear server.url can be a path in config.json
      Ensure config has a server object
      Bump direct message unread priority
      Mark server buffer as unread after server query command
      Add /quiet and /unquiet
      Make "Remove network" button red
      Don't try to reconnect if the network is down
      readme: s/bare-bones/simple/
      Move message key generation to State.addMessage
      Add STATUSMSG indicator
      Move MODE state updates outof App
      Add irc.forEachChannelModeUpdate helper
      Add /unvoice
      Use cursor pointer for buttons
      Allow resetting server URL with query param
      lib/client: reject Client.roundtrip promise on disconnect
      Add web app manifest
      Allow resetting nick and auto-join with query params
      Improve composer form indentation
      Focus buffer scrollview instead of composer
      Use semantically more correct elements for error bubble
      Turn dialog close button into a <button>
      Don't focus composer on key press if modifier is also pressed
      Treat server broadcasts as highlights
      Preserve white space sequences in log lines
      Handle RPL_INVITING
      Always mark own messages as read
      composer: auto-complete word at carret position
      composer: add smart suffix after auto-completion
      composer: cycle through auto-completions
      Add /whowas command
      connect-form: focus nickname input
      Hide everything while loading config.json
      Unify dialog data in App.state
      Drop ConnectForm key
      connect-form: improve HTML indentation
      lib/client: fix caps with equal sign in value
      Add message arg to /query
      composer: focus on paste
      store: remove dead code
      Hide buffer focus outline
      Restore opened user query buffers
      Restore user query buffer unread status
      Fix typo
      Restore channel unread status from local storage
      Auto-complete channel names
      Add support for MONITOR
      Ignore server buffer in latestReceipt
      Don't drop unread marker in addMessage
      Rename buffer lastReadReceipt to prevReadReceipt
      Open new buffer on self-message
      Narrow down syncBufferUnread call to self-JOIN
      Update buffer store when marking all buffers as read
      Avoid sending empty MONITOR command on startup
      Don't show unread marker for outgoing messages
      lib/irc: only add colon to trailing arg when necessary
      Add support for chghost
      Get rid of a wild var keyword
      lib/client: remove WebSocket error event handler
      lib/client: error out on unsupported WebSocket data type
      lib/irc: fix formatMessage when last arg starts with colon
      store: fix undefined load call in Buffer.clear
      lib/irc: drop CRLF for outgoing messages
      Add State.create()
      Introduce per-server user map
      Update user on QUIT and NICK
      Update user username/hostname on JOIN
      Display username/hostname in member list
      Add support for extended-join
      Add tooltip with full date to timestamp component
      Add support for account-notify
      Display account name
      Add support for WHOX
      Query WHO when switching to a user buffer without info
      Fix duplicate declaration in State.handleMessage
      Hide meaningless real names
      Drop dangling var keyword
      Send WHO queries for saved user buffers after ISUPPORT
      Narrow down syncBufferUnread to new buffers
      Upgrade dependencies
      Auto-join previous channels on reconnect
      Clear autojoin when loading autoconnect

Thorben Günther (2):
      style.css: Add dark mode
      style.css: Substitute repeated colours with variables

Tom Lebreux (1):
      Linkify channel names

bbworld1 (1):
      Add error reporting on connect and main page

delthas (2):
      lib/linkify: stop using RegExp indices
      component/app: Automatically prepend wss to server URL if unspecified