Web application for archival and reading of manga/doujinshi. Lightweight and Docker-ready for NAS/servers.
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:
It's not a spooky release without some cold sweat, right? So here's a:
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:
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.
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!
Through the arcane magicks of... Alpine Linux updates!
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)
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.
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.
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.
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.
๐ 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 using software forbidden by god cloud-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.
๐ The Redis hostname can now be overridden by the environment variable LRR_REDIS_ADDRESS
๐ณ A docker-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โข๏ธ....
๐ 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.
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
๐ 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!
๐ Lazyloading images was pretty much broken in different ways in both FF and Chrome, so it's been removed for now.
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 considering cpan
installs can use different/later versions of Perl packages depending on the options you give it...ah well
๐ง 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 -- If LRR_DATA_DIRECTORY
is declared however, it'll be stored there.
๐ (#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)
๐ (#812) Fix "Uncaught TypeError" when attempting to navigate past last page in infinite scroll mode (@siliconfeces)
๐ (#822) avoid await at top level (@URenko)
๐ (#824) add magazines to koromo (@polak14)
๐ (#834) Fix Batch tagging overrides not accepting utf8 text
๐ (#856) Make permission fixing optional (but default) (@siliconfeces)
๐ (#868) Reuse generate_archive_list
when possible to simplify codebase (@siliconfeces)
๐ (#871) Remove duplicate tags when updating DB (@siliconfeces)
๐ (#872) ajax cache to reduce server load (@ndbiaw)
๐ (#878) Fix Redis password authentication (@TomaSajt)
๐ Add trace-level logging to backup generation
๐ make sure cpan packages are installed before running tests
๐ Fix LOADING
redis check being bypassed by settings migration
๐ Fix thumbnail extraction not accounting for covers properly when used from the API
๐ Add a script for npm run get_version
because perl oneliners are hell to maintain
๐ Move appendonly set to redis.conf instead of app boot
๐ Delete BlacklistMigrate plugin as we're long past 0.8.0 now
๐ Handle error codes better with nH parsing
๐ Update to Mojolicious 9.34
๐ Archive objects now expose a lastreadtime
value.
๐ Updating progress will also update lastreadtime
, and return the value in the JSON response.
๐ /api/tankoubons
endpoints are available and documented.
๐ /api/archives/:id/tankoubons
has been added to know which tankoubons a given archive ID belongs to.
Full Changelog: https://github.com/Difegue/LANraragi/compare/v.0.8.90...v.0.9.0
Conjured up in a handful of days in the studio, โSpaceboyโ was a liberating track for Bowie, who rode its beat and reveled in the trash. This chaos is killing me! he screamed, sounding delighted to die, mocking his past selves with โdo you like girls or boys? Itโs confusing these days. [...] โSpaceboy,โ one of the last great Bowie pop moments, never quite seemed his own property; it was fluid, a coalescing held together by a beat that seemed to invade it.โ
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!
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 in lrr.conf
.
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:
(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.
๐ 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!
๐๏ธ As we keep carving away at the old shit search code, sorting should now be around 20x faster for non-title sorts.
โพ๏ธ 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...
๐๏ธ heh
โฌ๏ธ 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.
๐บ 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 by cover
will now be moved to the start by default.
๐ (#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) Fix source:
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: https://github.com/Difegue/LANraragi/compare/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.
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
Linux::Inotify2
not installing anymore and leading the filewatcher to use its default mode
๐ Updates Linux::Inotify2
to 2.3 on non-Windows versions
๐ Fix being unable to search with non-Latin1 charactersFull Changelog: https://github.com/Difegue/LANraragi/compare/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.
Happy Holidays from your favorite degeneracy library!
I am bringing you the long-awaited gift of indexes
to cap off the year.
If you don't want to read the rest of the changelog:
lrr.conf
. (Only database_search
is used for now, config will come into use next release)stat_indexes
Minion job to see when you can start searching again./api/archives/random
endpoint has slightly changed, which means third-party clients might have broken random functionality until you update.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.
https://user-images.githubusercontent.com/8237712/208326844-4534508b-0b66-4fe5-a9bf-7bc15b61a7fa.mp4
Some notes on the search rewrite:
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.)
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
๐ผ 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 !)
๐ช The igneous
cookie is now supported, which fixes the problem of using ex in non European and American regions. (Thanks @zizzdog !)
๐ whee ๐ I couldn't really afford to make the carousel auto-reload before since it relies on Search, which had...yeah.
๐ You can now set redis_password
in lrr.conf
in case your Redis server is password-protected.
๐ช 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.
๐ 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/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: https://github.com/Difegue/LANraragi/compare/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)
https://user-images.githubusercontent.com/8237712/195881965-116f40c0-7800-41f3-9c00-8c255e2a676c.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! ๐งโ๐ป
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.
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:
โ ๏ธ If you're encountering issues while running on old Linux versions (seen it happen on Synology devices), I recommend you build a custom Docker image yourself using the legacy Dockerfile as a base.
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! ๐คท
๐ 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.
๐ข 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.
๐ (#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: https://github.com/Difegue/LANraragi/compare/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.
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?
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:
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:
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.
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 !
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 !)
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.
๐ Withdrawing essential features for years is a good way to drive up user engagement!
โป๏ธ 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
๐ The carousel now uses virtualization, which will make it only load 10 or so thumbs at a time.
๐ This is basically what it says on the tin -- eCryptFS limits number of characters for filenames to 143 bytes, and this mode enforces that.
๐ข 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.
๐ซ 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!
๐ (#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 the source:
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
๐ Use jpeg: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: https://github.com/Difegue/LANraragi/compare/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.
Well, it's been a little while! I wanted to delay a new release until search improvements were done but I haven't worked on them at all lmao
There's been a sizeable number of bug fixes and external contributions however, so I think it's worth making a small release.
Thanks to everyone who's contributed to this one. ๐
Get 1.2 here!
API changes in this build will break download notifications unless you update.
Nothing too major since downloads themselves will still work. Thanks to @xiazeyu for saving me an hour of work by PR'ing a fix. ๐
https://user-images.githubusercontent.com/8237712/165130010-f6668093-f591-4d9a-9937-839a89115729.mp4
(This video shows a work-in-progress MSIX port, but the regular MSI installer now uses the same tooling.)
I wasn't expecting so many people to still be on old-ass builds LTSC versions of Windows when I removed support for it to make the installer code cleaner, but thanks to @Guerra24's efforts, we now have a better infrastructure for the Windows helper side of things, which allows me to bring 1809 support back.
No more mucking about with an old 0.7.9 MSI ๐ (I'd like to thank the random individual who wrote that guide on 4chan to help fill the gap)
The Karen bootloader has also been updated to use more recent Windows APIs, with hopefully more to come.
The reader improvements simply don't stop coming even when I'm not working on it; Thanks to @djacks6278 , you can now use the reader in fullscreen: Both reading directions, as well as infinite scrolling and double-page work in this mode just fine.
He also finally killed my old-ass canvas-based code for double page view, so you might just get faster reading as a bonus now.
๐ No more canvas: double-page views should load faster ๐ Press F to go into fullscreen mode โจ๏ธ All keyboard shortcuts work as-is in fullscreen ๐ฑ๏ธ Mouse scrolling will either snap from page to page, or scroll smoothly if you're in infinite scrolling mode.
๐ผ๏ธ Resized files were never deleted and took space in /tmp
, which causes issues for Docker containers -- This moves resized files to the main LRR temp folder, whose autoclean routines should fix this issue.
๐งฎ Since the switch to the new libarchive bindings, it's possible to get the file count (and size) fast enough to allow me to finally know the pagecount of every archive as soon as they come in, instead of waiting for them to be extracted. ๐ This won't apply retroactively since it'd end up super messy code-wise, but if you want to force it, you can use the brand new...
๐บ๏ธ While the existing filemap mechanism in shinobu is fairly robust and tracks files in the content folder well, misses can sometimes be unavoidable, and until now the only solution was to hit the ol' redis CLI and delete the filemap yourself. ๐ฆฉ The button basically is just a shortcut to that, with a matching API endpoint.
๐ฅฒ The eze plugin is now able to pull metadata from JSON files located in your content folder, if they have the same name as your archive. ๐ฅณ Thanks to @xiazeyu for this!
๐ฆ If you were using the new built-in date_added
functionality, the timestamp tag would overwrite whatever tags were saved previously.
โฌ๏ธ In practice, this resulted in source:
tags from URL downloads being skipped over, since those were applied before the timestamp. Woops!
๐ Add a public API endpoint for getting (simplified) Minion job status
You can now use /api/minion/:jobid
to know if a job succeeded or failed, without any extra info (and therefore without the need for an API key.)
๐ (#590) Add /api/shinobu/rescan
for resetting the filemap
๐ (#593) Fix eze plugin adding a space to source: tags
๐ (#587) Add lowercase info.json support to koromo plugin
๐ (#611) Wrap compute_id call in eval to handle null files in FolderToCat
๐ (#606) Add support for parsing timestamp, category, uploader tags to the eze plugin
๐ Fix opds not using date_added tags
๐ (#607) Handle schemes in source: tags properly
๐ Add support for source:
tags to the nH plugin
๐ Update Docker container base to Alpine 3.14
๐ Update marked.js
Full Changelog: https://github.com/Difegue/LANraragi/compare/v.0.8.4...v.0.8.5
Bowie closed out โSex and the Churchโ with a callback to glam (the rave-up ending of โJean Genieโ) and some moans, but the whole production had a cold, disassociated feel, the sound of a virtual reality sex program punched up by a Philip K. Dick character.
Happy New Year to all! May your manga collections be fruitful and your TempleOS installations blessed.
This release brings in more of the planned User Survey Requests features, namely everything related to Thumbnails.
Next release should be focused on tackling the BIG ONE, aka search speed.
ppc64
and s309x
have been dropped from the Docker imagesI don't think anyone ever pulled those architectures (since they're mainframe-oriented) and they were starting to take a toll on github build times (to the point I'd often hit the 6h limit for cacheless builds), so they're gone!
I apologize to all the PowerPC enjoyers.
In this version, I'm finally adding in the feature that will make all panda pundits praise me and potentially pledge some pennies:
You can now directly show the thumbnails overlay when opening the Reader.
wow!
The thumbnail overlay previously had performance issues due to showing the full-size images; I've fixed this by extending the existing thumbnail APIs to be able to create/return thumbnails for all pages in an archive, and not only the cover.
This makes overall perf much nicer, althrough if you're hosting on a CPU that doesn't have many cores/threads, the thumbnails might take a while to appear on first reads now.
But as a result, you can now also set any page to be the cover thumbnail for an archive!
This replaces the old "regenerate thumbnail" button in the Reader, since you can just set page 1 for the same effect.
I've also improved back button functionality: The Reader no longer clutters browser history with an URL for each page, and going back using the return button will now bring you back to whatever search you'd performed before reading.
๐ฅณ (#514) Add an option to show the tags/thumbnail overlay first when opening the Reader ๐ (#517) Add button to set the current page as the cover thumbnail ๐ (#520) Use the new thumbnail API in the Reader overlay โจ Remove pushstate/popstate functionality from Reader ๐ณ (#546) Use http referrer headers to be able to redirect the user to his previous search when leaving the Reader
๐งง Response to the new carousel has been quite positive, but as with every new feature, some people just want to disable it. ๐ญ And that's perfectly fine! I forgot to make collapsing the carousel a saved change in the previous release, so it should be less egregious from now on.
๐งง gs
9.50 marked the flags I was using to pull pdf pages as insecure, which required some command line updates.
๐ This wouldn't have been too big an issue except I uh, shipped 9.50 in the Docker image most people use, so sorry about that.
๐ป gee I truly wonder what that mystery site could be
๐ฅฒ Another day, another disappointment. ๐ฅณ And by disappointment I mean I fucked up encoding again! I have failed you once more and deeply apologize.
date_added
featureโฑ I planned to remove the old date plugin after fully integrating it to the main app, but since the feature doesn't apply retroactively, I decided to leave it in for the time being, in case you want to batch tag dates for all your stuff.
๐ who the heck uses gif for their covers? ah dingus it doesn't matter there ya go fixed
๐ A surprisingly easy addition that was missing before -- default values will only apply if the user never saved preferences for your plugin, so you shouldn't see any changes if you're updating. ๐ The Regex plugin should also now execute before all the others in autoplugin if it's enabled, in order to try and get better base tags before querying external services. (And it has save title set to true by default now!)
๐ (#517) Add no_fallback
to GET /api/archives/:id/thumbnail
to get JSON in case a thumbnail is being generated instead of a fallback image
๐ The pages
/extract
endpoint will now add the job
ID for the matching Minion job ID.
๐ (#517) Add PUT
/api/archives/:id/thumbnail?page=xx
to set a defined page as the cover thumbnail for an archive
๐ (#517) Add a page
parameter to GET /api/archives/:id/thumbnail
to get a thumbnail for any page of a given archive
๐ Fix toasts being under the overlays
๐ (#550/#551/#552/#553) Various CSS fixes by @CirnoT (Thanks!)
๐ Fix is_file_in_archive
and matching plugins to work with the new extraction logic from 0.8.3
๐ (#559) Add a default robots.txt file
๐ (#531) Disable usage of tagger.js on mobile browsers
๐ (#536) Add missing useragent parameter to MEMS plugin
๐ (#563/#566) Add warning text to a few plugins to clarify potential issues
๐ Add default value for isnew
in database
๐ Fix timestamp tags so it works properly with web uploads
๐ (#574) Disable header setting in infinite scrolling mode
Full Changelog: https://github.com/Difegue/LANraragi/compare/v.0.8.3...v.0.8.4
Bowie had been writing the Black Tie White Noise material throughout late 1991 and 1992. The first track that emerged from a desultory series of sessions was โReal Cool World,โ a song written for Cool World, Ralph Bakshiโs disastrous animated film, a crass rip-off of Who Framed Roger Rabbit?, complete with a cartoon temptress and human-toon interactions.
This is a quick hotfix update for 0.8.2. Ain't much else going on lmao
Due to the Microsoft Store allowing unpackaged Win32 apps now, I've thrown the LRR installer in there so you don't have to visit Github to quickly install it. Store updates will always lag behind regular GH releases by a few days due to Microsoft validation, so this is more of a gimmick than anything ๐
The Walkers recorded โNite Flightsโ in February 1978 at Scorpio Sound, UK. Bowieโs version was cut ca. summer/autumn 1992 at the Power Station and/or Mountain Studios, Montreux. A remix was released as a UK promo 12โณ single (Arista HOME 1) and later included on the reissued Black Tie White Noise.
Holy cungadero, this update is big!
I've started addressing the User Survey Requests and got most of the small stuff out of the way, alongside completing my draft work on the new Reader model.
This is the big one; This new release should bring much-desired speed improvements to Reading, which was the top ask alongside Search speed improvements. (Search will come later it's slightly harder)
/api/extract
(now dubbed /api/pages
but I'm leaving the old endpoint in for backwards compatibility) now fires a background Minion job to extract the archive, and uses at the same time a brand new Libarchive interface to return the list of files, directly streamed off the Archive./api/page
now checks if the desired page exists (as it mightve been extracted by the background job already), and if it doesn't, extracts it on the fly.There are some timing considerations with this new method (If the background job is currently extracting a page and we want to serve it, we have to make sure it's fully extracted before serving), but overall things seem to work well! This should bring awesome performance improvements to most third-party clients as well.
I have taken into account all the requests for search-aware randomness, and rebuilt the Archive Index to introduce a new view:
The interface has been simplified in a few ways:
I wasn't expecting search-aware random to be that big but in practice I find this implementation quite useful: I've been finding old stuff I hadn't read in ages again thanks to it. I hope this satisfies your demands ๐
date_added
is now a default tagdate_added
tags benefit from quite a lot of integration in third-party clients and there's been demands to handle date stuff better, so as of this release, all new archives will now have the tag by default.
As a bonus, date-related tags (date_added
and timestamp
) will now be formatted correctly in the UI:
I've removed the old common modal that allowed changing the theme from anywhere in the app due to low usage.
Theme settings are now applied to all users and can be found in the Configuration page, which hopefully will make them a bit more discoverable.
๐ฎ There's no longer a popup for options, as those are toggled via buttons on top of the table, Reader-style. ๐ชฒ Debug mode will now show a sticky toast instead of a tiny link at the bottom of the page.
๐ The statistics page now features a table displaying all your tags, alongside their total count. ๐ Tags are all clickable and can be searched for directly from this UI.
๐ฆ Batch tagging received a pretty big revamp in this release and is now Batch Operations! ๐ New archives are now marked as such in the batch window.
๐ (#515) Added /api/search/random
โจ
๐ Added file extension info to archive endpoints in order to detect PDFs and other formats easily
๐ Fix tag edit field not being fully clickable
๐ Fix Tag Cloud being wrongly populated
๐ Community-contributed regex fix for F* search
๐ CSS fixes for mobile
๐ Use flavor icons for spinners across the app
๐ (#510) Fix total count in search API
๐ Show new flag in batch tagging
๐ Update Reader to (almost) entirely rely on API endpoints
๐ Fix launcher issue that could prevent the WSL version from starting
๐ Deleting an archive from the Index will now reload your search instead of refreshing the entire page
๐ Docker builds now use a custom-built libffi
to sidestep a bug with the new libarchive bindings (@Guerra24)
For the rest of the Eighties, when Walker was nowhere to be found, Bowie endured his own public set of lost years, reduced to making records for the sake of it, losing himself, trying to purge his way back with Tin Machine. Finally, in 1992, looking for some anchorage, casting about for fresh influences or just any means to move ahead, he finally decided to take Walker on. He covered โNite Flights.โ