morphit/RELEASE-NOTES-v1.0.0-beta.4.md

80 lines
3.5 KiB
Markdown

# Morphit v1.0.0-beta.4
A 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 with `ReferenceError: 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, run `morphit-ops
doctor` first. 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
CommonJS `require()` call, which is undefined in the indexer's
ES-module runtime — so boot failed with `ReferenceError: require is
not defined` the 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 with `morphit-ops init` (rather than the
Ansible playbook) was missing `MORPHIT_INDEXER_PUBLIC_ORIGIN` and
`MORPHIT_INDEXER_OFFICIAL_POSTING_PUBKEY`, so the indexer refused
to start with `config validation failed: ... Required`. The wizard
now writes both — the public origin (the same one it already asks
you for) and the official `@morphit` posting 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-run `npx morphit-ops init` on
this release, or add both to your `morphit.env` by 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 guided `morphit-ops install`, the
`docs/start-here/` navigation hub, the migrate-to-release-track
guide, and made `morphit-ops upgrade` discover pre-release-flagged
releases. See `RELEASE-NOTES-v1.0.0-beta.3.md` for details.
## Upgrading
- If you installed cleanly from the beta.3 release and your indexer
runs, just `npx morphit-ops upgrade` to pick this up (it carries
your config and keys forward).
- If your beta.3 indexer crashed at boot with the `require` error,
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.sha256
```
Output must say `OK` before you extract.
## Status
Pre-launch beta. Not yet recommended for production traffic. The
canonical public instance is morphit.io. Community operators
welcome — start at `docs/start-here/`.