24 September 2026
Gridlock only existed inside the app, which meant sending somebody a game was really sending them to an app store.
There is a games store on the website now. /games lists what there is to play and /games/gridlock is Gridlock's own page; the game itself runs in the browser tab. The store greets you by gaming ID, shows your rank in each game that rates players, says so plainly for a game that rates nobody, and carries a row of the challenges waiting for you.
Picking a gaming ID works on the web exactly as it does in the app: the identity card that fills in as you type, the name checked while you type it, five suggestions behind Try another, and the cooldown when you rename. A challenge link sent to somebody who has no gaming ID takes them through the picker and then on to the match.
Sending a game to somebody who has never heard of us used to end at a sign-in page.
A visitor with no account now plays straight away, as Guest-XXXXXX. Nothing about them is kept: the browser holds a key for thirty days and everything else is worked out from it, and the hyphen in the name is a character a real gaming ID cannot contain, so a guest can never be taken for one.
Guest games are always casual. A guest has no rating to win or lose and the home says so rather than showing an empty one. A guest waiting for an opponent rejoins the queue every ten seconds, and a rated player who has been waiting twenty will be matched with one — without that, a guest who queued first was never looked at again.
Gridlock started on a plain menu that told you nothing about how you were doing or who wanted to play you.
It opens on a home now: the clock you want, a game against a person or the bot, the challenges somebody has already sent, your rating written as a rank rather than a number, and the top of the ladder with your own row beneath it.
A match used to begin behind a full-screen splash with the game's name on it.
The two pawns now race in over the board you are about to play on, with the strips already in place, a winning move gets a pulse, and the result has a scene of its own.
Arriving from a link that asks for a quick match, you met the menu and watched the game start hunting for an opponent without you touching Play now. That is exactly what the link asked for, but it is not what the screen looked like.
The menu now lists the people currently waiting, each of them a tap away from a game, so the wait has something in it other than a spinner. Games picked out of that list are casual.
A wide menu also used to jump. Everything down its right-hand side arrives after the page opens, and the layout was decided by whether any of it had arrived yet, so one rating landing moved the whole page. The space is held now.
On a laptop the game was a phone-shaped column with the window empty either side of it.
Past 860 pixels wide the board now takes the height of the window, and everything that was stacked underneath it — the strips, the move list, the reactions, resign — moves into a panel beside it. Below that width nothing changes. A tablet or an unfolded foldable handed the same width gets the panel too.
Every online match in the browser ended at "Could not start online play.", while a game against the computer worked perfectly — which made it look like a matchmaking fault, and it was not one.
The page's security rules refused a script the connection library writes for itself, so it gave up before making a single request, and the failure was swallowed on the way out. Playing online in a browser works now.
The tab also still wore the build template's blue logo, and so would anything anybody saved to a home screen. It is the games mark now, following the browser between light and dark.
A name too long for the panel wrapped onto a second line, which pushed the rating down past the panel's slanted lower edge, where it was cut in half.
A name is one line now, drawn smaller when it has to be, and the rating sits in the same place whoever you are playing.
Opening the game straight onto a match drew the menu for a moment first and then cross-faded away from it, so a link to a game opened on a menu you never asked for.
When the link already says which match to open, the menu no longer appears at all.
Phones hold their chat connection on one server and browsers on another, and neither knew what the other had just delivered. A message sent from the website therefore reached a phone only when the app next went looking — and pushed nobody at all, because the website's server had never been given the machinery to send a notification.
Both halves are fixed. What one side delivers is passed to the other, so live messages, read receipts and delivered ticks cross between the web and the app; and a message sent from a browser now pushes and notifies exactly as one sent from a phone.
Commenting from the website told nobody. The website's server had only ever been given the notifier that feeds ranking, so the post's owner, the person you replied to and anyone you mentioned all heard nothing.
They are notified now, from either place. A comment on a poll belonging to a page also reaches the page's owner, which it did not before — it went to whichever account happened to share the page's id.
Searching for a GIF in chat answered "gif search is not configured" everywhere, production included. The key was not missing; it had simply never been passed through to a running server. It is now.
The composer is the shape people expect from a messaging app now: attach inside the input rather than beside it, a camera next to it that gets out of the way as soon as you start typing, and send as a filled round button instead of a coloured glyph floating on the page. The tip button left the row for a tile in the attachment panel, where it appears only when a tip is possible rather than sitting there greyed out.
The panel underneath is one continuous scroll of emoji and stickers with a rail to jump between sections, instead of a switcher showing one category or one pack at a time. Sections with nothing in them are left out, so somebody opening it for the first time lands on the faces instead of an empty Recents. Search moved out of the row into a sheet of its own that takes the screen and looks through GIFs, emoji and your stickers at once.
Three faults found on a device went with it: an emoji grid that flashed, crashed and scrolled into nowhere after enough use; the keyboard button dropping the composer and the whole conversation to the bottom of the screen; and the first line of typed text sitting two pixels below the icons beside it.
Making a sticker meant waiting on three round trips to the server, the last of which downloaded back the picture your phone had just sent.
A sticker is a file first now. It is written to the phone and put at the front of your pack before anything touches the network; the upload happens behind you, retries, and picks up again next time you open the app. A sticker never disappears because the network blinked — a sticker that vanishes reads as something lost, not as an invitation to make it again.
Videos and GIFs can be stickers. Choosing a video is the same gesture as choosing a photo, with a trim step added: a looping, silent preview over a filmstrip, and a window you size yourself up to a maximum length. Both paths end on a preview that is also the send button, named for the conversation you are sending to, and nothing is written until you answer it — so backing out leaves no half-made sticker in the pack.
Behind it, a sticker is now stored exactly as it was made: one image, keeping the transparency a cut-out is made of, rather than six re-encodings of it, the largest of which was in a format that has no transparency at all. Animated stickers could not be uploaded by anybody before this.
Chat draws none of the site's usual frame, so on a phone-sized window it had no app bar at all — and the logo it does show ended up in the bottom bar, two hundred pixels in from the left edge.
Measuring that turned up three more faults in the same strip: the bottom bar's box stayed parked most of the way up the page, catching taps meant for the conversation list; the page reserved no room for the bar, so the last conversation sat underneath it; and the community bubbles, the only way into a server on a phone, had nowhere to go at all.
There is a proper app bar over the list now, hidden on a thread where the thread's own header already is one, and the community bubbles are a strip inside the list. The logo also switched on which environment it was in and read as non-production in production; there is one mark now, everywhere.
Desktop spacing rode straight through to the phone and stacked on top of the page's own gutter, so a card's content began a long way in from the edge of a 390-pixel screen — and a post page added a second inset of its own on top, which left a post sitting further in than the feed card it was opened from.
There is one scale for phone-sized windows now, across the dashboard.
Signing out and into another account kept the first account's page list. Where that list was empty, the composer's Post as page found nothing to post as — and four posts went out under the person's own name instead of the page's.
The list is forgotten on sign-out, and a request still in flight for the previous account is dropped rather than landing in the new one. A composer opened as a page you cannot post as now says so, and clears once you choose something else, instead of quietly posting as you.
A post made as a page belongs to the page, and the app compared that owner with the person looking — so the page's own owner was shown a menu with neither Edit nor Delete in it, although the server would have allowed both.
Anybody who can post as the page can now edit and delete its posts.
The actions sheet only ever updated the list it was opened from. A post deleted from its own screen was still in the feed behind it, and deleting it a second time from there failed outright.
Every delete, hide and edit is now announced to every screen showing that post, and a detail screen you come back to says the post is no longer available rather than showing something that has gone.
Converting a page to a community was refused before it began, because the request never carried the community's address.
The page's handle is sent as the address now, and a page old enough not to have one is asked for it, checked as you type.
Once converted, the app opens the new community. It used to end on "Route not found".
On a page's profile, Follow and the likes and saves in its tabs went straight to the server. For somebody signed out the button lit up and then went out again when the server refused, so the tap read as broken rather than as a reason to sign in.
They ask you to sign in now, the way Follow on a person's profile already did.
Rigged sits in Games beside Gridlock. Both players get the same hallway and hide traps in it for each other: trapdoors, spikes, drops, risers, gusts and decoys, eight to a hallway. You must clear your own rigged hallway once before you can send it, and that run is the par. Whoever causes more deaths wins, and time over par breaks a tie.
It plays on a phone with two-thumb pads, and in a browser at fiatmo.com/games/rigged.
A duel is played in turns, so nobody has to wait by the screen. You challenge a contact (with a note) or share a link. When they accept, you each rig a hallway for the other, then each run the other's, and the results come when both are done. Your duels on the menu lists the ones waiting on you, first.
A notification tells you when it is your turn to rig, your turn to run, and when they have run your hallway. A duel nobody finishes ends after a week and says who ran out of time.
A run can be watched after the duel: a timeline marks every death, Next death jumps to just before one, and it plays at 1× or 2× with the builder's own clear running beside it as a faint ghost.
The hallway now has sound — footsteps, jumps, landings, each trap, the door — and throws up dust and bursts. There is a mute on the menu.
Hiss is the third game in Games. Your length is your fuel: double-tap to burn it for a burst of speed. Race puts two snakes on a curved course, Open Play is an endless arena of bots, and Royale is twelve snakes in a shrinking ring.
It plays in the app and in a browser at fiatmo.com/games/hiss.
A new player used to land on the menu and have to find How to play on their own. The first time you open Gridlock, the rules now open over the menu.
An incoming contact request showed neither who sent it nor its Accept button, so it could only be declined. Both show again.
Links looked like links everywhere in both apps and did nothing when tapped, and chat didn't turn them into links at all. A tap now opens the link in the browser. In chat, links in your own messages are underlined so they stand out against your bubble colour. A document sent in chat opens when you tap it.
Tapping Location sent your position immediately. A sheet now shows what the phone found and how accurate it is, and nothing is sent until you tap Send.
The Camera tile took photos only. It now asks Photo or Video first, and a video goes through like one picked from the gallery, up to five minutes long. The camera button in the message box is still one tap for a photo.
Opus voice notes, FLAC, AIFF, OGG and 3GP files were refused as an unsupported type after uploading the whole file, and ordinary MP3s over 5 MB were refused for size. Those formats are accepted now, and audio and documents have a larger size limit than images.
Deleting the latest message in a chat for yourself left it showing as the preview in your chat list. The preview now moves to the message before it. A message request you have declined also stops appearing in General.
On a message of yours with no text — just a photo or a file — the star, time and ticks were white on white in the light theme. They are now drawn in a colour you can see.
In a one-to-one call, a muted person looked the same as a silent one, and turning the camera off froze their last frame on screen. A Muted chip and a Camera off avatar now show in those cases. When they lose their network, a banner says so and waits for them to come back, and a poor connection gets its own line.
Starting a second call while you are in one now says you are already in a call rather than opening a second screen. Add person during a call searches all your contacts, not only the suggestions.
A phone that came back online could ring full screen for a call the caller had given up on minutes earlier. A ring that has run out is now dropped, and the missed-call notification covers it. A ring that arrives late only rings for the time it has left.
Tapping a category chip on the notifications screen left the list on a spinner until you left the page. Each chip now loads, and a tap made while another list is still loading wins.
On iPhone a chat notification had no buttons, while Android had Reply and Mark as read. iPhone gets them now, and a like, follow or poll notification gets the same buttons it has on Android.
A vote cast by paying never notified the poll's author, while a free vote did. It does now.
A comment with replies had a Reply button and a separate "3 replies" line under it. The count now sits on the button ("Reply · 3"). Tapping the comment still opens the thread.
A poll you had just posted could appear further down the Recent feed than older posts. A poll newer than the newest post now comes first.
The caption bar on a story was white text on a near-white background in the light theme. It now sits on a dark strip in either theme.
Choosing your domains a second time failed with "Bad Request". The same picks now go through, and a different set says your domains are already chosen instead of reporting a failed request.
Get tickets always opened the first ticket type on sale, so the others could not be bought from the event page. With more than one on sale it now lists each with its price, and you pick. A sold-out type is listed but cannot be chosen.
Some payments left you on the payment page after paying, with no way back but closing it by hand, and the receipt then ended on a list of your tickets. The app now comes back by itself and the receipt opens the ticket you bought, or the list if you bought several.
A tournament's leaderboard showed an empty table or rows of zeros. It now shows each player with their points, including the scores from the game the tournament is played in.
An in-person event could be sent for publishing without a location and then was refused. Publish now stays off until a place is set; an online event still needs its link instead.
A ticket type a week past its sale end still read "On sale". Its label now says whether it is on sale, not on sale yet, ended, sold out or disabled.
Every real ticket scanned as "ticket not found": the app drew the QR code in a different format from the one the server reads. The codes now match, so a valid ticket scans.
The badge dropdown never opened, a badge you had just minted wasn't listed, and giving one to somebody was refused. All three work now.
Titles, descriptions and messages typed in lower case unless you reached for shift. Fields now capitalise the start of each sentence, except for email addresses, links and passwords.
With a bad email address, Send code did nothing at all. The field now says what is wrong, and the message clears as soon as it is fixed.
Tapping a "Day complete — Streak started" notification in the organiser app showed "Route not found". It opens the inbox now.
A long list of chat fixes on the website. A reaction now shows straight away, and removing the last one takes its icon with it. The ⋮ menu stays open, so Delete can be reached. The chat list shows who is online, a new channel is created and opens, and a contact card, location, GIF or sticker you send appears in your own chat. The + button adds a reaction, and search in a chat searches the whole conversation, not just what has loaded.
Share on the website answered "No post selected", did nothing on a post's own page, and a shared event's popup closed as soon as it opened. The Repost button opened the share window instead of reposting. All four are fixed.
On the website you couldn't reply to a comment, like one, or add an emoji or a picture, and replies disappeared on reload. All of that works now, and a comment you have liked stays liked.
On an event's web page, Like and Save did nothing and following the organiser went to a 404. The event's category now shows, and the events page's tabs (Upcoming, Online, Seasonal, Going) actually filter the list.
A ticket's QR code didn't show on the website. Buying a ticket before its sale opened or after it closed said "insufficient stock". It now says the sale hasn't opened or has closed, and each ticket type has a label: On sale, Coming soon, Sale closed or Sold out.
Mismatched passwords, a bad email address and an empty one failed without saying why, and Resend code was refused. Each now says what is wrong, and Resend code sends a new one, or says how long to wait. Every password field has an eye to show what you typed.
An error in the post composer stayed after you closed it, and the Poll and Location buttons did nothing. The error clears when the composer closes (your draft is kept), and Poll opens the poll composer. Location has been removed until posts can carry one.
The ⋮ menu on posts in the Home feed opened clipped and useless, so Delete was unreachable. The Home feed also stopped after its first page. Both are fixed.
The profile menu showed "Select Domain" even when you had one, and a profile's follower and following counts couldn't be opened. The menu now shows your domain and rank, and both counts open a list with a Follow button on each row.
Pinning a chat on the website left every page blank for that user. Pages render normally now.
14 September 2026
Blocking somebody stopped them seeing your posts. It did not stop them notifying you — a like from a blocked account still arrived with their name and their face on it. That was tolerable while almost nothing produced a notification. It stopped being tolerable the moment likes and comments did.
Blocked accounts are now excluded in both directions: someone you blocked cannot reach you, and someone who blocked you cannot be made to hear from you either.
They are excluded when the notification is written rather than when it is sent, which matters for grouped notifications. A blocked account is never counted in "4 people liked your post", never named in it — and, because a notification is held back if anyone in it is excluded, could otherwise have silenced everyone else's likes on that post simply by liking it too.
Reporting something and hearing nothing is the commonest complaint about any moderation system, and it is usually not that nothing happened — it is that nobody said so.
You are now told when a report you made has been reviewed, and whether it was acted on. You are not told what happened to the other account: whether somebody was warned, suspended or left alone is between them and us, and saying would turn reporting into a way of checking up on other people.
Only finished reviews notify. A report moving into the queue is a step in somebody else's work, and announcing it would only leave you waiting for a second message that never arrives.
Separately, scheduling an account for deletion now also shows up in the app, naming the date and how to cancel. The warning email already existed — but somebody whose account was scheduled from a phone they no longer have reads their app long before they read their email, and the window to cancel is days.
Nothing told you when your account was signed in to. Somebody else getting in was something you would find out by noticing, if you noticed at all.
Signing in now notifies every other device on the account. It names the kind of device — an iPhone, a Mac, Windows — because the useful question is "was that me", and that is what answers it. It deliberately does not claim a city: a location guessed from an IP address is wrong often enough that including one would teach people to ignore the notification that matters.
Refreshing does not count as signing in, so the app going about its normal business never produces one of these.
There is also a new screen, "Where you're signed in", listing every device currently signed in with when it was last used, and marking the one you are holding. It is reachable from your profile and is where the notification takes you.
Signing other devices out is not there yet. It needs a way to prove it is really you — a password or a one-time code — and until that exists the button would be a gift to anybody who had already taken your account.
Kelvin used to sit wherever the list happened to put it, labelled KEL 1,250, with nothing to say what it was. It now leads your wallets, reads 1,250 Kel, and says where it came from and what it is for. Turning a star into Kelvin was called Convert, which sounds reversible and is not; it is now Release, and the confirmation says plainly that it cannot be undone and that Kelvin can be withdrawn but never gifted. Your wallet activity also names what happened — Released Blue Giant, Withdrawal — and a credit now shows as a credit: every row used to read as money going out, including a star you had just released.
Premium is a monthly plan paid from the Purse: Kelvin first, and naira or dollars where an admin has priced them. The paywall shows the price in every wallet you hold and only lets you pick one that covers it; if none does, it points at the way to get Kelvin instead of a dead button. The Premium page shows when it renews, for how much and from which wallet, lets you change that wallet or turn renewal off, and lists past payments. There are no refunds: turning renewal off keeps Premium until the paid period ends. Its first perk is every Gridlock reaction.
Four reactions have always been free — hi, good luck, nice one and gg — because being polite should never cost anything. The other six, from brutal wall to well played, now come with Premium. They are shown with a padlock rather than hidden, and tapping one opens Premium over the match instead of taking you out of the game; subscribe and they unlock right there, mid-game. The server checks it too, so they cannot be sent without Premium.
My Collection could fail to open with an error for anyone holding an asset, because of how the app read which badges are pinned to your profile. It opens normally again, and nothing you hold was ever affected.
After claiming a trophy, closing the sheet used to leave the trophy looking unclaimed, still offering to pay out, and the stars you had just received did not appear until you left and came back. The collection now updates the moment you close the sheet.
8 September 2026
Choosing a server opened one of its channels but left the sidebar showing your direct messages. Channel groups can also be folded away now, and stay folded next time.
Messages from you and from other people are drawn in one consistent style instead of two, grouped into runs with one avatar and one timestamp each, with real day dividers and delivery ticks that update when someone reads your message.
The web chat only ever showed the newest fifty messages and scrolling up did nothing, so older history was unreachable. Scrolling up now loads it, and a button appears to jump back to the latest.
Several photos now appear as a grid instead of a stack, files show their name and size with a download control, a video still processing says so, and shared polls, events, stories, locations and tips appear as cards.
Hovering a message now shows a small bar with six quick reactions and controls for reply, star and pin. A pinned message appears in a strip above the conversation.
Right-click a message for reply, edit, forward, copy, pin, star and delete. Shift-click picks several at once. You only see actions that apply — editing is offered for fifteen minutes and says so when the time has passed.
An unsent message is kept per conversation and comes back when you return, including after a reload. You can also paste or drag a photo straight into a chat, and a counter appears when you are near the length limit.
The emoji and GIF buttons in the composer did nothing when clicked. They now open a picker with emoji search, skin tones and recently used, plus GIF and sticker tabs.
The + in the composer now opens a panel of things you can send: a photo, a document, audio, your location, or someone's contact card.
Attachments now show which one is uploading and which failed. A message request from someone new shows Accept and Decline, with the reply box locked until you decide.
The poll page works the way the app does: ballot tiles for your answers, a folded predict-the-crowd step on crowd polls, then your standing and the tinted result bars once you have voted or the poll closes. Vote changes work where the poll allows them, prediction authors can suggest the result to a moderator, and the discussion is grouped by what each person voted for, with a composer for voters and working replies.
Poll rows in the web feed take your vote in place: tap an option on a single-choice poll and the row shows the results; multi-select polls show a Vote button. Paid and guess-the-crowd polls still open the poll page. Below 640px the site now has a phone layout: a bottom bar with Home, Messages, Events, Polls and More, a search icon instead of the search box, and nothing floating over the bar.
Every notification except chat used to arrive as a plain OS banner: the app logo, no picture of who did it, no buttons, and one new row in the shade for every single event. Six likes on a post meant six banners.
They are now drawn by the app itself, from one payload that every part of the server fills in the same way. That means the person's avatar in the banner, the subject's image where there is one, action buttons that work from the shade without opening the app, and — the part that matters most — repeated events collapsing into a single notification that updates itself, so "4 people liked your post" takes the place of "3 people" instead of arriving beneath it. Notifications from the same category bundle together, and a chat thread's banner now shows the last few messages rather than only the newest.
Tapping any of them opens the exact page it is about, marks it read, and clears it from the shade.
Alongside that, notification settings have been rebuilt around categories. There are around sixty kinds of notification now, and one flat list of sixty switches is a list nobody reads — which in practice means people switch the whole app off at the operating-system level instead. Each category is now a page with its own switch: messages, your posts, new followers, polls, snaps, tournaments, wallet, and the rest. Quiet hours can be set to a window and to particular days, with messages and calls optionally let through; anything held is delivered together afterwards rather than dropped. You can choose what shows on a locked screen, what the app-icon badge counts, and whether posts from people you follow arrive as they happen, as one daily round-up, or only from people whose bell you turned on. Account and payment notices are shown but locked, so the list still says what the app will send.
The permission prompt no longer fires the moment you sign in. It explains what you would be agreeing to first, which matters because on iOS the system only lets an app ask once.
A poll's whole point is the answer, and until now the only way to learn it was to remember the poll existed and go back and look. The people who cared most — the ones who voted — were the ones the app told least.
Closing a poll now notifies everyone who voted in it, with the result and how many people took part, and the poll's creator gets their own version with the turnout. An hour before voting ends there is a separate nudge, which matters now that a vote can be changed. Poll authors also hear when people vote and when someone adds an option to an open poll, both grouped so a busy poll is one growing notification rather than a stream of them.
Events had no scheduler at all. A ticket could be bought weeks ahead and nothing would happen until the day — which is exactly when a reminder is worth more than anything else the app sends, because the cost of forgetting is a wasted ticket and a trip not made. There are now two: one the day before, for plans and travel, and one an hour before, for leaving the house. Both go to everyone holding a ticket, and both carry the venue.
Tickets themselves now confirm on arrival — free ones as well as paid, which was the more obvious omission — and one notification covers a whole purchase rather than one per seat. If an organiser cancels a ticket you are told, with their reason, rather than discovering it at the door.
Moving an event tells its ticket holders what it moved to. Deliberately only the time and the place: renaming an event or fixing a typo in its description does not interrupt anyone, because notifying on every edit is how people learn to ignore the one that matters.
The feed is the same for everyone, so following somebody has not changed anything you could see. It does now.
Once a day, at a time you choose, there is a round-up of what the people you follow have posted — and it names them, because "Ada, Bola and 4 others posted" is worth opening in a way that "6 people you follow posted" is not. If a daily summary is the wrong speed you can switch the whole category to every post, or turn it off, in notification settings.
For the two or three accounts you actually don't want to miss there is a bell on their profile. Turning it on means their posts reach you immediately, without making every other account you follow do the same — which is the trade that usually ends with the whole category being switched off.
New followers now arrive as one notification instead of several. Being followed by five people in an afternoon is one piece of news, and it was five separate notifications before. Pages work the same way, one per page, so running several does not merge them into a single pile.
Communities had no way to reach their members. Anything an admin needed everyone to know had to be a post and hope, or a message to each person.
There is now an Announce action for owners and community admins. What you write goes to every member as a notification carrying the text itself, rather than a "there is an announcement" that makes opening the app mandatory to find out whether it mattered.
It is capped at three a day per community. That limit is the feature working rather than a restriction on it: an announcement that can be sent freely becomes a broadcast channel, and a broadcast channel gets the whole community category switched off — taking join requests and approvals with it.
Announcements are also kept. A broadcast that exists only as a push is invisible to anybody who was asleep when it went out, or who cleared their notifications, and a community's announcements are exactly the thing people come back looking for. Members can read the history; admins see it alongside how many people each one reached, which is the only honest answer to "did that actually go out".
Nothing about money produced a notification. A payment settled, a withdrawal landed or failed, someone sent you money — all silent, and the only way to know was to open the app and go looking.
Payments now tell you when they go through, and when they do not they tell you why. That second one matters more: somebody who paid and heard nothing does not know whether to try again, and trying again is how a double charge happens.
Withdrawals tell you when the money is on its way to your bank. If a transfer fails, or a bank sends it back, you are told that too — and told the money is back in your wallet, because a balance that drops and returns with no explanation looks like it was lost twice.
Money sent from one wallet to another now reaches the person receiving it, by name and amount. The sender gets nothing, because they are looking at the screen that already says it worked.
Linking a bank account for withdrawals sends a notification you cannot switch off. It is a security notice rather than a confirmation: the person who needs it is whoever did not do it. It names the bank and the last four digits only — a full account number on a lock screen would hand it to whoever is holding the phone.
4 September 2026
Existing accounts are untouched; the rule applies to new sign-ups only.
An unanswered call now says which happened: the phone rang and nobody picked up, or the call never reached a device at all.
You can read the message before you decide. Requests live on their own screen rather than in your conversation list, and they never light up the app badge. A request is one plain-text message, so nobody can send you links or attachments before you have said yes. Declining is silent, and you can let the people you follow skip the step entirely from Privacy settings.
The invite shows who added you, the members, and how many messages are waiting. The conversation stays sealed until you accept: no messages, no notifications, and nothing counted towards your unread badge.
Privacy settings gain a who-can-call choice: everyone, only people you have approved, or no one. Under approved-only a caller asks first, and the request arrives as a card in your chat with them, where you approve or decline it. The call button has moved off the profile page and into the conversation.
Long-press opens a selection bar that works on one message or several at once. Replies carry the quoted message above the new one, an edit stays open for fifteen minutes, and delete offers 'for me' or 'for everyone'. Up to three messages can be pinned to the top of a thread, starred messages get their own page, and Message info shows who received and read a message, and when.
One tick when a message is sent, two once it reaches the other device, and a colour change once it has been read. The state travels with the message history, so an app reinstalled on a new phone shows the same ticks it did before.
Sending a message moves your row to the top of the inbox with your own text as the preview, without waiting for a reply. Relative times tick over while the list is open and correct themselves the moment you come back to the app.
Chat arrives whole: the inbox and its search, an encrypted history kept on the device, the emoji, GIF and sticker composer, tips, sharing one of your polls or events straight into a chat, and the same request and invite controls the main app has.
The share sheet renders a profile as a card in four shapes - story, portrait, square and a wide banner - themed to the profile's own banner. You can post it straight to your story, or save it to your phone's contacts as a real contact entry carrying the photo and a QR code that opens the profile. Organisers and communities get their own version of the card, with member counts.
My code and Scan are two tabs of the same hub, reachable from search, from the new-message button and from your profile. Scanning a Fiatmo code opens that person, organiser or community.
Content scrolls under the bar instead of stopping at it, and the bar picks up the colour of whatever is behind it, together with the action button that sits on it.
Signing in with a phone number closes its own screen once the code is confirmed, and Google or Apple sign-in always comes back with an answer.
The logo in the header is a link on every page it appears on. The sign-in page carries a Learn more about Fiatmo link for anyone who arrives without an account.
A partial-name search brings back verified accounts first. An account that has not verified yet is still found by its exact username or name, and joins partial searches as soon as it verifies.
Long clips upload in parts, and every step of that path now handles the biggest files the apps accept.
The app now replaces its previous notification registration instead of adding a second one, and the server drops a registration that was minted by a different build the first time it tries to use it. A phone that had switched build could previously stay registered twice, with every notification also fanned out to the dead registration forever.
Android chat notifications carry Reply, Mark as read and Mute. Reply types into the notification itself and sends without opening the app. Mute silences that one conversation on this device for eight hours. A message you have not accepted yet shows no buttons, so nobody can be let through from the notification shade by accident.
Android was still showing the framework's default logo. Both apps now carry the Fiatmo mark, and the organiser's status-bar icon matches it.
Chat notifications now look the way WhatsApp's do: the sender's photo leading, with the app icon badged onto its corner. Someone with no photo gets the same coloured initials disc the app draws in the conversation, instead of the app's own logo. Tapping a notification opens that conversation, including from a closed app, and recent conversations appear when you long-press the app icon on your home screen.
A stale credential on our side could stop every notification going out until it expired on its own. It is now retired the moment the notification service rejects it.
Every page in the ranked lists section was returning a blank page instead of loading. All five of them now render.
A poll created by a person rather than an organiser stopped loading partway down the page. That affected almost every poll on the site.
If you belonged to any chat community, the chat page stopped loading after the community rail on the left.
Selecting a channel did not clear the direct message you had open, so the message was delivered to that private conversation instead of the channel.
The web chat now shows one pane at a time on narrow screens with a back control, lays the community rail down on tablets, and slides the info panel over the conversation instead of squeezing it.
Six controls in chat referenced icons that did not exist and rendered as empty squares.
Opening a chat now changes the address, so a conversation can be bookmarked, shared or reached with the back button.
The web chat waited a fifth of a second before it started doing anything, and three whole seconds in development builds. That delay is gone, and messages arriving during page load are no longer missed.
Opening a conversation never told the server it had been read, so the badge came back on every reload.
A message you sent kept the label Just now for the rest of the session, and could vanish from the thread. Messages now show a real time, and conversations show real day dividers instead of a single Today.
Messages that arrived while the connection was down were missed until a reload, and switching between a channel and back lost anything received in between.
The conversation list showed a bare clock time with no date, so a message from last week looked like one from this morning. It now reads now, 5m, 3h, Yesterday, or a day name.
The web chat never checked which conversations you had archived, so they stayed in your list. Archived conversations now move to their own Archived section, and message requests get their own section too instead of sitting among your normal chats.
Right-click or long-press a conversation to pin it to the top, archive it, or mark it read. Unarchiving also works now, which it never did.
The buttons for starting a conversation, joining or creating a server, and adding a channel did nothing at all when clicked. They now open a dialog and work.