Align preview typography with FFmpeg output, add video/song title split, and ship OSS updates.

Separate YouTube video titles from on-video song/artist fields with Pro gating, serve curated fonts and watermark assets for 1:1 preview parity, and include billing/API/docs/deploy stack for self-hosted release.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Atakan Doğan Özban
2026-07-27 16:26:19 +02:00
co-authored by Cursor
parent 682020ff5a
commit c8015937f9
206 changed files with 37078 additions and 638 deletions
+7 -3
View File
@@ -1,14 +1,18 @@
"use client";
import { RESOLUTIONS } from "@/lib/constants";
import { Plan } from "@prisma/client";
import { getResolutionsForPlan } from "@/lib/plans";
type Props = {
value: string;
onChange: (value: string) => void;
disabled?: boolean;
plan?: Plan;
};
export function ResolutionSelect({ value, onChange, disabled }: Props) {
export function ResolutionSelect({ value, onChange, disabled, plan = "FREE" }: Props) {
const resolutions = getResolutionsForPlan(plan);
return (
<select
value={value}
@@ -16,7 +20,7 @@ export function ResolutionSelect({ value, onChange, disabled }: Props) {
disabled={disabled}
className="w-full rounded border border-gray-600 bg-surface-light px-3 py-2 text-sm text-white focus:border-accent focus:outline-none disabled:opacity-50"
>
{RESOLUTIONS.map((r) => (
{resolutions.map((r) => (
<option key={r.value} value={r.value}>
{r.label}
</option>