From d1f0d83e4c62e914cef7b168114e1a42c807d4cd Mon Sep 17 00:00:00 2001 From: hl-valdemar Date: Tue, 13 Oct 2026 08:45:18 +0200 Subject: [PATCH] ui: size subtitle glass to text within eighty percent width --- README.md | 2 +- Sources/App/TerebiApp.swift | 4 ++-- TODO.md | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b24c9d8..88717b9 100644 --- a/README.md +++ b/README.md @@ -251,7 +251,7 @@ The inline URL field, including its placeholder, uses the same 12-point system f With no media open, the full window uses native behind-window HUD glass with a 35%-opaque brown tint. Static, cached amber/rust radial gradients add ambient color only to the empty screen; they disappear during loading or errors, and are never drawn over video or playback chrome. Glass title/control/error surfaces use the same brown tint with half-point sand outlines. Decorative drawing does not intercept input. The idle Metal surface stays attached but hidden; opening media restores a solid black background and letterboxing without tinting the video, and closing it restores the ambient frosted background. macOS controls the material’s appearance, including Reduce Transparency. -In normal mode, the captions selector sits immediately right of the compact-mode button and is disabled when no external subtitle tracks are available. Its native symbol uses a 16-point configuration within a 24-point click target. The native pull-down menu includes a visible Off option and prefers opening above the button; AppKit can reposition it to fit the screen. In compact mode, subtitle selection and Off are available through the settings button's Subtitles submenu; the compact cog uses a 21-point symbol to balance the adjacent icons. Subtitle lines can use the player width with 8-point outer side margins and 12-point internal padding. Their HUD-glass background uses 60% opacity without dimming the text. Visible compact controls raise subtitles by the actual compact control height plus spacing, rather than the normal controller's clearance. Subtitle-load errors remain visible independently of auto-hidden controls. +In normal mode, the captions selector sits immediately right of the compact-mode button and is disabled when no external subtitle tracks are available. Its native symbol uses a 15-point configuration within a 24-point click target. The native pull-down menu includes a visible Off option and prefers opening above the button; AppKit can reposition it to fit the screen. In compact mode, subtitle selection and Off are available through the settings button's Subtitles submenu; the compact cog uses a 21-point symbol to balance the adjacent icons. Subtitle glass hugs the text and its 12-point internal padding, with the complete container capped at 80% of the window width; longer text wraps within that limit. Its HUD-glass background uses 60% opacity without dimming the text. Visible compact controls raise subtitles by the actual compact control height plus spacing, rather than the normal controller's clearance. Subtitle-load errors remain visible independently of auto-hidden controls. Accepted relative seeks, including keyboard shortcuts, preserve control visibility instead of revealing hidden chrome. Seek failures still reveal the error; dragging the timeline continues to show the controls. diff --git a/Sources/App/TerebiApp.swift b/Sources/App/TerebiApp.swift index 5296abf..5073638 100644 --- a/Sources/App/TerebiApp.swift +++ b/Sources/App/TerebiApp.swift @@ -1328,7 +1328,7 @@ private struct CaptionSelector: NSViewRepresentable { imageScaling = .scaleProportionallyUpOrDown (cell as? NSPopUpButtonCell)?.arrowPosition = .noArrow let symbol = NSImage(systemSymbolName: "captions.bubble", accessibilityDescription: "Subtitles")? - .withSymbolConfiguration(.init(pointSize: 16, weight: .regular)) + .withSymbolConfiguration(.init(pointSize: 13, weight: .regular)) captionItem.image = symbol contentTintColor = SunsetPalette.text toolTip = "Subtitles" @@ -1739,10 +1739,10 @@ private struct PlayerContent: View { .foregroundStyle(.white) .multilineTextAlignment(.center) .fixedSize(horizontal: false, vertical: true) - .frame(maxWidth: .infinity) .padding(12) .background(PlayerGlass().opacity(0.6) .clipShape(RoundedRectangle(cornerRadius: 12)).allowsHitTesting(false)) + .frame(maxWidth: geometry.size.width * 0.8) .padding(.horizontal, 8) .padding(.bottom, model.controlsVisible ? (model.isCompact ? compactControlHeight + 20 : 110) diff --git a/TODO.md b/TODO.md index 5f4df45..6578988 100644 --- a/TODO.md +++ b/TODO.md @@ -1,2 +1,3 @@ - [x] add miruro streaming support +- [ ] investigate and fix audio when streaming from miruro - audio seems to crackle (not for youtube i think; only for miruros) - [ ] add chrome cast support \ No newline at end of file