Skip to content
soju v0.5.0

Highlights for this release:

- Add support for soju.im/webpush for push notification support on
  mobile platforms.
- Add support for soju.im/search to query message stores.
- Add support for draft/read-marker to synchronize read markers between
  clients of the same user.
- Add support for chghost, echo-message and @+draft/channel-context
- Allow users to delete their own account.
- Multi-upstream mode now requires a "/*" suffix to be added to the
  username to be enabled. Note, multi-upstream mode will be dropped in
  a future version.

Full commit history below.

Brett Cornwall (1):
      doc/getting-started: Fix simple misspelling.

Frank Steinborn (1):
      contrib/clients: Add information about irssi

Simon Ser (119):
      downstream: drop delivery receipts when client supports chathistory
      upstream: use network case-mapping in updateMonitor
      downstream: set case-mapping for monitored
      Mark BouncerServ as online in MONITOR, don't forward to upstream
      irc: introduce capRegistry
      Use capRegistry for downstreamConn
      Use capRegistry for upstreamConn
      downstream: atomically ack/nak capabilities
      service: limit number of -connect-command flags
      Warn about non-FQDN hostnames
      doc/soju.1: recommend using a FQDN for the hostname
      downstream: improve ERR_ERRONEUSNICKNAME message a bit
      Enable bot mode for BouncerServ
      downstream: ignore nickname during connection registration
      downstream: move multi-upstream name handling to loadNetwork
      downstream: reject negative or zero network IDs in parseBouncerNetID
      downstream: process BOUNCER BIND in downstreamConn.welcome
      downstream: improve grouping of downstreamConn fields
      downstream: move negotiatingCaps to downstreamRegistration
      downstream: explain when downstreamConn.sasl is nil
      Add support for RPL_VISIBLEHOST
      doc/soju.1: fix syntax error
      Add support for chghost
      downstream: rejigger hostname logic in newDOwnstreamConn
      downstream: always populate downstreamConn.username
      Ensure all incoming messages have a prefix set
      downstream: copy message when degrading extended-join
      downstream: strip back "*" prefix
      Add the soju.im/no-implicit-names extension
      Remove unnecessary zero initialization
      upstream: don't populate time tag for numerics
      downstream: clarify "user not active" error message
      downstream: send RPL_ENDOFWHO on unmarshalEntity error
      doc: split off multi-upstream documentation
      contrib/clients: senpai now supports soju.im/bouncer-networks
      doc/getting-started: add paragraph about client names
      doc/getting-started: mention TLS and on-disk logs
      Allow nil network in Get{Nick,Username,Realname}
      downstream: set realname for network-less connections
      Use SETNAME when updating user-wide realname
      downstream: update user realname on SETNAME
      Refuse to change nick on bouncer connection
      Simplify and improve WHOIS forwarding
      server: print panic stack trace as string
      upstream: use labeled-response for queued commands
      Queue WHOIS commands
      Remove unnecessary lastDownstreamID initialization
      upstream: pass context to upstreamConn.requestCaps
      downstream: unify PRIVMSG/NOTICE and TAGMSG codepaths
      downstream: use upstream user/host for echo message
      doc/getting-started: ask to install soju
      upstream: use context to set connectToUpstream timeout
      Split upstream connection handling to separate function
      Add timeout for upstream connection registration
      Add TODO for upstreamConn.register race
      Drop user.forEachDownstream
      Add user.notifyBouncerNetworkState
      downstream: improve error message on unrecognized message
      readme: restrict CI badge to master branch
      doc/ext/bouncer-networks: specify how attributes are cleared in notifications
      upstream: fix missing WHOIS in abortPendingCommands
      doc/ext/bouncer-networks: remove BOUNCER BIND auth restriction
      downstream: fix setting tls=0 in bouncer-networks
      db_sqlite: drop mutex
      upstream: fix panic in isChannel
      Introduce a database package
      msgstore: add loadMessageOptions
      msgstore: rename searchMessageOptions, export fields
      Introduce an xirc package
      Add msgstore package
      Move identd to separate package
      Rename "log" config directive to "message-store"
      config: add `message-store memory`
      xirc: move command constants over
      Rename join to generateJoin
      xirc: move ChannelStatus over
      xirfc: move over message generation functions
      xirc: encode tokens in GenerateIsupport
      xirc: move over CapRegistry
      xirc: move over WHOX helpers
      xirc: move over Membership
      xirc: add GenerateSASL
      Move batch struct to upstream.go
      Remove bridge.go
      Add soju.im/account-required
      Drop casemapMap.OriginalKey
      Drop size arg from newCasemapMap
      Make casemapMap more type-safe
      Don't provide name in channel casemapMap Set and ForEach
      database: add User.{Check,Set}Password
      Upgrade dependencies
      Add webpush extension
      downstream: fix panic in findWebPushSubscription for unbound conns
      database: add missing user column to WebPushSubscription table
      database/sqlite: add migration for WebPushSubscription.user
      upstream: rename variables to clear up target confusion
      upstream: improve server message detection
      readme: copy over updated description from website
      upstream: add support for @+draft/channel-context
      Add support for draft/read-marker
      Fix draft/read-marker entry in permanentDownstreamCaps
      contrib/znc-import: move to subdir
      upstream: unset SASL state on RPL_TRYAGAIN
      upstream: handle ERR_UNKNOWNERROR and ERR_NEEDMOREPARAMS for queued commands
      upstream: fix server message detection for wildcard targets
      upstream: compare service nick with case-mapping
      upstream: drop upstreamConn.nickCM
      downstream: fix MARKREAD/READ command name in broadcast
      Send MARKREAD push notifications
      Add per-user default nickname
      downstream: simplify NICK handling when disconnected
      downstream: relay SETNAME with upstreamConn.SendMessageLabeled
      upstream: ignore RPL_ENDOFWHO without pending command
      Aggregate AWAY status from all connected clients
      dowstream: remove noop WEBPUSH REGISTER
      downstream: fix downstream check for draft/read-marker
      upstream: pre-registration NOTICEs come from servers
      upstream: regain desired nick when MONITOR is missing
      downstream: reply to INFO

delthas (12):
      downstream: Enable handling READ when upstream is disconnected
      Fix build on systems without syscall.Rlimit
      Send any welcome error messages to the downstream
      Require an explicit `*` network suffix for multi-upstream
      Enable resetting a BOUNCER NETWORK port
      bouncer-networks: Add a read-only error attribute
      upstream: handle CAP ACK -name
      Add support for the upstream echo-message capability
      Enable message-tags only when all upstreams support it
      Add support for the SEARCH extension
      Keep batch tag for downstreams with batch cap
      Fix network.forEachDownstream exiting on first non-match

gildarts (4):
      Add detach option to channel update
      contrib/migrate-db: new script
      Add ability for a user to delete themselves
      database: upgrade bcrypt cost as needed

jesopo (1):
      contrib/clients: correct comment about catgirl