Skip to content

#Alpha

Close (home)

Now talking on Category: Alpha

1 post in scrollback

15:39Now talking on #Alpha

Topic for #Alpha set by ZachBacon at

PChat 2.1.0-alpha1

Changes since PChat 2.0.0.

This is an alpha: the first release on GTK 4, with a new GNOME frontend.
Expect rough edges, and please report what you find.

Highlights

  • PChat now runs on GTK 4. The classic frontend has been ported, and there
    is a new GNOME frontend built on libadwaita.
  • Broad IRCv3 support: SASL (including SCRAM and late SASL), STS, batch,
    labeled-response, standard replies, setname, bot mode, typing
    notifications, MONITOR, UTF8ONLY and more.
  • Network passwords are kept in the system keyring by default.
  • New ways to get PChat: an AppImage that runs on any Linux, a Flatpak,
    a portable Windows build, a reworked Windows installer, and a macOS app.
  • Many security and crash fixes. Most were found in a review before this
    release.

New GNOME frontend (libadwaita)

  • A new frontend built on libadwaita. It is the one shipped in the AppImage
    and the Flatpak (--enable-libadwaita).
  • It has the classic frontend’s features: channel and ban lists, channel
    settings, the URL grabber, the raw log, plugins and scripts with their
    menus, DCC transfers, spell checking with Enchant, and a choice of chat
    font.
  • It has a tray icon: StatusNotifierItem on Linux and BSD, the
    notification area on Windows, the menu bar on macOS.
  • Clicking an image link shows the image in the chat, and clicking it
    again shows it bigger. A new host is asked about before anything is
    fetched. Size, redirects and time are all limited.
  • It can run in the background through the portal. Starting PChat again
    shows the hidden window instead of starting a second copy.
  • Start at login works from the AppImage, on Windows and on macOS.
  • Quitting while connected asks first, as the classic frontend does.
  • Clicking a notification shows the tab it came from.
  • A channel you’ve left is dimmed in the sidebar.
  • mIRC’s extended colours (32–98) are shown as they’re meant to be.
  • The chat stays at its newest line as lines come in and when you switch
    to it.
  • The chat title is centred, with the whole topic shown.
  • DCC downloads ask where to save and can be opened afterwards.

Classic frontend (GTK 4)

  • Ported from GTK 3 to GTK 4. Its list, tree and combo box widgets have
    been replaced.
  • Italic text (^]) is shown slanted.
  • Files dropped on a window go to the person in that window, not to
    whichever tab has focus.
  • On Windows, the download folder can be chosen, and save dialogs start
    with an empty file name.
  • /lastlog no longer prints lines without a nick twice.
  • Misspelt words are underlined in red even when colors.conf doesn’t set
    a colour.
  • Links in the chat only open http, https, ftp and mailto.

IRCv3 and protocol

  • IRCv3 support, from ZoiteChat. This includes message tags, server-time,
    account-notify, extended-join, chghost, echo-message, invite-notify and
    cap-notify.
  • SASL with PLAIN, EXTERNAL and SCRAM-SHA-1/256/512. SASL offered after
    connecting is used to log in (SASL 3.2).
  • STS: a server can require TLS for itself.
  • Netsplits and netjoins are one line each (batch), and they’re hidden
    when a channel hides joins and parts.
  • A command’s answer goes to the window it was run in (labeled-response).
  • Standard replies (FAIL, WARN, NOTE) are shown as messages.
  • /setname changes your real name on servers that support it.
  • Bots are marked in the user list.
  • Typing notifications are shown.
  • The notify list works on networks that use MONITOR (Libera, OFTC, Ergo
    and others).
  • On a UTF8ONLY network, PChat sends UTF-8.
  • Long messages are always split correctly, whatever host the server
    gives you.
  • NICK and USER are sent separately, which fixes logging in to some
    servers.
  • Nick completion adds : after the nick by default, not ,.

Security

Passwords and logins

  • Network passwords go in the system keyring by default, except in
    portable mode. servlist_.conf is made private every time it’s saved.
  • A password removed from a network, or the network itself, is removed
    from the keyring too. A renamed network’s passwords move with it.
  • A network’s saved passwords and commands are only sent when the
    connection is as secure as that network asks for. A plain-text /server
    or irc:// link to one of its hosts no longer sends them.
  • /server and /reconnect to a different host no longer send the
    previous server’s password.
  • A network’s client certificate is only sent to that network.

TLS, STS and SASL

  • /server, /reconnect and ircs:// links check the server’s certificate.
    -insecure turns that off, explicitly.
  • STS connections always verify the certificate. A plain-text connection
    can’t save an STS policy, and an STS duration is capped at ten years.
  • SCRAM login requires the server to prove it knows the password.
  • SCRAM accepts only 4,096 to 1,000,000 iterations, and wipes its keys
    after use.
  • SASL keeps going when the server turns down other capabilities.
  • A server can’t grow the CAP LS and SASL buffers without end.

DCC

  • Files received over DCC are named safely and can’t leave the download
    folder.
  • On Windows, received files are marked as coming from the internet.
  • DCC replies only count when they come from the nick the transfer is
    with.
  • Passive DCC tokens are random.

Commands, plugins and the system

  • Every line sent to the server ends at the first CR or LF in it.
  • identd only answers the server, and can’t be held open or flooded.
  • The D-Bus interface uses GDBus and only answers when remote control is
    on.
  • Log file names can’t leave the log folder.
  • Hosts from the server can’t block PChat, and can’t reach /DNS as
    options.
  • On Windows, DLLs and plugins aren’t loaded from the current directory.
    !cmd popups pass each argument as one.
  • The CTCP and message flood limits keep working after their first window.

Crash and bug fixes

From the server or other users

  • Fixed crashes and out-of-bounds reads that a server or another user could
    trigger with:
  • an out-of-range server-time tag
  • irc:// links without a channel
  • a bare \001 CTCP
  • a bare ERROR
  • a CTCP PING notice with no time
  • a DCC CHAT line of just \001ACTION
  • malformed PREFIX=
  • chanopt.conf lines without a value
  • Lines read after a reconnect aren’t handled as if they came from the new
    connection.

Commands and windows

  • /exec output with ANSI colours, text events over 4 KB, theme events
    over 4 KB, plugin preferences and the WATCH/MONITOR list sent on connect
    can no longer overflow their buffers.
  • Tab completion of a very long word no longer overflows its buffers.
    Long nicks, user names and sound settings no longer overflow the
    preferences.
  • Closing a window while choosing a file for it no longer crashes.
  • Answering a file or chat offer that has already gone no longer crashes.
  • A connect command, user command or /timer that closes its own window
    or deletes itself no longer crashes.
  • A plugin unhooking another while hooks run, or asking about a closed
    window, no longer crashes.
  • A warning while connecting from the network list no longer locks the
    main window.
  • On first run, closing the network list without connecting quits PChat
    instead of leaving it running unseen.
  • A nick before a join’s address is no longer turned into a link.

Text and display

  • A line too long for the text area is no longer cut in the middle of a
    character.
  • Logging a line made only of colour codes no longer reads before it.
  • A link under the pointer no longer outlives its line.
  • An image that couldn’t be shown can be tried again, and an image of a
    kind PChat can’t read says so.

Connecting and DCC

  • A TLS handshake the server cuts off fails at once, not after 90 seconds.
  • On Windows, a connect attempt you’ve given up on can no longer disturb
    the next one.
  • A connect that can’t be started says so and doesn’t kill anything else.
  • A line in a multibyte character set that is cut off mid-character still
    converts.
  • DCC downloads and client certificates work under a non-ASCII Windows
    profile name. Credential Manager keeps a non-ASCII network’s name.
  • A DCC port range with only a first port set works, and ports still in
    TIME_WAIT can be reused.

Configuration

  • The network list reads its last line in full, and lines of any length.
  • A channel with no network in chanopt.conf is skipped rather than causing
    a crash.
  • --url is checked when PChat starts, as when it’s already running.
  • Portable mode is detected next to pchat.exe, not in the current
    directory.

Plugins

  • FiSHLiM, checksum and sysinfo plugins, from ZoiteChat.
  • A media player plugin, built separately with cargo.
  • New Lua plugin, built against LuaJIT.
  • FiSHLiM
  • A DH1080 key exchange that fails its check no longer crashes PChat.
  • DH1080_INIT no longer silently replaces a stored key.
  • The key file is readable only by you.
  • An empty CBC message is no longer read past its end.
  • It no longer leaks memory with every message.
  • It says so when it can’t load Blowfish, and finds OpenSSL’s legacy
    provider in the Windows and macOS builds.
  • checksum: tells only the recipient of a DCC file its checksum. It
    used to send your local file path to the channel.
  • winamp: a title with no . or many % signs no longer crashes it.
  • sysinfo: reads any /proc/asound/cards without overrunning or
    crashing.
  • Python: holds its lock from the start, as Python 3.13 and newer
    require.
  • Plugin menu icons: found where PChat is installed, not in the
    current directory.

Windows

  • Built with autotools in MSYS2 (clang64), with new 32- and 64-bit
    installers.
  • The installer:
  • can include the Python, Perl, Tcl and Lua plugins with what each
    needs
  • can make irc:// and ircs:// links open in PChat
  • waits for a running PChat to be quit
  • upgrades in place, not into a nested bin folder
  • make-dist.sh -p makes a portable PChat.
  • GLib’s proxy lookup replaces MS Proxy support.

macOS

  • PChat builds on macOS. build/macos/make-app.sh makes a self-contained
    PChat.app.
  • Shortcuts use Command, the tray icon is in the menu bar, and irc://
    links open in PChat.

Linux and packaging

  • An AppImage that runs on any Linux and updates itself. It converts every
    character set a network can use.
  • A Flatpak, with the app ID org.pchat_irc.PChat. It owns only the D-Bus
    names PChat uses.
  • The desktop file offers PChat for irc:// and ircs:// links.
  • AppStream metadata, so software centres can show PChat.
  • IPv6 is enabled by default on every platform.
  • The RPM spec builds again, and make dist makes a tarball.
  • Every available translation is installed. The translation template
    includes the GNOME frontend.

Removed

  • The mail checker.
  • The XDCC plugin, which was never built.
  • The unused iso-codes lookup and the libxml2 dependency.
  • MS Proxy support, replaced by GLib’s proxy lookup.

Downloads

Linux Appimage: https://git.thatzachbacon.com/PChat/PChat/releases/download/v2.1.0-alpha1/PChat-x86_64.AppImage
32bit Windows: https://git.thatzachbacon.com/PChat/PChat/releases/download/v2.1.0-alpha1/PChat-2.1.0-alpha1-x86-setup.exe
64bit Windows: https://git.thatzachbacon.com/PChat/PChat/releases/download/v2.1.0-alpha1/PChat-2.1.0-alpha1-x64-setup.exe
macOS: Still stabilizing things, alpha 2 will cover that
Source code: https://git.thatzachbacon.com/PChat/PChat/releases/download/v2.1.0-alpha1/pchat-2.1.0-alpha1.tar.gz

Guest
0.1 s

PChat-IRC

pchat-irc.org

Keyboard Shortcuts

General

Panes

Touch