Skip to content

Fix seamless loop / Spotify Canvas export (xfade frame rate) and four small UI issues - #861

Merged
CaYatur merged 1 commit into
mainfrom
fix/export-loop-fps-and-ui-polish
Oct 27, 2026
Merged

CaYatur merged 1 commit into
mainfrom
fix/export-loop-fps-and-ui-polish

Conversation

@CaYatur

@CaYatur CaYatur commented Oct 27, 2026

Copy link
Copy Markdown
Owner

Fixes from the latest Linux retest (v3.1.6, 614dbab).

Fixed

  • Seamless loop and Spotify Canvas export failed with ffmpeg exit code 234 ... xfade ... current rate of 1/0 is invalid. After trim and setpts the two branches had no frame rate and xfade needs one. loopPlan now adds fps=<fps> after each setpts=PTS-STARTPTS. Checked with a real ffmpeg 7.1 run through buildArgs (320x180, 2 s, 30 fps): before the change exit 234; after it exit 0, 60 frames, yuv420p, 30 fps, 2.000 s.
  • Floor Reflection / Reflection Length did not appear until the panel re-rendered. The Placement segment now has rebuild: true, and Reflection Length no longer waits for the reflection slider to be above 0 (sliders do not rebuild the panel).
  • Blend "Screen" showed "Display" in the English UI. It now has its own i18n key (the Turkish text is unchanged); the display section keeps "Display".
  • Audio bridge window stayed on "Starting" when no pairing secret was set (bridge-only mode reported no problem because the saved config has send: false). It now shows "Secret missing".
  • Studio list: a cut-off preset name shows in full as a tooltip.

Layout import (#4), by design, no code change: a layout file with a text element adds a second visualizer-type layer, because text is a sub-type of the visualizer layer. A fresh scene ends up with [background, visualizer(bars), visualizer(text)]; importing the same file again updates those layers (updated 2, added 0). Covered by a test.

Skipped: sv_list_modes labels stay Turkish. The mode catalog labels live in the renderer sources and the English dictionary is not available in the main process, so it is not a cheap change; the ids are language independent.

Tests: npm test 3582 tests, 0 fail (3 skipped on this machine, environment dependent). New tests cover the loop graph, the Screen label, the Placement rebuild, the layout import and the bridge status. README.md, README.tr.md and ROADMAP.md counts set to 3582; CHANGELOG entry added.

…dge secret badge, panel rebuild

- Export: add fps=<fps> after each setpts in the loop filter graph. xfade needs a
  constant frame rate and ffmpeg exited with code 234 for the Seamless loop and
  Spotify Canvas profiles. Verified with a real ffmpeg run.
- Visualizer panel: Placement rebuilds the panel so Floor Reflection shows at once;
  Reflection Length no longer depends on the reflection value.
- i18n: the "Screen" blend option has its own label key, so "Display" stays
  correct for the display section.
- Audio bridge window: report the missing pairing secret in bridge-only mode
  instead of "Starting" forever.
- Studio list: full preset name as a tooltip when the name is cut off.
- Tests for each; layout import behaviour with a text element is documented by a test.
- Docs test count 3582; CHANGELOG entry.
@cayadraft

cayadraft Bot commented Oct 27, 2026

Copy link
Copy Markdown

@CaYatur

CaYaDraft — pull request

Summary
This pull request fixes a seamless loop and Spotify Canvas export failure caused by missing frame rate information after trim and setpts operations, resolving an ffmpeg exit code 234 error. It also addresses four UI issues: the Floor Reflection panel now rebuilds immediately upon slider changes, the Blend "Screen" option correctly displays as "Screen" instead of "Display", the Audio bridge window shows "Secret missing" when no pairing secret is set, and cut-off preset names display full tooltips on hover.

Files

  • CHANGELOG.md (updated test count)
  • README.md, README.tr.md, ROADMAP.md (minor text updates)
  • src/admin/admin.js (Floor Reflection rebuild fix)
  • src/admin/media-panel.js (Blend "Screen" label fix)
  • src/admin/scene-panels.js (Blend "Screen" label fix)
  • src/admin/studio.js (Preset name tooltip fix)
  • src/main/main.js (Bridge status message fix)
  • src/shared/export-formats.js (Added fps metadata for xfade)
  • src/shared/i18n.js (Added Turkish translation for Blend "Screen")
  • tests/export-loop.test.js (New test for frame rate handling)

Note
Nothing blocking is visible from the text.


Stopping here. I will not merge, push, or change this pull request until you ask.

/caya explain describes the diff. /caya plan previews the next edit. /caya revise adds a commit.

@CaYatur
CaYatur merged commit 55ffdac into main Oct 27, 2026
5 checks passed
@CaYatur
CaYatur deleted the fix/export-loop-fps-and-ui-polish branch October 27, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant