-
Morphit v1.15.7
StableAll checks were successfulmorphit-ci / Supply-chain audit gate (fail on new high/critical) (push) Successful in 21smorphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 34smorphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 29smorphit-ci / Integration tests (real Postgres 16) (push) Successful in 41smorphit-ci / ansible-lint (playbook quality gate) (push) Successful in 12smorphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 24m49smorphit-release / Build + publish release tarball (push) Successful in 32m55sreleased this
2026-09-03 06:58:14 +00:00 | 39 commits to main since this releaseMorphit v1.15.7
Fixes a crash that silently froze every instance's directory listing: the federation probe was reading a database column that didn't exist, so no node was ever re-probed and directory names/taglines went stale.
Fixed
The federation probe no longer crashes on a missing column. The clearnet-blocked detection added in v1.15.3 ("Fix B") queried
operators.last_action_block_num, but that column was never added to theoperatorstable. Against a live database the probe scan threwcolumn o.last_action_block_num does not existon every cycle — so no instance was ever re-probed, and each instance's cached name/tagline in the/instancesdirectory stayed frozen at whatever was there before (a renamed instance kept showing its old name even though its on-chain registration was correct). This release adds the column (migration v58, additive/nullable, backfilled toregistered_in_block) and advances it on each operator registration, so the probe runs again and the directory refreshes. The unit smoke that covers the probe mocks the database, so it never ran the real SQL — a new query↔schema parity smoke now reconciles everyoperators-aliased column the probe selects against the actual schema (CREATE TABLE + migrations), which would have caught this before it shipped.Re-registration now broadcasts a legacy-stored I2P b32 address. An instance whose
.b32.i2paddress is held in the older singleMORPHIT_INSTANCE_I2P_ADDRESSvariable (rather than the splitMORPHIT_INSTANCE_I2P_B32_ADDRESS) had its b32 shown in the edit wizard but dropped from the on-chain register op — the wizard applied the legacy fallback and the register command did not.registernow applies the same fallback, so the b32 is published like the other addresses.Notes
- Operators upgrading from an affected version should re-run
morphit-ops→ option 2 (upgrade); migration v58 adds and backfills the column automatically. No manual step. (If you already added the column by hand as a hotfix, the migration is idempotent —ADD COLUMN IF NOT EXISTS— and leaves your data alone.) - Includes v1.15.6 (sealed-credential auto-unlock + paste-hardened prompt), v1.15.5 (contact-URL re-register + disambiguated prompt), and v1.15.4 (noble-only installer gating).
- Known limitation:
last_action_block_numadvances on registration; richer per-op aliveness tracking (so a long-running censored node stays classifiedclearnet_blockedbetween registrations) is a follow-up. Until then a censored node that hasn't re-registered within the window classifies asunreachable— the safe default.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Operators upgrading from an affected version should re-run