Lurker - Devlog

Alright! I got the rest of the issues closed out that wrapped up to 1.0.2 milestone.

  • Fixed: a DM buffer would open as soon as someone started typing at you, almost like you were telepathic; this has been fixed.
  • Fixed: pressing shift+esc would resurrect closed buffers from the dead (until a refresh returned them back to the grave); this has been fixed.
  • Added: there is now a chat.show_event_host to show the userhost on join/part/nick change lines (that have not been consolidated; turn off chat.consolidate_joins to see everything).
  • Fixed: previously we resolved an issue with case sensitivity issues with channel names, that same issue has now been preventatively fixed for direct messages.
  • Added: there is now a tools/fold-buffer-case.ts script that can be run from inside the container to fix duplicate buffers created by the previous issue.
  • Fixed: if you joined a channel that required registration before sending a message, it was unclear why your messages were not being read; now there is an in-buffer system message letting you know that the channel requires registration.
  • Added: Cmd+Left/Right and Home/End now jump to the logical start and end of the current line in the input bar, instead of the visual start/end. You may like this, you may hate it, let me know.

That’s it! With that, v1.0.2 is done and it’s time to move onto v1.1.0, which will be a more feature-packed release.

I cut a new release today, v1.0.3. I decided to make everyone’s life easier, I would try to cut releases more frequently at certain milestones, or I guess when I feel like QA is solid, I dunno. Who knows why I do the things I do? I’ve been trying to figure it out out my whole life.

Here’s what has changed since the last changelog…

  • identd was implemented kind of incorrectly, that has now been resolved.
  • added AGENTS.md to help external LLM agents that may wish to open PRs against the project
  • many more messages will show up in the server buffer now, where previously far too many were silently dropped
  • updated some dependencies
  • New ignore system modeled after irssi’s fantastic ignore system
  • Received :emoji: shortcodes are converted into emoji automatically for you
  • On desktop, typing : brings up an emoji suggestion menu just like for @ # and clicking > does, instead of using the mobile suggester bar.
  • Fixed: /list now brings up the channel list modal, like I swear it used to.
  • Fixed: on Firefox, the input area would not expand vertically automatically; this has been resolved.

That’s it! Time to go enjoy the rest of my day off.

Another day, another release! v1.0.4…

  • Added: the LURKER title in the top left has now become a full buffer with an input and system level debug message type stuff
    • There were also a lot of minor visual polish tweaks that accompanied this change.
  • Added: a new /network slash command can be used to set up and manage networks from the input bar, no GUI required
  • Added: new /get and /set commands let you manipulate config variables from the input bar, also no GUI required
  • Improved: the ‘send’ button is now disabled when there is nothing in the input area.
  • New: you can now change your default quit message via chat.quit_message setting
  • Fixed: if your chosen nick was taken on connect, the auto-changed nick was not appearing in your input bar nick readout.
  • Fixed: up/down arrow keys were not allowing you to navigate multiple lines of text in the input area, this has been fixed.
  • Some other visual polish tweaks and fixes.

That’s it! v1.0.4 is now live on app.lurker.chat as well as available to pull from GitHub container registry, etc…

After a day of rest, I am back at it. I cut a new release for just a few changes, but one big one. v1.0.5 is out now!

  • Changed: unread DMs now display in yellow (as if there is a highlight in them) to make unread DMs more distinctive among a sea of different buffers.
  • Improved: identd could be flaky under some circumstances, hopefully worked those out now…
  • Improved: the highlight system has been completely overhauled, it is now similar to the ignore system released a few days ago; it is way more powerful and features a better matching algorithm that handles not-ascii scripts better. Out of the other IRC clients I checked, only weechat and lurker do this properly.

That’s it! See ya tomorrow probably…

I was trying to avoid cutting a new release until I hit 1.1.0 properly but stuff started to pile up too much, so I cut another release… v1.0.6!

  • kofany contributed a PR which makes it possible to put lurker ident behind oidentd. there’s more info for people curious about this in the pull request.
  • Fixed an issue where ‘MONITOR unknown command’ would occur when changing your nick after it was automatically changed on connect due to a nickname collision.
  • In the message list, nicknames are now interactive in most places, it shows the context menu and has ‘reply’ and ‘copy nickname’ affordances now.
  • Added full RPE2E encryption support for channels (this was a big one).
  • Fixed stale channels lingering in the network channel list even after refreshing it.
  • Adjusted the : emoji suggestion panel to only come up after typing at least two characters of the emoji to search for; before now this was making it difficult to send emoticons like :smiley:
  • Fixed a style inconsistency in the input bar on desktop, where your user modes were accent colored when channel modes are not accent colored in the status bar.
  • Added new look.modal.overlay option, which allows you to change or remove the backdrop for modals on desktop. If you really do not like the word mark wallpaper, this one is for you…
  • Added the ability to clear a saved network password in the edit network modal.
  • Fixed an issue that was preventing reordering of pinned buffers if one of the pinned buffers was promoted to the friend section.
  • In theory, improved how much visual space is maintained when auto-scrolling the buffer list, it should be 2x as much as before if not more, and work more consistently at larger font sizes. Though initial feedback has not indicated this worked…
  • skdoo fixed an issue which was cutting off the sub-section area in the settings sidebar when look.font.size was set to large sizes.

That’s it! This is now live on app.lurker.chat and can be fetched from GitHub / container registry. Have fun.

Stuff piled up so I decided to cut another release, v1.0.7!

  • Added Beta XDCC support for standalone clients.
  • Added CTCP support for standard CTCP queries with configurable replies.
  • Added support for inbound/outbound channel invites.
  • Added the ability to mark a nick as a “relay bot” so that relayed messages appear from the sending nick and not the relay bot.
  • Added back/forward navigation using Cmd/Ctrl+[ and ] keys.
  • Added ‘smart sorting’ to the Cmd/Ctrl+K quick switcher.
  • Added ability to turn off message action bar that appears on hover, it is replaced by a left click / single tap context menu with the same affordances.
  • Added unread highlight badge for clients installed in PWA mode with push notifications enabled.
  • Improved the jump-to message functionality used across the app for toasts, notifications, searches, etc.
  • Improved the tapping/hover situation on mobile considerably.
  • Improved the ‘notification’ settings for buffers, you can now silence notifications and unread counts, crammed into a radio picker similar to Discord.
  • Improved the way ‘notice’ message types behave; this is elaborate and hard to describe succintly.
  • Fixed issue where a very active channel never stopped scrolling, even if you scrolled up to see older messages.
  • Fixed an issue that was preventing nicknames from being selected among a text selection in the message list.
  • Added placeholder/barebones content for a vitepress site to live at https://docs.lurker.chat

Umm, I think that’s it! Enjoy!

More stuff piled up, so I cut a new point release, v1.0.8 is out now!

  • Added beta ZNC/Soju-like bouncer support, so you can connect to your lurker instance with other clients
  • Optimization pass so the client starts up faster than ever and doesn’t risk disconnects and other strange issues on low-powered systems
  • Added support for joining password protected channels.
  • Redesigned the way some controls are accessed in the sidebar.

This is out on app.lurker.chat as well as the :latest and :1.0.8 container images.

I pushed out another small non-versioned update with some of the last cards in the prior milestone…

  • Changes to hopefully fix drift / out of date unread badge on the PWA icon.
  • Fix some bugs around which messages get marked as unread in the server buffer to hopefully cut down on noise there.
  • Fix stuck online peers from networks that don’t support MONITOR.
  • Some very small UX tweaks around the main client interface.

That’s it! This is live in the container image as well as app.lurker.chat.

I pushed out the last (hopefully) version of 1.0 just now, 1.0.9. The changelog is the same as above, basically, with extra PR that did some refactoring of the import/export system but didn’t really change any functionality.

Now work moves on to the next milestone, admin & onboarding improvements.