upstream: add support for @+draft/channel-context

References: https://github.com/ircv3/ircv3-specifications/pull/498
readme: copy over updated description from website
Add detach option to channel update

Add `-detached` to `channel update` command

Co-authored-by: Simon Ser <contact@emersion.fr>
Closes: https://todo.sr.ht/~emersion/soju/140
upstream: improve server message detection

Stop relying on user/host being unset: this is fragile, some servers
send messages coming from users without these.
upstream: rename variables to clear up target confusion

"target" is documented by the spec to be the first argument of the
PRIVMSG. Use a more explicit name for the message store destination.
database/sqlite: add migration for WebPushSubscription.user

This should be enough to fixup the user column for subscriptions
with a network specified.
database: add missing user column to WebPushSubscription table

Some WebPushSubscription entries aren't tried to a network, in
which case the "network" column is NULL. But then all users share
the same row. Oops.

Fortunately network-less subscriptions aren't used for anything
yet, they're just stored. So the impact should be minimal.
downstream: fix panic in findWebPushSubscription for unbound conns

This code has been missed when adding webpush support for downstream
connections without an upstream network bound.
Add webpush extension

References: https://github.com/ircv3/ircv3-specifications/pull/471
Co-authored-by: delthas <delthas@dille.cc>
804d685a — jesopo 15 days ago
contrib/clients: correct comment about catgirl
Upgrade dependencies
database: add User.{Check,Set}Password
Don't provide name in channel casemapMap Set and ForEach

The name is already provided in the struct.
Make casemapMap more type-safe

In addition to a type-safe getter, also define type-safe setters
and iterators.

References: https://lists.sr.ht/~emersion/soju-dev/patches/32777
Drop size arg from newCasemapMap

It's unused.
Drop casemapMap.OriginalKey

It's unused.
Remove bridge.go

All of its functions belong to downstream.go.
Move batch struct to upstream.go
xirc: add GenerateSASL