From 885dea74f26ee6a9466be22d6f43a02827450edd Mon Sep 17 00:00:00 2001 From: hl-valdemar Date: Mon, 19 Oct 2026 20:13:39 +0200 Subject: [PATCH] ui: limit start screen to four recent videos --- README.md | 2 +- Sources/App/TerebiApp.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5872ed8..c9e07ea 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Builds are ad-hoc signed for personal use, not notarized. Bundled licenses and s Open one or more local files with **⌘O**, drag them onto the video, or use Finder's **Open With**. A selection replaces the session's queue and plays in natural filename order (for example, episode 2 before episode 10). Open a YouTube video or Miruro episode with **⇧⌘O** or drop its link. Media starts automatically and resumes its saved position; finished videos restart from the beginning. Live and audio-only media do not save progress. -The start screen uses a fixed 640 × 400-point two-pane window: Terebi's identity and version on the left; **Open…**, **Open Stream…**, and the six most recently played local files or YouTube videos on the right. Opening media restores normal resizing; closing media returns to the fixed start size. Shortcut hints follow your configured bindings. **Open Stream…** reveals a focused inline URL field. When the most recent item has saved progress, it appears once as a **Resume** row with its saved timestamp. Recent titles and ordering survive relaunches; failed opens are not added. Resolved streams are excluded from recents. The action pane scrolls, and drag-and-drop remains available. +The start screen uses a fixed 640 × 400-point two-pane window: Terebi's identity and version on the left; **Open…**, **Open Stream…**, and at most the three most recently played local files or YouTube videos on the right, including any **Resume** row. Opening media restores normal resizing; closing media returns to the fixed start size. Shortcut hints follow your configured bindings. **Open Stream…** reveals a focused inline URL field. When the most recent item has saved progress, it appears once as a **Resume** row with its saved timestamp. Recent titles and ordering survive relaunches; failed opens are not added. Resolved streams are excluded from recents. The action pane scrolls, and drag-and-drop remains available. Start-screen actions use 14-point text and begin 64 points below the top edge. Branding uses a 16-point app name and 12-point version; the drop hint uses 13-point text. Open actions have no idle fill; their background appears on hover or press. diff --git a/Sources/App/TerebiApp.swift b/Sources/App/TerebiApp.swift index f8bfeb5..7b2b199 100644 --- a/Sources/App/TerebiApp.swift +++ b/Sources/App/TerebiApp.swift @@ -2225,7 +2225,7 @@ private struct PlayerContent: View { .help("Resume \(latest.title) at \(time(resumePosition))") .padding(.vertical, 8) } - ForEach(model.recentMedia.filter { resumePosition == nil || $0.id != latest?.id }) { item in + ForEach(model.recentMedia.prefix(4).filter { resumePosition == nil || $0.id != latest?.id }) { item in Button { model.open(item.url) } label: { HStack(spacing: 10) { Image(systemName: item.url.isFileURL ? "doc.richtext" : "link")