fix: harden Docker image and async job responses

Harden Docker runtime packaging, preserve async job response semantics, fix Redis subscriber startup connections, clear lint warnings, and harden enterprise S3 object body handling.
This commit is contained in:
SnapOtter
2026-07-01 12:32:33 +08:00
committed by GitHub
parent 6683ee8c30
commit f3342a1e57
89 changed files with 635 additions and 159 deletions
+16 -6
View File
@@ -363,7 +363,14 @@ export function AutomatePage() {
}
};
input.click();
}, [setSavedPipelines]);
}, [
setSavedPipelines,
t.automate.invalidPipelineFile,
t.automate.noSteps,
t.automate.newerVersion,
t.automate.missingName,
t.automate.couldNotRead,
]);
useEffect(() => {
if (!importError) return;
@@ -418,13 +425,16 @@ export function AutomatePage() {
*/
function renderPipelinePreview(mode: "result" | "original") {
const kind = currentEntry?.previewKind ?? "image";
const sourceUrl = originalBlobUrl;
if (!sourceUrl) return null;
if (mode === "result") {
if (!processedUrl) return null;
if (kind === "image") {
return (
<BeforeAfterSlider
beforeSrc={originalBlobUrl!}
afterSrc={processedUrl as string}
beforeSrc={sourceUrl}
afterSrc={processedUrl}
beforeSize={originalSize ?? undefined}
afterSize={processedSize ?? undefined}
/>
@@ -440,7 +450,7 @@ export function AutomatePage() {
if (kind === "audio") {
return (
<Suspense fallback={<div className="text-sm text-muted-foreground">Loading...</div>}>
<WaveformPlayer src={processedUrl as string} />
<WaveformPlayer src={processedUrl} />
</Suspense>
);
}
@@ -467,7 +477,7 @@ export function AutomatePage() {
if (kind === "image") {
return (
<ImageViewer
src={originalBlobUrl!}
src={sourceUrl}
filename={selectedFileName ?? files[0].name}
fileSize={selectedFileSize ?? files[0].size}
/>
@@ -483,7 +493,7 @@ export function AutomatePage() {
if (kind === "audio") {
return (
<Suspense fallback={<div className="text-sm text-muted-foreground">Loading...</div>}>
<WaveformPlayer src={originalBlobUrl!} />
<WaveformPlayer src={sourceUrl} />
</Suspense>
);
}
+1 -1
View File
@@ -168,7 +168,7 @@ export function LoginPage() {
body: JSON.stringify({ username, password }),
});
if (!res.ok) {
const data = await res.json().catch(() => ({}));
const _data = await res.json().catch(() => ({}));
setError(t.auth.invalidCredentials);
return;
}
+1 -1
View File
@@ -173,7 +173,7 @@ function FileSelectionInfo({
const entry = fileEntries[i];
return (
<button
key={`${file.name}-${i}`}
key={entry?.blobUrl ?? `${file.name}-${file.size}-${file.lastModified}`}
type="button"
onClick={() => onSelect(i)}
className={`w-full flex items-center gap-1.5 text-xs rounded px-2 py-1.5 text-start transition-colors ${isSelected ? "bg-primary/10 text-foreground" : "text-muted-foreground hover:bg-muted"}`}