Skip to content
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