• v1.9.20 9f2a2b7396

    Morphit v1.9.20
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 47s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 40s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 39s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 16s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 30m24s
    morphit-release / Build + publish release tarball (push) Successful in 31m23s
    Stable

    agorise released this 2026-08-03 22:50:48 +00:00 | 0 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.20

    Theme: the end-of-install summary now checks and shows the health of every part of your node — not just "installed and running."

    When the guided install finishes, it prints a summary of what came up. In v1.9.20 that summary is far more thorough: instead of a short list, it verifies and displays the status of every subsystem, so you can tell at a glance that your whole node is actually healthy before you announce it.

    New

    The install summary now covers everything, with a live status for each. After the install, you'll see a checked line for each of:

    • Database, signup relay, and marketplace indexer — including a live "is it actually responding?" check against each service's health endpoint, and whether the indexer is caught up or still catching up (which is normal on a fresh node).
    • Blurt RPC connectivity and the BTC/XMR price feeds (FX).
    • Your verified relay balance, read live from the chain, shown as an amount and an estimate of how many signups it funds.
    • The MCP read-only API server.
    • The web firewall (BunkerWeb) and your website.
    • HTTPS certificate.
    • Firewall (UFW) and intrusion protection (fail2ban), now shown as two separate lines.
    • Your Tor onion address — the actual .onion is shown so you can copy it — and your I2P address.
    • The IPFS node and the hourly release-pinning that keeps the release available over IPFS/IPNS.
    • Your warrant canary (with a freshness check) and PGP contact key.
    • SEO surfaces (robots.txt and sitemap).
    • Your instance settings, nightly backups, and (on a home install) automatic address updates.
    • System resources (free disk and memory).
    • A final roll-up confirming every background service and timer is active.

    Anything still warming up shows a "?", not a failure. A fresh node often needs a minute for the indexer to respond, the price feeds to connect, or RPC to dial in. Those now show a neutral "still starting" marker and no longer hold up the offer to announce your instance — only a genuine failure (a service down, a missing certificate, an inactive firewall, an unfunded relay) does.

    Your "Contact this operator" link can now point to a Matrix room, not just an account. The optional Matrix contact in the setup wizard now accepts either your account (@you:matrix.org) or a room (#support:matrix.org), so you can send traders to a shared support channel instead of a personal account if you prefer. It remains entirely optional — press Enter to skip.

    Notes

    • No database migrations. No breaking changes.
    • If any line shows a ✗ or ? right after install, it usually just means that piece is still starting — re-check any time with sudo morphit-ops status.
    Downloads
  • v1.9.18 e316a4abe8

    Morphit v1.9.18
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 49s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 39s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 42s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 16s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 30m20s
    morphit-release / Build + publish release tarball (push) Successful in 31m18s
    Stable

    agorise released this 2026-08-03 07:34:49 +00:00 | 2 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.18

    Theme: another hotfix on the guided local-install path — the installer now gets through system-account setup and on into deploying the stack.

    A small follow-up to v1.9.17. Anyone installing locally (home computer, Raspberry Pi, or an old laptop running Linux) should use v1.9.18.

    Fixed

    The installer no longer stops while creating its system accounts. On v1.9.17, a "Full guided install" got past the safety checks and began setting up, then stopped with Group morphit-mcp does not exist while creating one of Morphit's background-service accounts. One of those accounts was being created before its group existed. It now creates the group first, matching how the other service accounts are handled, so setup continues on into installing the database, relay, indexer, and web server.

    Changed

    Clearer wording about the download. The "run a node" guide now notes that what you download is Morphit's source (a few tens of MB), and that the installer's first step downloads the software libraries (a few hundred MB) — so the npm install wait at the start is expected, not a hang.

    Notes

    • No database migrations. No breaking changes.
    • If a v1.9.17 local install stopped at the morphit-mcp group error, nothing needs undoing — the run stopped before deploying anything. Re-run the installer from a fresh v1.9.18 download.
    Downloads
  • v1.9.17 12556319c5

    Morphit v1.9.17
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 48s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 40s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 40s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 15s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 30m39s
    morphit-release / Build + publish release tarball (push) Successful in 32m24s
    Stable

    agorise released this 2026-08-03 03:01:13 +00:00 | 3 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.17

    Theme: a hotfix for v1.9.16 — the guided installer now completes on a home computer or a local Raspberry Pi / old laptop.

    This is a small, targeted follow-up to v1.9.16. If you already run a node, or install onto a remote server over SSH, nothing here affects you. Everyone installing locally should use v1.9.17.

    Fixed

    The guided installer no longer crashes partway through a local install. On v1.9.16, a "Full guided install" on your own machine got as far as the safety checks and then stopped with an 'ansible_user' is undefined error — before anything was actually set up. The pre-flight that checks you're not about to lock yourself out over SSH was evaluating a value that simply doesn't exist on a local install. It now recognises a local install correctly (and still refuses a risky root-over-SSH remote install), so the installer runs all the way through to the summary and the "put your instance on the shared map" step.

    A harmless-but-alarming warning is gone. The installer no longer prints Ansible's "discovered Python interpreter… future installation could change the meaning of that path" notice during setup. Nothing was wrong; it just looked scarier than it was.

    Notes

    • No database migrations. No breaking changes.
    • If your v1.9.16 local install stopped at the safety-check error, you don't need to undo anything — nothing was deployed. Just re-run the installer from a fresh v1.9.17 download (see the recovery steps if you were following along with support).
    Downloads
  • v1.9.16 cf80a67533

    Morphit v1.9.16
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 46s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 40s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 41s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 16s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 29m43s
    morphit-release / Build + publish release tarball (push) Successful in 30m17s
    Stable

    agorise released this 2026-08-02 22:10:22 +00:00 | 5 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.16

    Theme: a smoother path to running your own node — the guided installer now works the same however you install it, confirms more of what it set up, and can point visitors to your Matrix — plus a few interface fixes.

    Most of this release is for people running (or about to run) their own Morphit
    instance. If you only trade, the visible changes are that usernames read
    correctly in more places and the instances directory is a little tidier.

    Fixed

    Usernames read correctly in right-to-left languages, everywhere. A follow-up
    to v1.9.15: with Persian (Farsi) selected, a handle like @alice still rendered
    as alice@ in a few remaining spots — the operator handle on an instance card,
    the account menu, the block explorer, and the compare view. All of those now
    render left-to-right, @ first, like the rest of the app.

    The guided installer no longer claims success when nothing installed. A local
    install could print "installed and running" while the playbook had actually
    matched zero hosts and done nothing. The installer now confirms it has a host to
    act on before it starts, and reports honestly.

    Several guided-setup fixes for operators, including: the dynamic-DNS step no
    longer insists on an {ip} placeholder your provider fills in for you; the fees
    account defaults sensibly; and morphit-ops now installs as a real command, so
    sudo morphit-ops register works from anywhere.

    Added

    The installer now asks for your instance title, a one-line description, and an
    optional Matrix account.
    The title and description appear on the shared
    /instances directory that traders on other nodes browse. If you add a Matrix
    account (like @you:matrix.org), the "Contact this operator" link on your
    instance's card becomes live so traders can reach you — leave it blank if you
    don't have one yet.

    The end-of-install summary confirms more of what it set up. Your Tor onion
    address, your I2P address, your warrant canary, and your PGP contact key each now
    get a green check when they're in place, alongside the database, relay, indexer,
    and HTTPS certificate.

    morphit-ops harden can set up your warrant canary and PGP contact key — a
    guided step that signs the canary off your public server (so it can't keep
    stamping "all clear" if the box is ever seized) and posts your own PGP key.

    Changed

    Registering your instance works the same however you install it — over SSH on
    a VPS, locally on a Raspberry Pi or an old laptop, or by hand after the fact.
    Running sudo morphit-ops register now finds everything it needs in all three
    cases.

    The "you are here" marker on the instances directory is centered between your
    instance's name and its status, on the same line.

    Notes

    • No database migrations. No breaking changes.
    • The right-to-left handle fix is structural — applied to interface strings as
      they load — so it stays correct as translations change; the fixes in this
      release cover the few handles that are drawn directly rather than from a
      translation string.
    Downloads
  • v1.9.15 986da164b9

    Morphit v1.9.15
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 50s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 42s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 41s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 16s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 31m8s
    morphit-release / Build + publish release tarball (push) Successful in 30m30s
    Stable

    agorise released this 2026-08-02 03:45:54 +00:00 | 6 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.15

    Theme: interface polish — correct right-to-left usernames, a tidier footer, and a calmer orderbook.

    This release is a batch of front-end fixes and cleanups, most visible if you use
    Morphit in Persian or spend time on the orderbook.

    Fixed

    Usernames read correctly in right-to-left languages. With Persian (Farsi)
    selected, a handle like @alice was rendering as alice@ — and since the address
    only works as /@alice, never /alice@, the misplaced @ read as a different,
    invalid handle. Handles now always render left-to-right, @ first, in every
    language.

    Changed

    The orderbook hides the "Featured" card when nothing is featured. Instead of
    showing an empty "no featured-slot bids yet — be the first" card, the card simply
    isn't there until a featured order or bid exists.

    A tidier footer. Dropped two lines of chrome (the "Peer-to-peer. Private.
    Yours." tagline and the "Also reachable via" label) and reorganized the footer
    links into five clear, labeled columns — Federation, Resources, Security, Media,
    and Support — that stack cleanly on a phone and lay out correctly in right-to-left
    languages.

    The run-a-node page's "See the repo" button now opens the download page, where
    the guided setup and every download live.

    Notes

    • No database migrations. No breaking changes.
    • The right-to-left handle fix is structural: it's applied to every interface
      string as it loads, so it can't drift back out of sync as translations change.
    Downloads
  • v1.9.14 e64dc8bb21

    Morphit v1.9.14
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 46s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 38s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 39s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 15s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 28m18s
    morphit-release / Build + publish release tarball (push) Successful in 29m0s
    Stable

    agorise released this 2026-08-01 23:30:40 +00:00 | 7 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.14

    Theme: the warrant canary is now hands-off across upgrades — the served folder can't stay broken.

    Two things now protect the canary upload from an upgrade re-rooting the served
    folder. The ownership-preserving fix from v1.9.13 takes effect for every upgrade
    run by v1.9.13-or-newer code, so upgrades stop re-rooting the folder. On top of
    that, the weekly canary refresh now self-heals: if it ever finds the served folder
    re-rooted, it takes it back before uploading. Between the two, a canary upload can
    no longer be left broken by an upgrade.

    Added

    The canary refresh self-heals a re-rooted folder. The weekly refresh
    (~/.morphit/update-canary.sh, written by scripts/canary/setup.sh) now makes the
    served build/ folder writable again — best-effort, before every upload — so even
    if something leaves it root-owned, the next refresh fixes it and uploads cleanly
    instead of failing with "permission denied." This runs from the machine you sign on,
    not the server's installed code, so it protects the canary on any version. Re-run
    scripts/canary/setup.sh once to pick it up.

    Notes

    • No database migrations. No breaking changes.
    • The self-heal fixes the folder with sudo on the server, and an unattended weekly
      timer can't type a password — so the self-heal runs on its own only if the upload
      account has passwordless sudo. Without it, the v1.9.13 ownership-preserving fix
      is what keeps upgrades from re-rooting the folder in the first place.
    • New operators: scripts/canary/setup.sh already makes the served folder writable
      for you at setup time, so your first canary upload works; from then on it stays
      that way across upgrades.
    • The canary's signing model is unchanged: signed with your own PGP key, off the
      served box when you want it that way, so it goes stale exactly when it should.
    Downloads
  • v1.9.13 7598d3cbff

    Morphit v1.9.13
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 48s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 40s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 41s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 16s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 28m25s
    morphit-release / Build + publish release tarball (push) Successful in 29m33s
    Stable

    agorise released this 2026-08-01 20:47:55 +00:00 | 8 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.13

    Theme: the warrant-canary upload survives upgrades on a root-owned install — for real this time.

    v1.9.12 was meant to keep the canary upload working across upgrades without
    re-fixing folder permissions by hand. On a root-owned /opt/morphit install it
    didn't: the upgrade read the served folder's ownership from the freshly-extracted
    (root-owned) tree instead of your previous install, found no non-root owner to
    preserve, and left the folder root-owned. This release fixes that, and also
    removes an internal chat-debugging facility that is no longer needed.

    Fixed

    Canary upload no longer breaks on upgrade (root-owned installs). If you serve
    Morphit from a root-owned /opt/morphit and sign your canary on a separate
    machine, every upgrade used to re-root the served folder, so your next canary
    upload failed with "permission denied" until you fixed the ownership by hand. The
    upgrade now reads the folder's owner from your previous install — where your
    ownership actually lives — and restores it, so the upload just works.

    One-time note for this upgrade: an upgrade runs the version you're upgrading
    from, so the fix takes effect on the next upgrade after this one. On a
    root-owned install, run sudo chown -R <your-ssh-user> /opt/morphit/apps/web/build
    once more right after you upgrade to v1.9.13 — and you won't need it again after
    that.

    Changed

    Removed the chat delivery debug tracer. The opt-in chat tracer (the
    ?chatdebug / morphit.debug.chat toggle) built during an earlier chat
    investigation is gone — the investigation is resolved, and removing it drops a
    console-debug path from production and trims the footprint. No effect on normal
    use.

    Notes

    • No database migrations. No breaking changes.
    • Home-hosted (user-owned install) nodes were never affected by the canary bug and
      need nothing here.
    • The canary's signing model is unchanged: signed with your own PGP key, off the
      served box when you want it that way, so it goes stale exactly when it should.
    Downloads
  • v1.9.12 c1436ebd59

    Morphit v1.9.12
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 46s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 38s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 40s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 15s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 29m19s
    morphit-release / Build + publish release tarball (push) Successful in 30m8s
    Stable

    agorise released this 2026-08-01 09:22:17 +00:00 | 9 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.12

    Theme: the warrant canary is now hands-off — from first setup through every upgrade.

    v1.9.11 made the canary survive upgrades without re-fixing permissions by hand.
    This release removes the last manual touches around it: fresh-server setup no
    longer trips over folder permissions, home-hosted nodes restore the canary
    automatically on upgrade, and a health check warns you if a canary ever starts
    going stale.

    What's new

    Fresh-server canary setup just works — no first-time "permission denied". On a
    brand-new server the folder your site serves starts out owned by root, so the
    very first canary upload used to be refused until you fixed the ownership by hand.
    Now scripts/canary/setup.sh, when it sets up a remote server, hands that folder
    to your upload account for you (if your login can use sudo), so the first
    upload — and every one after — just works. If it can't, it points you at the
    one-line fix; nothing fails silently.

    Home-hosted nodes restore the canary automatically on upgrade. If you sign
    your canary on the same machine that serves it (home hosting), upgrading Morphit
    now puts the canary straight back for you — it re-runs your weekly refresh as part
    of the upgrade, so there's nothing to do afterward. Operators who sign on a
    separate laptop still get the one-command reminder, since the signing key isn't on
    the server by design.

    A health check catches a stalling canary before your readers do. Run
    morphit-ops health and the Canary line now warns while a served canary is still
    valid but running low on time — the sign that the weekly refresh has quietly
    stopped — so you can re-run it before it expires and readers see a false alarm. A
    missing or expired canary now shows in red.

    Notes

    • No database migrations. No breaking changes.
    • If you're already on v1.9.11, upgrading to this release needs no one-time
      ownership fix — v1.9.11 already restores the served folder for you.
    • The canary's signing model is unchanged: signed with your own PGP key, off the
      served box when you want it that way, so it goes stale exactly when it should.
    • New to canaries? scripts/canary/setup.sh is still the one guided command (see
      docs/RUN-A-MORPHIT-NODE.md).
    Downloads
  • v1.9.11 3129efc625

    Morphit v1.9.11
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 48s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 38s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 39s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 15s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 27m50s
    morphit-release / Build + publish release tarball (push) Successful in 28m44s
    Stable

    agorise released this 2026-08-01 05:37:58 +00:00 | 11 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.11

    Theme: the warrant canary keeps working across upgrades, and right-to-left order cards lay out correctly.

    This release closes the loop on two things from v1.9.10: it makes the warrant
    canary genuinely hands-off across upgrades, and it fixes how order cards lay out
    in Persian and other right-to-left languages.

    What's new

    Your warrant canary keeps working across upgrades — no permission fiddling.
    Each week the canary refresh uploads two files into the folder your site serves:
    the signed canary.txt and your public key pgp_keys.asc (so readers can verify
    the signature). Upgrading Morphit rebuilds that folder, and the rebuild used to
    leave it owned by root — so the next canary upload was refused with a
    "permission denied" until you fixed the ownership by hand. From this release on,
    the upgrade restores the served folder to whoever owns your canary uploads, so the
    refresh just works after every upgrade. Nothing to remember, nothing to re-chown.

    Right-to-left order cards now lay out correctly. v1.9.10 fixed right-to-left
    text; this release fixes the layout. In Persian, an order card's Message
    button and expiry chip sat on top of the poster's name and handle, because the
    card's own positioned pieces didn't mirror along with the rest of the page. Now
    the whole card mirrors properly in right-to-left languages — the actions move to
    the other side, clear of the identity — so nothing overlaps. Left-to-right
    languages are unchanged.

    Order titles use a touch more width. The one-line order title on desktop now
    extends a little further before it trims, so short and medium titles show one or
    two more words. The expiry chip and Message button still have the room they need,
    in every language.

    Notes

    • No database migrations. No breaking changes.
    • The canary's signing model is unchanged: signed off the served box with your own
      PGP key, so it goes stale exactly when it should.
    • Operators setting up a canary for the first time: scripts/canary/setup.sh is
      the one guided command (see docs/RUN-A-MORPHIT-NODE.md); after that, the
      weekly refresh and post-upgrade re-run are handled for you.
    Downloads
  • v1.9.10 b5f6bc03ca

    Morphit v1.9.10
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 46s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 39s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 40s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 16s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 28m47s
    morphit-release / Build + publish release tarball (push) Successful in 29m9s
    Stable

    agorise released this 2026-07-31 23:23:56 +00:00 | 12 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Morphit v1.9.10

    Theme: a warrant canary that's hard to knock offline, and easy for anyone to set up.

    This release makes every instance's warrant canary far more resilient, and turns
    its setup from a hand-rolled chore into one guided command that works for a home
    box and a rented server alike.

    What's new

    The canary is much harder to knock offline. Each week the canary embeds a few
    "proof it's fresh" facts — the latest Blurt and Bitcoin block, and a news
    headline. Those come from third-party sites, and if one is down or blocked the
    canary used to stop. Now:

    • the Bitcoin block is read from five independent providers (Blockstream,
      mempool.space, Blockchain.com, Blockchair, BlockCypher) instead of one — it
      tries each in turn until one answers;
    • the news headline falls through six independent feeds (your own, then
      BBC, The Guardian, NPR, Al Jazeera, the New York Times);
    • the Blurt block already rotated across the full node list.

    The Bitcoin block and news are secondary to the Blurt block, so even if every
    one of their providers is unreachable, the canary still signs (recording them as
    unavailable) instead of failing. One provider having a bad day can no longer make
    your canary look tampered-with.

    Setting up the canary is now one guided command. scripts/canary/setup.sh
    ships in the repo, so every operator has it. Run it once on the machine you want
    to sign on and it does the rest, then keeps the canary fresh on a weekly timer:

    • it asks whether Morphit runs on this same computer (home hosting) or on a
      separate server
      (a VPS), and does the right thing for each — signing locally
      and either placing the file or uploading it;
    • if you don't have a PGP signing key yet, it offers to create one and
      publishes the matching public key for readers to verify against;
    • it's built into the flow: morphit-ops points you to it during setup, and
      reminds you to re-run it after an upgrade (a rebuild clears the served files).

    Nothing is required beyond re-running your canary refresh after upgrading, exactly
    as before. See docs/RUN-A-MORPHIT-NODE.md (warrant canary) for the friendly
    version and docs/OPERATIONS.md §36 for the security reasoning — including why
    the strongest canary is signed on a machine separate from the server.

    Clearer order titles. An order's one-line title now names the crypto a seller
    accepts by its ticker — "…for LTC, DOGE, or SOL" — instead of the long form
    ("…for Litecoin (LTC), Dogecoin (DOGE), …"). That keeps the title to a single line
    on desktop (two on a phone) so it no longer runs into the Message button, matching
    how barter listings already read. The full order page still shows everything.

    Farsi and other right-to-left languages now display correctly. If you use
    Morphit in Persian — or if you type your order terms, a barter title, or your
    instance's name and description in a right-to-left script — the text now reads in
    its natural direction on every page, instead of scrambling where it mixed with
    left-to-right tokens like amounts and tickers. A Persian order reads right-to-left
    and an English one left-to-right, whichever language the site is set to. Persian
    pages now also load in the correct direction immediately (and for visitors with
    JavaScript turned off), and are correctly labelled as Persian for search engines
    and screen readers.

    Notes

    • No database migrations. No breaking changes.
    • The canary's signing model is unchanged: signed off the served box with your own
      PGP key, so it goes stale exactly when it should.
    Downloads