Desktop application for managing OMEX/COMBINE workspaces with local git operations and GitHub integration.
- Create and open local OMEX workspaces
- Import files and folders (file picker or drag and drop)
- Auto-detect file changes and suggest commit messages
- Edit manifest entries (format, master file, exclusion)
- Commit changes locally via integrated git workflow
- Build ZIP archives and generate OpenCOR launch URLs
- Authenticate with GitHub and push to selected repositories
- Clone and open GitHub repositories into local workspaces
- Show diagnostics from Help -> About (including copy-to-clipboard)
- Electron main process + preload IPC bridge
- Vue 3 renderer with TypeScript
- PrimeVue component library
- isomorphic-git for git operations
- Octokit for GitHub API calls
- xmlbuilder2 + archiver/jszip services for manifest and archive tasks
- Node.js 24 (recommended)
- npm 11 (recommended)
npm cinpm run devThis starts:
- Vite dev server on port 5173
- Electron connected to that dev server
npm run build-tsnpm run distnpm run dist:freshnpm run dist:dir
npm run dist:quickNotes:
- Icon preparation runs only on Windows via prepare-icons:if-win.
- Linux and macOS builds skip Windows ICO generation.
Use File menu:
- File -> New Workspace
- File -> Open Workspace
- File -> New Workspace from GitHub
- File -> Open Workspace from GitHub
- Click Sign in with GitHub in the top-right account panel.
- Approve the device flow in browser when prompted.
- Use the account menu to review permissions or logout.
- Drag files/folders into the app, or
- Use import controls in the workspace UI.
- If name collisions are detected, you will be prompted to overwrite or cancel.
For each workspace file you can:
- Set manifest format/type
- Mark a master file (commonly SED-ML)
- Exclude files from manifest and ZIP packaging
- Refresh git insights to detect current added/modified/deleted files.
- Accept or edit the suggested commit summary.
- Add optional commit description.
- Commit through the in-app workflow.
- Export ZIP from the workspace view.
- App updates manifest.xml before building archive.
- App can generate a base64 OpenCOR launch URL.
- You can open the URL directly or copy it to clipboard.
- Use Sync to GitHub when signed in.
- If no repository is linked, choose one from the repository browser.
- Push to your configured branch (default main).
Use Help menu for:
- About dialog with app/runtime diagnostics
- Copy Diagnostics button for issue reports
- View GitHub Repository
- Submit an Issue
UI screenshots are not yet checked into the repository. Recommended screenshots to add:
- Main workspace screen after opening a project
- Manifest editing table with type/master/exclude controls
- Git commit panel with suggestion + description fields
- GitHub repository browser modal
- About dialog showing diagnostics and Copy Diagnostics button
Suggested folder structure:
- docs/screenshots/main-workspace.png
- docs/screenshots/manifest-editor.png
- docs/screenshots/commit-panel.png
- docs/screenshots/repo-browser.png
- docs/screenshots/about-dialog.png
After adding screenshots, embed them in this section using standard markdown image links.
Two workflows handle release prep and artifact publishing.
Workflow: .github/workflows/prepare-release.yml
Trigger manually from GitHub Actions with a semver input (for example, 0.1.2 or 0.2.0-beta.1).
It will:
- Validate semver format
- Ensure tag/release do not already exist
- Bump package version
- Verify lockfile with npm ci
- Commit package.json and package-lock.json
- Push branch commit and tag
- Create a draft release
Workflow: .github/workflows/build-release-assets.yml
Triggered when a release is published.
Build matrix:
- Windows: NSIS installer + portable EXE
- macOS: DMG + ZIP
- Linux: AppImage + tar.gz
Important detail:
- Windows icon prep runs only on windows-latest in CI.
src/
domain/
models.ts
main/
ipc-handlers.ts
main.ts
preload.ts
renderer/
App.vue
main.ts
index.css
services/
workspace.ts
manifest.ts
git.ts
github.ts
zip.ts
scripts/
convert-icon.js
.github/workflows/
prepare-release.yml
build-release-assets.yml
- Run npm ci to ensure lockfile sync.
- Run npm run build-ts to validate TypeScript output.
- Use npm run dist:fresh for clean local packaging.
- Sign out and sign back in from the account menu.
- Use Review permissions in the account menu to validate OAuth access.
Use Help -> Submit an Issue in the app, or open:
Include diagnostics copied from Help -> About -> Copy Diagnostics.
Apache-2.0
