deal with longer usernames
I'll probably need to lay down username rules soon...
somewhat ok navbar
Doesn't cope well with long usernames though.
somewhere pleasant "follows" grid
more reasonable cache defaults
CDN was a dud
Bunnycdn kept routing me to US/EU edges for some reason (although they
do have a Singapore edge), so things were slooooow. Since I don't have
access to a better CDN, let's not use one at all. Therefore, there need
to be more web workers to serve static stuff.
I should really look into async servers huh.
preload 2 pages at a time
try preloading a list instead of single imgs
For some reason the preloaded images didn't get reused when user
actually visited next chapter. Maybe this helps?
cache chapter data; preload next chapter's pages
decrease default number of gunicorn workers
Should be fine now, what with the filesystem cache and CDN.
I'd probably still need some sort of preload mechanism though.
allow custom hostname for proxied urls
Even with the filesystem cache, serving proxied images through the web
worker is still suboptimal.
This prefix allows me to optionally point all proxied urls to a CDN's
hostname instead. I'm using BunnyCDN, for example.
I'd prefer to solve this on the caddy server side instead, but
apparently caddy server doesn't support the `file server that falls back
to reverse proxy if file not found` use case.
Of course everything should still work out of the box without any CDN by
show source site error to user
New `@handle_source_site_errors` decorator that supports either html or
- If html: just render a plain page
- If json: count on frontend code to report error appropriately.
Currently it just `alert()`s the thing.
Need to figure out a better UX.
concurrent & crash-proof search
I still dislike the catch-all though, so gotta fix that once I've sorted
out user-facing error reporting.
Also increased mangasee search cache lifespan.
protect scheduler against exceptions
A failed worker is now put back into the queue, for a maximum of 3
retries before its current turn is skipped.
Also, in the update title worker: just skip title if source site is
currently acting up.
don't test in build script for now
Let's turn it back on once I've figured out http caching for tests
cache proxied images to filesystem, prune daily
drop unique chapter num_major/minor constraint
Because mangadex can have the same chapter uploaded by different groups.
handle source site error responses in 1 place
Now raises specific exceptions too so caller code can now know if we or
source site did an oopsie.
make it clear only 3 images are loaded at a time
Gave up on session/localStorate. WHY THE FUCK is sessionStorage not
shared between tabs? It's impossible to implement a straightforward "log
out when browser closes" scenario.