Releases: Difegue/LANraragi
LANraragi 0.9.22 - Telling Lies (Adam F mix)
This update hotfixes the built-in EH downloader to correct issue #1101 - 0.9.3 isn't really ready for an external release but this issue impacts enough people that it's worth getting a quick patch out.
Look at the 0.9.20 release for a fuller changelog since 0.9.1.
Full Changelog: v.0.9.21...v.0.9.22
But if baffling and clunky on record, lines like “gasping for my resurrection” and “come straggling in your tattered remnants” came alive on tour, with Bowie playing a Satanic figure in his performance, coming across as an aging imp of the perverse.
LANraragi 0.9.21 - Telling Lies (Paradox mix)
Just a small hotfix release to make things easier for API clients.
Look at the previous release for the full deets!
Full Changelog: v.0.9.20...v.0.9.21
“Telling Lies” lacks a definitive version. Instead it has four faces: a drum-happy mix by Bowie and Plati, originally called the “Feelgood Mix,” which was the first version of “Lies” to be released; a Guy Called Gerald’s “Paradox” mix (dub and ambient brewed in a kettle, with Bowie’s vocal twisted into odd shapes); Adam F.’s buoyant, airy take, with a better chorus/verse join than the LP track.
LANraragi 0.9.2 - Telling Lies
A new release this early!? It's surprising how much stuff you end up with in just a month sometimes.
I hope y'all are having a sugoi summer™️!
📇 Add support for Koharu-style info.yaml (#1023, @siliconfeces)
Another day, another info.yaml spec...
Support for Koharu's yaml syntax has been added to the existing KSK plugin.
🌽 Add a new tag rule for fast replacements (#1015, @nuclear06)
You can now use ns_a:tag_a => ns_b:tag_b
to perform replacements.
This works similarly to ns_a:tag_a -> ns_b:tag_b
, but uses a hash table to enhance speed.
The result is that this rule is way faster, but only executes after all other tag rules.
🧺 Other changes
-
(#980) Sideloaded plugins in Docker installs are now persisted (@Nixis198)
📩 Previously, plugins sideloaded through the web client would land alongside the stock plugins, in
home/koyomi/lanraragi/lib/LANraragi/Plugin
.
🐋 The issue with this was that Docker installs would lose their sideloaded plugins on every update.
🐳 Uploaded plugins now land in/home/koyomi/lanraragi/lib/LANraragi/Plugin/Sideloaded
, which now has its own VOLUME set for Docker installs. If I ever make a third-party plugin repository, they'll probably install in there as well. -
(#1022) Fix summary whitespace display
🗒️ Summaries supported newlines and tabs just fine, but the web client was just eating those up. Things should work better now 👍
-
Plugin changes/fixes
🧩 (#1007) Allow ksk plugin to handle single-string in yamls alongside arrays
🧩 (#1012) Updated the FAKKU plugin to add summary support and source tag lookup (@Nixis198)
🧩 (#993) EH plugin can now handle source tags with https prefix (@anonstash) -
Miscellaneous bugfixes and improvements
💎 Updated to Alpine 3.20 for Docker/Win builds
💎 (#882) Rewrite given/when as if-chains (@siliconfeces)
💎 Avoid puking out warning when calling trim_crlf with undef (#1026) (@siliconfeces)
💎 Revert maximum-scale change to fix pinch to zoom
💎 Ignoresource:
ordate_added:
namespaces when building tag cloud (#1013) (@nuclear06)
💎 (#1006) Use proper locale comparison API for clientside category sorting
💎 Fix error messages being broken by xml_escape
💎 Updated Taskbar icon for Windows installs
💎 Fix PWA app.webappmanifest references
💎 Use a better placeholder for checkbox menu when there are no categories on the server
💎 Fix backup restoration failing when setting summaries
Full Changelog: v.0.9.10...v.0.9.20
As a transition piece, “Lies” worked well, getting the band into the frame of mind for what would become Earthling. When they got off the road, Bowie hustled to take a “sonic photograph” of them in the studio before they lost their tour-hardened sound..
LANraragi v.0.9.1 - Dead Man Walking
Can you believe I've left a bunch of stuff pile up on the table again because I wanted to get tanks out in this release and never got to it?
While tanks are still in an unfinished state, this release adds a lot of frontend improvements I think y'all will enjoy. Thanks a lot to everyone who has contributed!
🪟 WSL1 has been deprecated
I keep getting swarmed in Windows support issues because Microsoft would rather slap AI shit into their OS than fix the bitrot in their Linux subsystem.. The issues got too complex to debug properly because of the amount of moving parts (WSL1/2, Alpine versions, Redis versions), so I'm trimming things down and limiting the Windows installer to WSL2-only.
I've gone in and also fixed a few issues that pop up when you only have wsl2 installed, so hopefully there's a sharp decrease in the amount of Windows problems for now. It just works again! Mostly.
Windows users will lose any functional form of dynamic file watching for now. Blame MS, install linux, I don't care anymore*
* If you still need WSL1, Nightly builds will continue to provide "Legacy" MSIs that run on WSL1 and an older version of Alpine.
🐳 Explicitly declare the thumbnail subfolder in Docker installs (#953)
The thumbnail folder defaults to being a subfolder of the content directory, which is usually fine even if your content folder is readonly, as the Docker container will try to fix permissions on it.
But if that subfolder wasn't created yet, permissions fixing would do nothing! The thumbnail folder now needs to be declared as a separate volume to make sure it exists.
If you're updating, make sure to create a new bind mount to your existing thumbnail folder!
Otherwise Docker will create a new volume and the server will regen all thumbs.
🕰️ "On Deck" has been added to the Carousel (#935)
This will show the last opened files ordered by time, leveraging recent search engine additions.
This is more of a "History" feature than a real On Deck, as it will show even files that have been read to completion.
☑️ Implement multiselect for context menu categories (#918) (@cazendium)
Instead of reopening different context menus everytime you want to add/remove one archive to a category, you can now quickly see and reassign categories through a set of checkboxes.
📜 Implement Summary field (#588)
This is a new database field, and can now be populated from plugins and used by API clients.
It's also included in backup/restore alongside other metadata.
...I don't have much to say about it it's just a text blob
🤖 Revamp page thumbnail generation (#885)
Coupled with some efficiency changes in the Reader, it should now be easier to see the progress of the server with new thumbnails, and archives which are already fully cached shouldn't have unneeded lag.
pagethumbs.mp4
🧩 New bundled plugins
-
Hentai@Home / galleryinfo.txt (#944) (@sakuyamaij)
-
Pixiv (#950) (@psilabs-dev)
🎃 Other changes
-
Miscellaneous frontend patches (@cazendium)
💠Stop the web page from zooming in when double tapping, such as flipping quickly through pages
💠Prevent zooming in on mobile when you try to type in a textfield (password, search, editor) or if the tag overlay gets too large
💠Open LRR without the URL address bar if you save it as a web app on iOS, with custom background color/status bar color -
(#917) Allow filtering on number of read pages (@owldyn)
📈 You can now search for galleries with a specific number of pages read using
read:20
, or with a range:read:>20, read:<=30
.
📊 Much like On Deck, this only works if server-side progress tracking is enabled. -
(#689) Remove
last_used
for categories and just sort alphabetically🀄 My initial thinking behind sorting by
last_used
time was that if you use a specific category a bunch it'd float up naturally instead of making you hunt in the dropdown.. But that's never worked too well, so back to alpha sorting we go.
📍 You can still pin categories if you want them to always show up first. -
(#975) Try to avoid recreating resized files on every serve
🏗️ If you have "Resize pages" enabled, the server used to redo the scaling operation dynamically everytime the page was served.
🐌 Resized pages will now be cached and won't be recreated unless you change the image quality parameter. -
(#987) Add patterns for timestamp tag rendering (@chierinyan)
📅 Any tag whose namespace starts with
date
ortime
will now be considered a UNIX timestamp by the frontend and parsed as such.
㊙️ There's no change to serverside data. -
(#961) Fix missing XML escapes for title and category data
〰️ This was mostly a problem with the OPDS feed, but you could technically have raw html in the server MOTD that'd just be parsed on the main index...
-
(#976) Add basic pagination support to OPDS
📊 Loading the OPDS feed will no longer take years if you have a bunch of files.
-
Miscellaneous bugfixes and improvements
💎 (#990) Show a more detailed error message if file move fails when using the web uploader (@siliconfeces)
💎 (#992) Ignoresource
tags when searching for untagged files (@anonstash)
💎 (#996) Make install script die on any error (@siliconfeces)
💎 (#994) Add minimaldocker-compose.yml
file to documentation (@RexYuan)
💎 (#975) Preload image size (HEAD requests) asynchronously in Reader (@anonstash)
💎 (#907/#920) Fix source tag not removing the protocol from URL (@RodolfoFigueroa)
💎 (#984) The FAKKU plugin now works again (@Nixis198)
💎 (#989) Changed the Koushoku.yaml plugin to add the "Released" tag. (@Nixis198)
💎 Windows distro repairs should now show the full results of thewsl.exe
commands it invokes
💎 WSL detection should now work properly if you only have WSL2 installed
💎 (#985) Log error message if open_filename fails (@siliconfeces)
💎 (#977) Add PWA manifest (@jacobgkau)
💎 (#973) Fix unicode parsing problems with plugins that consume YAML (@shinji257)
💎 (#938) When doing ID lookups with the nH plugin, use filesystem name instead of the name stored in the database
💎 (#943) Save japanese title from Chaika.moe metadata (@BWsix)
💎 (#963) Enable SOCKS proxy support (@ypoluektovich)
💎 (#945) Update Tachiyomi docs (@RePod)
💎 (#941) Skip offensive warning screen with EH autodownloads (@f8upd8)
💎 (#940) Update the download URL of Tachiyomi extension (@Seflyx)
💎 (#865) Lower the intersectionObserver threshold to 50% for progress tracking in infinite scroll
💎 (#849) Fix new archives with non-ascii characters not being visible in search
💎 (#899) Add missing decode to batch tag rules to avoid mangling non-ascii characters
💎 Fix not being able to paste multiple tags if tagger.js is active
💎 (#904) Fix missing click handlers on theme radiobuttons in settings
💎 (#903) Use password directly when connecting to Redis (@TomaSajt)
💎 (#900) Set missing ghostscript device value in PDF page generation (@TomaSajt)
💎 (#895) Improve first/last page detection filters
💎 (#889) Don't use variable that's know to be empty/undefined/falsy in error output (@siliconfeces)
💎 (#887) Prevent secrets file causing a crash if contentdir is readonly
💎 (#886) Improve archive deletion handling (@siliconfeces)
💎 Replace both OpenSans and Roboto typefaces with Geist. I think it looks neat! -
API Changes
🔑 (#906) Add filesize and filename to archive JSONs
🔑 (#885) Added/api/archives/:id/files/thumbnails
, which will queue a single job with progress reporting to generate thumbnails for all pages of an archive
🔑 (#885)/api/archives/:id/thumbnail?page=${page}
will no longer fire individual jobs for each thumbnail (unlessno_fallback
is specified)
🔑 (#911) Search can now use "lastread" as a sort key if you want to sort by last read time.
🔑 (#588) PUT/api/archives/:id/metadata
now acceptssummary
as a field.
🔑 (#588) Archive JSONs will now return summary data.
🔑last_used
has been removed from Category objects. (please scream at me if you need them back even as empty placeholders)
Full Changelog: v.0.9.0...v.0.9.10
As Plati said, the track “begins completely programmed and ends completely live.” It opens with solitary synthesizer flourishes and ends with the sound of live musicians making themselves heard above the din [...] The title line itself is a cruel joke: he’s escaped the past and wound up a zombie.
LANraragi v.0.9.0 - Hallo Spaceboy
LANraragi release jumpscare! awooooooooooooo
Happy Halloween! 🎃
I wanted to hold off this release until it had a big feature deserving of the major version update, but since it's been so long...
A terrifyingly huge pile of QoL stuff has built up in the meantime! I think you'll find something to enjoy in here.
There's also been some community activity recently, including:
- A fresh Nix package! Consider checking it out if you're a reproducible builds enjoyer™️.
- A new react-based PWA client!
It's not a spooky release without some cold sweat, right? So here's a:
🛑🪟 WARNING FOR OLD WINDOWS VERSIONS 🛑🪟
This new update jumps the Windows Linux distro by quite a few software versions (See "Add AVIF/JPEGXL support to Windows" below), including non-reversible updates to Redis 7 for the database.
I've received spare reports of large databases on WSL1 breaking with the new Redis version and being unable to save changes, so please make a backup of your database folders before updating in case you need to roll back!
In case you updated anyway and hosed yourself, WSL2 should work and allow you to access the app for backup.json generation.
All set? Let's get to the actual changes:
🧛 (#789) "Save archive title" is now a global preference for all plugins
With this change, plugins are no longer responsible for handling whether they should update the Archive title or not; They can always just hand off a title suggestion, and it'll only be applied if you enabled this global preference in Plugin Configuration.
It defaults to ON, so you should very much make sure all your plugin settings are set correctly upon updating.
🍬 Archive overlay improvements
The reader overlay now features a few additional shortcuts if you're logged in, including a Delete button and a quick Category UI so you can see at a glance which Categories a file belongs to, and add/remove them as you please.
It now also shows the Archive name on top!
🦇 Add AVIF/JPEGXL support to Windows builds (#626 / #792 / #805)
Through the arcane magicks of... Alpine Linux updates!
The Horror!
Windows was previously stuck on Alpine 3.12 due to musl's DNS changes breaking downloader support -- As a result they were missing out on recent ImageMagick updates, including the stuff needed for avif/jxl.
3.18 fixed the mess, so I'm quite pleased to finally be rid of dual-legacy Docker image building for the time being.
(the legacy Dockerfile will remain maintained for a bit longer for the poor chaps stuck on aging Synology hardware... update already lads I'm all for reducing ewaste but surely there's a more up to date community linux or something)
🍡 JPEGXL thumbnail support (#825 - @polak14)
JPEGXLBROS WE'RE SO BACK unless you're using Chrome because Google decided your meme format didn't have a future
This adds an optional toggle in settings to use JPEGXL instead of JPEG for thumbnail generation. Your existing thumbnails won't be regenerated however, so you should use the "Regenerate all thumbnails" option if you want to switch everything to JXL.
JXL brings slight size improvements, and has less artifacting if you're using high quality thumbnails:
du --apparent-size
1404 ./jpg sample (HQ thumbnails)
1152 ./jxl sample
21.88% diff
1180 ./jpg scale (LQ thumbnails)
906 ./jxl scale
30.24% diff
Considering the wins, I might use JXL in "Resize images in Reader" later down the line?
I guess browser support would have to get a bit closer(doesn't even work in Firefox stable smh my head), but with Apple supporting the format it'll probably happen at some point.
💀 Plugin for Koushoku/Anchira YAML files (#833 - @siliconfeces)
This plugin adds support for the info.yaml
files you can find embedded in files coming from KSK(rip) or Anchira.
We had a full KSK plugin set with downloader and everything, but the website died before we could ship it lmao
This also adds a YAML parsing library(YAML::Syck
) to the stock codebase modules, so writing future plugins that parse yaml should be easier.
🧟 LRR now supports OPDS-PSE 1.2 (#791 - @kuroneko995)
OPDS Page Streaming Extension 1.2 adds support for tracking the last time reading progress was updated, so that clients can either use the server progress or their own.
As with everything OPDS, this is quite niche and only Panels for iOS supports it... But as a bonus for API clients, LRR archive objects now expose a lastreadtime
value you can use.
👻 Tankoubons are (almost) here! (#519 / #818 - @EfronC)
This update introduces a new way to classify your files, Tankoubons.
Much like Categories, Tanks allow you to regroup multiple archive IDs...
Except that unlike Categories, Tanks have a specific order and will hide their contents from the Archive list and search, effectively allowing you to only show one entry for multiple files, with chapters.
Sounds pretty neat! Except...it's not actually finished! 🫠
0.9.0 only features the API endpoints for tankoubons, allowing API clients to get a headstart on implementing adding/removing archives to/from tanks. The web UI and implementation in search will come in a future release.
🎃 Other changes
-
(#864) Make stats page faster when file access is slow (@siliconfeces)
📈 Historically, the stats page used to do filesystem operations to count your total archive count and content folder size.
📉 This could be slow if you were usingsoftware forbidden by godcloud-based filesystems.
📊 Stats now exclusively use the database to compute their information - It might not be filesystem-accurate at all times as a result, but with time I've changed my mind on this and think it's probably better to be database-accurate so we're consistent. -
Dev environment changes (@siliconfeces)
💎 The Redis hostname can now be overridden by the environment variable
LRR_REDIS_ADDRESS
🐳 Adocker-compose
file has been added and documented if you want to setup an environment where the Redis database is in a separate container. it's the docker way™️.... -
(#811) Fix broken encoding for titles (@siliconfeces)
🀄
get_title
didn't handle text encoding properly, which caused non-trivial characters getting mangled in the "add to/remove from category" toasts from last release. -
(#589) Update themes to use
webkit-line-clamp
〰️ This adds basic support for two-line titles in thumbnail view.
🏬 If one wants unlimited lines, it's now as easy as removing-webkit-line-clamp: 2; from div.id2 a.
Use table view if you want more tbh -
(#840) Implement title similarity scanning for the Hentag plugin (@siliconfeces)
🔎 This plugin will now try to find the most similar title to your archive's, instead of relying on exact matches.
📜 This has been added to a core function (LANraragi::Utils::String::most_similar($title_hint, @titles)
), so feel free to reuse this for your own plugins! -
(#866 - #823) Remove loading='lazy' from Reader (@siliconfeces / @URenko)
🐌 Lazyloading images was pretty much broken in different ways in both FF and Chrome, so it's been removed for now.
-
(#874) Add missing package-lock.json file and switch to
npm ci
🏗️ This enables easily reproducible builds. I don't know how those newfangled npm things work, okay?
📦 I'm not quite sure the builds are perfectly reproducible consideringcpan
installs can use different/later versions of Perl packages depending on the options you give it...ah well -
Update secret generation so it doesn't only rely on machine hostname
🧙 The mojo secret is used to authenticate login cookies - Using the hostname alone was a bit weak, so it's now coupled with a randomly-generated string.
㊙️ The secret string is generated and stored in the app root folder -- IfLRR_DATA_DIRECTORY
is declared however, it'll be stored there. -
Miscellaneous bugfixes and improvements
💎 (#769) Add missing search cache invalidation to set_isnew
💎 (#788) Add some more information to the epub warning
💎 (#792) Eval thumbnail minion job and fail it properly if thumbnail fails to gen
💎 (#798) Don't add non-ascii artists to EH URL searches
💎 (#807) Use File::Temp rather than homebrew stuff (@siliconfeces / Additional fixes in #827 - @polak14)
💎 (#...
LANraragi v.0.8.90 - The Hearts Filthy Lesson
Happy new year! We back on the grind.
I'm still mostly working on non-LRR things at the moment(and playing Pizza Tower, go play pizza tower) but for some reason there's been an insane influx of pull requests recently -- Is this the power of Holopin? Just look at all those contributor avatars down there yooooooooo
As such, this is a plugin-focused release, with a few other nice bonuses. Roll it in!
🛑 Important changes
- If you're running from source,
database_config
is now officially in use, and all your non-archive configuration keys will be moved to it the next time you start the server. As a reminder, this DB lives in Redis index 2 by default and can be changed inlrr.conf
.- See the architecture documentation for more info.
🧩 A morbillion new plugins
Plugins are a nice and easy way to contribute since they're isolated from the rest of the app, so I tend to be more lenient with code review on those!
My outmost thanks go out to everyone who added support for their meme format/websites in this release:
-
(#705) ComicInfo.xml support (@Gin-no-kami)
-
(#595) hentag.com metadata fetching + info.json (@siliconfeces)
-
(#749) More tags from Chaika(@kagoromo)
-
Chaika api.json embedded file support (@siliconfeces)
-
(#764) Handle multiple artists in koromo info.json files (@siliconfeces)
(ok I guess comicinfo.xml isn't really a meme format considering how prevalent it is)
I've started drafting out some design concepts for an eventual plugin git repository so I can be even more lenient with plugins in the future -- Maybe that'll be the big feature to land in 0.9.0.
Other changes
-
(#586) Page count search has been added
🔎 You can now search for galleries with a specific number of pages with
pages:20
, or with a page range:pages:>20, pages:<=30
.
🤔 This first version isn't indexed so it might run a bit slow - let me know how it runs for you! -
(#762) Increase search speed when sorting by non-title tags (@djacks6278)
🏎️ As we keep carving away at the old shit search code, sorting should now be around 20x faster for non-title sorts.
-
(#682) Progress tracking and "Set this page as thumbnail" now works with infinite scrolling
♾️ If you open the Reader in infinite scrolling mode, it'll also now automagically scroll to the page you last read.
⌛ Although due to the way infinite scrolling currently works, you might have to wait for all the images to be loaded for that scroll to happen... -
(#780) Category messages will now give you the name of the category/archive instead of the IDs (@siliconfeces)
-
(#759) Added an option in settings to overwrite existing archives when uploading a new one (@qhua948)
⬆️ This only applies to remote downloads and the 'add archive' page.
🛑 This will delete metadata for old files when they're replaced! Use with caution. -
(#742) Filter more credit pages & move covers to start (@Asinin3)
🛺 The reader will now move the following pages to the end when reading:
end_card_save_file, notes, artist_info, credit, 999nhnl
🆙 Likewise, images starting bycover
will now be moved to the start by default. -
Miscellaneous bugfixes and improvements
💎 (#686) Add top level subfolder option for Folder2Cat script
💎 (#731) Fix tooltips in the carousel (@pastalian)
💎 (#732) Fix full page refreshes occasionally breaking the carousel
💎 (#755) Fix resetting the database not triggering a search index rebuild
💎 (#760) Fixsource:
tags not being indexed for search
💎 (#752 / #778) Fix some old code that was spewing out warnings (@siliconfeces)
💎 Perl signatures are now allowed in the codebase 👍👍🆒
💎 Some documentation fixes (@gogim1 , @ForsakenRei)
Full Changelog: v.0.8.81...v.0.8.90
“Hearts” began as a group improvisation in the Leon sessions (Garson started things off by playing a hook on piano, while Eno’s contribution was to loop a French radio broadcast and blast it every four bars) and it shows in the song’s structure, as “Hearts” can seem like a welded-together collection of pieces.
LANraragi v.0.8.81 - I'm Deranged (Lost Highway edit)
woops lol
This is a hotfix update for v.0.8.8 - I'd recommend checking the release notes for that if you haven't already.
I swear this is the last 2022 release for real trust me bro
-
Miscellaneous bugfixes and improvements
💎 Fixed OPDS API outputting invalid XML and not formatting its timestamps to the expected format
💎 Fixed newly added archives not being in the search index unless at least one plugin was ran
💎 FixedLinux::Inotify2
not installing anymore and leading the filewatcher to use its default mode
💎 UpdatesLinux::Inotify2
to 2.3 on non-Windows versions
💎 Fix being unable to search with non-Latin1 characters
Full Changelog: v.0.8.8...v.0.8.81
The track’s harmonic stasis and ominous mood better suited the sequence David Lynch used it for on Lost Highway—scoring a driver’s-eye shot of a sped-up stream of highway center lines, a loop of ceaseless, violent motion. “Deranged” also improved in concert, once the song was prised loose from its album mix and given fresh, bloody life by the Outside and Earthling tour bands.
LANraragi v.0.8.8 - I'm Deranged
Happy Holidays from your favorite degeneracy library!
I am bringing you the long-awaited gift of indexes
to cap off the year.
🛑 Important changes
If you don't want to read the rest of the changelog:
- If you're running from source, LRR now requires two supplementary Redis databases, using indexes 2 and 3 by default. You can change those numbers in
lrr.conf
. (Onlydatabase_search
is used for now, config will come into use next release) - If you update a large instance, search will not work for a bit while the indexes are built -- You can follow the status of the
stat_indexes
Minion job to see when you can start searching again. - The
/api/archives/random
endpoint has slightly changed, which means third-party clients might have broken random functionality until you update. - OPDS-PSE support is in, but won't work for archives that don't use JPEG for their images.
🔍 Search has been rewritten (#555, #444, #563, #657 and more!)
Search has always been the biggest performance bottleneck of the entire server due to using a rather dumb algorithm that always did multiple database passes...
Through the incredible invention of search indexes but for redis, I'm happy to announce that search is now up to 10 times faster for the most used scenarios.
088search_Trim.mp4
Some notes on the search rewrite:
- Spaces are no longer a delimiter for different tags in a search prompt, commas should now be used instead. This matches what the autocompletion box does and how metadata as a whole is entered into the app, so I don't think this will cause too much pain.
- Search now requires the index tables to be built (does so on app start, and then updates them as tags/titles/etc are modified), so large instances might take a few mins to get a usable search again after updating.
- Title searches will work the same as before (quotes or $ for an exact match, ? * _ % as wildcards. )
- For tags, if you don't use exact matches,
tag
searches will be wildcarded on both ends (like previous behavior),namespace:tag
searches will only be wildcarded at the end (namespace stays intact).
You can use *namespace:tag if you want the old behavior for some weird reason.
This was one of the biggest jobs on the list, and while it took a few days to get it right I hope you'll enjoy it -- I do think it's quite a gamechanger.
This rewrite doesn't optimize everything (large intersections and sorting by anything else than title will still be a bit slow), so there's certainly still room for improvement.
The new system makes heavy use of Redis sets and sorted sets, which are all lodged in a separate, third database.
See the DB Architecture document. (the config keys moving to a fourth database is a pending change that will land in a future release.)
📚 OPDS PSE Compliance
I've dusted off the OPDS API to make it use the new Search, and took the opportunity to implement a few niceties.
LANraragi now supports OPDS PSE 1.1, which means you can use compatible OPDS clients to read archives page-by-page from the server and update your reading progression. (If server-side progress tracking is enabled)
As a known caveat, OPDS-PSE will currently not work if your archive contains non-JPEG image files.
Considering the surprisingly complete state of third-party LRR clients, I don't think many people use OPDS at all, but it's nice to be a good citizen to standards nonetheless.
And if you can't sideload DuReader, that means you can now use Panels on iOS! At least until Apple finally caves in and allows sideloading on their devices. god bless the EU
Other changes
-
(#646) New EH layout compatibility
🐼 Both ex and e-h have recently updated their layout and search API - While the old plugin still works fine on the new layouts, it still got a small update to benefit from the changes.
🔍 You can now search by gID -- this will fall back to title name if no gId found or search failed. (Thanks @polak14 !)
🍪 Theigneous
cookie is now supported, which fixes the problem of using ex in non European and American regions. (Thanks @zizzdog !) -
(#709) Carousel now auto-reloads with every new search + has a nicer empty view
🎠 whee
🆕 I couldn't really afford to make the carousel auto-reload before since it relies on Search, which had...yeah. -
Add basic Redis password support
💍 You can now set
redis_password
inlrr.conf
in case your Redis server is password-protected. -
Windows fixes
🪟 The WSL detection should now work regardless of your system language.
🛠️ The Windows app should now detect "file not found" WSL failures better.
🔧 The repair button is also now always available from Settings. -
Miscellaneous bugfixes and improvements
💎 Login now redirects you to the page you tried to access beforehand
💎 Update FontAwesome to v6
💎 Update Mojolicious to v9.30
💎 (#396) Allow most common http methods when CORS is enabled
💎 Fix not being able to redownload an URL after having deleted it from the server without a restart -
API Changes
🔑
/api/search/random
now uses the same object syntax as/api/search
(arcid instead of id, newonly instead of isnew)
🔑?key=
can be used again to authenticate API requests. (Mostly just for OPDS, please don't actually use this)
Full Changelog: v.0.8.7...v.0.8.8
Inspired by his and Eno’s trip to the Gugging Psychiatric Clinic in 1994, [...] “Deranged” seems mainly Eno’s work, though one ancestor was Bowie and Nile Rodgers’ “Real Cool World” (there’s also an echo of “Billie Jean” in its opening four-note synth hook)
LANraragi v.0.8.7 - Outside
b4d48b4b506fa4b075e88ed7fc24661e17d994e82f7677d7a9fcd54ed25a8bf9.mp4
If you can believe it, it's a bugfix update once again!
This is a small update to mostly fix the Windows build, but I've had enough time to throw in some extra bonuses as well.
It's a busy end of the year so LRR is probably going to stay on the backburner for the time being; Although as always, if you want to pitch in a PR for Hacktoberfest, I'll gladly take the time to review it! 🧑💻
🪟 Windows installs have been fixed..again! (#673)
Not so much fixed as adapted for Windows 11; The WSL detection wasn't working properly and generating a ton of support requests as a result.
I've also fixed some leftover issues with DistroInstaller, so hopefully this is a smooth experience again now.
🐧 The Docker image has been updated to s6-overlay 3.x (#684)
Thanks to @Guerra24 for this!
This is mostly an internal change that won't affect endusers, but it took a bit of work to make that update so I thought I'd shout it out anyways. (totally not trying to make those release notes at least 50 lines long)
I've said this back in 0.8.6 already but:
🖼️ Add tentative JPEGXL support (#665)
Much like HEIF exactly 10 releases prior (wow!), jpegxl (.jxl
) files are now recognized as valid images by the server.
If you want thumbnail support to work, you'll likely have to install libjxl-dev
or similar on your Linux machine.
Said lib isn't out in any stable form of Debian yet, but I'm sure Arch users or similar can get it already.
Windows users don't have that library since it hasn't been backported to Alpine 3.12, so no JXL thumbnails for you! 🤷
Other changes
-
(#672) Add category operation to batch tagging
😎 You can now serial-add multiple archives to a category through a batch operation. Simple yet effective!
🤔 The main category UI already allowed you to do this so I'm duplicating a bit, but it makes sense to have that in the batch UI as well. -
(#671) Update the filemap whenever an ID gets modified
🔢 The ID update code from 0.8.6 overall worked well, but it was forgetting to update the internal filemap, which would lead to duplicates and other weirdness when running clean database operations.
-
Miscellaneous bugfixes and improvements
💎 (#678) Make URL downloads use unlimited response size
💎 step down to x86-64 level 1 for the ffi docker build so that my E350 CPU can still run the Docker image
💎 (#662) Add some extra filtering to F! search so it performs better (@polak14)
💎 (#698) Remove the maxlength parameter on tagrules
Full Changelog: v.0.8.6...v.0.8.7
"[Outside] is only symbolically anguished. I think we are in for a very good time when we get to the next millennium."
-- Bowie, press conference, 1995.
LANraragi v.0.8.6 - Buddha of Suburbia
Hej!
Here we are again with another update where I procrastinated on doing major improvements but external contributions piled up so I hafta make a release. What can I say?
🖼️ Very fast thumbnails generating at incredible hihg speed
Thumbnail generation code has been improved with this one simple trick (CPU vendors hate him!), which leads to some very noticeable gains on hi-res images as long as you're thumbnailing JPEG images (aka 95% of images for manga)
time convert problem.jpg -quality 50 -thumbnail 500x out.jpg
real 0m3.704s
user 0m3.077s
sys 0m2.052s
time convert -define jpeg:size=500x problem.jpg -quality 50 -thumbnail 500x out.jpg
real 0m0.685s
user 0m0.631s
sys 0m0.111s
Thumbnails for non-cover images will now also render at a lower quality to gain even more speed, as said thumbnails are generated at a much higher volume than covers. (Setting a random page as your thumbnail will still re-generate a HQ version of the thumbnail.)
And if you want to be all-hq-all-the-time, there's a new option you can use for that:
🪟 Windows installs have been fixed (#654)
0.8.5 was not kind to Windows users due to bugs in the way I integrated the DistroInstaller external tool, and the Alpine upgrade essentially breaking outbound network requests most of the time.
Windows builds will now use Alpine 3.12 again as a base -- If you're encountering the same issues while running on Linux (seen it happen on Synology devices), I recommend you build a custom Docker image yourself using the legacy Dockerfile as a base.
As a bonus, the Windows GUI tool will now try to be helpful in case your WSL distro is broken, instead of just telling you to reinstall like a scrub:
🐧 Linuxbrew installs work again!
One of the few advantages of having a package manager containing LRR is that I sometimes get surprise updates, such as restored Linux support! This is 0.8.5 only for now, but should be up to date again soon.
☁️ Cloudflare bypass for NH + New metadata plugin for Hitomi.la (#631)
The implementation of Cloudflare by NH breaks the plugin from 0.8.5, so courtesy of @Pheromir , there's now a built-in login plugin for NH that allows you to key in CF bypass cookies.
And if you don't want to use NH anymore because it's garbage there's also a new alternative in the form of a hitomi.la metadata parser, thanks to @doublewelp !
🐳 Docker container improvements (#637 / #659)
To answer a long-standing request from users living in countries with nice and friendly governments ( :^) ), the LRR Docker container will now respect the HTTP_PROXY, http_proxy, HTTPS_PROXY, https_proxy, NO_PROXY and no_proxy
environment variables, so you can have outbound network requests (metadata and downloads) go through a proxy of your choice. (Thanks @mistrpokr !)
And for reverse proxies, the container will now also pick up the X-Forwarded-For
and X-Forwarded-Proto
headers!
You can now also pass a TZ
environment variable to the container to change its timezone. (Thanks @xiazeyu !)
Toasts and Dialogs have been updated
This is another big @xiazeyu change -- Toasts and dialogs across the app now use more modern libraries, which brings a few new features like visible expiration timers for toasts and themable dialogs.
Other changes
-
(#646) Sort key/order is now remembered when you reload the Archive Index
😎 Withdrawing essential features for years is a good way to drive up user engagement!
-
(#652) Fix sorting issue where uppercase characters would always end up in front
♻️ Another bug for the wall of shame. I think this one's been in here for years at this point?
🔍 To fix other sorting issues, files that contain "credit" are now always pushed to the end of the list. Know your place scanlator scum -
(#614) Fix the New Archive Carousel loading as many thumbnails as computationally possible (@xiazeyu)
🎠 The carousel now uses virtualization, which will make it only load 10 or so thumbs at a time.
-
(#644) Added "Synology eCryptFS Compatibility Mode)
🔏 This is basically what it says on the tin -- eCryptFS limits number of characters for filenames to 143 bytes, and this mode enforces that.
-
(#635) Changing a file externally will now update its ID
🔢 The design for LRR hinges entirely on generating IDs out of hashes of your files, so actively modifying a file would lead to its ID changing, which would then cause multiple issues on the database side, where it'd keep the old ID.
🍩 Which worked fine for most cases, but could lead to data loss in some circumstances! I've updated the filewatcher to check for ID changes and update the DB accordingly.
🧹 This check is also made when using the database cleanup function. -
(#651) Fix the first tag from a plugin run being undeletable in the edit metadata form
🫠 This is because plugin runs have a leading space, which was then misinterpreted by tagger.js when we try and remove the tag -- effectively not deleting it from the backing textfield. Woops!
-
Miscellaneous bugfixes and improvements
💎 (#618) Fixed Fullscreen hooks not being removed if Escape is used to exit fullscreen instead of F
💎 (#645) Fix downloads keeping query parameters from their URL in thesource:
tag
💎 (#660) Fix thumbhashes not being restored from backup JSONs
💎 (#624) Fix various garbled non-ascii character bugs in logging and plugin results (@uparrows)
💎 Fix dateadded toggle not hiding datemodified toggle in settings
💎 Usejpeg:size
for the page resizing feature in Reader as well to gain a bit more extra speed
💎 (#630) Add logging for failed/successful logins to the admin panel to help with fail2ban scenarios
💎 (#655) Camelcase GitHub everywhere (it's not even hacktoberfest yet!)
Full Changelog: v.0.8.5...v.0.8.6
Bowie has called Buddha of Suburbia one of his favorite records. Maybe he said that as a bit of mischief, touting his most obscure record as one of his best, like a hipster connoisseur of his own work (and he was). But Buddha did seem to have resonance for Bowie; something about its creation had felt right with him.