• v1.7.5 8a8e497865

    Morphit v1.7.5
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 44s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 36s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 38s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 26m22s
    morphit-release / Build + publish release tarball (push) Successful in 26m48s
    Stable

    agorise released this 2026-07-17 02:56:27 +00:00 | 0 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    "A message came in and nothing lit up"

    Someone messaged you. The badge stayed dark for a minute. Then the message turned up in Archived instead of your inbox.

    Both symptoms, one cause, and it was a good one. Morphit has a fast path that lights the badge the instant a message lands — and it had been dead code in production the whole time. The notification your browser received was labelled one way and read another way, so every message fell into the gap and quietly waited for the slow, once-a-minute check to notice it.

    It's fixed. Badges light within a couple of seconds now, the way they were always supposed to.

    If you had the tab closed when the message arrived, you'll see the badge as soon as you open it — Morphit now replays the last few minutes of activity on connect, using the message's real arrival time, so a message you already read doesn't come back pretending to be new.

    "I answered them on my laptop. My phone still says unread."

    Because it genuinely didn't know. Morphit tracked what this device had seen, but not who spoke last — so your own reply, sent from your laptop, looked exactly like an unread message when your phone looked at it.

    Your phone now knows the last word was yours, and stays quiet.

    Chat cards on a phone

    Four lines of wrapped name, squeezed into a card with barely room for anything else. The name now truncates properly and the spacing is tuned for a narrow screen — the same cards are about 40% taller on a 360px phone, with the same information in them. Nothing changes on desktop.

    Order cards

    • The rating now comes first, with the trade count next to it in smaller text.
    • The rating chip is as bright as everything else on the card. One thing genuinely was dimmed; it isn't now.
    • "1 trade" instead of "1 trades". Languages with more than two plural forms — Polish and Russian — get all of theirs, properly.
    • Hovering Expires used to say when the order was last touched, which could be hours after you posted it. It now says when it was posted, because that's what it looked like it was saying.

    Chat header

    The star next to someone's name was hand-drawn in two places instead of using the component every other card uses — which is exactly why it was gold when it should have been green, and why it showed a score with no idea how many people it came from. It now uses the same component as everywhere else, so it looks the same and says the same thing. The avatar sits properly centred.

    We're easier on the volunteers who run Blurt

    The public Blurt nodes are run by people, for free, and Morphit leans on them. One of them asked us for four things. This release finishes the list.

    When a Morphit node has been offline and needs to catch up, it used to ask for blocks one HTTP request at a time — thousands of them, as fast as it could, from every Morphit instance at once. That's what earned us a rate-limit. It now asks for twenty blocks per request. A five-thousand-block backlog went from 5,000 requests to 250.

    Nodes that don't support batching aren't asked twice, and aren't penalised for it — they just get the old path, at the old polite pace.

    You don't configure any of this. It's listed here so you know what your node does on your behalf.

    Your IP address, honestly

    Morphit never sees or logs your IP. No cookies, no analytics, no trackers, no telemetry.

    There is exactly one exception, and we chose it on purpose: once per session your browser asks a network node directly for the signed record that says which version of Morphit is current. That's how your browser can tell you if the operator serving you this page has quietly given you a stale or tampered build — a check that's worthless if we route it through the operator we're checking.

    We'd already written this down in three places on the site, and in all three we'd written it down wrong — including on the very page that lists those nodes, which told you your browser never talks to them. It does. All three are corrected, and there's now a FAQ entry that explains exactly what happens, why we chose it, what that node learns (an IP, and nothing that identifies you), and what to do about it.

    Short version: use Tor or a VPN. If you're here for Monero you almost certainly already do, and if so this is already closed for you.

    Settings

    • The display-name card lost a paragraph explaining the two Save buttons. The buttons say what they do.
    • The two Clear buttons on Display name and Short bio are gone. Delete the text and Save — same result, one less button.

    Smaller things

    • Monero's description now mentions that it hides balances too, not just amounts, senders and recipients.
    • One outbound link on the instance page was leaking a referrer. It isn't now.

    For operators

    Upgrading is one command and there is no database migration in this release.

    The Ansible playbook now ends with a loud warning if your node has no alerting configured. It's off by default because it needs a Matrix access token we can't generate for you — but a green Ansible run is exactly when people stop reading, so if your node is silent, that's the last thing you'll see, along with the six steps to fix it.

    Being unmonitored should be a choice you made, not one you defaulted into.

    Block catch-up is batched (see above). Nothing to configure. If you want to confirm it's working, watch the request rate against a node during a catch-up — batching is doing its job if it's roughly a twentieth of the block rate.

    docs/OPERATIONS.md and docs/RUN-A-MORPHIT-NODE.md both cover the new behaviour.

    Downloads
  • v1.7.0 7f2ed9a802

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

    agorise released this 2026-07-16 18:33:15 +00:00 | 1 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    "I just paid, and my order doesn't exist."

    If you posted an order and clicked View my order, Morphit told you your order wasn't there.

    Not sometimes. Every time.

    Here's what was happening. Your order went onto the blockchain in about three seconds, exactly as it should. But the part of Morphit that reads the blockchain deliberately waits until a block can never be undone before trusting it — and on Blurt that takes about a minute. So for that minute, the order was real, it was paid for, it was on the chain — and Morphit's own database hadn't heard of it yet.

    The page waited 24 seconds and then gave up and said "Order not found."

    That's fixed, and not by waiting longer. Waiting longer would only have swapped a scary message for a minute and a half of spinner. Your browser already knows about the order — it's the thing that signed it and sent it. So now it just shows you. Instantly. There's nothing to wait for.

    Everything you do now shows up immediately

    The same fix applies across the app. When you do something, you see it:

    • Post an order — it's there, right away.
    • Cancel or complete an order — the card and the tab counts update on the spot.
    • Edit your profile — see below; this one was its own bug.
    • Reply to someone's review — your reply appears where it belongs.
    • Watch an order someone else posted — if they cancel or complete it while you're reading, the page tells you within a few seconds instead of leaving you looking at a listing that's already gone.

    Chat and notifications were already fast. They stay fast.

    "I saved it, and it reverted"

    If you changed your display name or avatar in Settings, it worked — and then about twelve seconds later it changed back to the old one.

    Morphit was protecting your edit from being overwritten while the blockchain caught up. That protection lasted twelve seconds. Catching up takes about a minute. So the shield dropped roughly forty seconds too early, and the stale copy won.

    Your edit sticks now.

    When something says "confirming", we mean it

    There's a line we're not going to cross to make things feel fast.

    Your trade count and your review score still wait for the blockchain to make it permanent. So do listing fees. Those are the numbers people decide whether to trust you on, and a number that might quietly change its mind an hour later is worse than a number that took a minute to arrive.

    So Morphit tells you which one you're looking at. A brand-new order of yours shows a "Confirming on the blockchain" tag until it's settled. An order that just disappeared from the listings says "No longer available — confirming" — and notably it does not guess whether it was cancelled or completed, because at that moment we honestly don't know yet.

    You get feedback in seconds. You get finality when the chain says so. You're always told which.

    Your order still isn't public until the fee is paid

    Worth being plain about this, because it's the one thing that didn't get faster and shouldn't.

    Your own order appears to you instantly. Strangers browsing the orderbook still don't see it until the block is permanent and your listing fee has been verified — about a minute.

    We could have made new orders show up in everyone's orderbook in seconds. We're not going to. It would mean anyone could fill the orderbook with orders they never paid for, over and over, a minute at a time. We'd rather show a stranger nothing than show them a listing that isn't paid for and might vanish.

    The block explorer was already fast

    We checked. The explorer reads the blockchain directly rather than going through Morphit's database, so it was never affected by any of this.

    Small print

    The honest bit: four separate parts of Morphit had each been built around the same wrong number. Somebody reasoned that the database would catch up in "one or two blocks" — about three to six seconds — and wrote that assumption into a timeout. It's actually forty-five to sixty-three seconds. Every one of those timeouts expired before the answer could possibly have arrived, and each one then produced the exact problem it had been written to prevent.

    The parts of the code that had measured the delay instead of reasoning about it got it right, and had been right all along.

    We also found that our own brag list claimed new orders show up in the orderbook in three seconds. They don't and never did. It's fixed.

    Downloads
  • v1.5.7 457a2049ca

    Morphit v1.5.7
    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 34s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 36s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 25m46s
    morphit-release / Build + publish release tarball (push) Successful in 26m24s
    Stable

    agorise released this 2026-07-16 01:41:26 +00:00 | 2 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Chat notifications now land in seconds, not a minute

    If someone replied to a conversation you'd archived, Morphit did the hard part right: the notification reached you in about six seconds. Then nothing else happened for a minute. No badge. No message in your inbox. If you went looking, you'd eventually find it sitting in your Archived folder.

    Two symptoms, one cause. Morphit has a fast path that tells your browser "a message just arrived", and a slower path that writes it into the searchable history about a minute later. The badge was being lit off the slow one — because an archived conversation doesn't count toward your badge until something pulls it back into your inbox, and the only thing that did that was the slow path.

    So the fast message arrived, was quietly set aside for being archived, and waited a minute for the slow path to catch up and give it permission to matter.

    Now the arriving message does that job itself: a reply to an archived conversation pulls it back into your inbox and lights the badge straight away — whether you're on the chat page, somewhere else on Morphit, or looking at another tab entirely. Same six seconds as the notification.

    Starred conversations are deliberately left alone. A message in a starred conversation already lit your badge correctly, and moving it to your inbox would have thrown away the star you put there on purpose.

    Moving a conversation to a folder sticks now

    Star or archive a conversation, refresh the page straight away, and your change would undo itself — reappearing about a minute later.

    It wasn't slow. It was being reversed. Your change saves instantly on your device and then takes about a minute to travel to the blockchain and come back. Refreshing inside that window asked the blockchain what your folders looked like, got an answer from before your change, and believed it over you.

    Morphit now checks which one is actually newer. Your change wins until the blockchain has caught up; a change you made on your phone still wins on your laptop. Nothing about how folders are stored changed, so other Morphit instances are unaffected either way.

    While fixing this we found something related: a reply that arrived while you were away could get permanently buried in Archived, because every page load quietly reset each conversation's "archived on" date to right now — making every real message look older than the archive. That's fixed too.

    The chat now opens on your newest message

    Opening a conversation was still sometimes dropping you into the middle of it. There was already code meant to hold you at the bottom while the page finished drawing — it just never got the chance to run. Setting the scroll position makes the browser announce that the page scrolled, and Morphit was treating its own announcement as "the user grabbed the scrollbar" and standing down immediately.

    So it jumped to the bottom once and let go, and anything that loaded a moment later — a font, a payment receipt, a message still being decrypted — pushed your newest message back under the fold.

    It now waits until the conversation has actually stopped growing before letting go, and it still gets out of your way the instant you scroll.

    "Pay now" no longer appears on a finished trade

    A conversation about a completed trade was still offering the "Pay now" and "Share crypto address" buttons across the bottom — on a trade that was already paid, closed, and receipted by both sides. That's not just clutter; it's an invitation to pay twice.

    The same was true of cancelled and expired orders. Those buttons now disappear as soon as an order is finished, whatever finished it.

    Payment Receipts read like receipts

    • The date and time now appear on the receipt itself, on the "BLURT SENT" / "BLURT RECEIVED" line: "BLURT SENT on 14 May, 2026 @ 05:03:22 UTC". That's where a receipt should say when it happened.
    • The pop-up date that used to follow your mouse anywhere over the receipt is gone. It was showing you something now printed on the card.
    • The receipt is no longer clickable-looking. It behaved like a link that went nowhere.
    • The "Verify on block explorer" link is no longer permanently underlined. The underline appears — as dots — when you hover or tab to it.

    Ordinary chat messages still reveal their timestamp when you tap them; that's the only place to see it for those.

    Order terms: markdown fixes

    • The markdown help tooltip wouldn't go away. If your mouse happened to rest on the little markdown icon while you typed, its help bubble sat over the text you were writing until you jiggled the mouse — because a hover bubble can only be dismissed by moving, and your hand was on the keyboard. It now disappears the moment you start typing, and you can dismiss it with the Escape key.
    • Blockquotes are now indented. A > quoted line in your order terms had a green bar beside it but sat at the same margin as everything else, so it didn't read as a quote. It's now properly set in from the surrounding text.

    Quotes and lists also now sit on the correct side for right-to-left readers (Persian), where they'd been indenting off the wrong edge.

    For operators

    • No database migration. No on-chain format change. v1.5.7 is backward-compatible in both directions; a federated instance still on an older version keeps working.
    • Morphit is politer to Blurt RPC nodes now. A node operator asked us for four things: slow down, batch requests, back off when refused, and add jitter. Backing off was already in place. The other two we could do, we did:
      • A request-rate ceiling (10/second per node). Normal running is well under one request a second, so you won't notice — but when an indexer catches up after downtime it used to fetch blocks back-to-back as fast as a single node would answer them. That burst is what looks like abuse from the node's side. Catch-up is still roughly thirty times faster than Blurt produces blocks, so a day of downtime still recovers in well under an hour.
      • Jitter on the back-off timers. Every Morphit instance a node turned away was being told to wait the same 30 seconds, so they all came back at the same moment and set the limit off again. The wait is now spread ±25%. The average wait is unchanged — they just stop arriving in lockstep.
      • Batching is not in this release. It needs testing against a live Blurt node, and we won't ship untested code into the part of the indexer that would stop your instance syncing if it were wrong.
    • Nothing in this release changes what /v1/health or /v1/rpc-endpoints return. The rate-limiter's internal state is deliberately not published.
    Downloads
  • v1.5.5 21e4eec62b

    Morphit v1.5.5
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 43s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 34s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 37s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 24m7s
    morphit-release / Build + publish release tarball (push) Successful in 24m49s
    Stable

    agorise released this 2026-07-15 16:21:15 +00:00 | 3 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Finishing a trade now actually finishes it

    This is the big one, and it explains a whole cluster of oddities in one go.

    When you and your counterparty finished a trade — the money sent, the receipt in the chat, both of you leaving reviews — your order stayed "Live". Forever. It kept sitting in the public orderbook waiting for another buyer. It still offered a Cancel this order button for a trade that was already done. It still counted under the Live pill instead of Paid, still appeared under Active orders, and still showed (Live) beside its title in your chat inbox.

    The cause was small and specific: the button on My orders says "Mark complete / review", and the panel in your chat is headed "Mark this trade complete" — but both of them only ever posted the review. The "mark complete" half was never implemented.

    Now it is. Leaving a review on your own order also marks that order complete, and the whole cluster corrects itself: the pills count right, the Cancel button goes away, "Expires on" disappears (it's irrelevant once a trade is done), and the order stops showing up in the orderbook.

    Trades and reviews are now two different numbers

    Before, your "trades" number was really your reviews number wearing a disguise — there was no trade data, so the reviews you'd received stood in for the trades you'd done.

    That quietly cost honest traders. Complete a real trade where neither of you got round to leaving stars, and it counted for nothing. Take someone else's order rather than post your own, and you'd read "0 trades" no matter how many trades you'd completed, because only order posters were ever counted.

    Both are fixed:

    • A completed trade counts as a trade — stars or no stars. If nobody left a review, that's fine; the trade still happened.
    • Both people get credit. Completing a trade credits the person who posted the order and the person they traded with.
    • Your order cards now read "1 trade · ★5.00 (34)" — the trades you've done, and separately the star average with how many ratings back it. The "(34)" means 34 ratings, and now it really does.
    • The 🌱 new trader sprout retires once you've completed 4 trades, rather than once you've collected 4 reviews.

    The Most trades sort and the minimum trades filter now use real trades too, so an experienced trader who's never been reviewed no longer sorts below a chatty newcomer.

    None of this weakens the anti-sock-puppet protections. Naming who you traded with requires the same proof of a real, two-way conversation that leaving a review already required — so nobody can mint trade credit for an account they've never actually spoken to, or attach a public claim to a stranger's name. There's a new protection too: if almost all of an account's trades are with one single partner, those trades stop counting toward the number. Two people who genuinely only ever trade with each other will feel that one — you keep your ratings, but heavily concentrated trade credit doesn't count.

    Notifications: no more doubles, and no more waiting

    • The duplicate is gone. A new chat message could notify you twice — once within a few seconds, then again about a minute later. One message, one notification.
    • Your badges keep up. The avatar and favicon counters used to sit dark for about a minute after the notification had already arrived. They light up with it now.
    • The message is there when you tap. Tapping a notification could land you in a chat that didn't show the message yet — you'd wait, or refresh. It's there when you arrive.
    • Reviews notify you fast. Being reviewed sent no timely notification at all. It now arrives in seconds, like a chat message.

    If you're an established trading partner, you get all of this at full speed. First contact from a total stranger is still held to the slower, stricter path — that hasn't changed, and it's what keeps notifications from becoming a spam channel.

    The chat, tidied up

    • Payment Receipts — the Copy button now lines up with the Transaction field, the field is labelled Transaction ID, and the "verify this yourself" link beside the 🔍 is finally visible and actually works (it led to a Not Found page).
    • Green bubbles are dimmer and the text is bolder, so the thin dark text on them is easier to read.
    • Leaving feedback shows a brief "Feedback sent" message instead of leaving a card pinned to your chat, and the Cancel and Submit feedback buttons now sit side by side, with Submit in the green outline style.
    • Your inbox says "I rated @someone:" instead of "Feedback left:", and shows (Paid) on a finished order.

    Profile and reviews

    • The Reviews heading now says who they're for: "@someone has received reviews from".
    • Every review card shows the person's @username beside their display name, and their truncated public key underneath — including for people who haven't set up a profile, whose key simply never appeared before.
    • Your own review comments now read "I said: …", and a reply you leave sits indented beneath the review it answers.
    • Stars are green everywhere. A reputation star used to render white when it was based on only a couple of ratings; now it stays green and goes hollow instead — same "take this with a grain of salt" signal, but it also works if you can't distinguish the colours.

    Odds and ends

    • The stray green border around the page is gone (it was a focus outline that fired on every page load).
    • The action buttons on My orders are sized to match the Re-list this order button instead of being stretched wide.
    Downloads
  • v1.5.0 b681330aa7

    Morphit v1.5.0
    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 / Integration tests (real Postgres 16) (push) Successful in 37s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 24m22s
    morphit-release / Build + publish release tarball (push) Successful in 24m48s
    Stable

    agorise released this 2026-07-15 01:23:33 +00:00 | 4 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Your reputation now counts every review you've earned

    This is the big one. A real, verified review could fail to count toward your reputation — your profile would say "No feedback yet" and your orders would show "0 trades" even though a counterparty had already reviewed you and the review was sitting right there on the page.

    It happened whenever the review pointed at an order you didn't post — for example, when the person who listed the order reviewed the person who took it. That's an ordinary, everyday trade, so this was quietly costing honest traders the reputation they had actually earned.

    Reviews like that now count, your score reflects them, and the "new trader" sprout retires when it should. Nothing about the anti-sock-puppet protections changed — genuine reviews were simply being dropped alongside the fake ones, and only the genuine ones came back.

    Leave feedback right where the trade happened

    Feedback now works in both directions, from the conversation itself:

    • A Leave Feedback panel appears in your chat once you've actually traded — stars, a comment, and send.
    • Your chat inbox shows "Leave Feedback:" on threads that are ready for it, and "Feedback left: ★★★★★" with your comment once you've done it.
    • On My orders, if a trade had one counterparty the form locks to them; if it had several, you pick the right person from a short list with their avatar, so look-alike names can't be confused.

    Your settings now follow you to a new device

    Your preferences — notifications, quiet hours, privacy choices, syndication, hidden and blocked accounts — are now mirrored to the chain, encrypted with your own key. Sign in on a new phone or laptop with your seed and they come back with you. Morphit's operators only ever store an opaque blob; nobody but you can read what's in it.

    Completed trades look completed

    • When a trade is done, the order is marked completed on-chain and the order page shows a clear green Completed & paid.
    • My orders shows a green "Paid by @someone" pill, drops the buttons that no longer make sense on a settled order, and adds a Paid filter alongside All, Live, Cancelled and Expired.
    • View the order from a review now opens the actual order — previously it could land on a "your order is being posted…" screen that never resolved.
    • The Payment Receipt in chat has been redesigned, and reads "BLURT RECEIVED" when you're the one who got paid.

    A clearer profile

    • The card showing who reviewed you now includes their truncated posting key under their name, so a look-alike display name can't impersonate someone.
    • "@someone has left a review for" now lists who they reviewed, with that person's avatar, name, key, and current reputation score — and reads properly on a phone.
    • Replying to a review is clearer: it now says plainly that you're replying to the review above, and notes that a reply isn't a rating (to rate someone, leave feedback from your chat with them). The reply box lost its odd blue tint, and Cancel now sits below Post reply where you'd expect.

    Sharing a crypto address on your phone

    The Share crypto address window used to list every coin as a separate block — sixteen of them — which on a phone pushed the window past the edge of the screen with no way to scroll to the Send button. It's now a single coin picker with logos, and the window fits and scrolls properly. The same fix applies to the window where you report funds sent.

    Your address is checked as you type, with a red outline and a plain explanation when something's off.

    When an RPC node has a problem, we now say what it is

    Settings → RPC endpoints used to mark a node with a flat red "unreachable" no matter what went wrong — which could point the finger at a node that was perfectly healthy. Now you get the actual reason in one line: a TLS certificate problem, blocked by a security policy (HTTP 403), rate-limited, DNS lookup failed, or answered, but the RPC call failed. Plain "Unreachable" is now reserved for a node that genuinely isn't answering.

    Tidier throughout

    • The oversized Post an order button is now half the size, everywhere it appears.
    • The big buttons on Settings are sized sensibly, and the Mute buttons pick up the same gentle hover as everything else.
    • Clear on your display name or short bio now simply empties the field and lights up Save — no more red "are you sure" panel, and no more Save button that refused to do anything.
    • If you have no display name, you now show up as @yourname everywhere, consistently.
    • Reviews you've left now show your comment next to the stars, not just the stars.
    • In chat: your cursor stays in the message box after you send, the action row is easier on the eye, hovering a date divider tells you it's midnight UTC, and the view lands on the newest message.
    • The footer now reads #noaggression #countereconomics.

    For operators

    • No configuration changes. The upgrade delivers everything; there are no new environment variables to set.
    • The RPC-endpoint reasons above are measured by your indexer, server-side — your users' browsers still never contact a Blurt node directly, so their IP addresses are never exposed to third-party node operators. The card publishes only a short reason code and, where relevant, an HTTP status — never raw error text.

    As always: your chats (and every crypto address shared in them) are end-to-end encrypted, your settings are encrypted with your own key before they ever touch the chain, and Morphit still keeps nothing about you.

    Downloads
  • v1.4.12 b6b125a365

    Morphit v1.4.12
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 45s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 36s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 37s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 24m18s
    morphit-release / Build + publish release tarball (push) Successful in 24m41s
    Stable

    agorise released this 2026-07-14 03:52:38 +00:00 | 6 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Message notifications now arrive in seconds, not a minute

    Last release made messages appear right away inside an open conversation. This one does the same for the notification — the pop-up, the little unread dots, and the badge on the app icon.

    Before, if someone messaged you while you were on another tab or had Morphit closed, the alert could take up to a minute to reach you. Now it arrives within a few seconds of the message being sent. If you keep Morphit open in a background tab, its browser-tab icon and your avatar's unread dot light up promptly too — you no longer have to click back to the tab to find out something happened. And if you've installed Morphit as an app, the count on its dock or taskbar icon updates just as quickly.

    Still quiet when it should be

    None of this changes who's allowed to reach you. A stranger still can't ping you out of the blue — a first message from someone you've never spoken to (and who hasn't posted an order you're replying to) still goes through the same gentle gate as before. The fast alerts are for the conversations you're actually part of: people you've talked to, and genuine replies about your own listings. And as always, if you've blocked someone, you hear nothing from them.

    For operators

    • This is delivered entirely by the standard upgrade — there's nothing to configure and no settings to edit. Running the upgrade applies a small database change automatically and turns the faster notifications on.
    • The chat tracer is still here, still switched fully off. If you're ever diagnosing a message-delivery question, you can turn on a detailed, privacy-safe console trace by adding ?chatdebug=1 to a chat URL (or localStorage.setItem('morphit.debug.chat','1')). It logs message metadata only — never contents — and does nothing unless you switch it on.

    As always, Morphit's notifications carry no message content — only a nudge that something happened — and none of this changes what Morphit keeps about you: nothing.

    Downloads
  • v1.4.11 c9ea977110

    Morphit v1.4.11
    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 37s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 37s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 24m17s
    morphit-release / Build + publish release tarball (push) Successful in 25m0s
    Stable

    agorise released this 2026-07-13 23:31:29 +00:00 | 7 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Messages in a trade conversation show up right away

    When you're chatting about a specific order, new messages from the other person now appear almost instantly — the moment they're sent. Before, a reply inside an order conversation could take up to a minute to show, long enough to wonder whether it had arrived at all. That lag is gone: order conversations now keep pace with the rest of your chats.

    Paying in BLURT is clearer — and works for everyone

    The Pay now button for BLURT payments got a proper tune-up:

    • The amount now starts filled in with the order's minimum, so you're not guessing — nudge it higher if you'd like.
    • The box accepts only a valid number, and shows a clear red outline the moment what you've typed is empty, malformed, or below the order's minimum.
    • The Send button now appears reliably — a display quirk could previously hide it.
    • You can now pay even if you signed in with only your posting key. Morphit asks for your active key just for that one payment, uses it, and immediately forgets it.

    Tapping a notification takes you to the right place

    When you tapped a notification — a new message, a review, an outbid — it could sometimes land on a "page not found." Now every notification opens exactly where it should: the right conversation, profile, order, or review.

    The listing fee, shown in your currency

    When you post an order, the small listing fee is now also shown as an approximate amount in your preferred currency, right beside the coin amount — so you can see at a glance what it's worth to you, instead of only a dollar figure.

    A small convenience

    • When you unlock to post an order, your cursor now lands right in the password box, so you can start typing straight away.

    For operators

    • The chat tracer is still here, still switched fully off. As before, if you're ever diagnosing a message-delivery question you can turn on a detailed, privacy-safe console trace by adding ?chatdebug=1 to a chat URL (or localStorage.setItem('morphit.debug.chat','1')). It logs message metadata only — never contents — and does nothing unless you switch it on. It's what pinned down this release's message-timing fix.

    As always, Morphit's notifications carry no message content — only a nudge that something happened — and none of this changes what Morphit keeps about you: nothing.

    Downloads
  • v1.4.10 826b503fbc

    Morphit v1.4.10
    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 35s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 37s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 23m47s
    morphit-release / Build + publish release tarball (push) Successful in 24m30s
    Stable

    agorise released this 2026-07-13 07:00:57 +00:00 | 8 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Archived chats speak up when there's something new

    If you've tidied a conversation away into Archived, it used to stay quiet there — even if the other person sent you a brand-new message. Now, when a fresh message arrives in an archived chat, that conversation quietly comes back to your Inbox and lights up your unread badge, so you never miss someone reaching out.

    Conversations you've simply read and left archived stay put — it's only genuine new activity that brings one back. And it works even when Morphit is open in another tab or you're off on another page: the little badge still lets you know something's waiting.

    A cleaner look when you're typing

    The boxes you type into — search fields, the amounts on an order, your chat message, and more — now show a single, crisp green outline the moment you tap into them. Before, a few of them drew two green edges stacked together, which looked a little off. Now every field across Morphit highlights the same clean way.

    Clearer help when notifications won't turn on

    Whether notifications will switch on depends a lot on which browser you use, and the old advice wasn't always right for yours. Now, if notifications can't turn on, Morphit recognizes your browser — Brave, Firefox, or Safari — and shows the exact setting to check for that browser, step by step, instead of a one-size-fits-all message.

    As always, Morphit's notifications carry no message content — only a nudge that something happened.

    A small tidy-up

    • A stray pop-up is gone. Sending a chat reply used to sometimes flash a little "moved to Messages" note that didn't mean anything — Morphit doesn't have a separate "Messages" area. It's been removed. Sending a message is just sending a message.

    For operators

    • A harmless upgrade warning is fixed. When upgrading to the previous release, morphit-ops upgrade could print a "schema changed in place" warning even though nothing was actually wrong — it was reacting to a blank line in the schema file, not a real change. That's now fixed. You may see it one last time on the upgrade to this release (from the older tool still on disk); after that it's gone. Your database was never affected — morphit-ops doctor confirms it.
    • The chat tracer is still here, still switched fully off. If you're ever diagnosing a message-delivery question, you can turn on a detailed, privacy-safe console trace by adding ?chatdebug=1 to the chat URL (or localStorage.setItem('morphit.debug.chat','1')). It logs message metadata only — never contents — and does nothing unless you switch it on.
    Downloads
  • v1.4.9 e1e8f91f3d

    Morphit v1.4.9
    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 / Integration tests (real Postgres 16) (push) Successful in 36s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 13s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 23m25s
    morphit-release / Build + publish release tarball (push) Successful in 24m6s
    Stable

    agorise released this 2026-07-13 01:51:49 +00:00 | 9 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Your chat folders now follow you everywhere

    This is the big one. However you like to keep your messages organized — a tidy Inbox, a few important chats kept in Starred, and the rest tucked into Archived — that arrangement now travels with you. Star a conversation on your laptop and it's already starred when you open Morphit on your phone. Archive something on your phone and it stays archived on your desktop.

    It works quietly in the background, and it's built the private way you'd expect from Morphit: your organization is encrypted before it ever leaves your device, using a key only you hold. Nobody else — not the people running a Morphit instance, not anyone watching the network — can see which conversations you keep or with whom. They'd only ever see a scrambled blur.

    And nothing hides on you. A brand-new message from someone always lands in your Inbox where you'll see it — even the very first time you sign in. Archiving and starring are choices you make; a conversation you've never touched simply waits in your Inbox.

    A quick guide to formatting your Terms

    When you write the Terms for an order, you can use a little Markdown to make them clearer — a heading here, some bold there, a bulleted list. Now there's a small ? next to the Terms box that opens a friendly one-look guide showing exactly what to type for each: headings, bold, italic, quotes, numbered and bulleted lists, a divider line, and links. No need to remember the symbols — just peek at the guide.

    Your orders, tidier

    • My Orders opens on your Live orders. The page now starts by showing the orders that are actually active, which is almost always what you came to check — instead of everything at once.
    • Smaller, neater action buttons. The buttons on each of your orders (feature it, review feedback, cancel, re-list) are a touch smaller now, so a busy list looks calmer and fits better on a phone.
    • A gentle note when a filter is empty. If you tap a filter — say Completed — and there's nothing there yet, you'll now see a quiet little "No orders are in this category" note, instead of a blank space that leaves you wondering.

    Cancelling an order feels instant now

    When you cancel one of your orders, it now updates right away — the order shows as cancelled the moment you confirm, and you land back on your orders list without any awkward pause where it still looks live. Behind the scenes it's still recorded properly on the chain; you just don't have to wait around to see it happen.

    A couple of little touches

    • New orders arrive with a gentle slide. When a fresh order appears at the top of the order book while you're looking, it now slides smoothly into place, so you can tell something new just showed up.
    • The Contact highlight lands on the right instance. When you use the Contact link in the footer, the soft highlight now reliably settles on the instance you're actually using — a warm amber flash so it's easy to spot.

    For operators

    • This release includes a small database update. On upgrade, your indexer adds one new table (chat_folders) that stores each user's encrypted folder organization for the new cross-device sync. It's opaque ciphertext — your node never learns what any user has filed. The migration is automatic and additive; no manual steps.
    • A new on-chain action, morphit_chat_folders_v1, carries that encrypted organization. It's per-user and opt-in (it only appears when someone stars or archives a chat), fully backward-compatible, and doesn't change the on-chain release format — a build can still be rolled back safely.
    • The chat tracer from the previous release is still here, still switched fully off. If you're diagnosing a delivery question, you can turn on a detailed, privacy-safe console trace by adding ?chatdebug=1 to the chat URL (or localStorage.setItem('morphit.debug.chat','1')). It logs message metadata only — never contents — and does nothing unless you switch it on.
    Downloads
  • v1.4.8 92237664e6

    Morphit v1.4.8
    All checks were successful
    morphit-ci / TypeScript typecheck (sweep all workspaces) (push) Successful in 43s
    morphit-ci / apps/web svelte-check (svelte-kit sync + svelte-aware tsc) (push) Successful in 34s
    morphit-ci / Integration tests (real Postgres 16) (push) Successful in 37s
    morphit-ci / ansible-lint (playbook quality gate) (push) Successful in 14s
    morphit-ci / Smoke suite (run-smokes.sh, triple-pulse) (push) Successful in 23m45s
    morphit-release / Build + publish release tarball (push) Successful in 24m19s
    Stable

    agorise released this 2026-07-12 05:38:33 +00:00 | 10 commits to main since this release

    Signed by agorise
    GPG key ID: 53524E1F1017EB9C

    Your replies now reach the right conversation

    This is the big one. When you're chatting with someone about a specific order and you send a message, that message now lands in that order's conversation for the other person too — reliably, in a second or two.

    Before this, something subtle could go wrong: if you opened a chat one way (say, from your inbox) and then moved into an order discussion with the same person, your messages could quietly file themselves under the wrong conversation. Both people were sending fine, but each was looking at a different thread — so it looked like the other person had gone silent, when really their replies were just sitting in another conversation. That's fixed. Messages now always go where you're looking.

    A cleaner sent message

    Sending stays fast — the moment your message goes out, the bubble stops looking busy and it's on its way. We've removed the little ✓ Sent tick that used to appear next to it; a few of you found it more clutter than comfort. Nothing about the speed changed, just the extra checkmark is gone.

    "Mark all as read" where you'd expect it

    The Mark all as read button now shows up on whichever tab actually has unread messages — your Inbox or your Starred list — instead of only appearing based on your overall total. It stays out of the way on the Archived tab, since there's nothing to mark there.

    A few chat touches

    • Opening a conversation now shows a friendly "…is loading… Say hi!" while your history comes in, instead of looking empty for a moment and making you wonder if anything's there.
    • The action buttons in a trade chat (share address, share mailing address, record shipment, and the pay/funds button) now all share the same clean green outline, so the bar looks tidy on phone and desktop alike.
    • The Contact link in the footer once again reliably flashes a gentle highlight around the instance you're actually on when it takes you to the instances page.

    Clearing a profile field now sticks

    If you emptied your bio, your Nostr link, or your blurt.media link and saved, the old value could stubbornly hang around. Now clearing a field and saving actually clears it — the same way removing your avatar already worked.

    Notifications reach you on other tabs

    If a new message arrives while you're off in a different browser tab, the little unread badge on your Morphit tab now updates right away, so you'll notice without having to click back first.

    Also in this release

    • Fixed a quiet under-the-hood error during page navigation that could interrupt other things loading. You'd never have seen a message, but it's tidier now and one less thing that can misbehave.

    For operators

    • The message-delivery problem some of you saw was order-thread routing, not the network. Messages were always being delivered on time; a client-side bug filed order-related messages under the wrong conversation, which looked like slow or missing delivery (and made the live fast-path seem broken when it wasn't). This release fixes the routing so both sides always see the same thread.
    • A built-in chat tracer ships with this release, switched fully off. If you're diagnosing a delivery question, you can turn on a detailed, privacy-safe console trace by adding ?chatdebug=1 to the chat URL (or localStorage.setItem('morphit.debug.chat','1')). It logs message metadata only — never message contents — and does nothing at all unless you switch it on.
    • No database changes ship in this release, and nothing here changes the on-chain release format — a build can be rolled back over it safely.
    Downloads