

























@@ -407,6 +407,29 @@ jobs:
407407 capture_desktop_lane baseline
408408 capture_desktop_lane candidate
409409410+ make_desktop_preview() {
411+ local lane="$1"
412+ local input="$root/$lane/discord-status-reactions-tool-only-desktop.mp4"
413+ local output="$root/$lane/discord-status-reactions-tool-only-desktop-preview.gif"
414+ local palette="$root/$lane/discord-status-reactions-tool-only-desktop-preview-palette.png"
415+ ffmpeg -y -i "$input" -vf "fps=4,scale=640:-1:flags=lanczos,palettegen=stats_mode=diff" -frames:v 1 -update 1 "$palette"
416+ ffmpeg -y -i "$input" -i "$palette" -lavfi "fps=4,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse=dither=bayer:bayer_scale=3:diff_mode=rectangle" -loop 0 "$output"
417+ rm -f "$palette"
418+ }
419+420+ if ! command -v ffmpeg >/dev/null 2>&1; then
421+ sudo apt-get update && sudo apt-get install -y ffmpeg || true
422+ fi
423+ if command -v ffmpeg >/dev/null 2>&1; then
424+ if ! make_desktop_preview baseline || ! make_desktop_preview candidate; then
425+ rm -f "$root/baseline/discord-status-reactions-tool-only-desktop-preview.gif"
426+ rm -f "$root/candidate/discord-status-reactions-tool-only-desktop-preview.gif"
427+ echo "::warning::Could not generate animated desktop previews; continuing with screenshots and MP4 links."
428+ fi
429+ else
430+ echo "::warning::ffmpeg is unavailable; skipping animated desktop previews."
431+ fi
432+410433 baseline_status="$(jq -r '.scenarios[0].status' "$root/baseline/discord-qa-summary.json")"
411434 candidate_status="$(jq -r '.scenarios[0].status' "$root/candidate/discord-qa-summary.json")"
412435@@ -432,6 +455,12 @@ jobs:
432455 echo "- Candidate screenshot: \`candidate/discord-status-reactions-tool-only-timeline.png\`"
433456 echo "- Baseline desktop screenshot: \`baseline/discord-status-reactions-tool-only-desktop.png\`"
434457 echo "- Candidate desktop screenshot: \`candidate/discord-status-reactions-tool-only-desktop.png\`"
458+ if [[ -f "$root/baseline/discord-status-reactions-tool-only-desktop-preview.gif" ]]; then
459+ echo "- Baseline desktop preview: \`baseline/discord-status-reactions-tool-only-desktop-preview.gif\`"
460+ fi
461+ if [[ -f "$root/candidate/discord-status-reactions-tool-only-desktop-preview.gif" ]]; then
462+ echo "- Candidate desktop preview: \`candidate/discord-status-reactions-tool-only-desktop-preview.gif\`"
463+ fi
435464 echo "- Baseline desktop video: \`baseline/discord-status-reactions-tool-only-desktop.mp4\`"
436465 echo "- Candidate desktop video: \`candidate/discord-status-reactions-tool-only-desktop.mp4\`"
437466 } > "$root/mantis-report.md"
@@ -524,6 +553,12 @@ jobs:
524553 cp "$root/candidate/discord-status-reactions-tool-only-timeline.png" "$artifacts_worktree/$artifact_root/candidate.png"
525554 cp "$root/baseline/discord-status-reactions-tool-only-desktop.png" "$artifacts_worktree/$artifact_root/baseline-desktop.png"
526555 cp "$root/candidate/discord-status-reactions-tool-only-desktop.png" "$artifacts_worktree/$artifact_root/candidate-desktop.png"
556+ has_desktop_previews="false"
557+ if [[ -f "$root/baseline/discord-status-reactions-tool-only-desktop-preview.gif" && -f "$root/candidate/discord-status-reactions-tool-only-desktop-preview.gif" ]]; then
558+ cp "$root/baseline/discord-status-reactions-tool-only-desktop-preview.gif" "$artifacts_worktree/$artifact_root/baseline-desktop-preview.gif"
559+ cp "$root/candidate/discord-status-reactions-tool-only-desktop-preview.gif" "$artifacts_worktree/$artifact_root/candidate-desktop-preview.gif"
560+ has_desktop_previews="true"
561+ fi
527562 cp "$root/baseline/discord-status-reactions-tool-only-desktop.mp4" "$artifacts_worktree/$artifact_root/baseline-desktop.mp4"
528563 cp "$root/candidate/discord-status-reactions-tool-only-desktop.mp4" "$artifacts_worktree/$artifact_root/candidate-desktop.mp4"
529564 cp "$root/comparison.json" "$artifacts_worktree/$artifact_root/comparison.json"
@@ -542,6 +577,16 @@ jobs:
542577 baseline_status="$(jq -r '.baseline.status' "$root/comparison.json")"
543578 candidate_status="$(jq -r '.candidate.status' "$root/comparison.json")"
544579 pass="$(jq -r '.pass' "$root/comparison.json")"
580+ preview_section=""
581+ if [[ "$has_desktop_previews" == "true" ]]; then
582+ preview_section="$(cat <<EOF
583+584+ | Baseline animated preview | Candidate animated preview |
585+ | --- | --- |
586+ | <img src="${raw_base}/baseline-desktop-preview.gif" width="420" alt="Animated baseline desktop preview"> | <img src="${raw_base}/candidate-desktop-preview.gif" width="420" alt="Animated candidate desktop preview"> |
587+ EOF
588+ )"
589+ fi
545590 comment_file="$(mktemp)"
546591 cat > "$comment_file" <<EOF
547592 <!-- mantis-discord-status-reactions -->
@@ -564,8 +609,9 @@ jobs:
564609 | Baseline desktop/VNC browser | Candidate desktop/VNC browser |
565610 | --- | --- |
566611 | <img src="${raw_base}/baseline-desktop.png" width="420" alt="Baseline Mantis desktop browser screenshot"> | <img src="${raw_base}/candidate-desktop.png" width="420" alt="Candidate Mantis desktop browser screenshot"> |
612+ ${preview_section}
567613568- Videos:
614+ Full videos:
569615 - [Baseline desktop MP4](${raw_base}/baseline-desktop.mp4)
570616 - [Candidate desktop MP4](${raw_base}/candidate-desktop.mp4)
571617此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。