• v1.0.0-beta.36 cb2dbda66a

    Morphit v1.0.0-beta.36
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 41s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 32s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 18m59s
    morphit-release / Build + publish release tarball (push) Successful in 19m57s
    Stable

    agorise released this 2026-06-28 05:18:07 +00:00 | 95 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release makes prices follow your money. Your required first order is now $1 worth
    in your local currency
    — not a fixed amount of BLURT — and listing fees now track the
    live BLURT price so they stay around a few cents in dollar terms instead of drifting. The
    new-order page is friendlier for a first trade, the edit-order page now matches it, and
    there are fixes for the order form and for updating the app on mobile.

    As always, Morphit keeps no data about you, and there's no sign-up or ID check. If you're
    already signed in, your account, keys, and balances carry over untouched.

    What things cost, in your currency

    • Your first order is $1-equivalent of BLURT. Morphit asks every new trader to make
      one small first buy. You choose your currency, enter an amount, and Morphit works out
      how much BLURT equals about a dollar — so "one dollar" stays one dollar whatever BLURT
      is worth that day. (A genuine $1 first order is now accepted; in an earlier build it
      could be wrongly rejected.)

    • Listing fees follow the dollar, too. A listing fee is about 25¢ when paid in
      Bitcoin or Monero, or about 12.5¢ when paid in BLURT. Rather than being a fixed
      amount of coin that quietly drifts in dollar terms, the amount is quoted from the live
      price so its value stays put. You always see the exact amount before you sign, and it
      is settled at that amount on the chain. The price is only ever used to work out that
      amount for you — it is never treated as a source of truth for anything else.

    Placing an order

    • A clearer first-trade experience. The new-order page now walks you through it in
      steps ("Step 1 of 3"), defaults the amount to about a dollar in your currency, and
      shows a plain-English summary of what you are about to post (for example, "I will buy
      up to 20 MXN worth of BLURT at market price, and pay with PayPal or Cash"). The amount
      and price fields accept numbers and decimals only, and don't flash an error before you
      have typed anything.

    • Small touches. A required field now tells you so up front, the terms box shows
      rotating example prompts, and hover highlights are consistent across the site.

    Editing an order

    • The edit-order page now matches the new-order page — the same friendly amount and
      price fields (with a proper decimal keypad on phones) and the same local-currency
      labels.

    Fixes

    • One-tap update on mobile. When a new version is ready, tapping "Load it now" once
      now reliably loads it, instead of occasionally needing a second tap.
    • A genuine $1 first order is accepted (it could previously be rejected as too small).
    • The new-order form no longer shows premature red borders, no longer lets letters into
      number fields, and never hides the continue button without explanation.
    • As with recent betas, this release changes no third-party dependencies.

    For operators

    • Listing fees now track the live price automatically. The fee your instance collects
      stays around its target value (about 25¢ in BTC/XMR, about 12.5¢ in BLURT) as the
      market moves. The amount enforced on-chain is anchored on-chain, so every instance in
      the federation agrees on it, and it is kept aligned with the live price by an
      optional, key-gated, automated re-pin — off by default and detect-only until you
      turn it on, with a manual "Plan B" always available. Your existing fee settings are
      respected as a fallback.

    • A local-currency (FX) feed and multi-source price averaging. Prices for BLURT,
      Bitcoin, and Monero are now drawn from several upstreams and combined with outlier
      rejection, and a currency-rate feed lets the "$1-equivalent" first order be correct in
      any currency, not just US dollars. Both the price feed and the currency feed report
      their health in morphit-ops health and /v1/health.

    • A public /v1/fx endpoint exposes the (privacy-preserving, whole-table)
      currency rates the first-order minimum uses.

    • Klingex has been removed (the exchange shut down); CoinGecko is now the sole
      external price source, with the self-sovereign and static-floor fallbacks behind it as
      before.

    Under the hood

    • Every change ships with regression tests, and the fee and first-order amounts now come
      from a single hardcoded source of truth shared by the app and the indexer, so the
      displayed cost can't drift between them. A fresh five-persona walkthrough and a focused
      deep-dive review confirmed the changes end to end, across all supported languages.
    Downloads
  • v1.0.0-beta.35 7623169d8e

    Morphit v1.0.0-beta.35
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 40s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 31s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 18m45s
    morphit-release / Build + publish release tarball (push) Successful in 19m34s
    Stable

    agorise released this 2026-06-27 06:11:31 +00:00 | 96 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release fixes a couple of order-page papercuts — including one that could leave
    the new-order form looking broken for first-time traders — shows your balance in your
    local currency out of the box, and tidies up sign-out and a few small touches.

    Nothing here changes how trading works or what anything costs, and Morphit still keeps
    no data about you. If you're already signed in, your account, keys, and balances carry
    over untouched.

    Placing an order

    • Fixed: the new-order page no longer goes blank below the first card. If you had
      a saved draft from an earlier visit, the form could stop showing everything below the
      asset card — leaving a first-time trader stuck with just the opening card and nothing
      to fill in. The form now safely ignores any draft it can't read, so the rest of the
      page always appears. (If you ever want to start over, the "Discard draft" button
      clears a saved draft.)

    • The first-order tips come back when you need them. The little "Your first order?
      Some safer defaults" card now reappears on a later visit if you still haven't placed
      your first order. Closing it is a "not right now," not a permanent dismissal.

    • A small polish on the walkthrough link. "Read the full first-trade walkthrough"
      now highlights the whole line — text and arrow together — when you hover it.

    Seeing your balance in your local currency

    • Your balance now shows its value in your currency by default. The amount of BLURT
      in your wallet is shown with an approximate value next to it (for example, in US
      dollars or whichever currency the instance you're using is set to). This was available
      before but had to be switched on; now it's on out of the box. As always, it's a
      display courtesy — your fees are settled in BLURT — and if the price can't be fetched,
      the figure is simply omitted.

    Signing in and out

    • Fixed: the sign-in button label after you sign out. After signing out, the menu
      button now correctly reads "Sign in" again straight away, instead of briefly still
      saying "Unlock."

    • Clearer wording on the BLURT explainer when you're choosing what to trade.

    For operators

    • The BLURT/USD price feed is now on by default. A fresh instance shows local-
      currency values next to BLURT amounts without any extra configuration. The source is
      the usual external chain (Klingex, then CoinGecko) with a static-floor fallback — a
      server-side call from your box, never anything user-facing. If you want a fully self-
      contained instance that makes no external price calls, set
      MORPHIT_INDEXER_PRICE_FEED_ENABLED=false and the UI shows BLURT only.

    • morphit-ops health now reports the price feed. The Node-health view (main menu
      item 13) shows whether the feed is on and serving a live price (with the price and
      which upstream is serving), on but stale (falling back to the static floor), or off —
      so you can tell at a glance whether local-currency values will appear, and diagnose a
      blocked upstream. It's also in the --json output.

    Fixes recap

    • New-order form no longer disappears below the first card when a saved draft is present.
    • First-order tips card reappears until your first order is placed.
    • Sign-in button label corrects immediately after sign-out.
    • As with recent betas, this release changes no third-party dependencies.

    Under the hood

    • The order-form fix ships with a regression test that locks the draft-restore safety
      (any unreadable saved field is coerced rather than crashing the form), the first-order
      tips behaviour, and the walkthrough-link hover. The new node-health price line is
      covered by tests on both the indexer endpoint and the morphit-ops view. A fresh
      five-persona walkthrough and a focused deep-deep review confirmed the changes end to
      end, across all supported languages.
    Downloads
  • v1.0.0-beta.34 ffed22ae90

    Morphit v1.0.0-beta.34
    Some checks failed
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 40s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 31s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Failing after 6m32s
    morphit-release / Build + publish release tarball (push) Failing after 7m15s
    Stable

    agorise released this 2026-06-27 03:08:36 +00:00 | 98 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release makes placing an order much friendlier — especially your very first
    one — with clearer fields, a plain-language summary of exactly what you're about to
    post, and a couple of papercut fixes.

    Nothing here changes how trading works or what anything costs, and Morphit still
    keeps no data about you. If you're already signed in, your account, keys, and
    balances carry over untouched.

    Placing an order

    • The new-order page now eases first-time traders in. If you've never traded
      before, the page drops the extra explanation, greets you with a simple "Let's
      trade!", and walks you through your first listing instead of presenting the full
      form at once.

    • Your currency choice reads in plain language. When you pick the currency your
      payment is in, it now shows as something like "MXN — Mexican Peso" rather than a
      removable tag, so it's obvious you've chosen one currency.

    • The minimum and maximum fields are clearer and harder to get wrong. Each one
      now names the currency you picked (e.g. "Minimum value in MXN"), accepts numbers
      only — letters and stray symbols simply can't be typed — and turns red if what you
      enter doesn't fit, so mistakes are caught as you go. The same applies to the price
      fields.

    • A plain-language summary of your order. A card near the bottom of the form now
      reads your order back to you in one sentence — for example, "I will buy up to 20
      MXN worth of BLURT at market price, and pay with PayPal, Cash (in person), or
      Barter (goods/services)."
      — and updates live as you fill things in, so you can see
      exactly what you're posting before you confirm. It's available in every supported
      language.

    • The notes field is labelled "Terms / Details / Notes" so it's clear what kind
      of thing belongs there.

    Fixes

    • Fixed: a "restored draft" message no longer appears on a brand-new order form.
      Starting your first listing could wrongly look like a saved draft was being
      restored even when you hadn't typed anything yet. The form now only offers to
      restore a draft once you've actually entered something.

    • Fixed: switching your pricing back to market price no longer leaves a stale
      warning behind.
      Moving from a fixed price back to market pricing could leave an
      "enter a price" message lingering; that's resolved.

    • As with recent betas, this release changes no third-party dependencies.

    Under the hood

    • The order-form changes ship with a regression test that locks the draft and
      pricing-error behaviour, the plain-language summary, the numbers-only fields, and
      the first-time prompts so they can't quietly regress. A fresh five-persona
      walkthrough and a focused deep-deep review confirmed the new-order and edit-order
      screens end to end, across all supported languages.
    Downloads
  • v1.0.0-beta.33 ebac7d2d84

    Morphit v1.0.0-beta.33
    All checks were successful
    morphit-release / Build + publish release tarball (push) Successful in 19m24s
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 40s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 32s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 18m30s
    Stable

    agorise released this 2026-06-26 21:42:50 +00:00 | 99 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release fixes a balance display that could get stuck showing an old number,
    adds an at-a-glance fiat value next to your BLURT, greets you by name on the
    welcome-back screen and lets you sign out from there, smooths out signing in and
    getting set up, and gives operators a proper menu for managing payment methods.

    Nothing here changes how trading works or what anything costs, and Morphit still
    keeps no data about you. If you're already signed in, your account, keys, and
    balances carry over untouched.

    Your wallet

    • Fixed: your balance no longer gets stuck on an old number. The balance card
      is meant to update on its own every few seconds, but a caching rule could keep
      serving a stale value — especially when the network was flaky — so a deposit or
      transfer might not show up for a long time. Balances are now treated as live data:
      the card refetches instead of coasting on a cached number.

    • The refresh button now forces a real, live update. Tapping refresh used to be
      answerable from that same short-lived cache, and a tap that landed during the
      automatic refresh could be swallowed entirely (the icon spun but nothing
      refetched). It now does a hard refresh that bypasses every cache and reads your
      balance straight from the chain, every time.

    • An approximate fiat value next to your BLURT. When your operator runs a price
      feed, your liquid BLURT balance now shows a rough value beside it, e.g. (~$10.00 usd). If the price feed isn't available, the line is simply left off rather than
      showing anything misleading.

    Signing in

    • The welcome-back screen greets you by name. When you return to a device that
      remembers you, the heading now reads "Welcome back @yourname" so it's clear which
      account you're about to unlock.

    • Sign out right from the welcome-back screen. There's now a Sign out button next
      to Unlock — the same one, with the same confirmation, that you'd use from the
      account menu — so you can switch away from a remembered account without unlocking
      it first.

    • Importing from a seed phrase finds your account name for you. A seed phrase
      carries your keys but not your account name. Morphit now looks the name up for you
      from any key you import — seed phrase, key file, or posting key — and signs you in
      when it matches exactly one account, falling back to asking only if the lookup is
      ambiguous or unavailable. As before, that lookup goes through your operator's own
      node and never reaches a third party directly.

    • You land where you were going. If you're sent to the unlock screen because you
      tried to open a page while locked, unlocking now takes you to that page instead of
      dropping you on the home screen.

    Getting set up

    • A clear prompt when you're not signed in. A site-wide banner now explains the
      accountless state and links you to the right next step, instead of leaving you to
      guess where to start.

    For operators

    • Manage payment methods is now an interactive menu. The "Manage payment methods"
      item in morphit-ops previously just printed the list and dropped you back at the
      shell. It now opens a list / add / remove menu that prompts you for each field and
      signs the on-chain change for you — no need to remember the command-line flags. The
      scriptable payment-method add | remove | list commands still work exactly as
      before.

    • As with recent betas, this release changes no third-party dependencies.

    Under the hood

    • The balance and welcome-back changes ship with regression tests, including a
      tamper-checked guard that fails if the balance cache is ever loosened back to a
      stale-serving window, and a check that keeps the operator menu wired to the
      interactive payment-method flow. A fresh five-persona walkthrough and a focused
      deep-deep review confirmed the changed sign-in and operator surfaces end to end.
    Downloads
  • v1.0.0-beta.32 cbd330ddac

    Morphit v1.0.0-beta.32
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 39s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 32s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 18m13s
    morphit-release / Build + publish release tarball (push) Successful in 19m1s
    Stable

    agorise released this 2026-06-26 05:46:14 +00:00 | 101 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release fixes a bug where your avatar could vanish after a profile edit, makes
    your avatar and display name show up everywhere they should, lets you skip typing
    your account name when you import from a seed phrase, makes that lookup private,
    hardens every text field against pathological input, and adds the usual round of
    polish to the profile and sign-in screens.

    Nothing here changes how trading works or what anything costs, and Morphit still
    keeps no data about you. If you're already signed in, your account, keys, and
    balances carry over untouched.

    Your profile and avatar

    • Fixed: your avatar no longer disappears when you change only your bio. Updating
      one part of your profile (say, just your short bio) used to overwrite the rest,
      which could orphan an avatar you'd already set even though it was still on chain.
      Profile updates now merge field-by-field — an omitted field is left alone, and only
      an explicit clear removes one — so a partial edit keeps everything else intact.

    • Your avatar shows up everywhere now. Once you've set an avatar, it appears in
      the top-right menu and anywhere your identity is shown, not just on your public
      profile page.

    • A display name is now optional. You can set an avatar and links without being
      forced to choose a display name first, and leaving the name blank no longer wipes a
      name you set earlier.

    • A bit more room for your avatar. The inline avatar size limit was raised so more
      designs fit comfortably.

    • Clearer broadcast status and a new avatar card in Settings. Publishing now says
      "Broadcasted" when it lands, and Settings gained a dedicated avatar card with a
      thumbnail preview and a confirmation step before you replace one.

    Signing in

    • Importing from a seed phrase now finds your account name for you. A seed phrase
      contains your keys but not your account name, so you used to have to type it in by
      hand. Morphit now looks the name up for you, and if it matches exactly one account
      it signs you straight in. If it's ambiguous or unavailable, you simply enter the
      name as before.

    • That lookup is private. The name lookup goes through your operator's own node,
      so the request — and your connection — never reaches a third-party node directly. If
      the lookup can't be made for any reason, Morphit quietly falls back to asking you
      for the name rather than reaching out to anyone else.

    • Import-screen polish. The remember-me option is gated correctly, and a mismatch
      is flagged with a clear red border. The "sign in with your keys" button shows a lock
      icon on the welcome-back screen.

    Privacy and hardening

    • Every text field has a length cap. A site-wide review added a length backstop to
      every free-text input and text area, on top of the existing validation, so an
      oversized or pathological paste can't slip through. The caps are set above every
      legitimate limit, so normal input is never cut off.

    • Clearer errors when your key doesn't match. Before publishing, Morphit now checks
      that your key actually has authority for the action and tells you up front if it
      doesn't, instead of failing further along.

    Small fixes and polish

    • The block-explorer card was removed from the home page (with a subtle hover lift on
      the cards that remain), the slide-in arrow links were unified into one consistent
      style across the app (correct in right-to-left languages too), the FAQ article hover
      border was toned down, and the profile page now shows your identity glyphs without
      repeating the @handle, with friendlier titles like "Message @username" on other
      people's profiles.

    For operators

    • The welcome dust for new accounts was nudged up slightly so a brand-new account
      has a touch more headroom out of the gate. Funding requirements are otherwise
      unchanged.

    • As with recent betas, this release changes no third-party dependencies.

    Under the hood

    • Two fresh, independent code reviews re-ran the full test, type-check, and
      security-smoke suites from a clean slate. The first audited every text input across
      the site for injection and overflow risks and confirmed there's no stored-cross-site
      scripting hole. The second re-checked the new profile, avatar, and seed-import work
      and caught one privacy issue before release: the seed-import name lookup had been
      reaching a third-party node directly. It now routes through your operator's node like
      the rest of Morphit, with a regression check added so a future change can't quietly
      reintroduce a direct lookup.
    Downloads
  • v1.0.0-beta.31 444ce29527

    Morphit v1.0.0-beta.31
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 38s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 31s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 17m53s
    morphit-release / Build + publish release tarball (push) Successful in 18m43s
    Stable

    agorise released this 2026-06-25 23:42:42 +00:00 | 102 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release makes publishing to the chain more private and more reliable, fixes a
    settings bug that could show you another account's profile, polishes the sign-in and
    locked-screen experience, unifies the navigation arrows, fixes the desktop update
    banner, and clears out some obsolete account-creation machinery for operators.

    Nothing here changes how trading works, what anything costs, or what data Morphit
    keeps (still none of it). If you're already signed in, your account, keys, and
    balances carry over untouched.

    Privacy and reliability

    • Publishing to the chain now goes through your operator's own node. Previously,
      every action you published — placing or editing an order, sending a chat message,
      updating your profile, leaving feedback — was sent straight from your browser to a
      third-party Blurt node. That leaked your IP address and your exact action to a node
      Morphit doesn't control, and it broke entirely if that node went down or changed
      its settings. Now those writes travel through the same node that already serves the
      app, so outsiders never see your connection, and if anything does go wrong you get
      the real reason instead of a generic "couldn't broadcast" message. This matches how
      reading already worked, and it falls back to the old path automatically if your
      operator's node is briefly unreachable, so it can never be less reliable than
      before.

    • Fixed: switching accounts could show the previous account's profile. If you
      signed out and back in as a different account, the Settings page could show the
      earlier account's display name, short bio, and links. Profile drafts are now kept
      separately per account, the leftover shared drafts are cleared, and the form fills
      in from what's actually on chain for the account you're signed in as.

    • Clearer connection errors in Settings. The RPC-endpoint panel in Settings now
      tells you why a node isn't responding — "Timed out", "Unreachable", or the HTTP
      error — instead of only showing it as failing.

    Signing in

    • The header button says "Unlock" when your keys are saved. On a device that
      remembers your keys, the top-right button now reads "Unlock" (and takes you to the
      welcome-back screen) instead of "Start", which looked as if you had no account. A
      brand-new device still says "Start".

    • Refreshing a locked page sends you home. If you refresh, lock, or arrive on a
      page that needs you signed in — settings, posting, chat, backups, two-factor —
      while your session is locked, you now land on the homepage with that "Unlock"
      button, instead of being stranded on an empty page.

    • The password field is focused and ready. On the welcome-back screen you can now
      just type your password and press Enter; the field is focused automatically.

    • Matching icons on the sign-in buttons. The "sign in with your keys" and "use my
      phone" buttons now use crisp matching icons.

    Your profile, orders, and settings

    • Save-locally buttons everywhere they belong. The blurt.media and Nostr fields
      now each have a "Save locally only" button alongside "Save & broadcast", matching
      the short-bio field.

    • Small fixes: the blurt.media and Nostr inputs now show one clear colour per
      state instead of a doubled border, profile icons are spaced consistently, and the
      balance refresh button always shows a visible spin when you tap it.

    • Clearer "My Orders" when you're signed out. If you open your orders page before
      signing in — or on a locked device — the page now explains what to do in its own
      words (with both a "create an account" and an "I already have an account" option),
      rather than borrowing the wording from the order-posting screen. A locked device
      never reveals your past trades.

    Getting around

    • Unified navigation arrows. The back and forward arrows across the app now share
      one consistent style — they slide in the direction they point and turn green on
      hover, with no underline — matching the "Learn more" arrows on the homepage. They
      also point the correct way in right-to-left languages.

    • A tidier sign-up intro. The introductory explanation now appears only on the
      first sign-up step instead of repeating on every step.

    Updates

    • Fixed the "update available" banner on desktop. The banner could get stuck or
      reload the page on its own. Now it only reloads when you choose "Load it now", the
      "Later" button simply dismisses it for the session, and it reappears on its own if
      a newer version is deployed.

    Help / FAQ

    • FAQ links now scroll to the right place. Footer links into the FAQ (such as the
      AGPL-3.0 and API links) now smoothly scroll to and open the article they point at,
      even for articles far down the page.

    • A safer seed-import button. On the import screen, the "Unlock my account" button
      now activates only when you've entered exactly twelve words, so a stray paste can't
      light it up prematurely.

    For operators

    • Footer addresses show only what you've configured. The Tor, i2p, Lokinet, Nostr,
      and ENS pills in the footer now appear only for the networks you've actually set,
      instead of showing greyed-out placeholders for the ones you haven't.

    • ENS links to the bare name. An advertised ENS address now links to the bare name
      (e.g. morphit.eth), which ENS-aware browsers resolve directly with no centralized
      gateway.

    • Removed the obsolete weekly ACT-minting machinery. Since beta.28, account
      creation pays the chain's creation fee inline with a direct account_create op, so
      the old weekly "mint Account Creation Tokens" ceremony no longer exists. This
      release removes the leftovers that still referred to it: two dead systemd unit
      templates, a dead helper script entry, and stale instructions in the launch
      checklist, automation notes, security notes, and the Ansible deployment role that
      told you to run a command that no longer exists. What you need to do is unchanged
      and simpler:
      keep @morphit-relay funded with enough liquid BLURT to cover
      signups (about 100 BLURT per account). If you're upgrading from an older deploy that
      set up the weekly timer, you can remove the morphit-relay-mint-acts service and
      timer; they do nothing now.

    • As with recent betas, this release changes no third-party dependencies.

    Under the hood

    • A fresh, independent code review re-ran the full test, type-check, and
      security-smoke suites from a clean slate and confirmed everything passes, including
      a close look at the new same-origin publishing path (it only forwards the
      operations Morphit actually uses, the transaction stays signed entirely on your
      device, and it's rate-limited) and the per-account profile fix.
    Downloads
  • v1.0.0-beta.30 41f38fd40a

    Morphit v1.0.0-beta.30
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 39s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 31s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 17m29s
    morphit-release / Build + publish release tarball (push) Successful in 18m37s
    Stable

    agorise released this 2026-06-25 02:00:26 +00:00 | 103 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release fixes an important sign-in reliability problem, adds a short bio to your
    profile, tidies up the settings and sign-up screens, makes the navigation arrows
    easier to see, and gives operators a new decentralized address option plus a fix for
    a crash in the node-management tool.

    Nothing here changes how trading works, what anything costs, or what data Morphit
    keeps (still none of it). If you're already signed in, your account, keys, and
    balances carry over untouched — and thanks to the fix below, staying signed in is now
    more reliable.

    Staying signed in

    • Refreshing the page no longer signs you out. If you chose to be remembered on
      this device, a normal page refresh could quietly drop you back to the import
      screen, as if you'd never saved your keys. That's fixed: refreshing the page,
      closing a tab, or locking one tab now leaves your saved keys in place, and only a
      real sign out clears them. Signing out in one tab still signs you out of the
      others, as before.

    Your profile and settings

    • New: a short bio. You can add an optional short bio (up to 128 characters) to
      your profile from Settings. It appears under your name on your profile page. Like
      your display name, you can save it on this device only or broadcast it so other
      instances see it.

    • Clearer save buttons. The two profile-save buttons are now labelled
      "Save locally only" and "Save & broadcast", with a one-line explanation of each
      above them, so it's obvious which one keeps a change on your device and which one
      publishes it.

    • A tidier settings screen. The avatar card moved up next to your account name,
      some wordy explanations were trimmed, and the auto-lock timer now shows a brief
      "Changed to …" confirmation when you pick a new value.

    Signing up

    • A progress bar. New accounts now see a simple "Step X of Y" progress bar during
      sign-up, so you can tell how far along you are. (If you're importing an existing
      account, you won't see it — that path is a single step.)

    Getting around

    • Bigger, clearer navigation arrows. The small back and forward arrows around the
      app are now larger and easier to see, and they match the colour and size of the
      text next to them. They also point the correct way in right-to-left languages.

    • Consistent back links. The "back" links at the top of the block explorer,
      privacy, and two-factor pages now all use the same clear styling instead of three
      different colours.

    Two-factor settings

    • A clearer two-factor page. The authenticator-app two-factor settings page got a
      visual tidy-up — its expandable sections are easier to spot, the recommended and
      not-recommended app lists are alphabetised, and the headings are clearer. (How
      two-factor works is unchanged.)

    For operators

    • A new decentralized address option: ENS (.eth). Your instance can now
      advertise an ENS .eth name alongside its Tor, i2p, and Lokinet addresses. It
      appears in the footer and on the instances page and links out through .eth.limo,
      giving visitors another censorship-resistant way to reach your node. Set it from
      the init wizard or the morphit-ops alt-address command; it's a display-only
      pointer, so there's no key to manage.

    • Fixed: the morphit-ops menu could crash after an upgrade. If you ran
      morphit-ops from a directory that had been replaced during an upgrade, choosing
      most menu items (edit settings, alternate addresses, status, and so on) would crash
      with a uv_cwd error. The tool now recovers cleanly and works regardless of which
      directory you launch it from.

    • As with recent betas, this release changes no third-party dependencies.

    Under the hood

    • A fresh, independent code review of the recent changes re-ran the full test and
      type-checking suite from a clean slate and confirmed everything passes, with the
      sign-in fix above pinned by an automated regression test so it can't quietly return.
      A few internal code comments were also brought back in line with how the sign-in
      code now actually behaves.
    Downloads
  • v1.0.0-beta.29 5199375ae9

    Morphit v1.0.0-beta.29
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 42s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 33s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 15s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 18m7s
    morphit-release / Build + publish release tarball (push) Successful in 18m41s
    Stable

    agorise released this 2026-06-24 03:11:16 +00:00 | 104 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release is mostly about making your account protection more trustworthy and
    your wallet and profile screens more accurate. The biggest work happened in the
    parts you can't see — the code that guards your keys — but there are also a number
    of visible fixes across the wallet, the profile, sign-up, the block explorer, and
    the operator tools, plus a new FAQ entry explaining why Morphit is licensed the way
    it is.

    Nothing here changes how trading works, what anything costs, or what data Morphit
    keeps (still none of it). If you're already signed in, you don't need to do
    anything; your account, keys, and balances carry over untouched.

    Your account protection

    • Changing your password no longer risks your hardware key. If you protect your
      account with a YubiKey, changing your password used to quietly drop the hardware
      key — afterwards the key could no longer unlock you. That's fixed: a password
      change now keeps every unlock method you've set up exactly as it was, hardware key
      included. (Two-factor authenticator codes were always preserved, and still are.)

    • Enrolling a hardware key now proves it actually works first. When you add a
      YubiKey, Morphit now checks that the key produces a real, unique response before it
      trusts it for unlocking — and refuses to finish if it can't. This closes a subtle
      way a misbehaving key or browser could have left you with a "protected" account
      that wasn't genuinely protected. Your password remains a fallback, so a bad key can
      never lock you out.

    • A long-standing flaw in the encrypted key store was fixed. A wrong internal
      setting meant the hardware-key / layered key-store path could fail when writing —
      it now works correctly. This path requires a physical key, so it never affected
      password-only accounts.

    Wallet and profile

    • Voting power now matches your Blurt wallet. The "Voting" figure on your balance
      card and on explorer account pages now uses the same calculation Blurt's own wallet
      shows, to two decimals, instead of a different measure that could read low.

    • The balance card refreshes on demand and animates changes. A refresh button
      (matching the one on explorer pages) lets you pull fresh numbers, and changed
      balances count up smoothly rather than jumping.

    • Your profile picture is consistent everywhere. The little identicon in the
      account menu now always matches the one on your profile and settings — it used to
      occasionally show an older version until a full page reload.

    • Clearer sign-up. While you type a username, the claim button now previews
      "Claim my @yourname username now" in real time, the field shows a clear invalid
      state when a name is taken or reserved, and the "are you sure you want to leave?"
      prompt wording is plainer.

    • Smaller touches. The on-screen private key now carries a lock icon so it's
      obvious it's secret; low-balance hints are now a readable amber with a warning
      icon; a duplicate "sign out" button was removed from settings (the one in the
      account menu stays); and several support and explorer links now open correctly in
      a new tab.

    • Block explorer link fixes. Transaction and block links that could land on a
      "not found" page now resolve correctly, and the account page shows all four Blurt
      key types (owner, active, posting, memo).

    Connectivity

    • The node list is clearer and sortable. Your settings now list the relay/index
      nodes best-first, with a refresh button to re-check their speeds, latencies shown
      in seconds (turning amber when a node is slow), a plain "Error: " when a node
      is failing, and the full set of network nodes shown — including the ones your
      browser can't reach directly but your instance uses behind the scenes.

    A note on the license

    • New FAQ: "Why does Morphit use the AGPL-3.0 license?" A short, plain-language
      explanation of the privacy-and-freedom reasoning behind Morphit's copyleft license
      — why it's a better fit than permissive or no-license alternatives for software
      meant to be forked and run by anyone. The "AGPL-3.0" text in the footer now links
      straight to it.

    For operators

    • Two i2p addresses, not one. Your instance can now advertise both an
      always-resolvable .b32.i2p address and a human-readable .i2p vanity address
      (either, both, or neither), set independently. Existing single-address setups keep
      working.

    • Editing one alternate address no longer wipes the others. A bug in the main
      morphit-ops menu could erase your Tor, i2p, or Nostr addresses when you edited a
      different one. Editing alternate-network addresses now keeps the values you don't
      touch, the same way Branding & SEO already did. If your live instance lost its Tor
      onion to this, you can re-add it from the dedicated alt-address command without
      waiting — it's per-network and won't disturb the rest.

    • Node-health shows your sign-up funding at a glance. The morphit-ops node
      health view now surfaces your relay's account-creation funding status alongside
      version and uptime.

    • The desktop "update available" prompt now appears reliably, and a caching bug
      that made the footer occasionally "forget" your instance's name (and could serve
      stale data on mobile) is fixed; the fix heals itself on the next deploy with no
      hard reload needed.

    • As with recent betas, this release changes no third-party dependencies.

    Under the hood

    • The cryptographic core of both two-factor methods is now covered by automated
      tests
      for the first time — the full hardware-key enroll-and-unlock round trip and
      the authenticator-code enroll-and-verify flow, including that codes survive a
      password change, plus the new enrollment-verification guard described above.

    • The hardware-key USB transport has a complete, documented diagnosis of what still
      needs fixing on real hardware.
      The browser-to-key byte protocol has known issues
      that can only be verified and corrected with a physical key in hand; rather than
      guess, the exact problems are now written down in the code, and the enrollment
      guard above prevents an unverified key from ever being trusted in the meantime.

    Downloads
  • v1.0.0-beta.28 d18868dd80

    Morphit v1.0.0-beta.28
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 1m2s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 43s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 16s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 23m53s
    morphit-release / Build + publish release tarball (push) Successful in 25m10s
    Stable

    agorise released this 2026-06-23 06:36:04 +00:00 | 105 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release changes how your instance creates new Blurt accounts at signup, so
    that it uses the only account-creation method Blurt still supports. Until now the
    relay relied on Blurt's Account-Creation-Token system — minting tokens ahead of
    time and spending one per signup. Blurt disabled that system at a hard fork (both
    of its operations now hard-fail on the chain), so the relay now creates each
    account with a direct account-creation operation instead, paying the chain's
    account-creation fee inline at the moment someone signs up.

    For people signing up, nothing changes: registration still costs you nothing, you
    still get the welcome bonus after your first completed trade, and listing fees are
    unchanged. The difference is entirely on the relay's side — how it talks to the
    chain to create your account.

    Behind Morphit's beta access gate this hadn't surfaced as a visible failure yet,
    but the old token-based path would have blocked signups on any public instance.
    This release puts account creation back on a working footing.

    Changed

    • New accounts are created with a direct account-creation operation. The relay
      now pays the chain's account-creation fee (about 100 BLURT) inline, per signup,
      reading the exact current fee from the chain each time so it always matches what
      the network requires. The previous token-based approach — minting Account
      Creation Tokens in advance and consuming one per signup — is gone, because Blurt
      no longer allows either token operation. The account that ends up created, the
      one BLURT of starter bandwidth it receives, and the welcome bonus after a first
      trade are all exactly as before.

    For operators

    • No more token minting — keep the relay funded instead. There is no longer a
      weekly token-minting ceremony, no in-process auto-minter, and no mint-acts
      script or timer. Your relay creates each account by paying the fee directly from
      its liquid BLURT, so the one thing it needs is enough BLURT on hand to cover your
      signups (roughly 100 BLURT each, plus the welcome bonuses for people who go on to
      trade). When the balance runs low the relay pauses signups cleanly and your
      alert bot messages you over Matrix; top it up and signups resume on their own
      within about thirty seconds. The total cost is the same as before — only the
      timing changed, from pre-paying a weekly batch to paying per signup.

    • Upgrading from an earlier deploy: after morphit-ops upgrade, remove the
      leftover token-minting pieces if you set them up — the
      morphit-relay-mint-acts.service and .timer units, and any
      MORPHIT_RELAY_AUTOMINT_* or MORPHIT_RELAY_WEEKLY_ACT_COUNT lines in your
      relay's environment file. They no longer do anything. The funded-balance alert
      you may already have configured (the indexer's relay-balance threshold) keeps
      working unchanged. See OPERATIONS.md §0a for the funding math and §47 for the
      low-balance alerts. As with recent betas, this release changes no third-party
      dependencies.

    Under the hood

    • A regression guard pins the new path. A new automated check verifies that the
      relay builds the direct account-creation operation with the fee paid inline and
      the exact field layout the chain expects, and fails if anyone ever tries to bring
      back the disabled token operations. The key-custody design is unchanged — the
      same online key that signed the old operation signs the new one — and the
      architecture decision record and operator runbook have been updated to match.
    Downloads
  • v1.0.0-beta.27 7a5415a8a1

    Morphit v1.0.0-beta.27
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 1m0s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 42s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 22m40s
    morphit-release / Build + publish release tarball (push) Successful in 23m45s
    Stable

    agorise released this 2026-06-23 03:10:48 +00:00 | 106 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    A small reliability release with one fix at its heart: your instance now routes
    around a Blurt RPC node that has gone down, instead of getting stuck on it. Every
    instance talks to a set of public Blurt nodes for reading the chain and
    broadcasting operations, and it already prefers the fastest one and fails over
    when a node times out or refuses the connection. But if a node's upstream proxy
    answered with an "origin is unreachable" error (the 520–527 status range), the
    instance treated that as a normal rejection and gave up on that request rather
    than trying another node. That's fixed: those errors are now recognized as "this
    node is unreachable — try the next one," so reads and broadcasts hop past a dead
    node automatically.

    The most visible symptom of the old behavior: a relay with a healthy BLURT
    balance could still mint zero account-creation tokens if the one node it
    reached for that broadcast happened to be down — the auto-minter would log a
    single failure and stop. With this release, a single down node no longer stalls
    account-creation token minting, signups, or anything else the relay or indexer
    broadcasts; the instance simply uses a node that's up.

    For operators: morphit-ops upgrade handles this release the usual way — it runs
    npm ci and rebuilds the web frontend, the command-line tools, and the MCP
    server for you. Like the last several betas, this release changes no
    third-party dependencies
    , so there's no special install step. Managing which
    Blurt RPC nodes your instance uses is the relay and indexer's job (with the
    upgrade flow keeping the defaults current) — never something you should have to
    hand-edit while the software is running.

    Fixed

    • Your instance routes around a downed Blurt RPC node. When a node's upstream
      proxy returns an "origin unreachable" error (HTTP 520–527 — e.g. 521 "web
      server is down"), the instance now classifies it as an unreachable endpoint and
      rotates to a healthy node, applying the same back-off it already uses for
      timeouts and rate limits. Previously these surfaced as ordinary errors, so a
      single down node could dead-end a request. This is what could leave a
      fully-funded relay minting zero account-creation tokens — its fastest node was
      down and it didn't fail over. Reads and broadcasts both recover now.

    For operators

    • Fresh Ansible deployments point at the current Blurt nodes. The Ansible
      deployment defaults pinned the indexer to a Blurt RPC node that has since been
      decommissioned (and the egress firewall opened only that node), so a brand-new
      Ansible install could come up unable to reach a working node. The defaults now
      use the current canonical set of six Blurt RPC endpoints, and the egress
      allowlist matches. If you deployed via Ansible and chose your own endpoints,
      nothing changes for you. (Installs created by morphit-ops init were never
      affected — they already used the canonical set.)

    Under the hood

    • More regression guards. New automated checks pin both fixes so a future
      change can't quietly undo them: the RPC pool's "try another node" logic is
      tested against the full origin-unreachable status range (including the exact
      error a relay saw in the field), and the canonical-endpoint guard — which keeps
      every copy of the node list in sync — now also covers the Ansible deployment
      defaults, the one place the list had been allowed to drift.
    Downloads