Jewelry AI · Library
'Select All' takes what is loaded, not what matches
The library loads your work a page at a time, and 'Select All' reads the part you have reached. Because the list stops asking for more the moment you enter selection mode, the size of a batch is decided by how far you scrolled before you long-pressed.
What 'Select All' covers
It covers the creations the library has already loaded, and nothing past them. The control builds the selection out of the items the feed is holding at the moment you tap it (apps/jewelry-mobile/src/app/(tabs)/library.tsx, verified 2026-08-18). So the answer to the question this page exists for is no: the selection is bounded by what has loaded, not by what your filter would return.
Two labels sit on the same control, and the quieter one is the accurate one. The visible text says 'Select All'; the accessibility label says 'Select all visible creations' (en-US.ts:733, verified 2026-08-18). That is not a defect to work around — it is the true measure of the scope, written out.
The library reaches the rest of your work by asking for more. The client requests twenty-four creations at a time (const PAGE = 24; in apps/jewelry-mobile/src/features/generation/use-generation-feed.ts, verified 2026-08-18) and asks for the next page when you reach the end of the browse list (library.tsx:707). What the server does with that requested limit is not readable from this surface, so nothing here depends on it: what matters to your batch is how much of the list you had actually pulled in before you long-pressed.
Three things decide how many files you get
The count that arrives at the end is set in three places, and only the first two are under your hand.
- How far you had scrolled before entering selection mode.
- Scrolling is what brings creations into the loaded set, and the loaded set is what 'Select All' reads. A run you never scrolled to was never a candidate.
- The moment you long-pressed.
- That moment fixes the set. The selection-mode list carries no paging trigger and no pull-to-refresh (library.tsx:622-644, verified 2026-08-18), while the browse list carries both (library.tsx:707).
- Whether each selected item can be exported at all.
- Download and share pass over selections that are still processing, have failed, have no output image, or have been deleted (apps/jewelry-mobile/src/features/library/bulk-actions.ts, verified 2026-08-18). Delete and add-to-collection do not apply that test.
What the batch gives back
A bulk download or share does not silently return a shorter list. It reports the shortfall: the result message names how many of your selections were skipped (apps/jewelry-mobile/src/features/library/bulk-actions.ts, verified 2026-08-18). Read that number as the app's own account of what it could not export, not as an estimate of anything.
The states that produce it are the same four every time: still processing, failed, no output image, or deleted. If none of the selection is eligible, there is no partial run either — the operation is not started at all.
Delete and add-to-collection give back something different, because they never apply that test. A generation that download refused can still be deleted, and it can still be filed into a collection (library.tsx:410 and library.tsx:476, verified 2026-08-18).
Which bulk actions filter the selection, and which do not
All four run from the same selection, and they do not treat it the same way. Verified against the client on 2026-08-18.
| Bulk action | Applies the eligibility filter | Effect on a mixed selection |
|---|---|---|
| Download | Yes | Selections that are still processing, have failed, have no output image, or have been deleted are passed over, and the number skipped is stated in the result message (bulk-actions.ts). |
| Share | Yes | The same test as download. If nothing in the selection is eligible, sharing is not started. |
| Delete | No | Runs over the whole selection (library.tsx:410), including generations that could not have been downloaded. |
| Add to collection | No | Runs over the whole selection (library.tsx:476). A still-processing or failed generation can be filed this way, and it stays in the collection with its status shown. |
When the batch is not what you expected
Each row separates the two causes: a selection that was smaller than you thought, and a selection that was larger than the export could use.
| Situation | Choose | Why |
|---|---|---|
| Fewer images arrived than the library seemed to hold. | Leave selection mode, scroll further into the run, then select again. | 'Select All' read only the creations loaded at that moment, and the loaded set grows by scrolling in the browse list. |
| You are in selection mode, waiting for more items to appear. | Leave the mode rather than wait. | The selection-mode list carries no paging trigger and no pull-to-refresh (library.tsx:622-644), so nothing more will arrive there. |
| The result message named a number of skipped selections. | Take that number as the count of items that could not be exported, then check their states. | Download and share pass over processing, failed, image-less and deleted selections, and report how many (bulk-actions.ts). |
| Download or share did not start. | Treat the selection as containing nothing exportable. | When no selected item is eligible, the operation is not started at all. |
| You want to clear finished work off the list after exporting it. | Download first, account for the skipped count, and only then delete. | Deletion does not apply the eligibility filter (library.tsx:410), so it can remove what a download refused to take. |
| You are filing a sweep of the library into a collection. | Check the states in the selection before you add. | Bulk add-to-collection applies no eligibility filter (library.tsx:476) and accepts processing and failed generations. |
Before you long-press
Five things worth being sure of while the batch is still yours to size.
- You are out of selection mode while scrolling, so the browse list can keep asking for the next page.
- You have scrolled to the end of the stretch you intend to export.
- You read 'Select All' as 'everything loaded' — the wording the accessibility label uses.
- You expect a skipped count in the result message, and you know which four states produce it.
- You export before you delete, because deletion does not apply the eligibility filter.
What this page does not settle
Boundaries of the evidence behind it, stated plainly.
- How the server treats the requested page size. The client asks for twenty-four at a time; whether that limit is accepted as asked cannot be read from this surface.
- How filters and quick tabs behave. This page only states that the selection is bounded by what has loaded — how the library narrows what is listed is settled elsewhere.
- The Deleted tab supports no bulk actions, and the technique on this page does not extend to it.
- Collection membership — what it means for one image to sit in several collections, and the gate on the result screen — is settled elsewhere; this page covers only the eligibility difference between the bulk actions.
- Anything about speed or scale. No measurement of how a long library behaves is claimed here.
- What a downloaded file looks like once it is on your device is outside this page.
Questions
Does 'Select All' take everything that matches my filter?
No. It takes the creations the library has loaded at that moment (apps/jewelry-mobile/src/app/(tabs)/library.tsx, verified 2026-08-18). The accessibility label on the same control, 'Select all visible creations' (en-US.ts:733), describes the scope accurately.
I waited in selection mode and no more images appeared. Why?
The selection-mode list carries no paging trigger and no pull-to-refresh; both belong to the browse list (library.tsx:622-644 against library.tsx:707, verified 2026-08-18). Leave selection mode, scroll further, and select again.
The download reported fewer images than I selected. What was skipped?
Selections that were still processing, had failed, had no output image, or had been deleted (apps/jewelry-mobile/src/features/library/bulk-actions.ts, verified 2026-08-18). The number in the result message is what the app reports, not an estimate. If none of the selection is eligible, the download does not start.
Why can I delete or file a generation that I cannot download?
The eligibility filter belongs to download and share only. Delete and add-to-collection run over the whole selection (library.tsx:410 and library.tsx:476, verified 2026-08-18), so a failed generation can be deleted, or added to a collection, even though it cannot be exported.