A Capture records the show and episode it came from #40

Open
opened 2026-08-13 13:17:34 +00:00 by aiko · 0 comments
Owner

What to build

A Capture records where it came from in words rather than ids, so the Note says which show and which episode instead of a GUID.

MiscInfo currently reads {itemId} @ hh:mm:ss, which is accurate and useless — it identifies the scene to the server and to nobody else. It should read compactly, something in the shape of:

よふかしのうた · S01E03 · 12:34

Series, then season and episode, then the Cue's start, separated by middle dots. Compact is the requirement: this sits under the definition on a card being reviewed, not in a log.

Store it on the Capture, do not resolve it at Export. This is the same rule the frozen Entry follows and the same reasoning that moved extraction to capture time (ADR 0010): a Capture should not depend on the library still agreeing with it later. Resolved at Export, a Capture whose episode has since been deleted or re-organised exports with less provenance than the one queued beside it — and which one that is depends on when you happened to Export. Resolved at capture, every Capture carries the same thing.

Store the parts rather than a rendered line, so the format can change later without the old rows being stuck in it. What a Capture cannot learn — a film with no season or episode, an item whose series is unknown — is stored empty and rendered as what is known, never as S00E00 or a guess.

The schema change goes through the queue's append-only migration list, keyed to user_version. Rows written before it keep their ids and render as they do today.

Acceptance criteria

  • A Capture stores the series name, season number and episode number available at the moment it was taken
  • Values are captured from Jellyfin at capture time, and Export performs no library lookup
  • MiscInfo renders compactly as series · season and episode · the Cue's start timestamp, separated by middle dots
  • An item with no season or episode — a film, or an item Jellyfin describes loosely — renders what is known rather than a placeholder or a guess, and leaves no orphaned separator behind
  • A Capture written before this change still exports, with the provenance it has
  • The schema change goes through the migration list, and a queue written under the previous schema keeps its rows and stays writable
  • Resolving provenance never fails a Capture: an item Jellyfin cannot describe still produces a Capture, because the word is what is irreplaceable

Blocked by

None — the Export batch (#33–#39) is merged.

## What to build A Capture records where it came from in words rather than ids, so the Note says which show and which episode instead of a GUID. `MiscInfo` currently reads `{itemId} @ hh:mm:ss`, which is accurate and useless — it identifies the scene to the server and to nobody else. It should read compactly, something in the shape of: ``` よふかしのうた · S01E03 · 12:34 ``` Series, then season and episode, then the Cue's start, separated by middle dots. Compact is the requirement: this sits under the definition on a card being reviewed, not in a log. **Store it on the Capture, do not resolve it at Export.** This is the same rule the frozen Entry follows and the same reasoning that moved extraction to capture time (ADR 0010): a Capture should not depend on the library still agreeing with it later. Resolved at Export, a Capture whose episode has since been deleted or re-organised exports with less provenance than the one queued beside it — and which one that is depends on when you happened to Export. Resolved at capture, every Capture carries the same thing. Store the parts rather than a rendered line, so the format can change later without the old rows being stuck in it. What a Capture cannot learn — a film with no season or episode, an item whose series is unknown — is stored empty and rendered as what is known, never as `S00E00` or a guess. The schema change goes through the queue's append-only migration list, keyed to `user_version`. Rows written before it keep their ids and render as they do today. ## Acceptance criteria - [ ] A Capture stores the series name, season number and episode number available at the moment it was taken - [ ] Values are captured from Jellyfin at capture time, and Export performs no library lookup - [ ] `MiscInfo` renders compactly as series · season and episode · the Cue's start timestamp, separated by middle dots - [ ] An item with no season or episode — a film, or an item Jellyfin describes loosely — renders what is known rather than a placeholder or a guess, and leaves no orphaned separator behind - [ ] A Capture written before this change still exports, with the provenance it has - [ ] The schema change goes through the migration list, and a queue written under the previous schema keeps its rows and stays writable - [ ] Resolving provenance never fails a Capture: an item Jellyfin cannot describe still produces a Capture, because the word is what is irreplaceable ## Blocked by None — the Export batch (#33–#39) is merged.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
mobrule/kurageyomi#40
No description provided.