Collections

Nothing in a collection is arranged by hand

Three dates decide what you see: the date an image was generated decides its place inside a collection, the date a collection was created decides its place in the list, and the newest active generation decides the cover. There is no drag handle, no pin and no cover picker anywhere in this surface.

Three dates, and none of them is the order you worked in

A collection looks like a folder you filled in a particular order, so it is reasonable to expect the last thing you put in to be the first thing you see. That is not how this surface is built. Inside a collection, items come back ordered by the date the image was generated, newest first. Add a photograph you made weeks ago and it drops into the list at its own date, not at the top.

The collection list works the same way one level up: the collection created most recently is first, and the rest follow in creation order. The cover is the third date. It is not stored as a choice at all; it is read from the newest active generation the collection holds.

Attribution for all three, from one file: apps/api/src/collections/collections.service.ts carries orderBy: { createdAt: 'desc' } for both listings, and coverUrl: cover?.outputUrl ?? cover?.inputUrl ?? null for the thumbnail (source review, 2026-08-18).

What decides order, and what is only recorded

Two of these are dates you can see at work. One is a date the app keeps and never uses for arrangement.

Inside a collection: the date the image was generated.
Newest first. This date belongs to the image itself, which is why an older piece stays where its date puts it.
The collection list: the date the collection was created.
Newest first, permanently. There is no alphabetical order, no manual move and no pinning in this surface.
The cover: the newest active generation in the collection.
When that generation has no output image, the cover shows the input photograph you uploaded instead. The cover cannot be chosen or pinned.
The time you added an item to a collection: recorded, never used.
It is stored as CollectionItem.createdAt in the database, and no listing sorts by it. There is also no endpoint for manual ordering or dragging.

Order, cover and name, side by side

What each thing follows, and what part of it is actually yours to change.

What you seeWhat it followsWhat you can change
Order of images inside a collectionThe date the image was generated, newest firstNothing — no manual ordering or dragging exists here
Order of the collection listThe date the collection was created, newest firstNothing — renaming does not move a collection
Cover thumbnailThe newest active generation; its input photograph when that generation has no outputNothing — the cover cannot be chosen or pinned
Collection nameWhat you typed, trimmed of surrounding spaces, 1 to 80 charactersThe name, at any time — the position stays where it was
Two collections with the same namePermitted; no rule prevents itOnly by naming them differently yourself
How many collections, and how many images in oneThe code sets no upper boundNothing to configure

When the arrangement is not the one you wanted

Each of these ends the search for a control rather than describing one.

SituationChooseWhy
You added an older photograph today and it is not at the top of the collection.Look for it at its generation date instead.Items are ordered by when the image was generated, newest first, and the time you added it is recorded but never sorted on.
You want one particular image to be the cover of a collection.Read the cover as a readout rather than a setting, and recognise the collection by its name.The cover is always the newest active generation in the collection, and it changes by itself when a newer-dated generation joins.
A collection shows one of your own uploaded photographs as its cover.Take it as the newest active generation having no output to show.The cover falls back to the input photograph when the newest active generation has no output image.
You want your collections in alphabetical order, or one of them held at the top.Rename for clarity if that helps you read the list, but expect every position to stay exactly where it is.The list is fixed to the creation date of each collection, and renaming moves nothing.
Creating or renaming a collection fails and the message does not say why.Shorten the name to 80 characters or fewer, after trimming, and try again.The server refuses names outside 1 to 80 characters, and the app returns a general failure rather than naming the length.

Before you go looking for a control that is not there

Five checks that settle most arrangement surprises without changing anything.

  • Note the generation date of the image you just added — that is the position it will take inside the collection.
  • Read the collection list from the top as newest created, not as a name you are trying to find alphabetically.
  • Glance at the cover after each addition; if it changed, a newer active generation is now the newest one in that collection.
  • Keep a new name at 80 characters or fewer after trimming, and confirm it appears before assuming it saved.
  • Expect two collections to be able to carry the same name, and tell them apart by their position in the list.

What this surface does not do

Stated plainly, so that nothing on this page implies a control you will then go looking for.

  • No manual ordering: there is no endpoint or gesture for moving an item into a chosen position inside a collection.
  • No pinning, and no cover selection — the cover is derived, never set.
  • No alphabetical ordering of the collection list, and no way to move a collection up it.
  • Renaming a collection changes the label only; its position stays bound to its creation date.
  • The time an item was added is kept in the database and is used by no listing.
  • Duplicate collection names are not blocked, so the app will not warn you about one.
  • These findings describe the API and the Jewelry AI mobile client only; no other surface is claimed here.

What this page does not settle

The cover is the newest active generation, and the word active is doing real work in that sentence. What happens to a collection and its cover when a generation is deleted, restored or removed for good is a separate question that is not settled on this page.

How images get into a collection in the first place — including the same image sitting in more than one collection, and what a repeated add does — is also outside this page. So is what the library tab does with the same images, which is a different list owned by a different page.

Nothing here describes how an image is generated or what a provider does with it.

Questions

Can I choose which image is used as a collection cover?

No. The cover is always the newest active generation inside the collection, and it changes on its own when a newer-dated generation joins. If that newest active generation has no output image, the cover shows the input photograph you uploaded for it. There is no picker and no pin.

Why is the image I just added not at the top of the collection?

Because items are ordered by the date the image was generated, newest first, not by the order you added them. An older photograph added today lands at its own date. The time you added it is recorded in the database, but no list sorts by it.

Can I sort my collections alphabetically, or drag them into the order I want?

No. The collection list is fixed to the creation date of each collection, newest first. There is no alphabetical sorting, no manual move and no pinning, and renaming a collection does not change its position.

I renamed a collection and it failed without saying why. What happened?

Length is the first thing to check. A name is trimmed of surrounding spaces and has to be 1 to 80 characters, but no name field in the app stops you at 80 while you type. A longer name is refused by the server and comes back as a general failure to create or rename, without naming the length as the reason. Shorten the name and try again.