0.12.0-1 Plugins und diverses

This commit is contained in:
2026-03-19 18:57:05 +00:00
parent 0a9cf6969f
commit 24955a956d
33 changed files with 3978 additions and 479 deletions
+52 -14
View File
@@ -227,6 +227,7 @@ export default function CdRipConfigPanel({
onStart,
onCancel,
onRetry,
onRestartReview,
onOpenMetadata,
busy
}) {
@@ -523,7 +524,8 @@ export default function CdRipConfigPanel({
});
};
const handleStart = () => {
const handleStart = (options = {}) => {
const forceSkipRip = Boolean(options?.forceSkipRip);
const albumTitle = normalizeTrackText(metaFields?.title)
|| normalizeTrackText(selectedMeta?.title)
|| normalizeTrackText(context?.detectedTitle)
@@ -591,6 +593,7 @@ export default function CdRipConfigPanel({
selectedPostEncodeScriptIds,
selectedPreEncodeChainIds,
selectedPostEncodeChainIds,
skipRip: forceSkipRip || context.skipRip === true ? true : undefined,
metadata: {
title: albumTitle,
artist: albumArtist,
@@ -727,6 +730,19 @@ export default function CdRipConfigPanel({
const completedEncodeCount = selectedTrackRows.filter((track) => track.encodeStatus === 'done').length;
const liveCurrentTrackPosition = normalizePosition(cdLive?.trackPosition);
const lastState = String(context?.lastState || '').trim().toUpperCase();
const failureStage = String(context?.stage || '').trim().toUpperCase();
const normalizedLivePhase = String(cdLive?.phase || '').trim().toLowerCase();
const normalizedStatusText = String(statusText || '').trim().toUpperCase();
const isEncodingFailure = Boolean(
isTerminalFailure
&& (
lastState === 'CD_ENCODING'
|| failureStage === 'CD_ENCODING'
|| context?.skipRip === true
|| normalizedLivePhase === 'encode'
|| normalizedStatusText.includes('CD_ENCODING')
)
);
const preScriptNamesFromConfig = (Array.isArray(cdRipConfig?.preEncodeScripts) ? cdRipConfig.preEncodeScripts : [])
.map((item) => String(item?.name || '').trim())
.filter(Boolean);
@@ -797,22 +813,44 @@ export default function CdRipConfigPanel({
) : null}
{isTerminalFailure ? (
<div className="actions-row">
{jobId ? (
{isEncodingFailure ? (
<Button
label="Retry Rippen"
icon="pi pi-refresh"
severity="warning"
onClick={() => onRetry && onRetry()}
label="Encode starten"
icon="pi pi-play"
severity="success"
onClick={() => handleStart({ forceSkipRip: true })}
loading={busy}
/>
) : (
<>
{jobId ? (
<Button
label="Retry Rippen"
icon="pi pi-refresh"
severity="warning"
onClick={() => onRetry && onRetry()}
loading={busy}
/>
) : null}
<Button
label="Metadaten ändern"
icon="pi pi-pencil"
severity="secondary"
onClick={() => onOpenMetadata && onOpenMetadata()}
loading={busy}
/>
</>
)}
{isEncodingFailure ? (
<Button
label="Review starten"
icon="pi pi-search"
severity="info"
outlined
onClick={() => onRestartReview && onRestartReview()}
loading={busy}
/>
) : null}
<Button
label="Metadaten ändern"
icon="pi pi-pencil"
severity="secondary"
onClick={() => onOpenMetadata && onOpenMetadata()}
loading={busy}
/>
</div>
) : null}
@@ -1267,7 +1305,7 @@ export default function CdRipConfigPanel({
disabled={busy}
/>
<Button
label="Rip starten"
label={context.skipRip === true ? 'Encode starten' : 'Rip starten'}
icon="pi pi-play"
onClick={handleStart}
loading={busy}