diff --git a/Sources/App/TerebiApp.swift b/Sources/App/TerebiApp.swift index af65af8..de4170d 100644 --- a/Sources/App/TerebiApp.swift +++ b/Sources/App/TerebiApp.swift @@ -3203,8 +3203,8 @@ private struct PlayerContent: View { .foregroundStyle(.white) .multilineTextAlignment(.center) .fixedSize(horizontal: false, vertical: true) - .padding(.horizontal, 24) - .padding(.vertical, 12) + .padding(.horizontal, 12) + .padding(.vertical, 6) .background(PlayerGlass().opacity(0.6) .clipShape(RoundedRectangle(cornerRadius: 12)).allowsHitTesting(false)) .frame(maxWidth: geometry.size.width * 0.8) diff --git a/TODO.md b/TODO.md index 9e29df8..cba98a0 100644 --- a/TODO.md +++ b/TODO.md @@ -1,28 +1,4 @@ -- [x] improve chrome cast subtitle rendering - - native WebVTT style: white sans-serif, black outline, transparent background; physical-TV font-scale tuning remains unverified -- [x] currently, computer falls asleep even if video is playing. this should not be the case. - - native playback activity prevents idle system sleep; local video keeps the display awake, casting allows screensaver/display sleep; native assertion checks and loopback Cast transitions passed, physical idle-TV verification remains unverified -- [x] add session-only local-file playlist support - - multi-file Open/Finder/drop, natural filename order, editable queue sidebar, explicit append, previous/next and automatic advance; Cast navigation retains the receiver; UI/drag-drop and physical-Cast verification remain unverified -- [x] make sure the `make install` command installs the application (i can't find it in spotlight) - - installs to ~/Applications, migrates the old hidden app, registers with Launch Services and requests Spotlight indexing; actual install, CLI, code signature, registration and Spotlight query passed; Spotlight UI remains unverified -- [x] takes an awfully long time seek in local videos which i find weird, since seeking in streamed youtube videos is pretty much instant - - local seek preroll skips disposable non-reference pictures without sacrificing exact target frames; measured 1080p/10-second-GOP paused seek improved from 541 ms to 400 ms and playing seek from 682 ms to 488 ms; timestamp/pixel checks passed across six decoder formats; long-GOP reference decoding remains necessary, and the originally affected files still need manual verification -- [x] make the sidebar expand/collapse with a nice transition - - synchronized 250 ms sidebar/window reveal, reversible mid-transition, with immediate Reduce Motion changes; top-right controls stay anchored to the moving window corner; native checks passed for rendered controls during transitions, stable video size, reversals, screen-edge fitting, fullscreen and compact restoration; animation feel and Reduce Motion still need manual verification -- [x] make the window draggable (in all cases/view states) so long as a button/clickable element is not hovered. - - scoped native background dragging across start/playback/queue/error/Cast/compact views, with passive loading/audio overlays passing input through; 20 native input-routing probes passed, including controls and row-reorder exclusions; physical pointer dragging and Cast-screen interaction still need manual verification -- [x] on the start screen: - - [x] make the youtube url input field that appears when clicking the youtube button appear with a nice transition - - 200 ms fade/scale with animated row reflow; the button and ⇧⌘O toggle the same inline input, including while editing; native focus, draft-preservation and rapid-reversal checks cover mouse/shortcut interoperation - - [x] change the youtube button to general streaming - - Open Stream routes YouTube videos and explicit barelystarted.miruro.tv episode links; live Miruro video/audio and VTT seek checks passed, with shared validated source metadata and unchanged Tubular source/progress contracts; CLI handoff emitted v2 playback/end facts, but its GUI-state checker timed out without snapshots; physical UI/drop/Cast verification remains unverified -- [x] check whether we're using appropriately new apple ui APIs / SDKs for the project. - - we should strive to use modern and idiomatic SDKs and APIs including SwiftUI among others - - audited SDK 27.0 / Swift 6.4 with the macOS 15 minimum retained; migrated Cast discovery to NWBrowser and production activation to activate(). Real Bonjour identity/name/update/order/deduplication/removal/restart and routable-endpoint checks, loopback Cast transitions, focused startup-error alerts and a cooperating-launcher production smoke for cold start/CLI reuse/document handoff/keyboard playback passed. The existing full CLI snapshot-harness timeout remains; macOS 15 runtime and physical-Cast verification remain unverified. Observation, glass and the existing native bridges were left unchanged. -- [x] fix the readme. it's currently bloated with irrelevant implementation detail and other such nonsense. it should do the job of a readme only, nothing more. -- [x] add a skip button when current playback is inside either an opening or an ending segment. - - Skip Opening/Ending uses validated metadata, seeks to the segment end and disappears after ten seconds (including while paused) or on leaving the segment; ignored segments stay dismissed until close/media replacement. A light background fills with elapsed offer time, with 200 ms fade transitions; Reduce Motion uses stepped countdown updates without transitions. Native HLS, exact-EOF, controlled-clock countdown/dismissal and loopback Cast checks passed. Button placement, animation feel and physical-Cast verification remain unverified; rapid play/seek probes encountered Core Audio startup errors on Bluetooth output. -- [ ] improve: subtitles. - - decrease padding on captions - - decrease font size of captions by 10 percent \ No newline at end of file +- [ ] in the playlist sidebar, pressing the `+` button by the queue indicator should it expand it to double it's size (with a nice transition) split down the middle with the left side being a file icon and the right side being a link icon. + - pressing the file icon should open the file picker for local file selection (current behavior) + - pressing the link icon should present an input field that opens upwards with a nice transition where the user can paste a link; pressing return will fetch and add the video. + - we already have this ui effect in the start screen when pressing the "open url" button, which we should be able to reuse much of. \ No newline at end of file