Helmet UI is a desktop user interface for Helmet 4 Model System. Read the documentation in Finnish to learn how to use Helmet UI and Helmet 4 Model System. If you wish to develop the UI, continue below.
This is an Electron application written in JavaScript (NodeJS API and Electron API available within app), HTML and CSS.
- Git client
- Node.js 16 LTS & NPM
- EMME 4.x.x (Windows-only)
- [optionally] helmet-model-system (otherwise downloaded and auto-installed by the UI)
On Mac and Linux, Wine and Mono are also required to make the app for Windows.
Due to tight integration with EMME, the application is mainly targeted for Windows but can be developed on Mac and Linux as well. However, the final testing should always happen on Windows with Emme.
$ git clone <this repository>
$ npm install
See the documentation for preparing the Windows environment for testing. EMME and EMME-Python versions can be set in versions.js, affecting the automatic resolving of Python binary.
npm start
command is used to start the application in development environment. Running npm run make
will create an installer binary to be distributed to end-users.
See also: Electronforge.io
Git is used as the primary tool for version control and master
branch is the main development line, aka. bleeding edge.
All changes should be made in dedicated feature/bugfix branches, followed by a pull request and a peer-review.
Then, after all checks have passed, the branch may be merged in master
.
The application is built automatically by GitHub Actions when changes are pushed in master branch or pull requests are opened.
Releases are deployed automatically when changes are pushed in the release
branch,
which should be updated with master
only to make new releases.
The Electron Forge's Github publisher is used to upload files and draft a new release, thus avoiding the need to upload and tag releases manually.
The resulting draft must be reviewed, edited and approved in Github to make it publically available to everyone. This allows testing the package and making final fixes to it before making it public.
- Test and bring all the desired changes in the
master
branch. - Remove if there's word
SNAPSHOT
inversion
field of package.json, and update version as per semver practises. - Switch to
release
branch - Merge
master
torelease
and push to remote$ git merge master
$ git push
- Wait for GitHub Actions to build the application.
- Go to releases page page and Edit the
newly created draft.
- Ensure the release name corresponds to version number
- Write a brief description (new features, changes, fixes etc)
- Check/uncheck the pre-release checkbox as needed.
- Select
release
branch as the target for tagging - Press Publish release when all is good.
- Switch back to
master
branch and update the version number matching the release. This can be updated to indicate a snapshot before next release (e.g.1.3.0-SNAPSHOT
) while said release (1.3.0
) is in development, if necessary.