Skip to content

Releases: threehappypenguins/VideoSphere

0.2.3

Choose a tag to compare

@threehappypenguins threehappypenguins released this 11 Jul 00:29
9244ee7

VideoSphere 0.2.3

Fixes

  • Tolerate cleared/corrupt OAuth refresh tokens so reconnect flows work instead of failing on decrypt
  • Keep connection card actions in-flow on narrow screens (no overflow)

Features

  • Show/hide toggles for YouTube main and temporary stream keys
  • Livestream list thumbnails for scheduled, live, and past streams

Changes

  • Default JWT session lifetime is now 10 years (browsers may still drop cookies earlier, e.g. Chromium ~400 days)
  • Docs/TypeDoc clarifications for JWT cookie browser caps and OAuth token decrypt behavior

0.2.2

Choose a tag to compare

@threehappypenguins threehappypenguins released this 06 Jul 00:05
d18bbd7

VideoSphere 0.2.2

YouTube import: embed preview fallback

Fresh or recently processed YouTube videos (especially post-live VODs) often expose only DASH/HLS formats to yt-dlp, with no browser-streamable progressive MP4 for the trim editor. Import no longer hard-fails in that case.

Added

  • Embed preview mode — When yt-dlp returns formats but none are browser-streamable, resolve succeeds with previewMode: 'embed' and the import modal uses YouTube’s IFrame Player for trim preview instead of the proxied HTML5 stream.
  • YouTubeEmbedPreviewPlayer — Loads the YouTube IFrame API once per page and exposes previewAt / getCurrentTime for trim handle sync.
  • NoBrowserStreamableFormatError — Typed signal for the DASH/HLS-only case; resolve maps it to embed fallback while other preview failures still return 502.

Changed

  • Import trim UI (embed mode) — Smart cut is required and locked on; frame nudge buttons and live keyframe snapping are hidden; coarse jump-step controls remain.
  • Resolve API — Successful direct preview responses now include previewMode: 'direct' explicitly.

Fixed

  • Empty yt-dlp format lists — Treated as a real metadata failure (502), not embed fallback, so JS-challenge or auth failures are not masked as “processing” videos.
  • Smart cut copy — Embed-mode helper text and tooltips now describe frame-accurate cuts after download instead of incorrectly saying cuts snap to keyframes.

0.2.1

Choose a tag to compare

@threehappypenguins threehappypenguins released this 04 Jul 20:45
a76faf4

VideoSphere 0.2.1

YouTube import

  • Faster, more reliable downloads — imports now fetch the full source with parallel fragments and tuned HTTP chunking, then trim with ffmpeg instead of using --download-sections.
  • Smoother progress — download progress accounts for separate video and audio streams so the bar no longer jumps when the second stream starts.
  • Better audio compatibility — prefers AAC/m4a audio when merging so imported files stay closer to the source format.

YouTube trim editor

  • Finer trim controls — frame-step buttons, configurable jump steps (e.g. 5s / 10s), and click-to-edit timestamps (0:10, 1:30, 1:02:03).
  • Keyframe snapping — snapping runs from the new frame-step controls; keyboard/drag behavior is unchanged for preview seeking.

Mobile UX

  • Responsive modal footers — draft and livestream metadata modals use a stacked mobile layout on narrow screens.
  • Hydration fix — viewport detection defaults to the mobile layout during SSR/first paint to avoid layout flicker on small screens.

Livestreams

  • Delete from the edit modal — remove drafts or livestreams directly from the metadata modal, with a confirmation step.
  • Shared delete helper — livestream deletion logic is centralized for consistent API calls and toast feedback.

Fixes

  • Trim timestamp inputs no longer commit twice on blur after pressing Enter.

0.2.0

Choose a tag to compare

@threehappypenguins threehappypenguins released this 03 Jul 00:00

VideoSphere 0.2.0

Release notes for changes on dev since main (0.1.1).

Highlights

  • YouTube import — Import videos from a connected YouTube account, preview and trim in the browser, then save to a draft and upload to platforms on Upload & Save.
  • Draft labels — Color-coded organizational labels on the Uploads list, with profile-level label management.
  • SermonAudio cross-publish & scheduling — Cross Publish on publish (Facebook, X, Instagram), plus scheduled publication via publishTimestamp.
  • Dashboard refresh — The former Drafts section is now Uploads, with nested history routes and a mobile navigation drawer.

✨ New features

YouTube import

  • End-to-end pipeline: resolve source URL → download → trim → draft → platform upload.
  • In-modal trim preview (proxied HTML5 player) with keyframe-aware range slider.
  • Import picker paginates two videos at a time; supports streamed broadcasts and row thumbnails.
  • Server-side import job scheduling; platform upload deferred until Upload & Save.
  • Cancel with confirmation; downloads interrupt cleanly on cancel.
  • Friendly errors for private/unavailable videos.

Draft labels

  • Create, edit, and delete organizational labels with custom colors.
  • Apply labels to drafts from the Uploads list; mobile-friendly chip layouts.
  • Profile settings section for managing labels.

SermonAudio

  • Cross Publish enabled on publish, with connection-aware draft UI.
  • Schedule publications with a datetime picker and scheduled upload status.
  • Instagram added as a Cross Publish destination.
  • Social connections API for cross-publish account discovery.

Dashboard & navigation

  • /dashboard/drafts/dashboard/uploads (legacy routes redirect automatically).
  • Upload and distribution history nested under /dashboard/uploads/history.
  • Livestream history remains under /dashboard/livestreams/history.
  • Mobile nav drawer; improved quick actions and onboarding tour updates.

Scheduling

  • Single-field free-form time entry in the schedule picker.
  • Schedule picker popover layout fixes.

🐛 Bug fixes & hardening

  • YouTube import: Near-expiry preview refresh; hardened start/preview/finalize paths; OAuth handling improvements; bounded preview media cache.
  • Livestreams: MongoDB pagination for history/import lists.
  • Draft labels: Stricter validation, cascade removal on bulk delete, 404 handling for missing profiles, no partial-success label sync failures.
  • SermonAudio: Auto-publish default restored when clearing a schedule.
  • Dashboard: Nav drawer state derived correctly; streamed history reconciled on first page load only.

📦 Deployment & ops

Docker

  • Production image now includes ffmpeg and yt-dlp (required for YouTube import).
  • Rebuild and redeploy the image for this release.

Optional environment variables

# YT_IMPORT_WORKDIR=/tmp/yt-import          # default: /tmp/yt-import
# YT_IMPORT_MAX_DURATION_SECONDS=14400      # default: 4 hours