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.
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.
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
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.
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.
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.
Whoa, 6 days without ‘release’??? That must be a record.
Lurker v1.1.0 is out now! This is a big one with new features and a big overhaul of the uploader system.
Uploads got rebuilt
You can now choose where uploads go. New storage backends: your own disk, S3/R2, Zipline, Chibisafe — alongside the existing ones.
Admins can configure which uploaders exist and which ones users are allowed to pick.
You can upload audio and video, not just images.
You can delete an upload, and it actually destroys the file at the provider — not just the history row.
Location data and other metadata is now stripped from everything you upload, including animated GIFs and SVGs. It was already stripped from ordinary photos; those two slipped through.
Images are re-encoded to WebP instead of JPEG. Smaller files, and transparency support, makes it better than JPEG.
The upload progress bar tells the truth. It used to hit “100%” the moment the file reached the server, then sit there for the whole (much slower) upload to the provider. Now it tells you which stage it’s on.
Big uploads no longer balloon the server’s memory — they stream to disk instead of being held in RAM.
Uploads browser
You can search your uploads by filename, and filter by type.
It’s a grid of thumbnails now instead of a cramped list, with bigger thumbnails.
Clicking one opens it in the viewer, and left/right arrows walk through the rest.
Media viewer / lightbox
Video and audio play inside Lurker instead of throwing you out to a new tab. Text files open too (if they can).
There’s a copy-link button in the lightbox now.
Admin & setup
New admin panel separate from the regular app settings.
First-run setup flow for a fresh install.
Admins can define networks for the whole instance, and lock users to them.
Other
Channel-name tab completion now cycles properly on repeat Tab, and suggests by recency. (Contributed by @JawshTheDark.)
Docs: self-hosted disk uploads, and the Cloudflare hotlink-protection trap.
Assorted bug fixes: upload errors from providers no longer get swallowed, a couple of flaky tests fixed, the uploader picker no longer appears when there’s only one option.
Lurker v1.1.1 just went out! This was mainly about getting support for the mobile apps in place, and getting oidentd working better for some vocal users in the IRC channel.
Added full support for bearer token authentication to allow for mobile apps (which are being prototyped now)
Busy day! I cranked hard and got v1.1.4 out tonight.
Fixed issue where spoilers created with ||spoiler tagging|| were basically invisible.
Added backend improvement where the server can tell clients the maximum allowed upload size.
Added backend improvement: LURKER_MAX_UPLOAD_MB declares max upload MBs, which helps if you’re using Cloudflared and your upload maximum is a hard 100mb limit.
Fixed some edge cases around auto-reconnection that could cause auto-reconnect attempts to end early.
Added /j and /p shortcuts, and /shrug ¯_(ツ)_/¯
Added backend improvement: the server can tell clients there is no more message content in a buffer.
Fixed a login redirect loop.
Fixed identd to now properly use the Lurker account name for the user, not their nickname.
Added admin ability to override identd per user in the Admin → User menu.
Fixed issue where Lurker usernames were case sensitive and could have spaces or other unusual characters in them ()
New page on https://docs.lurker.chat explaining Lurker’s IRCv3 support and why it supports the various capabilities.
Added new count badge of unread highlights that appears in the mobile app (by the back button) and on the desktop app (if you have the channel list collapsed) to aid in visibility of important unread messages.
Various dependency updates.
This is out now on app.lurker.chat and your favorite (and only) GitHub container registry!
Another Lurker update is comin’ at you fast and loose. Here it comes! Put your hands up, kid, c’mon! You gotta catch it!
Added new chat.keep_position_on_send option, which maintains your scroll position when you send a message instead of jumping to the bottom. Off by default, which maintains existing behavior.
A handful of changes were made to the websocket to improve it, basically. The most visible change should be that when you load in a buffer that has a lot of event noise, and you have join consolidation turned on, you shouldn’t see the ‘load in’ effect in the buffer as much as you used to, or at all.
Overhauled the system behind event consolidation and filtering. The main improvement is that you can now choose different event filter levels between desktop and mobile. So on desktop you could show all events with consolidation, and on mobile you could just hide all event noise entirely.
Backend improvements (and matching client side improvements) to how the bookmarks system conveys bookmarks to the client (this was a bit wacky before, it’s more normal now).
You can snag it from all the usual places.
Note you need this update to use the latest iOS beta! Probably.