• v1.0.0-beta.46 36bec4f24d

    Morphit v1.0.0-beta.46
    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 20m34s
    morphit-release / Build + publish release tarball (push) Successful in 21m20s
    Stable

    agorise released this 2026-07-04 06:49:07 +00:00 | 79 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    A large privacy, correctness, and polish release rolling up several batches of
    work on top of beta.45. Two changes stand out. First, your browser no longer
    talks to any third-party Blurt node
    — every chain read and write now goes
    through your own Morphit instance, so outside node operators never see your IP
    or what you're doing. Second, paying a listing fee in Blurt now works — it
    was being rejected by the chain before, and that's fixed. Alongside those,
    federated operators now earn their share of Blurt listing fees directly at the
    moment of each order, the home and orderbook pages are far more discoverable,
    and the orderbook, explorer, chat, post, and onboarding screens all get a round
    of fixes. Recommended for all operators.

    Added

    • Independent payment verification. When someone pays you in Blurt inside
      chat, the confirmation now offers an optional "Verify on block explorer" link.
      It opens an independent, third-party Blurt explorer so a cautious seller can
      confirm a payment landed on-chain without having to trust the instance
      operator. It's opt-in (opening it reveals your IP to that explorer, by your
      choice), so it stays off unless you use it.

    • Search inside an order's details. The orderbook gains an "Order details"
      search box that filters the listings you're viewing by the free text sellers
      write in their terms — in any language or script — and highlights the words
      you searched for. It's an instant, on-page filter, so it never triggers a new
      network request.

    • Clearer transaction data in the explorer. The block explorer's
      transaction view now pretty-prints structured data that used to appear as one
      long escaped line, making Morphit operations much easier to read.

    Changed

    • Your browser never contacts a Blurt node directly. Previously a few
      actions — broadcasting a signed transaction, checking a payment, verifying a
      chat identity, and the settings page's node-health card — reached out to
      public Blurt nodes straight from your browser, which leaked your IP and your
      activity to operators Morphit doesn't control. All of that now routes through
      your own instance instead. The single deliberate exception is release
      verification, which stays direct on purpose: it's an anti-tamper check, and it
      would be meaningless if it trusted the very instance it's meant to verify. For
      the same reason, the new "Verify on block explorer" link above lets you
      independently confirm a large Blurt payment yourself.

    • Federated operators earn their Blurt listing-fee share directly. When a
      buyer pays a listing fee in Blurt, the payment now splits at that moment — the
      operator of the instance receives their 90% into the account they've
      configured, and 10% goes to the canonical Morphit treasury, all in a single
      transaction. (On the canonical instance, or when an operator hasn't set a
      valid account, it simply collects as one payment to the treasury.) This
      replaces the older forwarded-payout mechanism, which only settled correctly
      when one party ran both the treasury and the relay. Fees paid in BTC or XMR
      continue to go entirely to the canonical accounts.

    • Much better discoverability. The home and orderbook pages have rewritten
      titles, descriptions, and keywords aimed at what people actually search for
      now that LocalMonero, LocalBitcoins, AgoraDesk, and Paxful have all shut
      down — a no-KYC, peer-to-peer, over-the-counter way to buy and sell Monero and
      Bitcoin. All of it is fully translated into every supported language.

    • The Blurt listing-fee step reads more clearly. The wording on the post
      page around paying in Blurt, the Monero fee hint (which now reminds you to
      include your payment proof), and the "posted by" summary shown while you sign
      are all tidied up, and the account-password prompt now names the account
      you're signed in as.

    • Onboarding, chat, and settings polish. The import tabs are readable
      against their background, the YubiKey enrollment form is centered, chat's
      send button lines up with the composer, a one-time "Chat Security" reminder
      dot is easier to notice, and the node-health card in settings explains in
      plain language that your instance handles all Blurt traffic for you.

    Fixed

    • Paying a listing fee in Blurt no longer fails. A Blurt-paid order, feature
      bid, or stranger-message fee was being rejected by the chain because the
      order and its fee payment were signed at two different permission levels in a
      single transaction, which Blurt doesn't allow. Orders, bids, and fees paid in
      Blurt now go through correctly, while paths that don't pay a Blurt fee are
      unchanged. If you'd previously only tested with BTC/XMR fees or the first-buy
      waiver, Blurt-fee orders will now work.

    • No more red flash on the orderbook. A brief "indexer unreachable" error
      card could flash on the orderbook while the first data loaded and then vanish.
      That transient flash is gone; a genuine, lasting connection problem still
      shows — now as a calm, non-alarming notice with a retry.

    • A clearer message when your browser blocks web push. If notifications
      can't be enabled because a privacy browser or an ad/tracker blocker is
      blocking web push (a common situation with Brave Shields or uBlock Origin),
      the app now says so plainly instead of suggesting you simply try again.

    • A stray autofill highlight and a couple of small layout issues on the post
      and settings pages are corrected.


    Morphit is non-custodial and no-KYC: it never holds your funds and never asks
    for identity documents. This is beta software under active development — please
    report anything that looks wrong.

    Downloads
  • v1.0.0-beta.45 1c40e6dcd9

    Morphit v1.0.0-beta.45
    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 32s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 20m24s
    morphit-release / Build + publish release tarball (push) Successful in 21m12s
    Stable

    agorise released this 2026-07-03 18:24:29 +00:00 | 80 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    A usability and correctness release on top of beta.44. The headline is a
    much simpler sign-in for people who bring an existing Blurt account: the
    posting-key import no longer asks you to type your username — Morphit
    detects it from your key. Alongside that, order terms now support light
    formatting, there's a public network-statistics page, operators can
    auto-generate an I2P address for their node, and a confusing listing-fee
    error is fixed. The rest is chat, post-page, and onboarding polish.
    Recommended for all operators.

    Added

    • A public network-statistics page. A new /v1/stats endpoint and a
      human-readable stats page (linked from the footer) show network-wide
      numbers at a glance, with a link to the raw JSON for anyone who wants
      it. Times are shown in 24-hour UTC, consistent with the rest of the
      site.

    • One-click I2P for your node. Operators can now auto-generate an
      I2P b32.i2p destination for their instance as part of setup, making
      it easier to run Morphit as a censorship-resistant hidden service. The
      Ansible role and the run-a-node docs cover the new option.

    • Formatting in listing terms. When you write the terms of an order
      you can now use a small set of Markdown — headings, bold,
      italics, bulleted and numbered lists, and horizontal rules — and it
      renders cleanly on the order page. On the compact browse cards the
      formatting is stripped to a single tidy line so the list stays scannable.
      (Terms remain safe to display: the formatting is rendered without ever
      turning attacker-supplied text into live code or clickable links beyond
      the existing Blurt image-link support.)

    Changed

    • Signing in with a posting key is simpler. You no longer type your
      Blurt account name — Morphit detects it automatically from the key you
      paste. The explanation on that screen is also clearer about what a
      posting-key login does: you can read, post, and trade with others, but
      you won't get the discounted Blurt listing-fee rate (paying the fee in
      Blurt needs your active key, which a posting-key login doesn't carry —
      pay in BTC/XMR, or sign in with your 12-word seed or Keyfile instead).

    • The listing-fee step is clearer when you pay in Blurt. Paying the
      fee in Blurt is a signed transfer that needs your active key, so the
      post page now says so plainly, disables the Blurt option (with a short
      explanation) when you're signed in with a posting-key-only session, and
      keeps a summary of the order you're about to sign visible on the
      password, posting, and error steps rather than showing a bare password
      box.

    • The "posted by" card on an order now matches the orderbook cards.
      The poster's avatar, name, reputation, and trade count are shown
      identically wherever you see them, so an order page and its card look
      consistent.

    • Chat action buttons only appear when there's a trade to act on. The
      pay-now, share-address, and shipment buttons no longer show up in a
      plain message opened from someone's profile — they appear only when the
      conversation is tied to a live order, and they follow which side of the
      trade you're on.

    • Clearer FAQ. The "How do I buy crypto?" and "Can I trade goods and
      services?" answers were rewritten with concrete step-by-step examples,
      including trading physical goods and services for crypto.

    • Onboarding and interface polish. Friendlier, plain-language titles
      on the funds-sent and pay-in-Blurt dialogs; better contrast on chat
      message bubbles; refined buttons on the settings screen; a short hover
      delay on the asset tooltips so they don't flicker as you move across
      the grid; a Clear button on the short-bio field; and proper app icons
      for installing Morphit to a phone home screen.

    Fixed

    • A misleading "couldn't broadcast" error when posting. If you tried
      to pay the listing fee in Blurt from a posting-key-only session, the
      page used to report that the blockchain rejected your post — when in
      fact the post never left your device, because that session has no
      active key to sign the fee transfer. The message now explains the real
      cause and points you to a fee method that works.

    This is a beta release, published to the project's Forgejo instance at
    git.agorise.net/agorise/morphit.
    Morphit is AGPL-3.0 and non-custodial: it never holds or moves your
    funds, and all signing happens in your browser.

    Downloads
  • v1.0.0-beta.44 39593dfbbe

    Morphit v1.0.0-beta.44
    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 33s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 20m26s
    morphit-release / Build + publish release tarball (push) Successful in 21m26s
    Stable

    agorise released this 2026-07-02 06:44:09 +00:00 | 82 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    A big round of chat and trust improvements. The headline: you can now export any
    conversation as a locked, court-ready PDF whose every message is anchored to the
    blockchain — real recourse if a trade ever goes sideways. Chat also got noticeably
    faster, the chat page was rebuilt to be clearer, traders now carry a reputation
    score (not just a trade count), and dates everywhere are now unambiguous UTC.
    Nothing about how trades or fees work has changed.

    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.
    This release adds one new dependency — the jsPDF library that builds the chat
    export — and it's fetched only at the moment you actually export a conversation, so
    it costs nothing until you use it.

    Prove what was agreed — export a chat as a court-ready record

    • One-tap, tamper-resistant export. Open a conversation's ⋯ menu and choose
      "Export chat." Morphit builds a locked PDF (view / print / copy only — not
      editable) containing every message, each with its UTC timestamp and its Blurt
      transaction ID as a "Blockchain proof."
    • Anchored to the chain, not to trust in the file. Because each line cites its
      on-chain transaction, anyone — a mediator, a small-claims court — can independently
      re-verify it against the public blockchain. A plain-language page inside the PDF
      explains exactly how. Editing a line would break the match.
    • Peace of mind. It can't force a dishonest counterparty to do the right thing,
      but it replaces "he said / she said" with a permanent record built to hold up
      outside Morphit. The export happens entirely on your device from your already-
      decrypted messages — no plaintext ever leaves your browser.

    A reputation score, not just a trade count

    • A 0–5 score alongside the trade count. Each trader now shows two separate
      signals: how much they've traded (the count) and how good that history is (a
      0–5 reputation score). The score rewards sustained good behaviour and resists a
      newcomer looking like a veteran off a single glowing review.
    • It can't be bought with volume. The score shrinks a thin rating toward neutral
      and only grants an experience/recency bonus once the rating is already above
      neutral — so a high-volume scammer stays low. As with the underlying rating, the
      math is transparent: the public reputation endpoint returns the full breakdown so
      anyone can re-derive the number.

    Chat is faster and clearer

    • Messages appear in seconds. New messages now show up in roughly 3–6 seconds
      instead of waiting the ~45–60 seconds it used to take for the chain to finalize.
      Nothing about the encryption or on-chain durability changed — you just see the
      message sooner.
    • A rebuilt chat page. The header now reads "Chatting with" and shows your
      counterparty's avatar, name, shortened posting key, and the order it's about (with
      a link straight to that order). Each run of messages is labelled with the sender's
      cryptographic identity, so you can confirm who you're talking to at every turn.
    • Tap a message for its exact time, in the same day-first UTC format used
      everywhere else.
    • Action buttons that fit the trade. "Share address" and the payment button now
      appear only when they apply to your side of the trade. "Mark funds sent" is now
      "Pay now," and for a Blurt payment it's sent straight from the app — no copying a
      transaction ID by hand.
    • Block moved into the menu. "Block / Unblock" is now a tidy option in the ⋯
      menu instead of a standalone button.
    • Better on mobile. The composer and Send button sit on one line, the chat fills
      the screen with the box always visible, and your own sent messages read correctly
      when you come back to a conversation.

    Placing and editing an order

    • Cleaner order cards. Browse cards are a single tidy column: the reputation
      score and trade count sit under the trader, the price model ("Fixed price" /
      "Market rate") shows at a glance, and a stablecoin's network is shown as a compact
      chip. The "Message" button stacks with the trader's name; the hide control tucks
      into the corner.
    • The edit-order page actually saves now. Fields that can't be changed after
      posting (side, asset, currency, network) are shown as a locked summary instead of
      looking editable, so a change can't silently fail. The still-editable fields got
      the same helpful hints as the posting form.
    • Selling reads like selling, and the post button reads "Pay and Post this order"
      so it's clear the listing fee is part of the same step. "Cash machine with code"
      (cardless ATM) is a selectable payment method.

    Timestamps everywhere are now UTC

    • One unambiguous format. Dates and times across the site — pages, the chat
      export, everywhere — now read like "30 June, 2026 @ 16:45:18 UTC": day-first, the
      month in your language, a 24-hour clock, a literal UTC label, and seconds. No more
      guessing whose time zone a timestamp is in.

    Fixes and polish across the app

    • Fresh look. The interface font is now Comfortaa.
    • Right controls on the right devices. "Sign in to another device" and "Use
      phone instead" now appear only where they make sense (phone vs. desktop), including
      on touch-screen laptops.
    • Explorer tidy-ups. Transaction pages now fill in their details instead of
      showing placeholders; account pages round long balances on mobile with tap-to-
      reveal and show a trader's custom avatar; the "tx:" / "block:" labels are readable
      and only the ID itself is a link.
    • Homepage & navigation. The "Start trading" prompt no longer shows when you're
      already signed in but locked; the language switcher sits neatly in the footer; a
      logged-out "Message @username" click lands on sign-in, not onboarding.

    Under the hood

    • Hardened the PDF export. The chat export uses a current, advisory-free release
      of its PDF engine (jsPDF 4.2.1) — chosen specifically so a court-facing document
      isn't built on a component with known vulnerabilities.
    • Push-notification reliability. A malformed push key on an operator's instance
      is now caught and reported, and push is disabled rather than failing silently.
    • Leaner pages. The heavy PDF and key-derivation code no longer loads on every
      page — it's fetched only when needed.
    Downloads
  • v1.0.0-beta.43 c3fc2d32f7

    Morphit v1.0.0-beta.43
    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 33s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 20m13s
    morphit-release / Build + publish release tarball (push) Successful in 21m19s
    Stable

    agorise released this 2026-07-01 05:28:08 +00:00 | 83 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Another broad round of polish across placing an order, the order and orderbook pages, your
    own orders, chat, and feedback — plus one meaningful trust improvement: the person behind
    an order now shows their cryptographic identity, not just a display name. Nothing about how
    trades or fees work has changed.

    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. This release
    changes no third-party dependencies.

    You can see who you're really dealing with

    • A poster's cryptographic identity, shown up front. An order's detail page now prints
      the poster's shortened public posting key directly under their display name. A display
      name can be changed to imitate someone else; the posting key cannot. So if a would-be
      impersonator picks a look-alike name, the key gives you a durable, on-chain identity to
      check against — and a concrete reference point should a dispute ever arise.

    Placing an order is clearer

    • Selling reads like selling. When you choose to sell, the questions now match: "Which
      fiat currency will your sale be valued in?", "What will you accept?", and "I will accept"
      — instead of buy-oriented phrasing.
    • Shorter asset explanations. The plain-language blurb that appears when you hover an
      asset no longer repeats the trade-only note; it's tighter.
    • Clearer action button. The button that posts your order now reads "Pay and Post this
      order," so it's obvious the listing fee is part of the same step (and it no longer shows
      the fee amount twice).
    • New payment option. "Cash machine with code" (cardless ATM withdrawal) is now
      available to select.

    Order and orderbook pages

    • Tidier order details. The terms now sit up under the location, and the "posted on" and
      "expires on" dates sit side by side — a more compact card, including on a phone.
    • Cleaner orderbook cards. Each card is now a single column with the "Message" button
      centered and the hide control tucked into the bottom-right corner. The "last updated" time
      is no longer a separate line — hover the countdown pill to see it.

    Your orders

    • Consistent "Live" badge. The Live status now carries the same bright green outline used
      elsewhere.
    • A real answer to "why isn't my order showing?" Following the "posted an order but don't
      see it?" link now lands on a short explanation, and each order clearly states its listing-fee
      status — verified, underpaid, or not yet received — which is the usual reason an order isn't
      visible in the public orderbook yet.

    Feedback

    • A calmer feedback form. Leaving feedback now uses a plain card with hover-to-fill stars,
      and the separate "announce your first trade" box has been removed. Announcing your first
      trade still happens automatically (you can turn it off in Settings and on the order form).
    • Clearer "feature your order." The promote-your-order form shows the cost in your own
      currency, uses a clearer heading, and gives proper feedback when a password is wrong.

    Chat

    • Less clutter on mobile. The blue first-trade helper box now starts collapsed (tap to
      open) and scrolls properly with the conversation, and the "LIVE" badge no longer crowds a
      long display name.

    Avatars are unique

    • No copying someone else's picture. Every avatar — including a custom uploaded one — is
      now unique across accounts. You can still remove your own avatar and re-upload the same
      image; you just can't take one that already belongs to another account.

    Plainer wording and smaller fixes

    • Footer links now highlight in Morphit green in dark mode too.
    • The social-link icons were removed from the more crowded spots (they remain on profiles).

    For node operators

    • Avatar uniqueness runs in the indexer. Your instance now rejects a profile that tries
      to claim an avatar image already used by another account (a person re-uploading their own
      image is unaffected). This arrives with the usual morphit-ops upgrade; no configuration
      or migration steps are required.
    • No configuration changes, and no third-party dependencies changed this release.
    Downloads
  • v1.0.0-beta.42 f4cdf3ecb6

    Morphit v1.0.0-beta.42
    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 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 20m5s
    morphit-release / Build + publish release tarball (push) Successful in 20m57s
    Stable

    agorise released this 2026-07-01 00:18:15 +00:00 | 86 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release is a broad round of polish across the parts of Morphit you touch most: placing
    an order, reading your balance, browsing the block explorer, and chatting with a
    counterparty. Nothing about how trades or fees work has changed — most of this is clearer
    wording, plainer screens, and a couple of fixes to states that looked broken but weren't.
    There's also one new convenience: you can now claim pending Blurt rewards right from your
    balance card.

    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. This release
    changes no third-party dependencies.

    Placing an order is clearer

    • Plainer first step. The opening choice now reads "I want to buy" / "I want to sell"
      rather than mentioning "crypto."
    • Friendlier asset picker. The assets you can trade are now listed alphabetically, each
      with its own coin icon, and a short plain-language explainer appears when you hover (or tap
      on a phone) — the separate little ⓘ bubbles are gone.
    • More helpful limits. If you accidentally set a minimum higher than your maximum, the
      notice now appears right above the price section in clear red, with an offer to swap them.
      "Leave blank for no limit" now shows under both the minimum and maximum fields.
    • Top-up lands ready to go. "Top up BLURT" now opens the order form pre-filled with a
      sensible small minimum — about five dollars' worth, shown in your preferred currency — and
      a hint telling you so, instead of a fixed figure.
    • Gentle hover cues. The buy/sell choices and asset blocks now highlight softly in
      Morphit green when you point at them; locked or already-selected ones correctly stay put.

    Your balance card

    • Claim your rewards. If you have unclaimed Blurt rewards, a line now appears on your
      balance card showing the amounts, with a "Claim now" button. Claiming animates your
      balance up to its new total. (On a paired read-only device the line still shows, as
      information, but claiming happens from your main signed-in device.)
    • Tap to see exact amounts (mobile). On a phone, the rounded balance figures can now be
      tapped to reveal the exact amount.
    • Tidier layout. Top-up sits on the left, Export (now with a download icon) on the
      right, with the clutter removed. The "earning interest" line reads "Earning X% APR."

    The block explorer reads like a sentence

    • Plain-language activity. Instead of raw operation names, the explorer now describes
      what happened: "@alice sent 55 BLURT to @bob (with memo)," "@alice replied to @bob,"
      "@alice downvoted @bob," "@newuser account created," and so on. For privacy, a transfer
      only notes that a memo was attached — never its contents.

    Chat

    • Dark mode on mobile. Several chat surfaces that didn't fully respect dark mode on a
      phone now do.
    • Clearer "turn on notifications." When the "Turn on chat notifications" prompt can't
      enable them, it now tells you exactly why — for example, that you declined the browser
      permission, or that this instance hasn't switched on push delivery — with a proper warning
      icon, instead of one vague message. (If your operator hasn't enabled push, the in-tab
      notifications still work.)

    Settings — blocked accounts

    • Always current. The blocked-accounts list now refreshes the moment you open Settings,
      so it always reflects who you've currently blocked. Previously it could look empty after
      navigating away and back until you pressed Refresh. Blocking and unblocking are also more
      robust against a brief list flicker if you act while the list is still loading.

    Plainer wording throughout

    • "Blockchain," not jargon. Many spots that said "the Blurt blockchain" now simply say
      "blockchain," and there's a new, plain-English "Blockchain" entry in the glossary.
      Delegation is explained more simply, too.
    • Identity labels. Where a person's public posting key is shown next to their name, the
      shortened key now sits on its own line beneath the name rather than crowding it.

    Smaller fixes

    • A currency / exchange-rate handling fix, and some orderbook and settings polish.
    • The "announce my first trade" prompt now appears only on a genuine first trade.
    • The backup-keys page dropped a redundant line of copy.

    For node operators

    • The reward-claim feature touches the indexer. Your instance's balance endpoint now
      reports any pending reward amounts, and claim_reward_balance was added to the
      same-origin broadcast allow-list so claiming never falls back to a privacy-leaking direct
      RPC call. These come with the usual morphit-ops upgrade; no configuration or migration
      steps are required.
    • Web push reminder. The clearer chat-notification message makes it obvious when push
      isn't available. If you want chat push notifications to work for your users, set the VAPID
      environment variables as described in OPERATIONS.md §42 (generate them once with
      scripts/generate-vapid-keys.sh). Without them, the relay simply reports push as
      unavailable and clients fall back to in-tab notifications.
    Downloads
  • v1.0.0-beta.41 f7005170e2

    Morphit v1.0.0-beta.41
    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 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 19m57s
    morphit-release / Build + publish release tarball (push) Successful in 20m44s
    Stable

    agorise released this 2026-06-30 06:17:07 +00:00 | 88 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release is mostly a visual tidy-up. The app's accent colours are now consistent across
    every screen, the source-code mirror list on the download page shows each host's real logo,
    and an order's "expires in…" countdown reads the same wherever you see it. There's also a
    small fix to how one rare order state is labelled.

    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. This release
    changes no third-party dependencies.

    A consistent coat of paint

    • One set of accent colours, everywhere. A slightly off-brand brownish-amber had crept
      into a handful of spots over time — some status pills, a few warnings, the
      near-the-limit character counter, the order-expiry countdown. Those are gone. The app now
      uses one consistent palette: Morphit green for positive and active things, red kept
      strictly for warnings and destructive actions, teal for informational notes, and a
      neutral grey for plain status. Nothing about how anything works changed — it just looks
      tidier and more of-a-piece, in both light and dark mode.
    • Steadier link hovers. A couple of navigation links could show an off-colour hover
      state; they now match the rest of the interface.

    Finding the source code

    • The mirror list shows real logos. The download page lists the places Morphit's source
      is mirrored. GitFlic and Radicle used to share a generic Git mark; they now show their own
      logos — GitFlic's bear and Radicle's pixel mark — drawn in the same single-colour style as
      the GitHub, Codeberg, and GitLab icons, so they adapt cleanly to both light and dark mode.

    Watching an order's clock

    • One countdown style, everywhere. An order's "Expires in 5d 3h" countdown now looks the
      same on the orderbook, in your own orders, on a profile, and on an order's own page — a
      calm Morphit-green chip that still ticks down to the second in the final minutes.
      Previously the orderbook version turned red and pulsed as the deadline neared, which didn't
      match the green countdown shown elsewhere. A normally-expiring order isn't an error, so it
      now stays green like the rest; the exact deadline is always in the tooltip.

    Smaller fixes

    • A rare order-status label is no longer alarming. In one uncommon case — an order whose
      fee status hadn't been recorded yet — your orders list could show a red, "rejected"-looking
      label with a link about rejected fees, even though nothing was actually wrong. It now reads
      a plain "Not yet verified", matching how the order's own page has always described that
      state.

    For node operators

    • No operator-facing changes in this release. Upgrading is the usual morphit-ops upgrade;
      no configuration or migration steps are required.
    Downloads
  • v1.0.0-beta.40 6860327542

    Morphit v1.0.0-beta.40
    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 19m50s
    morphit-release / Build + publish release tarball (push) Successful in 20m44s
    Stable

    agorise released this 2026-06-29 20:56:30 +00:00 | 89 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release rounds off the two-factor and first-order screens, makes a handful of mobile
    views read better, and fixes a couple of small layout glitches. Node operators also get a
    quick health readout for the server itself. It also rolls out the welcome mat for traders
    and trading bots, lets you link a photo of what you're trading straight from your Blurt
    blog, and trims what the first screen has to load.

    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. This release
    changes no third-party dependencies.

    Two-factor sign-in

    • Codes with a space now work. Some authenticator apps (Aegis, for example) show your
      6-digit code as "123 456" with a space in the middle. The setup screen used to silently
      refuse to submit when that space was present, so the code looked "rejected" even though
      it was right. It now accepts the code however your app formats it.
    • Tidier setup screen. On the two-factor setup screen the QR code is centred, the
      secret has a Copy button that confirms with a brief "Copied", the code box shows a
      clear focus ring, and the expandable help sections use Morphit's own green instead of an
      off-brand colour.

    Signing in on another device

    • "Sign in to another device" is now in the menu. If you're signed in on your phone,
      you can sign in on a computer without typing anything: on the desktop open the QR
      sign-in screen, then on your phone tap your avatar (top-right), choose Sign in to
      another device
      , and point its camera at the code. The option was always described on
      the desktop screen but wasn't actually in the app yet — now it is, and the on-screen
      instructions match what you'll see.

    On your phone

    • Whole-number balances. On a phone, your BLURT and Blurt Power balances now show as
      round numbers with no decimals and no thousands separators, so they fit cleanly in the
      narrow three-column card instead of getting squeezed. On a tablet or computer you still
      see the full precise amount.
    • The first-buy welcome reads full-width. The "Your first trade is on us" message on
      the orderbook used to get crammed into a narrow column next to the gift icon on phones.
      It now spans the full width of the card, so it's comfortable to read.

    Posting and reviewing an order

    • Your order summary now sits above the final step. When you reach the review step,
      the plain-language summary of what you're posting appears at the top, right where you're
      looking, instead of only further down the page.
    • First buy hides fee choices that don't apply. On your very first order — a free buy
      of BLURT where the listing fee is waived — Morphit no longer shows the other
      fee-payment options that wouldn't make sense yet. On later orders you still get the full
      choice of how to cover the fee.

    Security keys

    • Tidier setup screens. When you register or change a hardware security key (like a
      YubiKey) in Settings, the add / require / remove forms are now centred and easier to
      read, the danger warnings are clearly boxed in red, and — if you've already registered
      an account — the password prompt is labelled with your own @name so it's obvious
      whose password it wants.

    Blocked accounts

    • No more text jump on Refresh. Tapping Refresh on the Blocked accounts list used
      to nudge the explanation underneath it sideways for a moment and leave it slightly out
      of place. The text now stays put, lined up the same as the rest of your settings.

    For node operators

    • See the server's health at a glance. morphit-ops health now has a System
      section showing the machine's CPU, memory, and disk usage (the disk figure matches
      df -h /). It's a quick gut-check — a nearly full disk or a pegged CPU is often the
      real reason an indexer starts lagging. Like the price-feed details, these numbers are
      read straight off your own box and are never exposed on the public /v1/health page.

    For traders and trading bots

    • Morphit is built for market makers. A new FAQ entry — "Can I market-make or run a
      trading bot on Morphit?"
      — spells out what was already true: there's no maker or taker
      fee (just the flat listing fee of about $0.12 per order, with no withdrawal fee, limit,
      or waiting period); the spread price model pins your order a set percentage off the
      live market mid (say, market ± 0.5%) and re-prices itself as the world price moves;
      and because every order is a plain on-chain operation that you can read over the
      read-only tools and RSS feed, a bot needs no API key, no account approval, no KYC, and
      never hands custody of your funds to the instance. The arbitrage entry now points here
      too.
    • Clearer competitor list. The arbitrage FAQ now names Hive-Engine (HE) alongside the
      other exchanges when explaining where BLURT trades.

    Showing what you're trading

    • Link a photo from your Blurt blog. If you put an https link to an image hosted on
      Blurt's own image servers (img.blurt.blog or imgp.blurt.blog) in an order's terms,
      it now shows up as a tidy link that opens in a new tab when clicked. The picture is
      never loaded into the page automatically, so simply viewing an order never reveals
      anyone's IP address — and the link opens with no referrer, so the image host can't tell
      which order page you came from. Any other kind of link in the terms stays plain text, so
      public order terms can't be turned into a place to drop arbitrary links. (Chat already
      links shared addresses the same safe way.)

    A lighter first screen

    • Footer network icons load only when needed. The Tor, I2P, and ENS icons in the page
      footer now wait until you scroll near them before loading, instead of being fetched the
      moment the page opens. It shaves a little off the very first screen, especially on a
      phone or over Tor. If you browse with JavaScript turned off, the icons still appear.
    Downloads
  • v1.0.0-beta.39 23c3719979

    Morphit v1.0.0-beta.39
    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 32s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 19m49s
    morphit-release / Build + publish release tarball (push) Successful in 20m38s
    Stable

    agorise released this 2026-06-29 05:10:15 +00:00 | 90 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release is about staying signed in when you want to, and a round of order-form and
    sign-in polish. The headline: if you chose Remember me, an ordinary page refresh now
    keeps you signed in instead of dropping you back to the password screen. Everything else
    here smooths rough edges you'd hit while posting your first order or unlocking your
    session.

    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. This release
    changes no third-party dependencies.

    Staying signed in

    • A normal refresh keeps you signed in. If you ticked Remember me when you
      unlocked, pressing refresh (or F5) no longer logs you out — your session is restored on
      the same tab without re-typing your password. A full hard-reload (the "empty the cache"
      kind) still locks, on purpose, and if you did not tick Remember me, any refresh
      still locks. Nothing decrypted ever leaves your device.

    Posting your first order

    • Barter now asks for Terms. When you offer Barter (goods/services), the Terms box
      becomes required and the Continue button stays off until you've described the deal —
      and the Terms border flashes green the moment you add barter, so it's obvious what's
      needed. A bare "barter" listing with no details is no use to the person on the other
      side.
    • The steps are numbered honestly. Choosing how to cover the listing fee is its own
      step, so it's now labelled Step 4 of 4 (and the earlier steps are renumbered to
      match).
    • Pay the fee in BLURT if you already hold some. Existing Blurt users can now choose
      to pay the listing fee in BLURT on their first order instead of spending the free
      first-order waiver — the choice now sticks instead of snapping back.
    • Tidier first-order screen. Removed a duplicate "safer defaults" tips card that was
      showing again on the final step, and trimmed a redundant sprout from the
      "Your first order is on us!" title.
    • FAQ hover. Moving the pointer over a FAQ entry now gives it a soft emerald
      highlight that fits the rest of the site.
    • Consistent "Learn more" / "check fee status" links. These now use the same gentle
      sliding-arrow style as the rest of the app, with no underline. The "Posted an order but
      don't see it?" hint on the orderbook now appears only once you've actually posted an
      order, so it doesn't clutter the view for newcomers.

    Sign-in screen

    • Balanced unlock card. On the welcome-back screen, the Unlock and Sign out
      buttons now sit together on one line instead of one floating below the other.

    Documentation

    • Barter, explained better. The barter FAQ entry is shorter and leads with the
      real-world reason people trade goods directly — being unbanked, capital controls, a
      failing local currency, counter-economics — with one concrete example (orange-tree
      saplings for Monero) and one simple rule: if either side is a listed coin, the on-chain
      side still earns a receipt and portable reputation.
    Downloads
  • v1.0.0-beta.38 1bd546741a

    Morphit v1.0.0-beta.38
    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 19m28s
    morphit-release / Build + publish release tarball (push) Successful in 20m20s
    Stable

    agorise released this 2026-06-29 01:16:04 +00:00 | 92 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release is about being honest and current. The competitor comparisons in our FAQ are
    brought up to date with what actually happened over the last few weeks, we spell out that
    Morphit ships with zero code obfuscation — every line that runs in your browser is
    published and auditable — and a couple of order-form rough edges are smoothed out. For
    operators, the health screen now shows each price feed individually, and there's an honest
    note about optional hardware memory encryption.

    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. This release
    changes no third-party dependencies.

    Honest comparisons, kept current

    • OpenMonero. Our comparison no longer says OpenMonero is gone — it went briefly
      offline in early June 2026 and is back online now, saying it is "more secure this time."
      We explain why that doesn't change the core difference: OpenMonero holds your coins in a
      custodial wallet (which is what kept getting drained), while Morphit holds nothing at
      all, so there is nothing to harden and nothing to lose.
    • Haveno / RetoSwap. We added the second exploit, on June 16, 2026 — this one in the
      forced-arbitration / dispute path, where an attacker forced a dispute and had Monero
      released without ever sending the Bitcoin. Two protocol-level exploits in under a month,
      both in the arbitration machinery. Morphit has no arbitrator and no escrow, so neither
      attack class has anything to target here.

    Transparency

    • Zero code obfuscation. We now say it plainly on the brag list and the comparison
      image: Morphit's frontend is minified only for size, never to hide what it does. Every
      byte of the running system is published AGPL source you can read and audit — no compiled
      bytecode, no opaque packed archives. Combined with the on-chain hash of every release and
      Subresource Integrity on every script, you can verify exactly what your browser is
      running, independent of whoever is hosting it.

    Polish

    • Changing a currency on the order form. Once you picked a price currency, tapping it
      again did nothing — the field looked stuck. Now tapping the currency reopens the picker
      so you can change it.
    • A clearer hover on text fields. Text boxes and dropdowns now gently strengthen their
      border when you move the pointer over them, so it's obvious what you're about to click.
      Fields showing a validation error keep their red border on hover.

    For operators

    • Per-feed price health. The health view (morphit-ops, option 13) now lists each
      price provider on its own line — whether it's up and the price it last reported — so a
      dead or stalled feed is obvious at a glance. This is operator-only; the public health
      endpoint still never reveals which of your feeds are up or down, preserving the opacity
      that makes the averaged price hard to skew.
    • Optional: hardware memory encryption (advanced). OPERATIONS.md and the node guide now
      document confidential-computing hosts (AMD SEV-SNP / Intel TDX) as optional
      defense-in-depth for the one secret the relay keeps in memory — your posting key, never
      anyone's funds. It's opt-in, not a default: Morphit makes no secure-enclave claim and
      doesn't depend on it, and a TEE roots trust in the CPU vendor, which is in tension with
      our decentralization priority. Tor-by-default, the strict CSP, SRI, and the on-chain
      release manifest already cover the essentials.
    Downloads
  • v1.0.0-beta.37 e5e9c94b64

    Morphit v1.0.0-beta.37
    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 32s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 19m14s
    morphit-release / Build + publish release tarball (push) Successful in 20m18s
    Stable

    agorise released this 2026-06-28 22:42:50 +00:00 | 93 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    This release leans into privacy. Every Morphit instance is now reachable over Tor by
    default
    — operators no longer have to set anything up, and Tor Browser is offered the
    .onion automatically. Prices are now averaged across many independent market feeds
    instead of leaning on one, so no single source can break or skew them. The order pages
    get more polish, the app loads a little lighter, and setting up your own instance is
    friendlier than ever.

    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.

    Privacy

    • Reachable over Tor, automatically. Every instance now generates and serves its own
      Tor .onion address as part of setup — no extra steps, no key-grinding. When you visit
      over Tor Browser, the site advertises its onion (via an Onion-Location header) so the
      browser can offer you the .onion without you doing anything. VPN, Tor, Lokinet, and
      I2P access were always welcome here; now the onion is on by default, not an afterthought.

    Prices you can trust

    • Many feeds, averaged. Instead of relying on a single price source, Morphit now
      gathers prices from several independent feeds and takes the middle (median) value, with
      outliers dropped. If any one feed is down, wrong, or rate-limited, it simply drops out
      of the average — it can never skew or break the price. The price is still only ever used
      to work out amounts for you; it is never treated as a source of truth for anything else.

    Placing and editing orders

    • A more polished order form. Number fields highlight in red the moment something's
      out of range (rather than a confusing mix of colors), the terms box shows a live
      character count as you approach the limit, and the payment-method picker has consistent
      hover highlights throughout. Barter listings explain what to describe more clearly.
    • Lighter, faster pages. The order and sign-up pages now load their heavier pieces
      only when you actually reach them, so the first paint is quicker.

    A few nice touches

    • Profile pages show the Nostr and Blurt.media links neatly stacked at the corner of
      the avatar.
    • Settings — the "Set up two-factor authentication" button now has a clear, visible
      hover so it's obvious it's a link.
    • As with recent betas, this release changes no third-party dependencies.

    For operators

    • A Tor onion is generated for you. The setup wizard creates a .onion in the
      background while you answer the other questions — instant, no waiting, no vanity
      grinding. It never overwrites an address you set yourself, and a matching Tor role in
      the shipped Ansible playbook serves it. (A custom vanity onion is still a manual step
      if you want one.)
    • Hardening, by default and hand-held. The wizard now walks you through securing your
      server — SSH lockdown, firewall + fail2ban, automatic security updates, kernel
      hardening, and intrusion detection — as a short run of "yes" confirmations, and the
      Ansible hardening role applies all of it for you. Your server is locked down on the
      default path, not as an afterthought.
    • Setup remembers where you left off. If you get interrupted partway through the
      wizard, run it again and it offers to pick up where you stopped — re-asking only the two
      things it never writes to disk (your database connection and your relay's active key).
    • More resilient pricing. Your instance's fees and floors stay aligned with the
      market using the same multi-feed median, so a single feed outage doesn't knock anything
      over.

    Housekeeping

    • A large internal audit pass, a leaner "Run a Morphit node" guide, and tidied-up
      translations across all ten languages. These are behind-the-scenes; nothing you do
      changes.
    Downloads