Skip to content

[Feature Request]: View All/Increased File Limit Per Page & Shuffle #911

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
3 tasks done
KingR17 opened this issue Apr 8, 2025 · 7 comments
Open
3 tasks done
Labels
Type: Enhancement New feature or request Type: UI/UX User interface and/or user experience

Comments

@KingR17
Copy link

KingR17 commented Apr 8, 2025

Checklist

  • I am using an up-to-date version.
  • I have read the documentation.
  • I have searched existing issues.

Description

I'm curious whether it's feasible to add an infinite library view, similar to how photos works on mobile/file explorers on desktop. I don't know how difficult it is to manage that, but it would be nice to be able to have all of the images on one page, where you can just scroll through all of them, or zoom out enough to be able to see many more of them at once.

Being able to have a function similar to "group by" from Windows File Explorer to break up the scrolling into folders would be a nice option as well.

I also know that back when the program was still in the early days, I suggested a shuffle feature. Given that having everything on the same page would seem like a necessary prerequisite to the feature, I figured I would add that to the same suggestion.

To reiterate the purpose of shuffle, it would be useful for inspiration and dredging up old files you might have forgotten about. You can end up seeing new combinations of references popping up near one another, and basically keeping things fresh while browsing for ideas.

As it stands now, it's quite helpful to randomly scroll through my reference library on my tablet to skim for ideas or track down references, but I've always felt it would be nice to be able to mix it up, so if you have a few hundred thousand reference images, you could shuffle them to get some fresh ideas mixed up whether they're references from yesterday or 10 years ago, without needing to scroll back a century or page through a few thousand pages of your library like the current configuration of TagStudio.

As a secondary benefit, if the media player functionality is built up, I would imagine that it would be useful for people wanting to shuffle their music libraries if they're using the program to play their songs as well.

Solution

  • Continuous unlimited files on the home library page, allowing for scrolling through the whole library rather than page by page navigation (similar to normal file explorer view or mobile photos apps).

  • Ability to limit to specific folders, though obviously you would get a lot of versatility from just using tags alone.

  • Shuffle button/option (Reorder all images randomly each time the button is pressed. Preferably fully random each time for it to have long term versatility.)

Alternatives

  • One alternative would just be increasing the amount of files able to be viewed at once each page. It wouldn't be as practical for my personal use case as some form of infinite scrolling, but if unlimited files has performance or other issues that can't be overcome, having at least some larger pages would make navigating larger libraries faster/easier.
@KingR17 KingR17 added the Type: Enhancement New feature or request label Apr 8, 2025
@CyanVoxel CyanVoxel added the Type: UI/UX User interface and/or user experience label Apr 8, 2025
@zfbx
Copy link
Contributor

zfbx commented Apr 8, 2025

Btw you can increase the page size in settings but it can get pretty slow to load everything on search and page change (5000 took mine 3.5gb mem and up to 10% cpu and hung for ~3 minutes with an nvme) (1000 took ~7 seconds) *This is with a library of 50k items

limiting to folders you can do with the Path search which works really well :)

@KingR17
Copy link
Author

KingR17 commented Apr 8, 2025

Yeah, I'm not quite sure how they manage to be so efficient with stuff like apple photos.

On a full zoom out, you can have 5,742 images visible at once on an ipad (if my count is correct).

I'd imagine it's a question of how efficient the scaling of the thumbnails is to allow that many images at once without taking up an insane amount of memory, and that's ignoring that you can scroll through your full library without hitching on loading any of the images, no matter how fast you scroll through, which means you end up having far more than 5,000 or even 10,000 thumbnails being pulled at once. I can go from one end to the other of a library in the tens of thousands with no problems.

Obviously they can dedicate quite a few resources to accomplish that task, but based on the fact that it has been done, it should be possible to do the same on desktop in theory... It's just a question of how tricky it was for them to pull it off for their implementation as well. I'm sure a fair bit of that optimization comes from the OS integration as well, so I have no idea how practical it would be to actually try finding a way to optimize it for TagStudio, but it would definitely be a nice to have.

@zfbx
Copy link
Contributor

zfbx commented Apr 8, 2025

what size are the images when loading 5-10k on apple photos? We do make thumbnails ~250²px and they probably use a unique thumbnail cache that probably gets to 16²px and they def make use of lazy loading and probably also offload to gpu for drawing (Not quite sure if we do). Certainly think we should be able to improve it though :D I'll probably spend a few hours toying with it and see what I can find out.

@KingR17
Copy link
Author

KingR17 commented Apr 8, 2025

Looks like 32x32px.

@a84r7a3rga76fg

This comment has been minimized.

@CyanVoxel
Copy link
Member

Hello, there's quite a few different requests and suggestions here so I'll break down and address each of them:

I'm curious whether it's feasible to add an infinite library view

This is something I would like to see for TagStudio, and I've considered the current page-based system a holdover until an infinite scrolling system is developed. Other software achieves this using something called "recycling" where a small number of UI elements are reused and repopulated with new data seamlessly as you scroll. This is in contrast to what TagStudio is currently doing, which is creating a UI element for each and every file thumbnail on a page - regardless of whether or not they're visible yet. These elements are reused across pages and searches, though.

or zoom out enough to be able to see many more of them at once.

TagStudio currently offers five different thumbnail sizes ranging from "Mini" to "Extra Large" to fit more or less items on screen.

Being able to have a function similar to "group by" from Windows File Explorer to break up the scrolling into folders would be a nice option as well.

Already tracked via #68

I also know that back when the program was still in the early days, I suggested a shuffle feature

I do remember this suggestion and agree that it could be a useful tool for file rediscovery. I don't believe it currently has it's own issue for tracking it yet.

As a secondary benefit, if the media player functionality is built up, I would imagine that it would be useful for people wanting to shuffle their music libraries if they're using the program to play their songs as well.

The media player isn't intended to turn TagStudio into a music player replacement, just to playback media files for the purposes of previewing and reviewing. Additional music library features like playing songs back to back would be outside the scope of the program in my opinion.

Ability to limit to specific folders, though obviously you would get a lot of versatility from just using tags alone.

File ignoring is currently being tracked via #14 and being worked on by myself in the ts-ignore branch.

One alternative would just be increasing the amount of files able to be viewed at once each page.

As zfbx mentioned, you have the ability to set the number of files shown per page in the program settings.


As a final note, the main bottleneck for showing large to infinite numbers of files on screen isn't necessarily the size of the thumbnail files themselves, but rather a performance limitation of the UI widgets. It's not impossible to overcome in TagStudio's Qt-based UI, but could involve quite a lot of work to be done properly.

@xarvex
Copy link
Member

xarvex commented Apr 9, 2025

I'd like to weigh in real quick regarding the infinite scroll. As @CyanVoxel already pointed out, the difficulty is the UI elements that are initialized at a given time. In my work on a Rust implementation of TagStudio I achieved this feature though a such action: where elements are destroyed when out of view. You also must be careful not to create thumbnails for every image at once, that immensely slows down the application. My solution was to also only calculate the thumbnails when in view, and for other files do them at a slower pace in the background. This implementation does not use Qt, however, so it will not provide as much help outside the abstract approach.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement New feature or request Type: UI/UX User interface and/or user experience
Projects
None yet
Development

No branches or pull requests

5 participants