Repository navigation
feat: replace Fiddle with the 2027 rewrite - #2032
felixrieseberg wants to merge 3 commits into
Conversation
Swaps the whole tree for the contents of the fiddle-2027 branch at 0b27045. The previous app lives on the legacy branch.
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
Before:
mainholds the current Electron Fiddle app.After:
mainholds the rewrite of Fiddle, with the same contents as thefiddle-2027branch. The current app stays available on thelegacybranch.This PR replaces every file on
main, so a line-by-line review of the diff is not practical. The sections below are a tour of the new app: what changes for users, the architecture decisions, where the code is, and how the new app compares with the current one. No features are removed.How this PR is built
fiddle-2027andmainshare no history, so GitHub cannot open a PR between them. This branch sits on top ofmaininstead:fiddle-2027at 0b27045. The two trees are identical.fiddle-2027branch so that they namemain: the Windows installer icon URL inpackages/app/forge.config.tsand one line inCLAUDE.md.check-download-linksworkflow, which checks the download links on electronjs.org/fiddle and does not depend on the app code.Before the merge:
mainaslegacy:gh api repos/electron/fiddle/git/refs -f ref=refs/heads/legacy -f sha=$(gh api repos/electron/fiddle/git/ref/heads/main --jq .object.sha)maindoes not require the old job names "Test" and "Build". The "GitHub Actions Completed" job still exists.mainuntil this one lands. A new commit onmainmakes this PR conflict.Workflows:
ci.yml,release.yml,semantic.ymlandadd-to-project.ymlare replaced by the rewrite's versions.build.ymlandtest.ymlare removed because the newci.ymldoes their work itself.coveralls.ymlis removed and coverage is no longer uploaded to Coveralls.refresh-data.ymlis new: it refreshes the bundled Electron release list and contributor list each week.What is new for users
settings.json. You can open, import and export it. A damaged file does not stop the app.Architecture decisions
fiddle.eipclists the functions that the renderer can call. EIPC generates typed code from it. That code checks every argument and accepts calls only from the app's own page. The current app has 87 channels with no types.net.fetch, so the system proxy and the system certificates apply. The content security policy of the page allows connections only to the app itself.shared/commands.ts. The menu, the command palette and the keyboard shortcuts are built from it.fiddle/runs in Node. Its tests use the real code and do not need mocks.i18n/. A lint rule rejects text that is written in a component.Where the code is
Paths are in
packages/app/src/unless they start withpackages/.shared/interfaces.ts,ipc-events.ts,constants.tsipc/fiddle.eipcipc-events.ts,preload.tsfiddle/package.json, gists, templates, bisectrenderer/utils/,src/utils/,templates.tsmain/index.ts,main/services.tsmain/main.tsmain/state-hub.tsrenderer/state.tsmain/documents/file-manager.ts,remote-loader.ts,main/files.tsmain/versions/renderer/versions.ts,main/versions.tsmain/run/renderer/runner.ts,main/fiddle-core.tsmain/github/commands-action-button.tsx,dialog-token.tsxmain/modules/main/npm.tsmain/bisect/autobisect.ts,commands-bisect.tsxmain/packaging/renderer/runner.tsmain/settings/,main/themes/settings.json. Load the editor themesrenderer/state.ts,main/themes.tsmain/migration/main/menu.tsmain/menu.tsmain/security.tsmain/platform/,main/updates/,main/crash/squirrel.ts,update.ts,sentry.ts,first-run.tsmain/test-driver/renderer/state.tsrenderer/state.ts,app.tsxrenderer/shell/header.tsx,commands.tsx,editors.tsxrenderer/editor/editor.tsx,editor-mosaic.tsrenderer/features/run/,versions/,gists/,settings/renderer/components/ui/src/less/i18n/packages/core/@electron/fiddle-coreand is meant to be temporary, untilfiddle-corehas what the app needs (for example abort signals)packages/app/e2e/How the new app compares
Current app at d4f03ba, rewrite at 0b27045. Mac numbers are from production builds on an M4 Max.
anyin production codeThe 7 most serious bugs that the rewrite fixes
<appData>/<name>after every run, and the name is the opened folder's. Now each run gets its own--user-data-dirinside the run folder.Security
ipcRendererapp://mainNODE_OPTIONSblocked