-
Morphit v1.0.0-beta.4
StableAll checks were successfulmorphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 37smorphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 28smorphit-ci / ansible-lint (playbook quality gate) (push) Successful in 10smorphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 14m58smorphit-release / Build + publish release tarball (push) Successful in 15m56sreleased this
2026-06-03 06:05:32 +00:00 | 7 commits to main since this releaseA small but important fix on top of beta.3: the indexer could fail
to start on instances that set a Matrix room for operator
alerts. If you are on beta.3 (or earlier) and your indexer starts
fine, this release is still recommended but not urgent. If your
indexer crashes at boot withReferenceError: require is not defined, this release fixes it.Added
morphit-ops doctor— a read-only "will my node start?" check.
Run it from your install directory and it tells you, in plain
English, whether the indexer and relay will start with the config
you have on disk — before you start them. It reports exactly
what is wrong (a missing required setting, a value in the wrong
file, a key-file permission) and how to fix it, and it changes
nothing on your system. If your node won't boot, runmorphit-ops doctorfirst. It also runs a short security check: it tells
you whether your relay's active key is encrypted or stored in
plaintext (and how to encrypt it), and flags any secret file that
other users on the box can read. (This security check is
operator-only — it is deliberately not exposed on the public
health endpoint.)
Fixed
-
Indexer crashed at startup when
MORPHIT_INDEXER_OPERATOR_MATRIX_ROOM
was set. The config code validated the Matrix room alias using a
CommonJSrequire()call, which is undefined in the indexer's
ES-module runtime — so boot failed withReferenceError: require is not definedthe moment a non-empty room value was present.
Instances that left the room unset were unaffected, which is why
it surfaced late. The validator now uses a normal module import.
Added a startup regression test (and a repo-wide guard against
this whole class of CommonJS-in-ESM bug) so it cannot recur. -
Setup wizard never wrote two settings the indexer requires.
An instance configured withmorphit-ops init(rather than the
Ansible playbook) was missingMORPHIT_INDEXER_PUBLIC_ORIGINand
MORPHIT_INDEXER_OFFICIAL_POSTING_PUBKEY, so the indexer refused
to start withconfig validation failed: ... Required. The wizard
now writes both — the public origin (the same one it already asks
you for) and the official@morphitposting key (a fixed value,
the same for every instance). If you set up via the wizard and your
indexer won't start citing these, re-runnpx morphit-ops initon
this release, or add both to yourmorphit.envby hand (see
ops/env/indexer.env.example).
Everything from beta.3 still applies
beta.3 fixed the setup wizard writing two settings into the wrong
file (which stopped the indexer from booting with an "operator
allowlist" error), added the guidedmorphit-ops install, the
docs/start-here/navigation hub, the migrate-to-release-track
guide, and mademorphit-ops upgradediscover pre-release-flagged
releases. SeeRELEASE-NOTES-v1.0.0-beta.4.mdfor details.Upgrading
- If you installed cleanly from the beta.3 release and your indexer
runs, justnpx morphit-ops upgradeto pick this up (it carries
your config and keys forward). - If your beta.3 indexer crashed at boot with the
requireerror,
upgrade to this release and start it again — no config change
needed on your side.
Verify the download
sha256sum -c morphit-v1.0.0-beta.4.tar.gz.sha256Output must say
OKbefore you extract.Status
Pre-launch beta. Not yet recommended for production traffic. The
canonical public instance is morphit.io. Community operators
welcome — start atdocs/start-here/.Downloads