This page is for maintainers of the Oda codebase: run the app from a source checkout, build the Windows installer, and see how builds are identified and published.
Oda builds on Windows. The supported systems, and the native pieces behind its confinement and file locking, are on Platform support.
pnpm@11. 7. 0.corepack pnpm@11. 7. 0 install.pnpm run build.pnpm run start:desktop. Or build first and then
launch: pnpm run dev:desktop.pnpm run start:web. The command prints a local address to open in
a browser.The command-line launcher prints the release version (--version prints it exactly) and is the only
supported launcher for the app. Its flags and profiles are on
Command line and flags.
pnpm run dev:web builds once, serves the web interface, and rebuilds the browser-side bundles as you
edit sources, all in one terminal.
--skip-build skips the first build; --no-serve keeps the loop running without the web server.--poll[=ms] sets the watch interval, 500 ms by default, and switches the TypeScript watcher to
fixed polling, which suits network drives.dev-web: <stage> exited (code <n>); stopping the other stages.pnpm run build: both write the same build outputs.| Command | Runs |
|---|---|
make build | pnpm run build |
make web | pnpm run start:web |
make desktop | pnpm run start:desktop |
make dev-web | pnpm run dev:web |
make dev-desktop | pnpm run dev:desktop |
The scripts they call stay the source of truth. Pass options to the launched application through
ARGS, for example ARGS='--no-open --port 3081': the web commands accept web flags, the desktop
launcher accepts none.
apps/ desktop/ . env. windows, which sits beside the desktop
app and stays out of version control. An unsigned build needs only the application id; leave every
signing value out. A setting the packer does not recognise stops packaging with
unsupported setting.pnpm run build. It compiles the whole project, including the native
helpers. Package with the build skipped and the run fails on a missing native helper module.pnpm run package:desktop:win:x64:unsigned.apps/ desktop/ . desktop-build/ targets/ win-x64/ unsigned-artifacts/:
datamind-oda-<version>-win-x64. exe;. blockmap for differential updates;latest. yml, with the version, file name, size and SHA-512.Run packaging from the wrong folder and the packer stops with No package.. If preparing
the bundled runtime stops in a child process, run that preparation step again and package once more.
DataMind Oda), version and commit. Consumers of built artefacts refuse a missing record or
changed artefacts and tell you to run a complete build.Bump the version, or investigate why the build is not reproducible.datamind-oda-<version>-win32-x64. vsix and
datamind-oda-<version>-win32-arm64. vsix. Before bundling, a check fails the package if an import
would not resolve at runtime, and it publishes through pre-release and release channels.Use the command-line launcher's plugin command: give the profile the bundle should join and the
bundle's absolute path as a file: address, in the form
add file:/. Managing external packages with the command needs
pnpm on your PATH.
24.x. The project pins its package manager through Corepack, so corepack pnpm@11. uses
the pinned version.
No. pnpm run start:desktop launches the app that was built last; pnpm run dev:desktop builds
first, then launches.
Run pnpm run start:web. It serves the built web interface and prints a local address; open it in a
browser. Flags for the web command are on Command line and flags.
The loop stops the other stages and exits 1. The line that reports it names the stage:
dev-web: <stage> exited (code <n>); stopping the other stages.
The loop rebuilds bundles when a source file changes, and the web server tells the browser to reload when the built files change. An edit outside the packages the web interface links rebuilds nothing, so the page stays as it is.
No. Both write the same build outputs. Run one at a time.
--poll change?It sets the watch interval in milliseconds, 500 ms by default, and switches the TypeScript watcher to fixed polling, which suits network drives. A value that is not a positive whole number is refused.
unsupported setting. What do I do?The environment file holds a setting the packer does not recognise, retired settings included. Remove that setting and package again.
Yes. Leave the signing values out of apps/ and the build produces an unsigned
installer; Windows warns when such an installer first runs.
From your company's server. The installer, its blockmap and the update metadata are published inside it, and each server serves the build it pins. Updates never install while a run is active; see Updates and troubleshooting.
Yes. Use the launcher's plugin command with the profile and the bundle's absolute path as a file:
address. Managing external packages with the command needs pnpm on your PATH.