Skip to content

Add Spine 4.3 object, timeline sequencer, and desktop window controls#8710

Open
mousekkkss wants to merge 9 commits into
4ian:masterfrom
mousekkkss:codex/add-spine43-timeline-sequencer
Open

Add Spine 4.3 object, timeline sequencer, and desktop window controls#8710
mousekkkss wants to merge 9 commits into
4ian:masterfrom
mousekkkss:codex/add-spine43-timeline-sequencer

Conversation

@mousekkkss

@mousekkkss mousekkkss commented Jun 12, 2026

Copy link
Copy Markdown

Summary

This pull request adds a set of desktop/game-production features on top of the current upstream GDevelop codebase:

  • Adds Spine 4.3 object/runtime support for projects that need newer Spine assets.
  • Adds timeline sequencer support for authoring and controlling timeline-based behavior.
  • Adds desktop pet style window controls in the Advanced Window extension.
  • Adds native transparent window/background support for desktop previews and Electron exports.
  • Adds event-driven frameless game window support that applies to both local preview windows and exported desktop Electron games.
  • Adds editor/export plumbing so desktop window options can be detected from project events and propagated to preview, manual desktop export, and online desktop export flows.
  • Adds GDevelop MCP/editor bridge work so external tools can inspect and modify project/editor state more directly.
  • Keeps the MCP/editor bridge opt-in so the editor no longer attempts local WebSocket connections unless a bridge URL or bridge flag is explicitly provided.
  • Fixes a nested button structure in the object creation list to avoid React DOM nesting warnings.

Desktop pet and hidden background changes

The Advanced Window extension now includes desktop-window controls intended for desktop pet style games and overlays:

  • transparent native window background support;
  • transparent runtime/game canvas background support;
  • no-shadow/frameless window behavior;
  • optional always-on-top behavior;
  • taskbar visibility control;
  • mouse click-through behavior;
  • menu bar visibility control;
  • docking helpers for placing the window near screen edges/corners.

These changes make it possible to create desktop pet or overlay games where the normal rectangular game background is hidden and only the visible game objects remain on screen.

Frameless window behavior

The previous preview-only frameless action has been updated into a game-window action:

  • the action is now labeled as a frameless game window action rather than a preview-only action;
  • local desktop previews use the event setting before creating the preview window;
  • exported Electron desktop games use the same event setting before creating the packaged game window;
  • manual desktop export and online desktop export both merge explicit export window settings with event-derived window settings;
  • if any layout or external event sheet enables the frameless game window action, desktop export enables Electron frameless mode automatically.

Localization

The new Advanced Window action strings are wired through the extension translation system and include updated English, Simplified Chinese, and Traditional Chinese compiled extension message entries.

Validation

Validated locally with:

  • Advanced Window extension reload/import into the editor resources.
  • ESLint on the touched export/preview files.
  • Flow focus-check on the touched export/preview files.
  • Full Flow check for the editor app.
  • Electron main/preview script syntax checks.
  • Full Windows Electron app build with the updated editor bundle.
  • Build output language chunk check confirming the new Chinese strings are present and no question-mark mojibake remains.
  • MCP bridge opt-in behavior checked so the editor stays quiet when the MCP server is not running.
  • Object creation list DOM nesting warning fixed by removing the button-inside-button structure.

@mousekkkss mousekkkss force-pushed the codex/add-spine43-timeline-sequencer branch from d26eaca to d4f7679 Compare June 12, 2026 16:53
@mousekkkss mousekkkss marked this pull request as ready for review June 12, 2026 16:54
@mousekkkss mousekkkss requested a review from 4ian as a code owner June 12, 2026 16:54
@mousekkkss mousekkkss force-pushed the codex/add-spine43-timeline-sequencer branch 5 times, most recently from b6f3e40 to 521beed Compare June 12, 2026 18:38

mousekkkss commented Jun 12, 2026

Copy link
Copy Markdown
Author

Note for reviewers about the Semaphore fast tests:

The previous red ci/semaphoreci/pr: Fast tests (not building GDevelop.js - can have false negatives) run was traced to the downloaded libGD.js artifact used by CI, not to Flow/test failures in the Timeline/Spine43 implementation itself.

What happened in the failing run:

../public/libGD.js:22:1 - error TS1109: Expression expected.
Found 11 errors in the same file, starting at: ../public/libGD.js:22

The newIDE tests job failed for the same reason while loading newIDE/app/node_modules/libGD.js-for-tests-only/index.js, also at line 22.

I pushed follow-up commit a3a198b to harden newIDE/app/scripts/import-libGD.js for PR CI:

  • resolve detached parent commits back to their remote branch when available;
  • fall back to master for merge-parent refs used by PR CI;
  • run node --check on downloaded libGD.js before copying it into the test dependency, so a bad downloaded artifact is rejected and the script can try the next candidate;
  • document the generated libGD.js import boundary used by the documentation scripts.

Local verification on the PR branch passes:

npm run check-script-types
npm run check-format
git diff --check
newIDE tests: 89 test suites passed, 664 tests passed, 1 skipped

The new Semaphore workflow for this commit passed: https://gdevelop.semaphoreci.com/workflows/858b7b1e-9e7a-437f-985c-4b6d7741c79f?pipeline_id=ffd88da3-d9ea-404c-a4bf-b4abb55dcc40

Travis is still queued at the time of writing.

Adds a Spine43Object extension with the Spine 4.3 runtime adapter, runtime object implementation, bundled pixi-spine browser runtime, and editor-facing metadata for animation, skin, slot, bone, transform, track, event, debug, and resource controls.

Adds a TimelineSequencer extension with runtime timeline registration, playback, seeking, pause/resume, looping, speed control, object target binding, marker/status conditions, and time/duration/progress/speed expressions. Includes runtime helpers for easing, interpolation, path evaluation, timeline management, and timeline playback tests.

Integrates both features into the GDevelop editor by adding Timeline project storage and a Timeline editor tab, exposing timeline items in the Project Manager, adding timeline-specific parameter fields, registering the new runtime files, and wiring editor containers, tab restoration, toolbars, scene/editor displays, object editors, and Chinese locale text.

Adds explicit Flow type boundaries for the new Spine 4.3 name fields, Timeline name fields, and Spine editor preview/inspector helpers so the official Linux CI type checks can validate the added editor code reliably.

Hardens newIDE libGD.js import handling for PR CI by resolving detached parent commits back to their remote branch when available, falling back to master for merge parents, rejecting syntactically invalid downloaded libGD.js artifacts before they are copied into the test dependency, and documenting the generated libGD.js import boundary used by the documentation scripts.
@mousekkkss mousekkkss force-pushed the codex/add-spine43-timeline-sequencer branch from 521beed to a3a198b Compare June 12, 2026 18:56
@mousekkkss mousekkkss changed the title [codex] Add Spine43 object and timeline sequencer support Add Spine43 object and timeline sequencer support Jun 12, 2026
@mousekkkss mousekkkss changed the title Add Spine43 object and timeline sequencer support Add Spine 4.3 object, timeline sequencer, and editor MCP bridge Jun 13, 2026
@mousekkkss mousekkkss changed the title Add Spine 4.3 object, timeline sequencer, and editor MCP bridge Add Spine 4.3 object, timeline sequencer, and desktop window controls Jun 13, 2026
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