For more information, as well as an immediately useable, binary version of the Unigrid software, see https://www.unigrid.org
Janus is released under the terms of an addended GNU Affero GPL license version 3. See COPYING and COPYING.addendum for more information.
Developers work in their own trees, then submit pull requests when they think their feature or bug fix is ready.
The patch will be accepted if there is broad consensus. Developers should expect to rework and resubmit patches if the code doesn't match the coding conventions or level of quality of the project.
The master branch is regularly built and tested, but is not guaranteed to be completely stable. Tags are created regularly to indicate new official, stable release versions.
- Frontend migration — proposal to replace the JavaFX user interface with server-rendered HTML and CSS in an embedded browser.
mvn clean install
This builds and tests the core, web, ui and shell modules: the Hedgehog
client, the embedded web server, the server-rendered pages and the window that
hosts them. The approach is described under
Design documents.
The desktop module builds the native installers and is only part of the build
with the installer profile. It needs JDK 17 and the platform's packaging tools
(dpkg-deb, fakeroot and rpm on Linux, WiX 3 on Windows, Xcode's command
line tools on macOS):
mvn -Pinstaller verify -DskipTests
desktop/collect-installers.sh <version>
The installers carry their own Java runtime and the browser engine, so an
installed Janus starts without downloading anything but Hedgehog. The build
fetches the engine once into desktop/target/input/jcef; mvn clean removes
it. The installers end up in desktop/target/release. The previous JavaFX
implementation, together with its release workflows, remains available on the
legacy-javafx branch.
mvn install -DskipTests
mvn -pl shell exec:java
This opens the Control Center in its own window. Once a wallet has been
chosen, Janus remembers its backup copy in ~/.janus/wallet and opens on that
wallet's Dashboard at the next start; deleting the file starts over at
Welcome. The wallet is shown read-only from Hedgehog's frozen legacy ledger, so
Hedgehog must be on the PATH, or be named with -Djanus.hedgehog=<path>.
Templates are resolved from the classpath with caching disabled, so running from a development classpath picks up an edited template on the next request without a restart.
If you are running into issues starting the wallet a good place to look is our documentation page.
Developers are strongly encouraged to write unit tests for new code, and to submit new unit tests for old code.
mvn install runs the unit tests together with the flow tests in ui, which
serve the real controllers and templates and walk through them over HTTP.
The browser tests in e2e drive the same interface in headless Chromium and
are only built with the browser profile. Playwright downloads Chromium on the
first run:
mvn install -DskipTests
mvn -Pbrowser -pl e2e verify
On a distribution Playwright does not recognise, such as Linux Mint Debian
Edition, name the closest supported one, for example
PLAYWRIGHT_HOST_PLATFORM_OVERRIDE=debian12-x64.
