← All topicsOpen Favorites →

Favorites is the shortlist. Anything you star anywhere in the app shows up here, and this is the only screen whose whole content is "the things I picked out". It has a nav entry with a submenu — Media and Jobs jump straight to those two tabs.

It is not a separate collection. Starring sets a flag on the media or job document you already had; the screen just queries for that flag. Unstarring something removes it from this screen and changes nothing else about it.

The three tabs

All / Media / Jobs, and the active one is mirrored into the URL as ?tab=. The nav submenu links are just /favorites?tab=media and /favorites?tab=jobs.

Tab What it shows
All Favorited media and favorited jobs in one feed, newest-favorited first
Media Favorited source clips only
Jobs Favorited generation jobs only, every status

Two things about ?tab= are worth knowing. A value the app does not recognise falls back to All instead of erroring — a stale or mistyped link lands you on a working page, not on the route error screen. And switching tabs replaces the URL rather than pushing a new entry, so the browser Back button takes you out of Favorites entirely rather than stepping back through the tabs you looked at.

The control itself is a row of three buttons at the top of the page, with the active one filled in. The heading below changes with it too, so you can always tell which tab you are on without reading the buttons: All Favorites, Favorited Media, Favorited Jobs.

How something gets favorited

The star is never on this screen's own list first — it lives on the cards elsewhere:

  • On a media card — the Favorite / Unfavorite action in the card's hover overlay: on Media, on each per-subreddit, per-profile and per-chat gallery under it, on /media/recently-captioned, and on the Media and All tabs of this screen.
  • On a job card — the same action on Jobs and in the Recently Completed Jobs row on Home, but only on completed and published jobs. A job that is still pending, running, or failed has no star at all, so it can never reach this screen.
  • In the review deck — ★ Favorite on Review, or the ↑ arrow key. This is the fastest way to fill Favorites, because it is one keystroke per card.

The icon is a star on the cards even though the nav entry uses a heart; they are the same flag.

The All tab sorts by when you favorited it, not by when the media was ingested or the job was created — so something you starred this morning from a clip ingested last month sits at the top. Sorting is not the same as selecting, though. What the tab fetches is the newest page of each list by the usual ingest/creation order; the favorited-first sort is applied afterwards, to whatever came back. Past the cap described under "Loading and freshness", an old ingest you starred recently may not be in that page at all — and so will not appear on this tab however recently you starred it. The Media and Jobs tabs page far enough to find it.

What you can do from here

Every tab is the same masonry grid used on Media and Jobs, with the same per-card overlay and the same multi-select checkbox. The floating + button opens the bulk actions for the current selection.

  • Media tab — the full media action set: Add to Jobs, Caption (Recaption if it already has one), View Caption, Trim, Favorite / Unfavorite, Archive. Bulk actions are Add to Jobs, Caption, and Archive.
  • Jobs tab — a deliberately narrow set. Archive is on every card. Unfavorite is there too, on the same completed-or-published condition that let the job be starred in the first place. Publish to CivitAI appears only on a completed job that has both a final CDN video and a non-empty positive prompt — a job already published shows no publish button at all. The only bulk action is Archive. Everything generation-side — queueing, re-queueing, retrying a failed publish — stays on Jobs.
  • All tab — each card keeps its own kind's actions, so a media card and a job card sitting next to each other offer different buttons. The only bulk action is Archive, and it routes each selected id to the right archive call for you, so a mixed selection is fine.

Tap a card's status badge to read its caption. On the Media tab that is the CAPTIONED badge; on the Jobs tab it is the job's status badge (COMPLETED, PUBLISHED, and so on). It only works on something that actually has a caption stored.

Two buttons on a job card here do nothing. Trim and Recaption render in the overlay on the Jobs and All tabs because they come from the shared jobs action row, but this screen supplies no handler for either. Worse than silent: the button runs its normal press animation — the icon swaps to a spinner for about a second and the label slides out — and then nothing happens, so it reads as an action that ran rather than one that was never wired. Trim or recaption a job on Jobs instead.

There are no filters here

Every other gallery in the app has a filter panel. This one does not, and that is deliberate rather than missing: the tabs run the same queries as /media and /jobs but with every filter pinned — all sources, all caption states, all durations, all aspect ratios, no tag filter, newest first — and the filter UI hidden. You cannot narrow Favorites to just Reddit, or just captioned clips, or a tag. If you need that, go to Media or Jobs and use their own Favorites filter, which applies the same flag on top of everything else those screens can filter by.

The Jobs tab is pinned to all statuses, which is why an archived-looking mix of completed and published jobs appears together with no tab bar to split them.

Loading and freshness

The Media and Jobs tabs page as you scroll — 36 media or 24 jobs at a time — exactly like the screens they borrow from.

The All tab does not. It shows the first page of each list and stops: at most 36 media plus 24 jobs, merged and sorted. There is no load-more, because merging two independently-cursored lists into one honest "next page" is not worth the complexity for a list that is meant to stay short. If your favorites have grown past that, the per-kind tabs are the ones that will show you everything.

The Media tab re-polls every five seconds while something on it is pending, captioning, queued, or running, and only while the browser tab is in the foreground. The Jobs tab does not poll at all — unlike /jobs, which refreshes every three seconds. A job that finishes while you are looking at this tab will not update itself; reload or come back to it.