getmango / Mango

Mango is a self-hosted manga server and web reader
https://getmango.app
MIT License
1.71k stars 123 forks source link

[Feature Request] HTML-only version #237

Open lxrst opened 3 years ago

lxrst commented 3 years ago

Can write the code myself but just wanted someone else's opinion first

Is your feature request related to a problem? Please describe. Mango doesn't work on basic browsers (such as the Kindle Paperwhite's built-in browser) due to a lack of JS in these browsers.

Describe the solution you'd like An HTML-only mode that strips out all JS

Describe a small use-case for this feature request Would make Mango more accessible to Kindle Paperwhite users and other basic browsers

Additional context I love Mango, but have been trying to reduce screen time as it's been impacting my sleep.


If this feature isn't wanted, I'll just try to get an e-ink display and attach it to a Pi and do it that way.

hkalexling commented 3 years ago

Hi there! Yes I think it would be a great feature to have. Some thoughts:

Overall I think this would be a big feature that requires substantial effort, but please feel free to initiate it and let me know if you need any help.

tr7zw commented 3 years ago

Without the ability to lazy load images, the continuous mode reader doesn't make sense, and we will need a custom paged reader

About that, before I open a request in relation to that: Why is that required? Some mangas are released with reaaaallly long pages so the entire chapter has like 4 images. When reading on a slower connection you keep running into not yet loaded images(same with too high res images where loading on demand can't keep up). So I'd have requested to disable the lazy loading or make it prefetch further ahead. I don't know how browsers handle it, but why wouldn't continuous mode make sense in that case (disabled lazy loading/pure html version)?

hkalexling commented 3 years ago

@tr7zw Without lazy-loading the browser will have to fetch all images on that page, which increases the page load time (especially on low-power devices like e-ink readers). You can use the lazy loading attribute to achieve lazy-loading without JS, but the browser support isn't great, and I doubt that it's available in the Kindle browser.

tr7zw commented 3 years ago

@hkalexling But does that mean that the page is just white till all images are loaded, or will the page render and the images load as fast as they can? Because with the current implementation you can stay at the top of the page for 5 mins, scroll down a bit and nothing will be loaded since it only starts the loading once you get there. If an image takes 10 seconds to load, and I read the current image for more than 10 seconds, I'd expect not to run into unloaded images.

hkalexling commented 3 years ago

@tr7zw I am not entirely sure, but I think without lazy-loading the browser would attempt to load all images simultaneously instead of prioritizing the images in view. So in the continuous mode, you won't be able to start reading until all images are loaded, which can take a while.

But yes, I agree we should preload a few pages when in the continuous reader, but for the HTML-only version, maybe it's better to limit it to paged mode.