💄 (expo): UX Enhancements#770
Conversation
The first one was originally used in the The others you can see if you enable OPDS for your saved server and browse the catalog/feeds. The image in Also the downscaling examples you gave look great! |
|
I think I'm done. I still couldn't find just There are a few unrelated issues I've documented, and I will maybe look into a few at a later date: Reader Issues:
OPDS Issues:
Login Issues:
General UX Issues:
|
|
@Arklaum Thank you so much! I'll have time to give the changes a review most likely tomorrow, and I'll hold off on replying to your list until then. I really appreciate all your work and the time you've given to record all those bugs! One thing I'll respond to quickly though:
Totally cool by me, also:
This is expected, unless I am misunderstanding the problem. By logging into Stump you still obtain an access and refresh token pair. Stump won't store credentials for the |
Oh okay, my understanding was from this: https://www.stumpapp.dev/guides/mobile/servers#authentication "you will be prompted to log in each time you try to access the server" Edit: Oh I guess I didn't read it all: "you will only be prompted to log in when the token expires" Also by close I mean like force quit the app. But surely the point of prompting login is so that other users on the same device can easily log in? Or to lock off content that other users shouldn't access? Which should even include just swiping back out of the server. Edit 2: I forgot to
I'll do that tomorrow |
Yeah that is a bit misleading, I'll make a note to rephrase the first part to be more aligned with the second. I think I was probably thinking of OPDS when I wrote that first part
I originally added it so that folks who dislike when applications store credentials have an option to use the app without providing any for storage. I can't speak for everyone, but my passwords are LONG so I personally would hate to have to enter it, or even just use my password manager honestly, each time I go into the server. I do think there should be a little menu in the home tab probably to log you out |
aaronleopold
left a comment
There was a problem hiding this comment.
This looks great!! I had one question but honestly I poked around locally for a good bit and didn't notice any funk at all with scaling so feel free to disregard
| Authorization: sdk.authorizationHeader || '', | ||
| }, | ||
| }} | ||
| resizeMode="stretch" |
There was a problem hiding this comment.
I've noticed stretch a few times now. Won't this potentially affect the original aspect ratio and warp the image? Or does the resize below offset that?
There was a problem hiding this comment.
It does stretch it but you won't notice if the thumbnail aspect ratio matches the set aspect ratio (currently only 2:3). Previously with faster image they were all fill which is turbo image stretch
I could change it, but I think it looks nicer because most of my books are 1:sqrt(2) with some 2:3 and they're close enough that contain looks bad and far enough that cover looks bad.
I was thinking of adding some checks where if the ratio was very different it would use contain. I think Apple Music does something like that.
There was a problem hiding this comment.
Thank you for also cleaning up the other image libraries!
|
I'm going to create a draft issue in that mobile project to note the bugs you've found, but a few notes/questions:
I'm not sure I understand this one. There are different icons for file types (e.g. epub, pdf, zip) and folder icons, and if a file is registered in the database it pulls the thumbnail. Is this what you mean?
I observed this as well, but I coincidentally left the app running and came back to them loaded. I checked the server logs and it was making the OPDS thumbs requests, so I think it's just slow? Either way, definitely an issue to look into.
Is this on Android? iOS? Both? I haven't seen this one, but I'll note it down Also very unrelated to this PR, I was testing on a simulator running iOS 26 and found some interesting UI quirks (read: bugs). Not super important, but figured you'd be interested |
Oh I've actually seen those UI bugs when I briefly tried Xcode 26. I'm definitely interested in getting that UI style working. |
|
I didn't have time to create individual items so I just linked back to your list. I'll merge this in now, thanks again!! |
|
Final comment for the project board: These were just fixed: And two more were just fixed on iOS: |


So this is a list of things I aim to put into this PR. I am using this space to track/show my progress. I am currently working on: Done!
Tasks
(also try out squeeze on tap)expo-image+faster-image->react-native-turbo-image. (The double page reader does work properly too)react-native-reanimated-carousel: rounded corners + dark mode doesn't like 0.99Issues / Notes for each task (numbered)
squirclewhenever using rounded corners. Or addstyle={{borderCurve: 'continuous', overflow: 'hidden'}}.borderCurve: 'continuous'(or class namesquircle) often requires removingborderRadius(rounded-xx), saving then adding it back to see the update.rounded-tosquircle rounded-wheresquircleapplies the styleborderCurve: 'continuous'ANDoverflow: 'hidden'. I found and fixed only one: whererounded-xlwas added for seemingly no use, but the new overflow hidden style caused issues:Example Bug before and after fixing
Example.Bug.mov
I have since fixed the OPDS corner rounding amount too
StackedEffectThumbnail.tsx,PublicationFeed.tsx,PublicationGroup.tsxandauth.tsxthat I have no idea how to find and test.Reasoning / Benefits
I have done the image library change, it took longer than I thought because I decided to play around with various libraries. Using
react-native-turbo-imageI have turned on downscaling to 1.5x the rendered width for everything except inImageBasedReader.tsx, where theDownscalingtoggle can can enable it. This gives the following benefit:Example 1: Images from "Continue Reading"
Example 2: Images from "Search"
Example 3: The `Downscaling` toggle
I have also made the image reader span the whole page, meaning zooming in looks better, and also allows an iPad to use the full space. (It works fine on Android too):
Example 1: iPhone zoom
Example 2: iPad