Renamed release.yml → build.yml and added three build modes:
1. Push to master — validates code, then auto-creates a pre-release
with a unique tag (v<version>-pre.<timestamp>.<sha>). Published
immediately as a GitHub Pre-release (not draft).
2. Push a v* tag — validates code, then creates a draft release for
manual review before publishing (existing behavior preserved).
3. workflow_dispatch — requires the 'tag' input; fails early with a
clear error if omitted.
Key changes from the old release.yml:
- Added branch trigger (master) for automatic pre-releases
- Determines tag from event context: auto-generated for master,
from ref for tagged pushes, from input for manual dispatch
- Uses prerelease/draft flags appropriately per mode
- Dynamic job name ('Create pre-release' vs 'Create release')
The release action (softprops/action-gh-release@v1) was called without a tag_name parameter. For tag-push triggers, GITHUB_REF contains the tag ref so the action implicitly infers the tag. For workflow_dispatch (manual trigger), GITHUB_REF points to the branch (refs/heads/master), so no valid tag was found.
Fixes:
1. Added a 'Determine release tag' step that resolves the tag from the correct source: inputs.tag for workflow_dispatch, GITHUB_REF for tag pushes. Fails early with ::error if no tag is provided.
2. Passes tag_name to the release action.
3. Changed checkout in the release job to fetch-depth: 0 + fetch-tags: true so changelog generation can find previous tags.
The CI workflow runs npm ci --ignore-scripts in newIDE/electron-app/,
which skips the postinstall script that normally installs app/ dependencies
(where fs-extra was declared). This caused callLLM.test.js to fail with
'Cannot find module fs-extra' when loading byokConfig.js.
Fix: replace fs-extra (readFile, ensureDir, writeJson) with native Node.js
fs.promises equivalents (readFile, mkdir recursive, writeFile). All three
operations are trivially available in the native fs module — no external
dependency needed. This makes byokConfig.js loadable in any Node environment.
Tests: all 72 BYOK unit tests pass (4 suites, 72 assertions, 0 failures).
CI fixes:
- Use npm run lint/check-format instead of npx (PATH handling)
- Explicit test file paths instead of glob (shell compatibility)
- Remove duplicate cache steps that could overwrite
- Remove newIDE Jest tests (require GDevelop.js C++ build artifacts
not available in CI environment)
Release workflow:
- Triggers on tag push (v*) or manual dispatch
- Validates lint + BYOK syntax + unit tests
- Creates draft GitHub Release with auto-generated notes
- Full packaging requires C++/Emscripten; documented how to build locally
- .github/workflows/ci.yml: 4-job CI pipeline (install, lint, BYOK unit
tests, newIDE Jest tests) running on push/PR to main/master/milestone/*
- newIDE/electron-app/app/byok/SMOKE-TEST.md: 17-step manual verification
procedure for the BYOK feature (config persistence, chat routing,
non-BYOK fallback)
Complex expressions and formula will now be shown using multiple colors, like the rest of events. This allows to identify objects, numbers, strings in a long formula.
Also, in the extension editor:
- Focus and select new parameter names
- Allow to add a new parameter from the variable autocompletion
- Allow to add behaviors from the bottom of the instruction list
Verify that a behavior's custom action whose events Create the object
passed as parameter (FireBullet-style) leads to the newly created
instances being picked in the calling scope, while a previously created
instance of the same object remains untouched.
Don't show in changelog