Stability changes have been updated.

This commit is contained in:
2026-04-05 13:11:18 -04:00
parent b0a190f592
commit ed71d771ea
18 changed files with 410 additions and 301 deletions

View File

@@ -360,7 +360,7 @@ export default function AppearanceSettings() {
<div key={category.id} className="flex flex-col gap-4">
<div className="flex items-center gap-2 px-1">
{category.icon}
<h4 className="text-xs font-bold uppercase tracking-widest text-helios-slate/60">
<h4 className="text-xs font-medium text-helios-slate/60">
{category.label}
</h4>
</div>
@@ -428,7 +428,7 @@ export default function AppearanceSettings() {
{isActive && (
<div className="absolute top-3 right-3 flex items-center gap-1.5 bg-helios-solar text-helios-mist px-2.5 py-1 rounded-full shadow">
<CheckCircle2 size={12} />
<span className="text-[9px] font-bold uppercase tracking-widest">Active</span>
<span className="text-xs font-medium">Active</span>
</div>
)}
</button>

View File

@@ -34,7 +34,7 @@ export class ErrorBoundary extends Component<Props, State> {
return (
<div className="flex flex-col items-center justify-center p-8 bg-helios-background border border-helios-red/50 rounded-lg shadow-sm text-center w-full min-h-[300px]">
<AlertCircle className="w-12 h-12 text-helios-red mb-4" />
<h2 className="text-xl font-bold text-white mb-2">Something went wrong</h2>
<h2 className="text-xl font-bold text-helios-ink mb-2">Something went wrong</h2>
<p className="text-helios-text/70 mb-4 max-w-md">
The {this.props.moduleName || "component"} encountered an unexpected error and could not be displayed.
</p>
@@ -43,7 +43,7 @@ export class ErrorBoundary extends Component<Props, State> {
</div>
<button
onClick={() => window.location.reload()}
className="px-6 py-2 bg-helios-orange hover:bg-helios-orange/80 text-white font-medium rounded transition"
className="px-6 py-2 bg-helios-orange hover:bg-helios-orange/80 text-helios-main font-medium rounded transition"
>
Reload Page
</button>

View File

@@ -73,7 +73,7 @@ export default function FileSettings() {
<div className="space-y-4">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Output Suffix</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Output Suffix</label>
<input
type="text"
value={settings.output_suffix}
@@ -87,7 +87,7 @@ export default function FileSettings() {
</p>
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Extension</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Extension</label>
<select
value={settings.output_extension}
onChange={e => setSettings({ ...settings, output_extension: e.target.value })}
@@ -100,7 +100,7 @@ export default function FileSettings() {
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Output Root</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Output Root</label>
<input
type="text"
value={settings.output_root ?? ""}
@@ -114,7 +114,7 @@ export default function FileSettings() {
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Existing Output Policy</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Existing Output Policy</label>
<select
value={settings.replace_strategy}
onChange={e => setSettings({ ...settings, replace_strategy: e.target.value })}

View File

@@ -438,7 +438,7 @@ export default function HardwareSettings() {
disabled={saving}
className="sr-only peer"
/>
<div className="w-11 h-6 rounded-full bg-helios-line/20 peer-focus:outline-none after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:bg-white after:content-[''] after:transition-all peer-checked:after:translate-x-full peer-checked:bg-helios-solar peer-disabled:cursor-not-allowed peer-disabled:opacity-60"></div>
<div className="w-11 h-6 rounded-full bg-helios-line/20 peer-focus:outline-none after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:bg-helios-ink after:content-[''] after:transition-all peer-checked:after:translate-x-full peer-checked:bg-helios-solar peer-disabled:cursor-not-allowed peer-disabled:opacity-60"></div>
</label>
</div>
@@ -492,7 +492,7 @@ export default function HardwareSettings() {
disabled={saving}
className="sr-only peer"
/>
<div className="w-11 h-6 rounded-full bg-helios-line/20 peer-focus:outline-none after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:bg-white after:content-[''] after:transition-all peer-checked:after:translate-x-full peer-checked:bg-helios-solar peer-disabled:cursor-not-allowed peer-disabled:opacity-60"></div>
<div className="w-11 h-6 rounded-full bg-helios-line/20 peer-focus:outline-none after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:bg-helios-ink after:content-[''] after:transition-all peer-checked:after:translate-x-full peer-checked:bg-helios-solar peer-disabled:cursor-not-allowed peer-disabled:opacity-60"></div>
</label>
</div>

View File

@@ -356,7 +356,7 @@ export default function LogViewer() {
? "text-status-error"
: log.level.toLowerCase().includes("warn")
? "text-amber-400"
: "text-white/90"
: "text-helios-ink"
)}>
{log.message}
</span>
@@ -411,7 +411,7 @@ export default function LogViewer() {
? "text-status-error"
: log.level.toLowerCase().includes("warn")
? "text-amber-400"
: "text-white/90"
: "text-helios-ink"
)}>
{log.message}
</span>

View File

@@ -138,7 +138,7 @@ export default function NotificationSettings() {
<div className="flex justify-end mb-6">
<button
onClick={() => setShowForm(!showForm)}
className="flex items-center gap-2 px-3 py-1.5 bg-helios-surface border border-helios-line/30 hover:bg-helios-surface-soft text-helios-ink rounded-lg text-xs font-bold uppercase tracking-wider transition-colors"
className="flex items-center gap-2 px-3 py-1.5 bg-helios-surface border border-helios-line/30 hover:bg-helios-surface-soft text-helios-ink rounded-lg text-xs font-medium transition-colors"
>
<Plus size={14} />
{showForm ? "Cancel" : "Add Target"}
@@ -155,7 +155,7 @@ export default function NotificationSettings() {
<form onSubmit={handleAdd} className="bg-helios-surface-soft p-4 rounded-xl space-y-4 border border-helios-line/20 mb-6">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Name</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Name</label>
<input
value={newName}
onChange={e => setNewName(e.target.value)}
@@ -165,7 +165,7 @@ export default function NotificationSettings() {
/>
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Type</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Type</label>
<select
value={newType}
onChange={e => setNewType(e.target.value as NotificationTarget["target_type"])}
@@ -181,7 +181,7 @@ export default function NotificationSettings() {
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Endpoint URL</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Endpoint URL</label>
<input
value={newUrl}
onChange={e => setNewUrl(e.target.value)}
@@ -192,7 +192,7 @@ export default function NotificationSettings() {
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Auth Token (Optional)</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Auth Token (Optional)</label>
<input
value={newToken}
onChange={e => setNewToken(e.target.value)}
@@ -202,7 +202,7 @@ export default function NotificationSettings() {
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-2">Events</label>
<label className="block text-xs font-medium text-helios-slate mb-2">Events</label>
<div className="flex gap-4 flex-wrap">
{["completed", "failed", "queued"].map(evt => (
<label key={evt} className="flex items-center gap-2 text-sm text-helios-ink cursor-pointer">

View File

@@ -75,7 +75,7 @@ export default function QualitySettings() {
<div className="rounded-lg border border-helios-line/20 bg-helios-surface-soft/60 p-4 flex items-center justify-between">
<div>
<p className="text-xs font-bold uppercase tracking-wider text-helios-slate">Enable VMAF</p>
<p className="text-xs font-medium text-helios-slate">Enable VMAF</p>
<p className="text-xs text-helios-slate mt-1">Compute a quality score after encoding.</p>
</div>
<label className="relative inline-flex items-center cursor-pointer">
@@ -94,12 +94,12 @@ export default function QualitySettings() {
})}
className="sr-only peer"
/>
<div className="w-11 h-6 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-helios-solar"></div>
<div className="w-11 h-6 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-helios-ink after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-helios-ink after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-helios-solar"></div>
</label>
</div>
<div className="space-y-3">
<label className="text-xs font-bold uppercase tracking-wider text-helios-slate">Minimum VMAF Score</label>
<label className="text-xs font-medium text-helios-slate">Minimum VMAF Score</label>
<input
type="number"
min="0"
@@ -122,7 +122,7 @@ export default function QualitySettings() {
<div className="rounded-lg border border-helios-line/20 bg-helios-surface-soft/60 p-4 flex items-center justify-between">
<div>
<p className="text-xs font-bold uppercase tracking-wider text-helios-slate">Revert on Low Quality</p>
<p className="text-xs font-medium text-helios-slate">Revert on Low Quality</p>
<p className="text-xs text-helios-slate mt-1">Keep the source if the VMAF score drops below the threshold.</p>
</div>
<label className="relative inline-flex items-center cursor-pointer">
@@ -141,7 +141,7 @@ export default function QualitySettings() {
})}
className="sr-only peer"
/>
<div className="w-11 h-6 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-helios-solar"></div>
<div className="w-11 h-6 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-helios-ink after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-helios-ink after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-helios-solar"></div>
</label>
</div>

View File

@@ -100,7 +100,7 @@ export default function ScheduleSettings() {
<div className="flex justify-end mb-6">
<button
onClick={() => setShowForm(!showForm)}
className="flex items-center gap-2 px-3 py-1.5 bg-helios-surface border border-helios-line/30 hover:bg-helios-surface-soft text-helios-ink rounded-lg text-xs font-bold uppercase tracking-wider transition-colors"
className="flex items-center gap-2 px-3 py-1.5 bg-helios-surface border border-helios-line/30 hover:bg-helios-surface-soft text-helios-ink rounded-lg text-xs font-medium transition-colors"
>
<Plus size={14} />
{showForm ? "Cancel" : "Add Schedule"}
@@ -135,7 +135,7 @@ export default function ScheduleSettings() {
<form onSubmit={handleAdd} className="bg-helios-surface-soft p-4 rounded-xl space-y-4 border border-helios-line/20 mb-6">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">Start Time</label>
<label className="block text-xs font-medium text-helios-slate mb-1">Start Time</label>
<input
type="time"
value={newStart}
@@ -145,7 +145,7 @@ export default function ScheduleSettings() {
/>
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-1">End Time</label>
<label className="block text-xs font-medium text-helios-slate mb-1">End Time</label>
<input
type="time"
value={newEnd}
@@ -157,7 +157,7 @@ export default function ScheduleSettings() {
</div>
<div>
<label className="block text-xs font-bold uppercase text-helios-slate mb-2">Days</label>
<label className="block text-xs font-medium text-helios-slate mb-2">Days</label>
<div className="flex gap-2 flex-wrap">
{DAYS.map((day, idx) => (
<button

View File

@@ -269,7 +269,7 @@ export default function StatsCharts() {
className="absolute inset-y-0 left-0 bg-gradient-to-r from-emerald-500 to-emerald-400 rounded-full transition-all duration-1000"
style={{ width: `${100 - parseFloat(savingsPercent)}%` }}
/>
<div className="absolute inset-0 flex items-center justify-center text-sm font-bold text-white drop-shadow">
<div className="absolute inset-0 flex items-center justify-center text-sm font-bold text-helios-main drop-shadow">
{formatBytes(stats.total_output_bytes)} / {formatBytes(stats.total_input_bytes)}
</div>
</div>

View File

@@ -273,7 +273,7 @@ export default function SystemSettings() {
onChange={(e) => setSettings({ ...settings, watch_enabled: e.target.checked })}
className="sr-only peer"
/>
<div className="w-11 h-6 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-helios-solar"></div>
<div className="w-11 h-6 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-helios-ink after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-helios-ink after:border-helios-line/30 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-helios-solar"></div>
</label>
</div>
</div>
@@ -296,7 +296,7 @@ export default function SystemSettings() {
onChange={(e) => setSettings({ ...settings, enable_telemetry: e.target.checked })}
className="sr-only peer"
/>
<div className="w-11 h-6 rounded-full bg-helios-line/20 peer-focus:outline-none after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-gray-300 after:bg-white after:content-[''] after:transition-all peer-checked:after:translate-x-full peer-checked:after:border-white peer-checked:bg-helios-solar rtl:peer-checked:after:-translate-x-full peer-disabled:cursor-not-allowed peer-disabled:opacity-60"></div>
<div className="w-11 h-6 rounded-full bg-helios-line/20 peer-focus:outline-none after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-helios-line/30 after:bg-helios-ink after:content-[''] after:transition-all peer-checked:after:translate-x-full peer-checked:after:border-helios-ink peer-checked:bg-helios-solar rtl:peer-checked:after:-translate-x-full peer-disabled:cursor-not-allowed peer-disabled:opacity-60"></div>
</label>
</div>
</div>

View File

@@ -194,7 +194,7 @@ export default function TranscodeSettings() {
<div className="grid gap-6 md:grid-cols-2">
{/* Codec Selection */}
<div className="md:col-span-2 space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Video size={14} /> Preferred Codec
</label>
<div className="grid grid-cols-1 sm:grid-cols-3 gap-4">
@@ -239,7 +239,7 @@ export default function TranscodeSettings() {
{/* Quality Profile */}
<div className="md:col-span-2 space-y-3 pt-4">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Gauge size={14} /> Quality Profile
</label>
<div className="grid grid-cols-1 sm:grid-cols-3 gap-3">
@@ -262,7 +262,7 @@ export default function TranscodeSettings() {
<div className="md:col-span-2 flex items-center justify-between rounded-lg border border-helios-line/20 bg-helios-surface-soft/60 p-4">
<div>
<p className="text-xs font-bold text-helios-slate">Allow Fallback</p>
<p className="text-xs font-medium text-helios-slate">Allow Fallback</p>
<p className="text-xs text-helios-slate mt-1">If preferred codec is unavailable, use the best available fallback.</p>
</div>
<div className="relative inline-flex items-center cursor-pointer">
@@ -273,12 +273,12 @@ export default function TranscodeSettings() {
onChange={(e) => setSettings({ ...settings, allow_fallback: e.target.checked })}
className="sr-only peer"
/>
<div className="w-10 h-5 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-helios-solar"></div>
<div className="w-10 h-5 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-helios-ink after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-helios-ink after:border-helios-line/30 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-helios-solar"></div>
</div>
</div>
<div className="md:col-span-2 space-y-3 pt-2">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Film size={14} /> Subtitle Handling
</label>
<select
@@ -300,13 +300,13 @@ export default function TranscodeSettings() {
</div>
<div className="md:col-span-2 space-y-4 pt-2">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Film size={14} /> Stream Rules
</label>
<div className="flex items-center justify-between rounded-lg border border-helios-line/20 bg-helios-surface-soft/60 p-4">
<div>
<p className="text-xs font-bold text-helios-slate">Strip commentary tracks</p>
<p className="text-xs font-medium text-helios-slate">Strip commentary tracks</p>
<p className="text-xs text-helios-slate mt-1">Adds built-in title keywords for common commentary tracks.</p>
</div>
<div className="relative inline-flex items-center cursor-pointer">
@@ -343,12 +343,12 @@ export default function TranscodeSettings() {
}}
className="sr-only peer"
/>
<div className="w-10 h-5 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-helios-solar"></div>
<div className="w-10 h-5 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-helios-ink after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-helios-ink after:border-helios-line/30 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-helios-solar"></div>
</div>
</div>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate">
<label className="text-xs font-medium text-helios-slate">
Strip Audio Tracks By Title Keyword
</label>
<input
@@ -368,7 +368,7 @@ export default function TranscodeSettings() {
</div>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate">
<label className="text-xs font-medium text-helios-slate">
Keep Only These Audio Languages
</label>
<CommaSeparatedInput
@@ -387,7 +387,7 @@ export default function TranscodeSettings() {
<div className="flex items-center justify-between rounded-lg border border-helios-line/20 bg-helios-surface-soft/60 p-4">
<div>
<p className="text-xs font-bold text-helios-slate">Keep only default audio track</p>
<p className="text-xs font-medium text-helios-slate">Keep only default audio track</p>
<p className="text-xs text-helios-slate mt-1">Strip all audio tracks except the one marked as default by the source file.</p>
</div>
<div className="relative inline-flex items-center cursor-pointer">
@@ -402,14 +402,14 @@ export default function TranscodeSettings() {
}
className="sr-only peer"
/>
<div className="w-10 h-5 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-helios-solar"></div>
<div className="w-10 h-5 bg-helios-line/20 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-helios-ink after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-helios-ink after:border-helios-line/30 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-helios-solar"></div>
</div>
</div>
</div>
{/* HDR + Tonemapping */}
<div className="md:col-span-2 space-y-3 pt-2">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Film size={14} /> HDR Handling
</label>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
@@ -443,7 +443,7 @@ export default function TranscodeSettings() {
{settings.hdr_mode === "tonemap" && (
<>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Gauge size={14} /> Tonemap Algorithm
</label>
<select
@@ -460,7 +460,7 @@ export default function TranscodeSettings() {
</div>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Scale size={14} /> Tonemap Peak (nits)
</label>
<input
@@ -475,7 +475,7 @@ export default function TranscodeSettings() {
</div>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Zap size={14} /> Tonemap Desaturation
</label>
<input
@@ -494,7 +494,7 @@ export default function TranscodeSettings() {
{/* Numeric Inputs */}
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Cpu size={14} /> Encoding Threads (libsvtav1/x265)
</label>
<input
@@ -508,7 +508,7 @@ export default function TranscodeSettings() {
</div>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Zap size={14} /> Concurrent Jobs
</label>
<input
@@ -523,7 +523,7 @@ export default function TranscodeSettings() {
</div>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Scale size={14} /> Min. Reduction (%)
</label>
<input
@@ -539,7 +539,7 @@ export default function TranscodeSettings() {
</div>
<div className="space-y-3">
<label className="text-xs font-bold text-helios-slate flex items-center gap-2">
<label className="text-xs font-medium text-helios-slate flex items-center gap-2">
<Film size={14} /> Min. File Size (MB)
</label>
<input

View File

@@ -16,20 +16,20 @@ const { error } = Astro.props;
<AlertTriangle className="w-8 h-8 text-helios-red" />
</div>
<h1 class="text-3xl font-bold text-white mb-3">500 Server Error</h1>
<h1 class="text-3xl font-bold text-helios-ink mb-3">500 Server Error</h1>
<p class="text-helios-text mb-8">
Alchemist encountered an internal error. Please check the backend logs.
</p>
{error instanceof Error ? (
<div class="bg-black/50 border border-white/5 rounded-lg p-4 mb-8 w-full overflow-auto text-left">
<div class="bg-black/50 border border-helios-line/10 rounded-lg p-4 mb-8 w-full overflow-auto text-left">
<p class="text-helios-red/90 font-mono text-sm break-words">{error.message}</p>
</div>
) : null}
<a
href="/"
class="px-6 py-2.5 bg-helios-orange hover:bg-helios-orange/90 text-white font-medium rounded-md transition-colors"
class="px-6 py-2.5 bg-helios-orange hover:bg-helios-orange/90 text-helios-main font-medium rounded-md transition-colors"
>
Return to Dashboard
</a>