build(cli): add cross-compile release task and wire the version
Two pieces toward distributing the CLI as downloadable binaries.
Version: main.ts hardcoded .version("0.0.0"). Read it from
packages/cli/deno.json instead (imported as JSON, so it embeds in the
module graph and deno compile carries it into the binary), and bump
the manifest from the 0.0.0 placeholder to 0.1.0. The version now has
one source of truth and the binary reports it via --version.
compile:all: a new scripts/compile-all.ts cross-compiles every target
deno compile supports (x86_64/aarch64 linux, x86_64 windows,
x86_64/aarch64 macos) and writes sha256sum-compatible checksums to
dist/. It's a Deno script, not a shell loop, so it runs identically on
Windows/macOS/Linux CI. Targets can be filtered by arg
(deno task compile:all x86_64-pc-windows-msvc) for a single-platform
build; no args builds all five. Output is version-stamped
(morkdeck-<version>-<target>, .exe on Windows) and lands in the
already-gitignored dist/.
The per-target compile flags mirror the single-target compile task
(same permissions, --unstable-broadcast-channel, and the
--include asset directories) so release binaries behave identically to
a local deno task compile.
Note: this covers producing and checksumming the artifacts. Code
signing/notarization, the headless-Chrome runtime dependency for
mermaid, and hosting/install UX are still open and tracked separately.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>