Gomi IDE is intended to ship as a standalone desktop IDE built from a Code - OSS fork. The React/Vite demo in this repository is only the Gomi Office workbench prototype; it is not the final user-facing distribution format.
The Windows release path is:
Gomi repository
-> Generate Gomi desktop branding assets
-> Build Gomi Office webview bundle
-> Code - OSS fork checkout
-> Apply Gomi product metadata and Gomi workbench module
-> Run Code - OSS Windows gulp packaging task
-> Upload ZIP/EXE artifacts to GitHub Releases
The repository includes .github/workflows/build-release.yml.
Pushes to master run the verification job and upload a prototype artifact. Release tags named v* run the Windows Code - OSS packaging job and publish the produced artifacts to a GitHub prerelease. Manual release publishing also requires the Windows desktop packaging step to be enabled, so GitHub Releases do not present the prototype bundle as the final IDE.
It has three jobs:
verify-prototype: installs dependencies, generates branded desktop assets, runs typecheck/tests/release-readiness checks, builds the standalone preview and Code - OSS webview bundle, then uploads a versionedgomi-office-webview-prototype-<commit>.zipwith a SHA-256 checksum.code-oss-windows: checks out a Code - OSS fork, applies the Gomi integration manifest, packages Gomi for Windows, validates the patchedproduct.jsonstill identifies the build as Gomi IDE, collects.exe,.msi, and.zipoutputs when present, and writes anARTIFACTS.mdmanifest. It runs automatically forv*tags and can be enabled manually withbuild_code_oss_windows.release: downloads all artifacts, generates release notes, and publishes artifacts to a GitHub Release only after the Windows desktop packaging job succeeds.
For tagged releases, the Code - OSS source defaults to microsoft/vscode at main. In production, configure repository variables before tagging:
GOMI_CODE_OSS_REPOSITORY: the real Gomi Code - OSS fork, for examplemergeos-bounties/gomi-code-oss.GOMI_CODE_OSS_REF: the branch, tag, or SHA to package.GOMI_WINDOWS_PLATFORM:win32-x64,win32-arm64, orwin32-ia32.GOMI_BUILD_SETUP_EXE: set tofalseto skip the Windows setup installer task. Tag builds attempt the setup.exeby default because the product release should be a desktop installer when the fork supports it.
To create a release from a tag:
git tag v0.1.0-alpha.1
git push origin v0.1.0-alpha.1For tag-based desktop releases, configure the repository variables first so the workflow packages the Gomi Code - OSS fork instead of the upstream development default:
GOMI_CODE_OSS_REPOSITORY=mergeos-bounties/gomi-code-oss
GOMI_CODE_OSS_REF=main
GOMI_WINDOWS_PLATFORM=win32-x64
GOMI_BUILD_SETUP_EXE=true
If the fork does not yet expose a compatible Windows setup task, set GOMI_BUILD_SETUP_EXE=false. The workflow will still upload the packaged Windows folder as a ZIP when the Code - OSS packaging task succeeds.
To run the full Windows desktop packaging workflow:
- Open GitHub Actions.
- Run
Build and Release Gomi IDE. - Set
build_code_oss_windowstotrue. - Set
code_oss_repositoryto the Gomi Code - OSS fork. - Set
code_oss_refto the branch/tag/SHA to package. - Choose
win32-x64,win32-arm64, orwin32-ia32. - Enable
build_setup_exewhen the fork has a compatible Windows setup gulp task.
The Windows packaging job runs scripts/build-gomi-code-oss-windows.ps1. That script validates the Code - OSS checkout, generates Gomi desktop branding assets, builds the Gomi Office React/Phaser webview bundle, applies build/gomi-code-oss.integration.json, merges Gomi product metadata over the fork's existing product.json, copies Gomi branding/module files into the fork, overlays the native Gomi workbench registration template, copies the generated webview assets into the workbench module, appends the Gomi workbench import when needed, and then runs the Code - OSS gulp package task.
After packaging, scripts/collect-gomi-windows-artifacts.ps1 validates the final Code - OSS product.json before any artifact is uploaded. It refuses to collect release files unless the product identity is Gomi IDE, the app id is gomi-ide, the data folder is .gomi-ide, and the extension gallery points to Open VSX. This prevents a release run from accidentally publishing upstream Code - OSS artifacts under the Gomi release.
The workflow intentionally keeps the heavy Code - OSS packaging job separate from the normal master verification path. Normal pushes verify the Gomi module quickly. Tags or manual release runs produce desktop artifacts.
Bootstrap or update a Code - OSS checkout with the Gomi overlay:
powershell -ExecutionPolicy Bypass -File .\scripts\bootstrap-gomi-code-oss-fork.ps1 `
-CodeOssRoot D:\path\to\code-oss-fork `
-Repository https://github.com/your-org/gomi-code-oss.git `
-Ref mainThe bootstrap script clones the checkout when it is missing, checks out the requested ref when the worktree is clean, generates Gomi branding assets, builds the Gomi Office webview bundle, and runs the integration manifest. Use -ValidateOnly against an existing checkout to inspect the integration without copying files, or -DryRun to preview the command sequence.
Validate the integration without changing the Code - OSS checkout:
powershell -ExecutionPolicy Bypass -File .\scripts\apply-gomi-code-oss-integration.ps1 `
-CodeOssRoot D:\path\to\code-oss-fork `
-ValidateOnlyRun from this repository:
powershell -ExecutionPolicy Bypass -File .\scripts\build-gomi-code-oss-windows.ps1 `
-CodeOssRoot D:\path\to\code-oss-fork `
-Platform win32-x64 `
-Minified `
-BuildSetupThe local packaging script runs the Gomi brand asset generator and npm run build:webview before applying the manifest. The generated webview assets are written to build/gomi-office-webview locally and copied into src/vs/workbench/contrib/gomi/browser/media/office inside the Code - OSS checkout. The generated desktop branding assets are written under resources/gomi-branding and copied over Code - OSS packaging resources such as resources/win32/code.ico, resources/win32/code_70x70.png, resources/win32/code_150x150.png, resources/win32/inno-*.bmp, resources/linux/code.png, and resources/darwin/code.icns.
For a faster packaged folder build without installer:
powershell -ExecutionPolicy Bypass -File .\scripts\build-gomi-code-oss-windows.ps1 `
-CodeOssRoot D:\path\to\code-oss-fork `
-Platform win32-x64 `
-MinifiedPreview the full packaging command sequence without copying files or running gulp:
powershell -ExecutionPolicy Bypass -File .\scripts\build-gomi-code-oss-windows.ps1 `
-CodeOssRoot D:\path\to\code-oss-fork `
-Platform win32-x64 `
-Minified `
-BuildSetup `
-DryRunFor the lower-level manifest apply step, write a dry-run report outside the Code - OSS checkout so the target tree remains unchanged:
powershell -ExecutionPolicy Bypass -File .\scripts\apply-gomi-code-oss-integration.ps1 `
-CodeOssRoot D:\path\to\code-oss-fork `
-DryRun `
-ReportPath .\artifacts\gomi-code-oss-dry-run-report.jsonThe dry-run report lists the planned manifest actions and matching rollback steps, such as restoring product.json, removing copied Gomi module paths, or removing the appended workbench import. In dry-run mode the report path is rejected if it is inside the Code - OSS checkout.
End users should not run Gomi IDE with npm run dev.
npm is used only for:
- Developing the Gomi Office module.
- Running tests.
- Building the prototype and Code - OSS webview bundles.
- Invoking Code - OSS gulp packaging tasks during automation.
The product release artifact should be a Windows desktop package from the Code - OSS fork, usually a packaged folder/ZIP and, when the setup task is available, an Inno Setup .exe installer.
VS Code's Windows setup path uses Inno Setup. MSI is not the primary upstream packaging format, so Gomi should target a setup .exe first and add MSI only if an enterprise installer pipeline is introduced later.
This repository is still a Gomi product foundation and module scaffold. A full release requires validating the native workbench contribution and patch diff preview inside a real Code - OSS fork, deepening terminal scrollback and workbench log/output-channel readers beyond the current adapter hooks, and replacing all final branding assets.