doc: Fix trivial typo
Fix failing to parse host:port IRC URLs

This fixes a regression introduced in [1].

[1]: 68e1efcf0612c635ea186676559883e791552d30
Implement /NP

This queries the system for the current song being played. This uses
DBus & MPRIS/xesam.

The priority is any player in playing state > any player in paused

Only players in the playing or paused state, with a valid song title are
Add documentation for /MOTD
Implement /MOTD
Support irc URLs in the config addr

Fixes: https://todo.sr.ht/~taiite/senpai/106
Enable receiving away updates for private buffers

We just need to enable extended-monitor :-)
Print date as dd/mm or mm/dd depending on the user locale

Overkill, but this was a nice weekend project :-)

Fixes: https://todo.sr.ht/~taiite/senpai/107
Add a 10s timeout to connect + TLS handshake
Render the Unicode replacement character properly

Previously, we stopped rendering a line on its first Unicode replacement
character, because we used that special value for detecting invalid
Unicode bytes.

Now that we pre-process incoming strings to replace invalid Unicode
bytes with the Unicode replacement character [1], there is no need to
stop rendering a string on this character: it should just be passed
through as is.

[1]: 700139404044730a726af7cd57e3d2dbc07871ea
Clear highlights from MARKREAD when only NotifyNone lines are left

Previously, we did not clear buffers highlight statuses on MARKREAD if
there was any unread line after it.

This meant that if we received a plain message, than a join message, and
some other device sent us a read marker for the plain message, we would
still highlight the buffer. But we should not: a join message should not
highlight the buffer.

This is a recurrent use case because some clients do not display join
mesasges and therefore do not send read markers for it.

This updates the logic to actually store the notify level (in the line)
and uses it to reset the highlight status when only NotifyNone messages
(or no messages) are left.
Bump tcell version

tcell just got a bugfix for OSC 8 hyperlink IDs.

See: https://github.com/gdamore/tcell/commit/ede1dd5ee68071a873d425e749bcbde04f1a1cc3
Fix requesting CHATHISTORY TARGETS with invalid timestamps

Previously, we sent the CHATHISTORY TARGETS start time with an incorrect
offset equal to the system time offset.

This means that we only reopened private buffers from the last app close
+ N hours on a system with a N-hour time offset.

This fixes the issue by saving the stamp as UTC, and also making sure to
format any time offset correctly.
Fix OSC 8 hyperlink ID format

I meant to add 0-padding to avoid spaces.
Add OSC 8 hyperlink IDs

OSC 8 hyperlink ID support was merged into tcell. We can now use those
IDs to help terminal emulators identify links spanning multiple lines,
possibly highlighting the whole link whe it is hovered, or creating a
single link hotkey for them.
Switch to the upstream tcell implementation of OSC 8 hyperlink

tcell has merged OSC support in [1], with support for more terminals
than what was added in the tcell fork we used.

Now, all terminals with mouse sequences support should receive OSC 8
hyperlinks sequences.

[1]: https://github.com/gdamore/tcell/pull/527/commits/e7b14a71dc78721c0f007fd6197262c52c1d4df9
Fixes: https://todo.sr.ht/~taiite/senpai/103
0bef7424 — Nomeji a month ago
Scroll to buffer on zoom
Fix crashing on ISUPPORT PREFIX=

On servers without prefixes, we previously crashed because of a missing

The intended logic was to only process the string if it was not empty.
Replace non-UTF8 chars with the Unicode replacement character

tcell does not handle non-UTF8 chars well, so we explicitly replace them
when getting the messages to avoid passing them to tcell down the line.
Prevnet highlighting on notices, drop unknown CTCP