feat(playlist): compact rows with clean titles and durations #13

Merged
tri merged 1 commits from feat/compact-playlist into main 2026-11-13 22:54:32 +07:00
Owner

Closes #10

Playlist rows were tall and showed the whole release name (VisionQuest.S01E01.No.Strings.DSNP.DV.HDR.WEB...), so you couldn't tell episodes apart at a glance. Rows are now compact and read like a track list: 1 S01E01 · No Strings 45:35.

  • MediaInfo::cleanTitle() (in qtpotato_core) drops release tags: S01E01 · No Strings, The Show · S02E10 when there is no episode title, Dune Part Two (2024), Frieren - 05 for [Group] … (1080p) [CRC] names. The full file name is in the tooltip.
  • Length of each local file is read with libavformat on a 2-thread pool and shown right-aligned (m:ss / h:mm:ss); streams are skipped.
  • Row height is the label plus smallSpacing; number, playing icon and length use smallFont; edges use largeSpacing. The remove button shows only on hover or keyboard focus.

Proof: unit tests for title cleaning and duration probing (ffmpeg-generated files); before/after screenshots from the real app (Union style, dark scheme) below.

Before After (row 3 focused)
before after

Reviewed with sol-loop: 2 rounds with gpt-6.1-sol. Sol verdict: approved.

Created with Claude Opus 5.5 in Claude Code (T3 Code), reviewed by GPT 6.1 Sol in Codex.

Closes #10 Playlist rows were tall and showed the whole release name (`VisionQuest.S01E01.No.Strings.DSNP.DV.HDR.WEB...`), so you couldn't tell episodes apart at a glance. Rows are now compact and read like a track list: `1 S01E01 · No Strings 45:35`. - `MediaInfo::cleanTitle()` (in `qtpotato_core`) drops release tags: `S01E01 · No Strings`, `The Show · S02E10` when there is no episode title, `Dune Part Two (2024)`, `Frieren - 05` for `[Group] … (1080p) [CRC]` names. The full file name is in the tooltip. - Length of each local file is read with libavformat on a 2-thread pool and shown right-aligned (`m:ss` / `h:mm:ss`); streams are skipped. - Row height is the label plus `smallSpacing`; number, playing icon and length use `smallFont`; edges use `largeSpacing`. The remove button shows only on hover or keyboard focus. Proof: unit tests for title cleaning and duration probing (ffmpeg-generated files); before/after screenshots from the real app (Union style, dark scheme) below. | Before | After (row 3 focused) | | --- | --- | | ![before](https://git.trivk.dev/attachments/bdeaddc3-1d6a-4987-9900-106e602a55f2) | ![after](https://git.trivk.dev/attachments/d3b87153-0bfb-46dc-856e-01679296ef5e) | Reviewed with sol-loop: 2 rounds with gpt-6.1-sol. Sol verdict: approved. Created with Claude Opus 5.5 in Claude Code (T3 Code), reviewed by GPT 6.1 Sol in Codex.
tri added 1 commit 2026-11-13 22:53:26 +07:00
tri force-pushed feat/compact-playlist from 76ba7b0be0 to 3e65f21fcb 2026-11-13 22:53:26 +07:00 Compare
tri merged commit ad50230829 into main 2026-11-13 22:54:32 +07:00
tri deleted branch feat/compact-playlist 2026-11-13 22:54:40 +07:00
Sign in to join this conversation.