# Changelog ## Unreleased - The patches are built with Morphe patcher 2.3.0 now, the one that comes with Morphe Manager 2.5.0 and Morphe Desktop 2.1.0. Manager won't load a bundle made with a newer patcher than its own, so update Manager to 2.5.0 or newer (or Desktop to 2.1.0) before you add the next release. - The patches now take Messenger 587.0.0.54.96 and drop 586. All 19 of 587's builds on APKMirror are covered. Refs #145. - `Hide Stories tab` is a new switch under Navigation. It takes the Stories tab out of the bottom bar after a restart, like the People and Notifications switches do. Refs #170. - `Use the phone's camera app` has a new `Ask photo or video` option. The camera button asks which one you want and opens your camera app for it, so you can record videos too. Refs #168. - `Mark as seen button` is a new switch under `View stories anonymously`. Stories you open get an eye with a slash through it while you're watching anonymously. Tap it and you show up in that story's viewer list, the way you would without the patch. The next story stays anonymous. Refs #169. - `Send Instants from your gallery` is a new switch under Photos and videos. Tapping the shutter in Instants opens your gallery app, and the photo you pick goes out as the Instant, cut to the camera's shape. Back out of the gallery and nothing is sent. Refs #161. - `Special contacts` is a new switch under Chat menu. Press and hold a chat with one person and tap Track this person. From then on HushMessenger writes down when they come online, go offline, type to you and change their name, using only what Messenger already shows you. Settings lists everyone you track with the last thing seen, their history, and buttons to clear it or stop tracking. You can track up to 50 people per account, and it all stays on this phone. It's experimental and starts off. Refs #163. - `Blur behind menus` is a new switch under Theme. When you press and hold a chat, the chat list behind the menu blurs like it does on an iPhone, and so does the screen behind Messenger's other pop-up menus and sheets. It needs Android 12 or newer. Phones that can't blur behind a window (some Samsungs can't, and battery saver turns it off on others) get Messenger's own screen blurred under the menu instead. The `iPhone look` quick setup turns it on too. Experimental, and it starts off. Refs #162. - `Live captions on calls` is a new switch under Calls. While you're on a call, what the other people say shows up as captions near the bottom of the screen, made by your phone's own speech recognition. Under the switch you pick the language they speak and the one you want to read, and if your phone can translate on the device the captions come out in your language. `Read captions aloud` reads each one in the phone's voice, and `Lower their voice while reading` turns them down while it does. It needs Android 13 or newer. It's experimental and starts off. Refs #159. - Videos in chat heads play like the rest of the chat now. On some phones Messenger 587 draws videos on a layer of their own, and a chat head could show that layer as a black box that stayed on screen after the chat head closed. In a chat head, or a bubble on Android 12 and newer, the video is drawn inside the chat instead. Videos in the app itself are unchanged. Refs #104. - The switches for the menu you get when you press and hold a chat moved out of Inbox into their own Chat menu group, both in HushMessenger settings and in Morphe's patch list. Inbox had gotten long. - The message log keeps up to 20,000 messages now, up from 5,000. Refs #172. - `Row in the chat menu`, under `Keep a message log`, adds Message log to the menu you get when you press and hold a chat. Tap it and the log opens on just that chat's messages, and `All chats` takes you back to everything. It starts off. Refs #172. - `Keep unsent messages` works in encrypted chats too. When someone unsends a message there, it stays in the chat marked [unsent], as long as Messenger already showed you its words (in the chat or a notification) and hasn't restarted since. Refs #172. - If `GmsCore support` is patched in but microG-RE isn't installed (or is turned off), the top of the HushMessenger settings says so now, since Messenger can't get notifications through Google's push service that way. `Copy setup` also gets a `Push:` line saying which push service Messenger is set up to use. Refs #173. - The settings screen is in Turkish now. Refs #160. - The settings screen is in Thai now, translated by MangaThatsFine. Refs #166. - With `Spoof package version` on, parts of Messenger still saw the raised version number, like its background job check and its crash reports, because they get the app's version info in roundabout ways the patch didn't follow. Now every place Messenger reads a version number asks first whose it is. Messenger's own answers with the build you patched, and other apps keep the number Android gives. Refs #120. - `Hide call buttons` and the call confirmation work on Messenger 586 again. 586 wraps a chat's audio and video call buttons in another button, and the patch was looking at the wrapper. Refs #146. - `Ask before a call` asks on every call button now, not only the ones in a chat's top bar. A business chat and the New message screen build their own call buttons, so a tap there used to start the call right away. Refs #172. - `Hide call buttons` takes the call buttons off business chats and the New message screen too. Those two screens build their own, so they used to stay. Refs #146, #172. - On 586 a call crashed as it started when `Record calls` was on. The recording setup now takes its size from Messenger's own instead of 585's. Refs #146. - The Experimental badge stays on one line. A long title used to squeeze it into a tall strip of one or two letters per line. Now it sits under the title when the two don't fit side by side. Refs #157. - When a Meta-signed Messenger was uninstalled with its data kept, the install check told you to patch a higher version, which can't work for a build Meta signed. It points you at `Clone install` now, or at removing the leftover if you don't need its data. Refs #156. - Patching goes faster. The code that finds where each patch goes had grown too big for Java to compile, so it ran slowly. It's split into smaller pieces now, and the slowest step takes about half as long on a computer. Refs #148, #150. - Switches that came with an update get a dot next to their name until you've seen their page, and so do their section and tab. TalkBack says "New" after the name. Refs #149. - `Android Auto messages` also works on accounts where Messenger leaves the car part out of its notifications. Messenger only adds it when a setting on Meta's side says so, and the switch turns that on. Refs #75. - `Report a problem` reads Messenger 586's notification channels right. 586 adds a code to the end of each channel's name, so the report listed every one of them as unknown. Refs #158. - A Root Mount over a different Messenger build now gets a warning instead of a mystery crash. Several builds share one version name, and mounting a patch made from one over another crashed chat heads. HushMessenger names the build Android has installed in a toast, under the name in settings and in `Copy setup`, so you know which one to patch. Refs #158. - `Hide Your story when sharing` now also stops the "Chats or Your story" question some phones ask on every share. Xiaomi's share sheet groups an app's targets, and Messenger switched its story target back on at every launch, so you had to pick each time. With the switch on, sharing a photo goes straight to Chats. Refs #147. - Material You gets a `Palette style` picker with the same choices as Android's wallpaper settings: Tonal spot, Neutral, Vibrant, Expressive, Rainbow, Fruit salad and Monochrome. A new `Light mode grays` switch tints Messenger's light-mode grays with your palette too, and white and black stay put. Refs #155. - `Bigger chat preview` gives the preview most of the screen when you press and hold a chat, and you can scroll back through the chat right there. The menu under it stays short and scrolls. Refs #151. - `Hide chat menu items` lets you pick what the press-and-hold menu on a chat shows. Press and hold any chat once and its items show up under the switch, ready to hide the ones you never use. Messenger always keeps at least one of its own. Refs #153. - Two new switches under Navigation. `Hide the tab bar while scrolling` slides the bottom tab bar away as you scroll down your chats and brings it back when you scroll up. `Floating tab bar` turns on the floating style Messenger is trying out, which sits over your chats. Both take a Messenger restart. Refs #154. - `Log chats that don't notify`, under `Keep a message log`, also saves messages from muted and restricted chats that aren't end-to-end encrypted, without a notification. Those chats used to stop before the log could see the message. Now they go through to the log and the notification is dropped right before it would show. Unsends still get marked, and auto reply leaves those chats alone. Refs #143. - Patching in Morphe Manager holds less memory. One of the `Android Auto messages` lookups kept a copy of every APK it had read for as long as the patches stayed loaded, so patching a second time carried the first APK along. It lets go once it's done now. Refs #75. - Patching does less work. The steps that look for chat heads, Material You colors and home screen shortcuts now skip code that can't match before reading it, and in testing on a computer a full patch used about a fifth less processor time. The patched app comes out exactly the same. - Patching is quicker again. The step that finds where each switch goes used to read through Messenger's code once per switch, and now it reads it once for all of them. In testing on a computer a full patch took a little over half the processor time it did before, and the patched app is byte for byte the same. - `GmsCore support` only tells Messenger that Google Play services is there while microG-RE is installed and turned on. It used to say yes either way, so without microG-RE Messenger kept reaching for an app that wasn't there. Now it carries on the way it does on a phone with no Play services. On Android 14 and newer, a phone without microG-RE also keeps Android's own sign-in route, so a password manager can still offer a saved login. - A chat pinned with `Pin more chats` loses its pin mark as soon as you unpin it. The mark used to stay on the chat until Messenger restarted, even though Unpin had worked. Refs #56. - For developers, `scripts/CompatReport.java` is a small launcher now. The report it runs lives in `scripts/compat/`, one file per group of patches instead of one file of nearly 12,000 lines, and you start it the same way as before. ## 0.29.0 (2026-11-05) ### New - `Clone install under another package name` has a new option, `Facebook package to open`. Put a Facebook clone's ID there (like `com.facebook.katana.morphe`) and a Messenger clone opens profiles, shared stories and other Facebook links in that clone, and checks for it instead of the regular app when it asks whether Facebook is installed. Sign-in and account sharing still use the regular Facebook app. (Hushfacebook #348) - `Search saved messages` is a new switch under Conversations, for old chats Messenger's own search finds nothing in. It adds a button to a chat's search results that looks through the messages this phone has saved for that chat, and tapping a result opens the chat there. It works in chats that aren't end-to-end encrypted. It can only find what the phone has loaded, so the screen says how far back it got, and scrolling up in the chat loads more. It reads Messenger's data without changing it, and it starts off. Refs #92. - `Record calls` is a new switch under Calls. During a call it puts a Record button over Messenger, and the call goes into one sound file in Recordings/Messenger Calls on your phone (Music/Messenger Calls on Android 10 and 11). While it's on, calls use Android's regular audio path instead of Messenger's own, and Messenger needs a restart after you change it. Messenger doesn't tell the other people, and recording laws differ from place to place, so get everyone's OK first. It needs Android 10 or newer. It's experimental for now and starts off. Refs #105. - `Hide call buttons` is a new switch under Calls. It takes the audio and video call buttons out of a chat's top bar, so a tap meant for something else can't start an awkward call. Calls still ring, and you can still join one that's going. Refs #121. - `Save button for voice messages` is a new switch under Photos and videos. Hold a voice message, tap More, and Save voice message is at the top, for keeping just that one. It lands in the same folder as `Save voice messages you play`, which can stay off. Refs #123. - The message log got easier to get around in. There's a search box that looks through words and names and doesn't care about accents, and `Group by chat` lists your chats so you can open one. `Save as text` and `Save as CSV` write what's showing to a file you pick, and `Save messages before they're removed` adds each message to a text file in Download/Messenger just before the log drops it, one file a month. Saved files aren't encrypted, so that switch starts off, and it needs Android 10 or newer. Refs #127. - `Row in the Menu tab` is a new switch under `Keep a message log`. It puts a Message log row in Messenger's Menu tab, right under the HushMessenger one, and tapping it opens the log without going through settings first. It starts off, and it shows on patches that have `Open settings from menu`. Refs #133. - `Preview chats on long press` is a new switch under Inbox. Press and hold a chat and you get a peek at the conversation with the chat's menu under it, instead of the menu alone. It's Messenger's own preview, which Meta only gives some accounts, so it looks and works like Messenger's. Refs #134. - `Show People tab` is a new switch under Navigation. On accounts where Messenger took the People tab out of the bottom bar, it puts it back right after Chats. If `Hide People tab` is on too, the tab stays hidden. Restart Messenger to see it. Refs #136. - `Customize message actions` is a new switch under Conversations. Hold a message and its actions come up in the order you set, without the ones you hid. Messages you sent and messages you got get separate lists in settings, and each fills in the first time you hold one of those messages. The first actions go in the row of buttons and the rest go under More, which keeps your order instead of moving Messenger's picks to the top. `Reset to Messenger's order` puts a list back. It starts off. Refs #144. - The message log does more now. `Direct` and `Groups` at the top split one-to-one chats from group chats, and a chat that shows up with no name can get one you pick, which search finds too. Photos people send you get their own entry, and when Messenger's notification carries a preview picture the log keeps that too, encrypted like the words. You also pick how long messages stay (30 days, 90 days, a year or until you clear the log), and the log holds up to 5,000 now instead of 500. `Button at the top of Chats` puts a clock next to the new message button that opens the log. Refs #131. - `Keep the search bar` is a new switch under Inbox. Some accounts lost the search bar above their chats when Messenger moved search behind an icon, and this brings the bar back and drops the icon. Messenger needs a restart after you change it. Accounts that never got the icon see no change. It's still experimental, so it starts off. Refs #128. - `Ask before a call` is a new switch under Calls. Tapping the audio or video call button in a chat asks "Start a voice call?" or "Start a video call?" first, so a stray tap doesn't ring anyone. Call starts it and Cancel doesn't. Calls coming in aren't affected. Refs #130. - `Jump to the first message or a date` is a new switch under Conversations. Long press a chat's name at the top of the chat and pick the first message or a day. Messenger only loads a chat a page at a time, so it scrolls back with a count at the bottom of the screen until it gets there, and Cancel stops it. Refs #130. - Calls have their own section in settings and in Morphe's patch list now, so `Quiet incoming calls` sits there next to the other call switches instead of under Conversations. Refs #130. - Light mode can have a color now. `Unlock app themes` is a new switch under Theme that lets you pick any theme in Messenger's own Theme setting without a subscription, and the check moves to the theme you tap right away instead of after you leave the page. Material You also got a `Light mode accent` switch, which gives Messenger's blues in light mode your accent while grays and white stay put. Pick that accent from the new row of colors in Appearance, or keep your wallpaper's. Refs #132. - `Report a problem` now also says whether Messenger's notifications can pop up on your phone. It fills in Android's notification switch for Messenger, your chat bubbles choice, whether Messenger may draw over other apps and show calls full screen, and which notification channels sit below the level that pops up. Channels are listed by Messenger's own id for them, so no chat names end up in the report. Refs #126. - `Your own home header` is a new switch under Theme. Type a few words or pick a picture and it shows at the top of the chat list in place of Messenger's wordmark. Words take the wordmark's own colors, gradient and dark mode white included, and stand as tall as its letters in the same spot. A picture keeps its colors, sits at that height too and wins when both are set. With neither, the wordmark stays. Refs #129. - Quick setups has an `iPhone look` choice now. One tap puts a Chats title over your chat list in place of the wordmark and keeps the search bar under it, the way Messenger looks on an iPhone. It turns on `Your own home header` and `Keep the search bar`, and it only fills in the header's words when you haven't picked any (or a picture). Undo takes it all back. Restart Messenger to see it. Refs #136. - The HushMessenger settings icon in the app drawer has a blue gear of its own now, and its name comes from the app's resources the way Messenger's does. Some launchers (one on a realme phone) showed it as a second Messenger icon with Messenger's name. The text menu's Bold and Italic rows get the same treatment, and so do Restart Messenger and a clone's app name, and the settings name follows your language where the settings page does. Refs #141, #125. - `Hide pictures on the Blocked list` is a new switch under Privacy. The list of people you've blocked, in Privacy and safety, keeps their names and Unblock but drops their profile pictures, the same way Messenger already shows someone it can't look up. It starts off. (Hushfacebook #361) - `Allow landscape` is a new switch under Conversations. Messenger turns sideways with your phone when auto-rotate is on, so you get a wider keyboard and bigger photos and videos, and a photo or video you close doesn't snap the screen back upright. Calls, the camera, payments and a few other screens stay upright. Messenger needs a restart after you change it. It starts off while it's experimental. Refs #140. - `Hide chosen chats` is a new switch under Inbox. Press and hold a chat and tap Hide from chat list, and that chat stays off your list even when new messages come in. Search still finds it. The chats you've hidden are listed under the switch with an Unhide button each, and they're kept per account on this phone. Hiding doesn't stop notifications, so mute the chat in Messenger for that. This one's experimental too, and it starts off. Refs #139. - `Notify for restricted chats` is a new switch under Privacy. Restricting someone in Messenger also stops their messages from notifying you. With this on they notify you like any other chat, and a chat you've muted still stays quiet. End-to-end encrypted chats aren't covered, and most one-to-one chats are encrypted now. The chat stays in your restricted list, and they still can't see when you're active or when you've read their messages. It's experimental and it starts off. Refs #143. ### Changed and fixed - HushMessenger now targets Messenger 586.0.0.55.92. 585.0.0.53.94 is no longer supported, so update Messenger before you patch. Arm64 phones can use builds 347215257, 347215330, 347215343, 347215344 or 347215348, and 347215257 and 347215343 are the nodpi ones with icons for every screen. Each was checked patch by patch, and Morphe Desktop applied and rebuilt it. On any other 586 build the patch stops before it changes anything, so pick one of those five. Refs #137, #145. - Messenger 586's 32-bit build (armeabi-v7a, 347215341) is supported too, so 32-bit phones can patch 586. It was checked patch by patch the same way, and Morphe Desktop applied and rebuilt it. Refs #106. - The patches are built with Morphe's patcher 2.2.0 now, so they need Morphe Manager 2.4.0 or newer, or Morphe Desktop 2.0.0 or newer. Refs #137, #138. - `Hide Meta AI` also hides Meta AI's offer to summarize the messages you haven't read. That's the "Summarize N unread messages" pill over a chat and the Summarize link on the unread divider. They're never built, so they don't leave a gap. Refs #142. - Chat heads show up for messages that arrive while Messenger is still running in the background, once you allow it unrestricted battery use. On Optimized battery Android blocks the chat head in that case, so one only appeared if Messenger had been closed. `Allow chat bubbles` now has an `Allow unrestricted battery use` button under its modes that asks Android for it, and its help text says why. - Coming back to HushMessenger's settings from an Android screen, like `Android bubble settings`, keeps your place in the list. If you'd searched first, the list used to jump back up to the search box. - Someone who calls you while HushMessenger's settings sit open behind Messenger now shows up under `Only chosen chats` when you go back to settings. The list used to stay as it was until you left settings and opened them again. - `Pin more chats` works now. A fourth pin used to end in Messenger's "Can't pin chat", because the limit lives on Meta's servers and nothing on the phone can talk them out of it. Pins past the limit now stay on your phone instead. They go to the top with the pin mark and stay there after a restart, and you unpin them the usual way. They won't show on your other devices. Chats that don't offer Pin at all get it back the same way. Turn the switch off or pause HushMessenger and those pins step aside until you turn it back on. Refs #56, #60, #47. - `Record calls` no longer tries to post its notification on Android 13 and newer when Messenger isn't allowed to show notifications. The call still records and saves, and the button over the call says it's recording. - **Restore screens on re-signed builds** changes nothing when it can't place its push service fix in a Messenger build. It used to have the signature answer in place already by the time it gave up. - If a part of HushMessenger that starts with Messenger can't load, Messenger opens anyway and only that part stays off. Before, a class that failed to load at that moment could close Messenger before safe mode had a chance to run. - New messages pop up at the top of the screen again on a phone where they'd stopped. While chat heads were on, Messenger lowered its Chats notification channel for good, and only Meta's server flags ever raised it back, so the pop-ups stayed gone even with chat heads turned off. **Keep chat pop-ups** is a new patch with no switch that stops the lowering and raises the channel at the next start. It leaves the channel alone if you changed it yourself in Android's settings, and picking `Chat heads` under `Allow chat bubbles` keeps Messenger's own behavior. Refs #126. - `Mark as read button` now shows up in chats whose top bar was full with no chat details button to replace, like a chat with a Label button, an Add friend button, a Meta AI button or a group's home button next to the call buttons. It takes the place of a button that isn't for calls there, so the call buttons still stay put. Refs #122. - Android Auto's launcher opens Messenger again instead of showing the HushMessenger settings entry in its place. The drawer entry now sorts after Messenger's own, so anything that launches Messenger by package name lands in Messenger, like Android Auto or the Facebook app's Messenger button. A Manager's Open button does the same. The `Android Auto messages` text now says Unknown sources is only enough on a desktop head unit, since a real car can still leave Messenger out, and that playing a message aloud marks the chat read and shows Seen, even with `Hide read receipts` on. Refs #75. - With `Open your gallery app`, a photo or video from Google Photos no longer crashes Messenger when the folder it copies your pick into won't take the file. The copy moves to another of Messenger's own folders and the send carries on, and **Report a problem** says which folder refused and why. Refs #124. - `Bold and italic text` now puts Bold and Italic straight into the chat box's text menu, by name, with nothing to tick first on a Samsung phone. On some Samsung phones those two rows showed up as Messenger and Messenger, and they brought Dictionary, Translate and other apps' rows into the chat box along with them. Those rows are gone from the chat box again. Refs #125. - `Check for updates` can't close Messenger anymore when the check breaks in a way it didn't plan for. It says it couldn't check, the same as when you're offline, and **Report a problem** picks up what went wrong. - Saving your choices to a file now says "Couldn't save your choices to the file" when that fails. It used to show the clipboard's message. A restore that only gets some of them back reads like "Restored 3 of 5 choices." now. - A switch that stopped with an error doesn't keep saying so after you repatch. That error came from the older patch, so the line under the switch and `Copy setup` now leave it out until the new one hits a problem of its own. A part that keeps failing also logs once a minute instead of every time the screen redraws. - In a right-to-left language the arrows on the settings sections point the right way. A closed section's arrow pointed up and an open one's pointed down. - TalkBack reads a settings section's name and count first. It used to say "Collapsed, Button" before the name. - Buttons in the Hush settings with a short label like "OK" are at least 48 dp wide now, so they're as easy to hit as the taller ones. - The Hush settings page has a new layout, the one HushGram uses, drawn in Messenger's colors. It opens on the HushMessenger logo and name, and the name moves up into the top bar once you scroll past it. Right under the name is the search box, with `Show all settings as a list` below it if you'd rather see every switch at once. Sections are cards now, each row with its own icon. Sheets got bigger titles and buttons that are easier to tell apart, and the restart bar sits at the bottom of the screen. Dark mode is true black and light mode follows the same layout. Switches are squared off, with the thumb inside the track. The HushMessenger name and the other titles drift through Messenger's blues, sky to royal, and the pink and orange are gone. - A switch that can't work on your phone says why on a line of its own now, at full strength. The reason used to be dimmed along with the switch, and it was hard to read. `Log out` does the same with the line that says where to log out instead. - Buttons that remove something are red, like `Clear log` and `Remove the picture`, or the one that removes an auto reply or its picture, and they look grayed out while they can't be used. Text boxes have a thicker outline that turns red while what's in one needs fixing, and an empty auto reply now says "Write a reply here, or remove this one before saving." - The `Shared install` help is an amber warning now, since uninstalling Messenger from there removes its data too. The note that auto reply is off sits in a box of its own instead of one that looked like a text field. - Cards in settings, the sheets, the message log and the restart screen all use the same corners and padding. - A search left typed on the Controls tab doesn't rename the App tab's top bar anymore. - In the message log, a chat's name is in the link color when tapping it opens that chat. - `Search saved messages` shows each result as its own card with room between them, and a long message ends in "…". Tapping Search with nothing typed says to type a word first instead of doing nothing. - Picking an accent color, `Use copied theme`, `Back to wallpaper colors` and `Remove the picture` under `Your own home header` can all be undone with Undo at the top of settings. The color dots and the Record button over a call show your tap now. - Settings stay put under your finger. Undo showing up at the top, or going away 10 seconds later, used to push every row down and back up, and the note above the color dots did the same when an accent pick changed its length. The page moves with them now, so the dot or button you just tapped stays where it was. - The bar at the bottom of a chat while `Jump to the first message or a date` scrolls back has a line along its top, and TalkBack names it when it shows up. A tap beside Cancel no longer lands on the chat box under it. - When an update is out, `View release` is the main button under `Check for updates`, and a check that fails says so in red. - An auto reply picture with see-through parts, like a logo saved as a PNG, goes out on white. Those parts used to turn black. ### Checks - The How to update step in the release notes lists the version codes the release was checked against, instead of saying any build on APKMirror works. v0.28.0's notes said that, and then APKMirror posted 17 more 585 builds that v0.28.0 doesn't take, newer `nodpi` ones included. Refs #138, #145. - `scripts/walk-app.ps1` no longer taps anything on Messenger's chat restore prompt, as its own notes always said. When the prompt turns up in front of a later screen, the walk opens the chat link to get past it and then opens that screen again, the way it already did for the chat list. `-Thread` has to be a chat's numeric user id now, and a walk given `-Serial` without `-OutDir` keeps its steps and receipt in a folder for that phone, so walks on two phones at once don't clear each other's. - `scripts/CompatReport.java --save` records a new Messenger build now instead of failing because the build isn't recorded yet. Without `--save` that build still fails. A damaged APK or a broken line in a record gets one line naming the file and exit code 2, not a Java stack trace. ## 0.28.0 (2026-10-31) ### New - `Quiet incoming calls` has a new **Only chosen chats** switch under it. Turn it on, then pick from the people who called you lately (they're listed newest first), and only their calls come in without a ring. Everyone else rings as usual. Refs #117. - `Android Auto messages` is a new switch under Conversations. Android Auto only reads a message out and takes a spoken reply when the notification has a mark-as-read action, and Messenger's don't, so Auto fell back to treating them as plain alerts. With the switch on, each message notification carries Messenger's own car mark-as-read as an action you never see on the phone, right next to Messenger's Reply. Android Auto only lists apps installed from the Play Store until you turn on Unknown sources in its developer settings. It's experimental and starts off. Refs #75. - `Hide the Instants button` is a new switch under Inbox. It hides the + button that slides in at the right edge of your chat list and opens Instants, on every 585 build. Not every account gets that button, so the switch is experimental. Refs #118. - `Hide the Instants button` also covers the Instants button under your chat heads, the one that sits right where your thumb goes when you reach for a chat. Refs #104. - `Save voice messages you play` is a new switch under Photos and videos. Each voice message you play also lands in Recordings/Messenger on your phone (Music/Messenger on Android 10 and 11), so a file manager or another player can open it later. Playing the same one again doesn't make a second copy. It needs Android 10 or newer and starts off. Refs #90. - `Put gallery picks in the chat` is a new switch under Photos and videos that goes with `Open your gallery app`. What you pick in your gallery app goes straight into the chat you came from, above the message box, instead of Messenger's editor or the Send to sheet. Pick one photo or a dozen, then tap Send when you're ready. Nothing goes out on its own. It also brings that row above the message box to accounts where Messenger hadn't turned it on yet. A chat that was already open when you flipped the switch needs opening again. Starts off. Refs #101. - HushMessenger's settings speak Vietnamese when your phone is set to it, in any region. Thanks to @hautv404 for the translation. Refs #113. - **GmsCore support** is a new patch that starts unselected, for phones running microG-RE instead of Google Play services. Messenger asks microG-RE for its push token, so it can stay signed in. It's experimental. Leave it out on a phone with Play services. Refs #119. - Material You can use your own colors now. Under Appearance, copy a theme like `{"name": "Sunset", "accent": "#E1306C", "neutral": "#1A1418", "pure_black": true}` and tap **Use copied theme**. The accent replaces Messenger's blues and the neutral tints its grays and backgrounds in dark mode, at Messenger's own brightness so text stays readable. **Copy theme** hands you the colors in use to tweak or share, and **Back to wallpaper colors** drops it. Refs #115. - `Keep a message log` marks a message Unsent when the sender takes it back, encrypted chats included, and the log page has a **Show only unsent** button for finding them. With `Keep unsent messages` on, it also tries to keep an unsent message's notification up, even when it was the only message the notification showed, since an encrypted chat can't keep the message on screen. That notification part is experimental. Refs #70. - The patch bundle is signed now. Morphe Manager 2.3 and newer checks the signature inside the `.mpp` before it loads HushMessenger, and once it has seen this key it won't take a bundle signed with another one. Manager shows the key as `4d8d c2b3 fbcd 3ab6`, and the README has a command for checking a download by hand. Older Managers don't look at it. ### Changed and fixed - On a Samsung phone, `Bold and italic text` now tells you where to switch Bold and Italic on. Samsung keeps other apps' entries out of the text menu until you tick them under the three dots and Manage apps, so turning on the switch alone looked like it did nothing. Refs #42. - The README's troubleshooting list now covers a login that gets past the password and then loops on a browser check. That's an account with a passkey, and removing the passkey on the web lets Facebook fall back to approving the login from another device. Refs #108. - HushMessenger now targets Messenger 585.0.0.53.94 and takes all 7 builds APKMirror lists for it, five for arm64 and two for armv7. 584.1.0.61.98 is no longer supported, so update Messenger before you patch. Each build was checked patch by patch, and Morphe Desktop applied and rebuilt every one of them. - `Hide Facebook shortcuts` now also hides the View profile button under the person's name and picture at the top of a chat with no messages yet. It opened their Facebook profile. With `Keep the Profile button` on, that one stays too. - `Hide inbox tabs` now says what it hides on 585: the All, Unread and Groups tabs above your chats. The old text named Home and Channels tabs Messenger doesn't show anymore. Checked on 585, where On hides the tabs and Off or Pause brings them back. - With `Open your gallery app`, a photo or video you pick in Google Photos that's already saved on your phone now reaches Messenger as the phone's own copy, which Messenger reads with its own photo and video access. Before, the upload had to go through Google Photos' permission. Items that only live in the cloud, and anything Messenger can't open itself, go through as picked. Refs #103. - Opening a new issue on GitHub now offers a bug report form and a feature request form. The bug form asks for your versions, how you got your patched Messenger (Morphe Manager, Morphe Desktop, morphe-cli or a prebuilt APK), which patches source you added, the phone and where in Messenger it happened, so a report can be looked into without a round of questions first. Other sources carry HushMessenger's patches built from other code, and the source address tells them apart. **App > Report a problem** still opens a blank issue with those facts already filled in. - The README's Install step says what Manager 2.3 and newer shows as this project's signing key, and its Help section explains the "Key changed" badge. It means the bundle was signed with another key and came from somewhere other than this source, so remove that source and add this one again instead of tapping Trust. - The README's Help section explains why videos can go missing from Messenger's own picker on Android 14 and newer: with Messenger's photo access set to "Allow limited access" the picker shows only the items you chose. "Allow all" or `Open your gallery app` brings them back. Refs #114. - With `Square profile pictures` on, the story ring around a picture in your chat list is square too, or rounded with **Round the corners**, so it hugs the picture instead of circling it. A ring that's still filling in follows the same edge. The ring part is experimental. Refs #116. - `Hide stories and notes` also takes away the story rings around people's pictures in your chat list, the colored circle that says someone posted. It works with or without `Square profile pictures`, and like the square ring it's experimental. Refs #118. - The patches are built with Morphe patcher 2.1.0 now, the patcher that comes with Morphe Manager 2.3.0 and Morphe Desktop 1.20.0. Manager won't load a bundle made with a newer patcher than its own, so update Manager to 2.3.0 or newer, or Desktop to 1.20.0, before you add this release. ### Checks - The release check reads the bug form's version placeholder and refuses a release where it names another HushMessenger version or a Messenger build the bundle doesn't target. Prepare moves it along with the README. - The release check reads which patcher built the bundle from its manifest and wants the README to ask for the first Morphe Manager and Morphe Desktop that come with it. Install steps can't send anyone to a Manager too old to load the release. Between releases the README keeps naming what the published release needs. - The release check refuses a bundle holding a class file compiled for anything newer than Java 17 and names the entry, since morphe-patcher 2.1 won't load one. Entries under `META-INF/versions/` are left alone, as the patcher leaves them. - `scripts/walk-app.ps1` now patches the stock APK of the build the device already runs when you don't pass `-Apk`. It reads the installed version code and picks that build from `HUSH_NATIVE_FIXTURES`, so the install no longer dies on `INSTALL_FAILED_VERSION_DOWNGRADE` or lands a different ABI or screen density. When no fixture is that build, it stops and says which builds it has. - `scripts/walk-app.ps1` now waits up to 90 seconds after it installs Messenger, until the chat list or the restore prompt shows. The first start after an update upgrades Messenger's data, and until that's done a chat link opens a blank screen. On an x86_64 emulator, a crash inside the emulator's ARM translator while Messenger forks a helper process is still reported, but it no longer counts as a Messenger crash, since a phone doesn't run that translator. - `scripts/walk-app.ps1` closes the keyboard before it reads each screen. A chat with no messages yet puts the cursor in the message box, the keyboard comes up, and with it open the screen read failed, so the walk reported the chat as having no screen to check. The keyboard can also come up a moment after the chat loads, so the walk checks again after closing it and tries the screen read up to three times. - Publish now writes the GitHub release notes in the layout v0.27.0's notes were redone in by hand. They open with the release summary, then carry every CHANGELOG bullet word for word under New in this release, Fixes and changes and Behind the scenes, followed by the reports the release touched, How to update, and What was checked, which comes from the walk that cleared the bundle. Publish stops before tagging when a bullet would go missing or a line uses a dash. - The release check refuses a bundle that isn't signed, was signed with a key other than the one in `morphe-signing.pub`, or was changed after signing. It also wants that key in the source's `public_key` and its fingerprint in the README. `release.ps1` reads the private key from `-BundleKey` and the build signs with it, while everyday builds without the key stay unsigned. - The settings screen's code is split up. Auto reply's sheet, the message log viewer, theme colors, the choices backup, the custom font rows, the update check and Copy setup each have a file of their own now, which takes the settings page itself from about 3,600 lines to about 1,500. Nothing you see or tap changed. - The build moved to Gradle 9.8.2 and Kotlin 2.4.21, both bugfix releases. The patches used to mix Kotlin 2.4.20 and 2.4.21 across the compiler, plugin and library, and now one version covers all three. The bundle's classes still target Java 11. ## 0.27.0 (2026-10-27) ### New - **Log out** is back. It's a row on the App page of the HushMessenger settings, and tapping it signs you out of the account on this phone the same way Messenger's own Log out does. You end up on Messenger's login screen, ready for the same account or a different one. There's no extra "are you sure" step. If a Messenger build ever moves its Log out, the row says so and points you to the one in Messenger's menu. Refs #88. - **Square profile pictures** is a new switch under Theme, and it starts off. After a restart, profile pictures in the chat list, the stories row, chat headers and suggestions turn into squares, or rounded squares if you also turn on **Round the corners**. People who are online, the ones with the green dot, keep the same size as everyone else in the stories row. Notification pictures stay round. Refs #89. - **Custom launcher icon** is a new patch that starts unselected. It turns Messenger's home screen icon white on black, or black on white if you pick that style, using Messenger's own logo. Themed icons on Android 13 and up still work. Patch again without it to get the normal icon back. Refs #107. - HushMessenger's settings speak Traditional Chinese when your phone is set to it, in Taiwan, Hong Kong or Macau. Simplified Chinese still shows English for now. Thanks to @JhouHank for the translation. Refs #98. - **Hide Your story when sharing** is a new switch under Photos and videos, and it starts off. Share a photo, video or link into Messenger from another app and the Send to list won't offer Your story anymore, so a stray tap on Add can't post it. Your chats and groups stay right where they were, and the story itself works as usual. Refs #102. ### Changed and fixed - HushMessenger now targets Messenger 584.1.0.61.98 and takes all 21 builds APKMirror lists for it, arm64 and armv7 alike, including the three arm64 bundles `346817008`, `346817025` and `346817026`. 584.0.0.49.98 is no longer supported, so update Messenger before you patch. Each build was checked patch by patch, and Morphe Desktop applied and rebuilt every one of them. Refs #106. - Patches are built with Morphe patcher 2.0.1, which uses less memory while patching. You'll need Morphe Manager 2.2.0 or newer, or Morphe Desktop 1.19.1. - The HushMessenger settings got a tighter layout, modeled on HushFacebook's. Every section folds up under its own header and starts closed, so the whole list fits on a couple of screens. Open the ones you use and they stay open next time. Searching still finds any control, whether its section is open or not. The banner with "Make Messenger yours" and the Inbox, Chats and More chips are gone. The colors now follow Messenger's own blue in both the light and dark theme, and Restart Messenger sits at the top of the App tab. - Every HushMessenger title (the settings name, the sheet titles and the restart screen) now shows Messenger's blue to purple to pink to orange colors. They drift slowly with a light sheen now and then, and they keep moving even with Android's animations turned off. - TalkBack reads each settings section's open or closed state once now. It used to say it twice, like "collapsed, Collapsed, Inbox". - With large text, the little arrow on each settings section shows whole again. At 200% it was cut down to a sliver. - **Source and licenses** under About opens the README's Credits section again. It pointed at a heading the README no longer has, so it landed at the top of the page. - With **Open your gallery app** on and no default gallery set, the list Android shows you now holds only your gallery apps. It could slip in other pickers, like Contacts. Whichever gallery you tap still opens with your photos and videos together. Refs #94. - If Messenger crashed in the last three days, **Report a problem** now adds a line saying where in the code it happened. It's only the names of the failing code, never the error text, so no file names or chat content go in. Refs #103. - Checking what you picked from your gallery no longer holds up Messenger's screen. If you cancel, or the pick times out or loses its permission, you're back in the chat with nothing attached. Report a problem now notes how the last gallery pick ended, without any file names. Refs #94. - The patch log now shows when each search through Messenger's code starts and finishes. The Wi-Fi search is faster and lighter on memory too, since it reads Messenger's code directly instead of building text for every reference it passes. Refs #93, #99, #100. - In **Auto reply**, a picture always lands on the card you picked it for, and it's always the one you picked last. Before, a slow copy of an earlier pick could finish late and replace the newer picture, or put one back after you tapped Clear. Save waits while a picture is still copying. - Picking a picture for an auto reply is safer with huge or slow files. HushMessenger reads the file once into its own copy, turns away files over 32 MB or 64 megapixels, and gives up after 30 seconds, then tells you which of those happened. Picking again or tapping Clear stops the earlier copy right away, and the picture you had before stays put. - Some APKMirror downloads of Messenger only carry icons for one small screen size, so on a sharper phone the launcher icon and the icons in Messenger's settings look blurry and jagged. HushMessenger's settings now say so under About when your download is one of those, and the README lists which builds have icons for every screen. Patching a `nodpi` build fixes it. Refs #91. - **Hide Meta AI** now reaches the search screen too. Tap the search bar and the box at the top used to say "Ask Meta AI or search" even with the switch on. Now it shows the plain search hint, like the bar on the Chats list. Search still finds people and chats the same way. - **Clone install under another package name** no longer crashes a few seconds after you open the copy when the regular Messenger is on the phone too. The copy was saving its muted chats into the other Messenger's storage, which Android blocks, so now it keeps them in its own. - With **Slide chats in and out** on, a chat whose first frames come late no longer jumps partway in. That happened most on the first chat you open after starting Messenger. The chat now waits off screen until Messenger draws on time (a quarter second at most), then slides in from the edge. Going back works the same way. ### Checks - The install check now names the kind of refusal it finds and what to do about it. A Messenger signed with another key says which Android user it's installed for, so a copy hiding in Secure Folder or a work profile is easy to find. A permission held by another app (`INSTALL_FAILED_DUPLICATE_PERMISSION`) is no longer mixed up with a Messenger signer problem. - The README's settings screenshots are new, and they now show the App tab too. They're rendered from the settings code, with a small record of which switches they show and each image's checksum. A release stops when a switch was added, renamed or retired since then, or when an image no longer matches. Any link from the app into the README has to reach a heading that exists. - When another app takes the phone's screen in the middle of a walk, the failed step now says which app it was, instead of only saying it left no screen dump. - The whole-app walk now has to show every screen it opened. Counting them is no longer enough. Each required step (a chat, both settings tabs, the message log and auto reply sheets when those patches are in, and each native screen) saves a screenshot and a UI dump next to the receipt, with their checksums. Publish reads those files again and refuses the walk when a step is missing or listed twice, a file is missing or changed, a screen shows the Restore or login prompt, two steps landed on the same screen, or a step ended up somewhere it shouldn't. An older receipt that only counted screens doesn't count anymore. - Every Messenger screen in the walk now has to land on its own page. Any Messenger screen no longer passes. Each step checks the page it lands on and a label only that page has, so a link that drops back to the inbox fails. Messenger 584.1 ignores most of its old links when another app sends them (the inbox, Active now, stories, new message, stickers and Marketplace). The walk now opens the inbox from Messenger's own launcher and adds the story and contact settings pages, which still open by link. - On Android 12 and older the walk can now pass the message log. Before Android 13 the log blocks screenshots to keep chat text out of Recents, so that one step keeps a record showing its window is locked instead. Every other step still needs its screenshot. ## 0.26.0 (2026-10-22) ### Reported issues - [#69](https://github.com/SysAdminDoc/HushMessenger/issues/69) New **Quiet incoming calls** switch under Conversations. Calls still come in, but Messenger doesn't ring, vibrate or pop the call up over what you're doing. The call waits in the notification shade with its Answer and Decline buttons, and a call you miss still shows up in the chat. If the Facebook app is on your phone, it can still ring for the same call. It starts off. - [#81](https://github.com/SysAdminDoc/HushMessenger/issues/81) New **Hide tab badges** switch under Navigation. It clears the red dots and counts from the tabs at the bottom and from the Facebook button at the top. Want one of them back, say the Chats count? Turn on its Keep switch right below. Restart Messenger after a change. It's off until you turn it on. - [#85](https://github.com/SysAdminDoc/HushMessenger/issues/85) New **Hide the recent photo card** switch under Photos and videos. Take a screenshot or a photo and Messenger puts a card above the message box offering to send it. With this on, the card doesn't show up. Anything you took is still in the gallery button when you want to send it. It starts off. - [#64](https://github.com/SysAdminDoc/HushMessenger/issues/64) With two gallery apps on the phone and neither set as the default, **Open your gallery app** sent you to a Samsung Gallery that listed photos only. Videos show up there now too, and Android's list of apps to pick from still holds just your galleries. - [#64](https://github.com/SysAdminDoc/HushMessenger/issues/64) and [#82](https://github.com/SysAdminDoc/HushMessenger/issues/82) **Open your gallery app** lets you pick several photos and videos at once. Pick two or more and Messenger's Send to sheet opens with all of them and the chat you came from at the top, so one Send gets them there. Pick just one and it opens in Messenger's editor like before. Samsung's Gallery now asks for a tap on Done even when you pick a single photo. - [#80](https://github.com/SysAdminDoc/HushMessenger/issues/80) **Stop analytics uploads** now also stops the upload Messenger 584 starts from inside the app. On 584 Messenger can send its analytics batch, the one that holds the tap and scroll details from the report, without going through the background upload services the switch already stopped. With the switch on, that one doesn't start either. - [#79](https://github.com/SysAdminDoc/HushMessenger/issues/79) An auto reply can send a picture too. Open a reply under **Auto reply** and tap **Add a picture**. The text goes out first and the picture follows a couple of seconds later in the same chat, with the same once-per-chat wait, Off and Pause as the text. HushMessenger keeps its own copy of the picture, so moving or deleting the original won't break the reply. If that copy is gone, or a Messenger update changed how photos are sent, the text still goes out on its own. ### Changed and fixed - HushMessenger now patches Messenger 584.0.0.49.98 (version code 346814894) and no longer takes 583.0.0.29.95. That's the one arm64 build of 584 on [APKMirror](https://www.apkmirror.com/apk/facebook-2/messenger/facebook-messenger-584-0-0-49-98-release/) so far. Every switch was checked against it again, so update Messenger to 584 before you repatch. - **Hide inbox ads** is gone. Meta stopped selling Messenger inbox ads in November 2025, and Messenger 584 took out the ad cards the switch used to filter, so there's nothing left for it to hide. If you pick patches by hand in Morphe, it just won't be in the list anymore. - The six photo and video switches now have their own **Photos and videos** group, in Morphe's patch list and on the settings Controls tab alike: original quality photos and videos, **Fix videos that won't send**, the camera and gallery app switches, and **Hide the recent photo card**. Conversations had grown too long to scan. The Chats filter still shows them. - **Patch controls** and **Restart Messenger** now stay at the top of the icon's long-press menu while Messenger sits in the background. New messages used to push them below the four rows your launcher shows until you next opened and left Messenger. Android 9 and 10 still put them back only when Messenger opens or closes. - Hiding Quick setups with a long press now names the button that brings it back, **Quick setups section** under Your choices. The old message sent you to the App tab you were already on, and the button talked about a home page that doesn't exist. - A video picked in a chat whose access ran out before or during the send no longer gets **Fix videos that won't send** marked as failing in settings. It goes out the way Messenger would send it anyway. - If the phone's sound encoder won't start while a video's sound is being fixed, it's let go right away instead of staying held until Messenger closes. - The copies **Fix videos that won't send** makes of videos you pick now go a day after their last use, even if you never pick another video or you've turned the switch off. Messenger clears them when it starts and again while it's open as each one's day runs out. They used to sit in Messenger's cache until the next pick. - Android 12 and newer show only two lines of a pop-up message and cut the rest with "...", which hid the useful part of 27 of HushMessenger's. They're shorter now and fit, from the font file and backup messages to the camera, gallery and restart ones. - Restoring your choices pops up how many of them it actually changed ("Changed 3 of 58 choices"), that none changed, or that they already match the backup, plus "Changes paused" or "Changes resumed" when the backup pauses or unpauses them. It used to count every choice in the backup, even ones that were already set that way, and the pause along with them. It only says they match when nothing in the backup was skipped or left off. Skipped choices and Auto reply staying off used to run past the end of that message. Now the whole result stays written under the backup buttons. - When reading a choices file takes too long, the message says your choices didn't change. It used to warn that a saved file may be cut off, which is only true when saving one. - If settings can't open from the side menu or the Messenger logo, two short messages now say so and then name the other way in. One message was too long and lost its second half. - Picking a font file while **Use your own font** is off now says to turn the switch on, instead of telling you to restart Messenger. The file's name stays on the line under the button, where a long one can't push the rest off the message. - **Use system emoji** loads the phone's emoji font once, even when Messenger asks for it from several threads at the same moment. Each thread could load its own copy before. - When the message log can't save new messages (the phone's key store is busy, say), it tries again by itself 30 seconds later, then less often while it keeps failing. Those messages used to wait for the next notification and were lost if Messenger closed first. - **Back to defaults**, the other Quick setups and **Clear log** each show an Undo button at the top of settings for about 10 seconds, and the emptied log shows one too. Clear log still deletes the saved messages and their key right away. Undo writes them back from a copy kept in memory until the button goes, and leaving settings makes the change final. Undo leaves alone any switch you flipped yourself after the change. - The **Patch controls** and **Restart Messenger** long-press shortcuts now tell your launcher when you use them, so it can rank them by use the way it does Messenger's own chat shortcuts. - On a Root Mount install, **Patch controls** and **Restart Messenger** never actually showed up on Messenger's icon. Android turned down the icons they used. They show up now. - Each way back into settings now has its own switch on the App tab, as asked in [HushFacebook#146](https://github.com/SysAdminDoc/HushFacebook/issues/146). Next to **Hide the Menu row** there's **Hide the icon shortcuts**, which takes **Patch controls** and **Restart Messenger** off the menu you get by long-pressing Messenger's home screen icon, and **Ignore the logo long press**. The last way in that's still on can't be switched off: its switch goes gray and says why, and if a saved choice leaves nothing else, the icon shortcuts come back by themselves. Pause and safe mode leave these switches alone, since they're how you get back in to undo either. If the logo long press is what lets the Menu row stay hidden, the row comes back after an update or a repatch until one long press on the logo opens settings again. - The two icon shortcuts now come from HushMessenger each time Messenger starts, on every install, which is what lets the new switch take them away. After updating, they show up again a moment after you first open Messenger. Messenger's own chat shortcuts can push them down that menu while it's open, so they move back to the top each time you leave Messenger. On a normal install, a copy you pinned to the home screen before this update stops working, so remove it and pin a new one. Copies pinned from now on turn gray while the shortcuts are hidden and work again once they're back. - When Messenger's chat shortcuts already fill everything Android lets one icon hold, the lowest of them now make room, so **Patch controls** and **Restart Messenger** still get on. Android refused to add them to a full icon before. Those are the same chat shortcuts Android drops when Messenger adds one to a full icon itself. - In the settings cards, the line between switches now sits below a switch's own buttons (Keep the Profile button, the bubble choices, the font file, message log and auto reply buttons) instead of between the switch and them. The last switch in a card no longer draws a second line just above the card's edge. - With a keyboard or a remote, the focus outline on a filled settings button (Restart Messenger, Save, the selected tab and filter) is now two rings, a dark and a light one, so it shows up against the button and the page in both themes. The single gray ring was hard to see on the button's own color. - The settings call each thing by one name now. Controls are the switches, and your choices are what you set them to. The clipboard backup buttons are **Copy choices** and **Paste choices**, since Export and Import sat right next to the file buttons and sounded like them. The third bubble mode is **Android bubbles**, which is what Android calls them. Flipping a control pops up "Hide stories and notes is on" instead of "Hide stories and notes on", and **Fix videos that won't send** says what it does before it names the sound format. - Two patches got plainer names, in Morphe's patch list and in settings. **Turn off the swipe up for disappearing messages** is now **Ignore the swipe up for disappearing messages**, and **Stop MQTT logging** is now **Stop live connection logging**. Morphe remembers your picks by name, so if you'd left either one out, it'll be picked again. Uncheck it before you repatch. - With **Hide People tab**, **Hide Notifications tab** or **Hide Meta AI** on, the bar at the bottom now lights up the tab you're actually on. With People hidden, opening Notifications used to light up Menu instead. - Some accounts get Meta's newer AI agent tab in the bar where the Meta AI tab usually sits. **Hide Meta AI** now hides that one too, and the bar still lights up the right tab. Restart Messenger to see it go. - On a new install of a patched Messenger, **Bold** and **Italic** no longer show up in the text selection menu while **Bold and italic text** is off. Messenger's very first start turned them on, and they stayed there until you opened Messenger a second time. Updating over an existing install never did this. - **Hide AI sticker tools** now hides the plain **Generate** button at the start of the sticker keyboard's Suggested row too. Accounts that get more than one sticker maker see that button instead of **Generate AI stickers**, and it opens a menu with AI stickers in it, so the switch used to miss it. The custom and music stickers in that menu are hidden along with it while the switch is on. - With **Hide AI sticker tools** on, the rest of the Suggested row now moves up to fill the spot where **Generate** or **Generate AI stickers** used to sit. The button went away before, but its slot at the start of the row stayed blank. - HushMessenger is now built for Morphe's 2.0 patcher, so this release needs **Morphe Manager 2.0.0 or newer**. Update Manager first, then repatch. Every patch still applies to Messenger 584 and the patch count is the same. ### Docs - The README's troubleshooting list now covers a cloned Messenger showing the settings icon again, chats and calls notifying twice because of the Facebook app, and restoring chats with a PIN when the Google Drive restore errors out. ### Checks - A release can't go public until the whole app has been walked with that exact bundle on a release phone or an emulator. The publish stage now takes the walk's receipt as `-Walk` and stops before the tag or GitHub if the walk wasn't a full pass, saw a Messenger crash, ran on some other device, or patched with a different bundle. - `scripts/walk-app.ps1` does that walk. It patches Messenger from the bundle, installs it in place on a leased phone or an emulator, opens both settings pages, a chat and the patched screens, then reads the crash buffer and writes the receipt publish asks for. Any Messenger crash fails the walk. Leaving out a page or a screen makes it partial, and neither one backs a release. The receipt also names the APK patched from the bundle and the one the phone actually ran, and publish wants them to match, so walking whatever was already installed (`-SkipPatch`) only counts when it's that same APK. A crash buffer the walk can't read fails it, and the script exits 0 only for a pass (2 for partial, 1 for a fail). A walk that finds the device busy keeps the APK it patched, so the next try goes straight to the device instead of patching again. - The development release check, the one a held build goes through, fails when the source has no bundle timestamp. Before, a bundle and a source both missing one counted as a match there. The full release check already refused it, and now it says why. - A Gradle run through this PC's build wrapper fails when the wrapper itself errors out before Gradle starts. It used to exit 0 and read as a pass. - Recording a Messenger build with `CompatReport.java --save` refuses an APK that isn't signed by Facebook or Meta, or whose signer apksigner can't read. A record pins the APK's checksum, so a re-signed copy could have been written down as the stock build. The release build stage also checks each stock APK against the checksum in its record before patching it, and CompatReport looks for Python as `py`, `python3` or `python` (never the Windows Store stub) instead of assuming `python`. ## 0.25.0 (2026-10-18) ### Reported issues - [#64](https://github.com/SysAdminDoc/HushMessenger/issues/64) New **Open your gallery app** switch under Conversations. With it on, the gallery button in a chat opens your phone's own gallery app (Samsung Gallery, Google Photos or whichever you use) instead of Messenger's photo strip. Pick a photo or a video, one at a time, and it opens in Messenger's editor for that chat, ready to send. Back out of the gallery app and nothing gets sent. If more than one app on your phone can pick photos, Android asks which to use. Choosing Always there lets Samsung Gallery show your videos too. With the switch off, paused, or no gallery app on the phone, the button works the way it always has. It starts off. - [#58](https://github.com/SysAdminDoc/HushMessenger/issues/58) Samsung screen recordings that end in "Unable to send" go through with **Fix videos that won't send** on. That's the switch that used to be called Fix shared videos with xHE-AAC sound, so if you choose patches by hand in Morphe, tick it again under its new name. Samsung's recorder adds a tag at the end of the file, and Messenger's own media check rejects the file because of it, stock Messenger too. The switch drops that tag in the copy Messenger sends. The picture and sound stay as they are, and your original file isn't changed. - [#57](https://github.com/SysAdminDoc/HushMessenger/issues/57) **Fix videos that won't send** now also works on a video you pick inside a chat, not only one you share into Messenger from another app. Its xHE-AAC sound is converted to regular AAC in a copy in Messenger's cache, so the video sends instead of failing with "Unable to send". Your original file isn't changed, and old copies get cleaned up as new ones are made. - [#28](https://github.com/SysAdminDoc/HushMessenger/issues/28) **Slide chats in and out** measures Messenger's short freezes against your screen's own refresh rate now, instead of assuming 60 Hz. On a 90 or 120 Hz screen a freeze of a few frames gets skipped over rather than counted as part of the slide. Page and business chats slide now too. Messenger opens them in an older chat screen, and the slide used to skip that one. - [#59](https://github.com/SysAdminDoc/HushMessenger/issues/59) New **Stop app list and device ID sharing** switch under Privacy. Messenger goes through your installed apps looking for other Meta apps like Facebook and Instagram, then asks them for the device ID Meta uses to link its apps on one phone. With this on it gets an empty app list and skips the asking, so it keeps the ID it already has. It's experimental and starts off. - [#62](https://github.com/SysAdminDoc/HushMessenger/issues/62) New **Mark as read button** switch under Privacy, for people who use **Hide read receipts**. It puts Messenger's own Mark as read icon in a chat's top bar. Opening the chat still sends nothing. When you want the other person to see Seen, tap the icon and the chat turns read on your phone too. If the bar is already full, the icon takes the chat details button's spot, since tapping the chat's name opens that page anyway, so the call buttons stay where they are. It's experimental and starts off. - [#51](https://github.com/SysAdminDoc/HushMessenger/issues/51) **Hide Facebook shortcuts** has a **Keep the Profile button** switch right under it. Turn it on and the Profile button stays on a chat's details page, so you can still open the other person's Facebook profile, while the rest of the Facebook shortcuts stay hidden. It starts off, so nothing changes unless you turn it on. - [#68](https://github.com/SysAdminDoc/HushMessenger/issues/68) The README's install help covers `signatures do not match` after you've already uninstalled Messenger. It usually means another copy is still installed in Secure Folder, a work profile or a second user, and the note says where to look and how Clone install gets around it. - [#74](https://github.com/SysAdminDoc/HushMessenger/issues/74) With **Use the phone's camera app** on, tapping **Edit** on a photo or video you picked in a chat opens Messenger's editor again. The phone's camera only takes over when you tap the chat's camera button. Edit goes through the same camera screen inside Messenger, so it used to open your camera app and then drop you back in the chat. - [#66](https://github.com/SysAdminDoc/HushMessenger/issues/66), [#72](https://github.com/SysAdminDoc/HushMessenger/issues/72) Threads links and Instagram video links open again when the Threads or Instagram on your phone is one you patched yourself. Messenger hands those links to a launcher that only starts apps signed by Meta, and when it says no, nothing happens at all. **Restore screens on re-signed builds** now opens the link in that app the normal way when that happens, or in your browser if the app can't take it. - [#73](https://github.com/SysAdminDoc/HushMessenger/issues/73), [#77](https://github.com/SysAdminDoc/HushMessenger/issues/77) Every arm64 Messenger 583.0.0.29.95 on APKMirror patches now, 13 builds in all. That includes the nodpi ones Morphe Manager's download button opens (346611418 and 346611435), which used to stop with "version code 346611418 is not supported". Meta publishes one build per screen density under the same version name. The new ones turned out to match the two layouts the patches already handle, so nothing about what the patches do changes. The README lists every version code with its SHA-256. When a later build isn't supported yet, the error now opens with "This Messenger build (version code N) isn't supported yet". Manager shows the first patch that stopped, usually **Allow chat bubbles**, so these reports looked like a bubbles bug. - [#76](https://github.com/SysAdminDoc/HushMessenger/issues/76) **Send photos at original quality** keeps an HD photo's full size on Messenger 583. That version shrinks photos in its own code on the phone, so even with HD picked a 48 MP photo went out at 4096 pixels on its long side. With the switch on and HD picked, a JPEG up to 20 MB now goes out at the size it was taken, still without its location and camera details. Photos sent without HD stay at Messenger's usual size, and when the phone is short on memory a photo is made only as small as it has to be. ### New - New **Hold stories at the end** switch under Navigation. When a story finishes, it stays on screen instead of jumping to the next one, so you move on with a tap or a swipe. It works the same for photos and videos, and after the last story the viewer stays open until you close it. It's experimental and starts off. ### Changed and fixed - Morphe Manager lists every change of the release your Messenger was patched with, not only a short summary. For that one release Manager shows the patch source's description instead of the changelog, and the description was a single paragraph while older releases listed their changes. It now carries the release's changelog groups after the summary. You'll see it starting with this release. - On a phone set to Arabic, Hebrew, Persian or another right-to-left language, HushMessenger settings read left to right now, like the English they're written in. The page used to be mirrored, and periods and numbers landed on the wrong side of their sentences. - Searching in HushMessenger settings moves the search box up to the top of the page while the keyboard is open, so the matching switches show right under it. Before, the box stayed where it was and every match sat behind the keyboard until you closed it. - The README's help for a source that shows an old version pointed at v0.23.0. It points at the latest release now, so it can't fall behind again. - **Fix videos that won't send** ties the converted copy of a video you pick in a chat to that exact video. Two videos with the same size and date could end up sharing one copy, and a video edited under the same name could send the version from before the edit. Each conversion also works in files of its own now, so two sends at once can't get in each other's way. - When **Fix videos that won't send** can't convert a shared video's sound, the copy Messenger sends is left exactly as it was. A Samsung recording used to lose its tag before the conversion started, so a conversion that failed partway still changed the file. - A video with more than one xHE-AAC sound track, like a film with two languages, is now left for Messenger to handle as it is. **Fix videos that won't send** keeps only one sound track when it converts, so it used to drop the others. - **Fix videos that won't send** has limits now. A video over 1 GB, a phone with less than 256 MB free, a conversion that runs past 10 minutes or a send you cancel goes out as it is, without a conversion. Two videos convert at a time at most, and the converted copies stay within 3 GB of Messenger's cache, clearing copies no send has used in the last hour when it needs room. Two conversions running together count the space the other one needs and keep checking what's free while they work, so between them they still stop at 256 MB. - **Fix videos that won't send** checks that the converted copy is as long as the video before sending it. A conversion that stopped partway, or a picked video that only came through in part, used to go out shorter than the original. - Messenger closing partway through a shared video's conversion no longer leaves the half-made files behind in its storage. The next shared video clears them once they're old enough that no conversion could still be using them, and a send you cancel while a file is being read isn't counted as a failure anymore. ## 0.24.0 (2026-10-14) This release moves HushMessenger to Messenger 583.0.0.29.95, all six arm64 builds of it. 582 isn't accepted anymore, so update Messenger before you patch. It also adds new switches, among them Pin more chats, Bold and italic text, Hide People tab and Stop nearby scans, and settings get a restart button, Quick setups and a Report a problem row. ### Reported issues - [#54](https://github.com/SysAdminDoc/HushMessenger/issues/54) HushMessenger settings no longer leave a card of their own in Recents next to Messenger's. You'll still see them there while they're open on screen. Once you go Home or switch apps, the card drops out. - [#55](https://github.com/SysAdminDoc/HushMessenger/issues/55) Replying with Hide read receipts on now allows Seen only for that chat in the same account. A reply no longer opens a brief Seen window in other chats. - [#47](https://github.com/SysAdminDoc/HushMessenger/issues/47), [#56](https://github.com/SysAdminDoc/HushMessenger/issues/56) New **Pin more chats** switch under Inbox. Messenger stops you at three pinned chats, and this raises the limit to 20. It's experimental, since Messenger's servers may still hold you to three, and like every switch it starts off. - [#52](https://github.com/SysAdminDoc/HushMessenger/issues/52) New **Stop nearby scans** switch under Privacy. It stops Messenger from reading your phone's list of nearby Wi-Fi networks, and it stops the timer Messenger can run while it's open to check your location and scan for Wi-Fi networks and Bluetooth devices. Messenger also stops seeing the name and hardware address of the Wi-Fi network you're on. It gets the same blank answers Android gives an app that can't see your location, so your connection, calls and signal readings work as before. It's experimental, since Messenger hasn't started those scans on the test phones yet. It starts off, and the Quick setups don't turn it on. - [#51](https://github.com/SysAdminDoc/HushMessenger/issues/51) **Hide Facebook shortcuts** hides the Menu tab's Subscriptions section too, the one with Facebook Plus, Meta Verified and Meta One. Messenger had moved those out of Also from Meta into a section of their own, so the switch stopped catching them. - [#49](https://github.com/SysAdminDoc/HushMessenger/issues/49) With **Spoof package version** in, Messenger's own checks of its version code still see the build it really is. Before, Messenger's component manager noticed the raised number didn't match the APK and flagged it in its log, and crash data carried the raised number. Only Messenger's reads of itself change. Google Play services, Facebook and every other app's version read as Android reports them. - [#48](https://github.com/SysAdminDoc/HushMessenger/issues/48) A font file you pick under **Use your own font** can now be made smaller or larger, from 70% to 160%, and its text can be moved up or down in steps of 2% of its size. That's for a font that looks small or sits too high in a message bubble. Only HushMessenger's copy of the file changes, so your phone's own font and text size settings stay as they are. Restart Messenger to see a change. - [#44](https://github.com/SysAdminDoc/HushMessenger/issues/44) **Stop MQTT logging** is a new Privacy switch that starts off. It drops the health report and push logging Messenger's MQTT client sends, and when that client uses the health report as its keepalive, it sends Messenger's plain ping instead. Messenger sends most of its traffic another way, so there's often little for it to drop. Messages, calls and active status keep working. - [#43](https://github.com/SysAdminDoc/HushMessenger/issues/43) **Hide People tab** and **Hide Notifications tab** are new Navigation switches. Each one takes its tab out of the bar at the bottom once Messenger restarts, and both start off. - [#42](https://github.com/SysAdminDoc/HushMessenger/issues/42) **Bold and italic text** is a new Conversations switch that starts off. With it on, select words you typed and pick **Bold** or **Italic** in the text menu (it can be behind the three dots). Picking the same one again turns the words back. They come out as special Unicode letters, which show on any phone. Keycap emoji like 1️⃣ stay as they are, and picking an entry on text you can't edit shows a short tip. It works in the chat box too. On a Samsung phone you may need to turn on **Messenger Bold** and **Messenger Italic** once under **Manage apps** in that menu. - [#34](https://github.com/SysAdminDoc/HushMessenger/issues/34) With **Use system emoji** on, a Like in the chat list shows your phone's thumbs up instead of an empty box whenever Messenger's emoji font can't draw it. Messenger's Like is a character only its own font can draw, so a new install showed a box there even without HushMessenger, until Messenger downloaded its font and restarted. Android 9 can't put Messenger's font behind the phone's, so there the thumbs up always stands in. ### New - Long-press the Messenger logo at the top of Chats, or the Menu tab's title, to open HushMessenger settings. It's a way in from inside Messenger even when your launcher has no long-press menu, and it works while changes are paused. It comes with **Open settings from menu**, and the App tab's tip about getting back in now mentions it. Messenger's own long press on the title still runs first. - New **Hide Mark as read** switch. It takes Mark as read out of the menu you get when you press and hold a chat in your chat list, so you can't mark a chat read by accident. Mark as unread stays where it is. Like every switch it starts off. - **Bold and italic text** covers the letters A to Z (accents are fine) and digits, and Italic covers just those letters. Picking one on Russian or Arabic words, or Italic on numbers, shows a short tip saying why nothing changed. Mixed text changes the letters it can and leaves the rest alone. The switch's description and the README name the limits too. ### Changed and fixed - HushMessenger now patches Messenger 583.0.0.29.95 and no longer accepts 582.0.0.61.92. It takes six arm64 builds of 583, the five APKMirror lists plus build 346611440. Meta renumbered several server flags and moved a few checks around in 583, so every switch's hooks were found again on each build, and Morphe Desktop patched and rebuilt all six. - With **Hide Meta AI** on, typing @ in a chat no longer suggests Meta AI or its imagine entries. Messenger had started building that list a newer way that went around the switch. Silent and the rest of the list stay. - A full message log opens without freezing. The log builds 20 messages at a time and adds the next ones as you scroll toward the end, so every saved message is still there, newest first. Before, a log near its 500-message limit held the screen still for about two seconds while it opened. - **Keep a message log** tells messages apart by Messenger's own message ID instead of their words. Two messages that say the same thing in one chat are both kept when Messenger gives each one an ID, and the second notification Messenger builds for one message is still dropped. A copy that arrives without an ID pairs with one earlier capture of the same words in that chat, so a third "ok" in the same minute still gets logged. A sender is only shown when the chat's notification makes it clear who sent it, so the same words from two people in a group stay unnamed rather than borrowing someone's name. Your own lines in the notification never name you as the sender. Names that **Auto reply** hands over before answering stay with the message they came from. The ID only lives in memory and is never saved to the log. - **Keep a message log** no longer drops a message because its words happened to share a short checksum with another message's. Only a copy without an ID was affected. The check now uses a full SHA-256 of the words, and the words themselves still aren't kept in memory for it. - **Keep a message log** and **Auto reply** now skip messages from a chat with disappearing messages on. Messenger hides the words of those messages, so the log used to save a "Secret conversation" placeholder in place of the text. The check uses Messenger's own hidden-text flag, not the wording, so it works in every language. - The message log's screen now stays out of the Recents preview on Android 12 and older too. Those versions can only do it by blocking screenshots, so screenshots of settings don't work while the log is open there. Android 13 and newer still allow them. - When Messenger replaces a chat's notification just as **Auto reply** answers through it, the reply no longer gets lost along with the chat's next five minutes of replies. Nothing went out, so the chat isn't put on its five-minute wait, and Auto reply tries once more through the new notification. - **Auto reply** drops a message it hasn't answered yet when you turn it off or pause, and when you edit your replies, so an older message can't get a new answer. One message delivered twice gets one answer, at most 20 messages wait at once (messages it couldn't answer anyway don't count), and a phone clock set back no longer stretches a chat's five-minute wait. - When HushMessenger's settings can't start, the **Bold and italic text** entries leave the selection menu instead of staying there from an earlier run. ### Settings - When a change needs Messenger to restart (the Meta AI and bottom tabs, the old emoji drawer, bubbles or your font), a bar at the top of settings says how many are waiting and has a **Restart Messenger** button. Switch something back and it goes away. After a restart from settings, settings open again on the page you were on, and Back from there leaves settings even if you first opened them from the app drawer icon. They come up in front even when Messenger opens on another screen first, like its chat restore prompt, instead of ending up behind it. Tapping that icon again later goes back to the same settings screen instead of opening a second copy on top of it. - New **Report a problem** row just above **Support HushMessenger**. It opens a new GitHub issue with your HushMessenger and Messenger versions, phone model, Android version and the switches that are on already filled in, plus two questions for you to answer. Nothing about your account or chats goes in, and the row says the report is public so you can look it over first. The report and **Copy setup** also say which Messenger build was patched (like `583.0.0.29.95 (346611369, base mapping)`), which stays right even when **Spoof package version** changes the version Android shows. - New **Quick setups** on the App tab: **Quiet** hides ads, promotions, suggested people and growth prompts, **Privacy** stops the uploads that tell Meta how you use Messenger, your advertising ID included, and **Back to defaults** turns every control off. Each is one tap and says how many settings it changed. Pause and the theme stay as they are. - Search finds every word you type, in any order, and ignores accents. "receipts read" finds **Hide read receipts**. - Settings have a more compact header, filled page navigation and grouped controls. Message log, auto replies and restart use matching panels and buttons in both themes. Reply and log actions share the bottom of the screen and still scroll into reach in short windows. - Font size and position values stay readable at large text sizes, with their adjustment buttons on a separate row. - The App tab only mentions the Messenger logo's long press when your bundle actually added it, and its note no longer says inbox options need a restart. - When the phone won't save a font change (a new file, a size or move step, or going back to your phone's font), the font you had stays picked with its own file and size, and settings say the change didn't save. Before, the new name or size could stay in use without being saved and get saved later by an unrelated switch, paired with the old file. - A font file copy that hangs, like a cloud file that never finishes downloading, now has a **Stop copying** button and stops by itself after a minute. Your font stays as it was and you can pick another file right away. A stopped copy that wakes up later never replaces the newer pick. If two stopped copies are still stuck on their files, **Choose a file** waits and the row says why, after saying which font is in use. A file that turns out not to be a font right as the minute runs out still says so. Tapping Stop while the font is already being saved says it'll finish in a moment. - The size and move buttons wait while your phone's font goes back in, so a quick tap can't size a file that's being removed or hide the "back to your phone's font" note. - Font size, position and **Use your phone's font** now save in the background, so a slow phone doesn't freeze the screen, and quick taps add up to the size you tapped to. - Restoring a settings backup no longer turns **Auto reply** on, since backups don't include the replies. A backup with it off still turns it off. If a backup would have turned it on, the restore message says why it stayed off. The restore message also puts a period after the count now. - Auto replies keep their labels while you type, show how many replies are available and flag an unfinished reply before saving. Cancel leaves saved replies alone. Drafts, group choice and text selection survive a recreated settings screen. - Message log now explains an empty log, distinguishes a read failure from an empty result and offers retry. Clear log reports a failure if it can't remove the file or key. Saved message text can be selected. When an older log can't be read, it's set aside and new messages keep showing under a short notice with a Remove old log button. The 30-day note under that notice no longer sits right against it. - Reply and message-log dialogs keep their actions reachable in short windows and large text, with matching keyboard, cutout and right-to-left spacing. - A failed log clear keeps its retry action available, even if the messages are already gone or the screen rotated during the clear. The settings header and restart reminder adapt to larger text to leave more room for controls. - Long replies grow with their text so the editor scrolls as one page. Replies and saved messages keep their own text direction in right-to-left layouts. - Long labels on the App tab keep clear of their switch, in right-to-left layouts too. - Enabled controls explain when they're waiting for Messenger to use them. Clearing a search keeps the category you picked. - New **Hide the Menu row** choice on the App tab takes the HushMessenger row out of Messenger's Menu tab and side menu, so the long-press **Patch controls** shortcut and the Messenger logo are the ways in. It can be turned on once you've opened settings from that shortcut, and the row comes back by itself if the shortcut ever goes missing. Together with **Hide app drawer icon** that leaves just those two. - Switches have clearer on and disabled states in both themes. Focus and pointer feedback match the rest of settings, and restart text fits narrower windows. - Settings now use rose accents with graphite panels on black. Search and category filters stay together, and the App page gives Restart a filled button. The uninstall warning sits in its own panel. Backup actions have a separate Your choices section. - Restart Messenger now shows that choices are being saved before the app reopens. The message log and Auto reply screens use the same style, in the light theme too. - **Restart Messenger** no longer leaves a black screen behind. On a fast phone the restart could reopen Messenger before its own restarting screen had appeared, and Android then didn't bring Messenger back until you tapped its icon. The restart waits for that screen to show first now. - The restart screen keeps its text clear of camera cutouts and system bars. - If your phone refuses to open a link from settings (Source and licenses, Support or View release), settings stay open and say so instead of closing. - Quick setups can be hidden from the App tab with a long press on its section, and its help line now says so. The Quick setups on the home page button under Your choices brings it back. Backups and the Quick setups choices leave it alone. - **Pin more chats** and **Stop nearby scans** show the Experimental badge in settings, the same one **Hide inbox ads** has. - The **Support HushMessenger** row in settings is just the button now. The line of text under it is gone. ### Checks - The tests now run every switch's own checks and edits on each supported Messenger build. A build that moved something a switch relies on fails the tests in a couple of minutes, where before it only showed up when Morphe patched it. - The build runs on Gradle 9.8.1 now. The wrapper pins the download's checksum, so a tampered copy won't start. - The repository description now points to the README for supported Messenger builds instead of advertising a retired version and patch count. - Completed the remaining attribution-upload checks using the released build's device evidence. - Checked that a failed system-emoji font merge retries the same file and stops after three failures. - The compatibility report now checks everything the reply and Seen hooks rely on in Messenger's code, so a build that moved them shows up in the report instead of failing at patch time. - The patch catalog check now makes sure the bundled extension has every class and method the patches call and every control they record, and that each patch class made it into the Android half of the bundle. A failed check removes the old receipt instead of leaving it behind. The switches, message log, auto reply, screenshot and Material You hooks now name their extension calls in full, so the check covers them too, and a call pieced together while patching is refused instead of skipped. - The Meta AI, People and Notifications tab switches and the emoji drawer switch no longer wait on settings to start while holding their own lock. Nothing took those locks in the other order, so there was no hang to fix. - The compatibility report now turns down two Messenger builds the patches would refuse anyway: a screenshot viewer with a second method under an entry point's name, and a sticker keyboard whose tab list copy is something a jump lands on. It also checks the message log's whole field contract, the video size check, the inbox tabs flag and every plugin gate's on/off values the way the patches do, and turns down a hook method with no free register for the patches' edits. Every control test also runs the report's own finder on its test classes and checks it against the patches' own checks. - Compatibility profiles now match their generated form exactly, so the profile checks pass without changing any hooks. - Release checks record stage timings. A local development preflight checks a frozen bundle while keeping the public feed held, with separate receipts that can't advance a public release. - The third-party patch catalog no longer offers v0.0.8 as a prerelease. Its stable import still serves v0.23.0 with verified metadata. - Added build guidance for native checks on an ARM-translated Android 12L emulator and for verifying the framework's low-RAM classification. Stock and patched comparisons keep separate app data and signing keys. - The README is much shorter and sticks to installing and using the patches. The Messenger internals audit and the version history it used to carry are still in the repository history, last at commit 3cf54ff. ## 0.23.0 (2026-10-11) This release moves HushMessenger to Messenger 582.0.0.61.92 and adds seven switches, Auto reply and Use your own font among them. ### Reported issues - [#29](https://github.com/SysAdminDoc/HushMessenger/issues/29) Messenger 582.0.0.61.92 is supported now, all 14 arm64 builds of it. 580 and 581 are dropped. - [#42](https://github.com/SysAdminDoc/HushMessenger/issues/42) **Auto reply** is new. It answers messages with replies you write, by the words you pick or any message at all. - [#41](https://github.com/SysAdminDoc/HushMessenger/issues/41) With **Hide read receipts** on, opening a chat doesn't send Seen any more, and the chat stays unread in your list. Mark as read and Mark as unread work again. - [#20](https://github.com/SysAdminDoc/HushMessenger/issues/20) **Hide read receipts** now points to Messenger's own **Read receipts** setting, for when you'd rather have opened chats marked read on your phone without the other person seeing Seen. - [#40](https://github.com/SysAdminDoc/HushMessenger/issues/40) **Use the phone's camera app** opens your camera app from a chat's camera button again. - [#39](https://github.com/SysAdminDoc/HushMessenger/issues/39) **Use your own font** is new under Theme. Pick your phone's font or a .ttf or .otf file. - [#36](https://github.com/SysAdminDoc/HushMessenger/issues/36) **Turn off the swipe up for disappearing messages** is new under Conversations. - [#37](https://github.com/SysAdminDoc/HushMessenger/issues/37) With **Stop analytics uploads** on, an upload it skips lets the phone go back to sleep right away instead of holding it awake for up to 90 seconds. - [#30](https://github.com/SysAdminDoc/HushMessenger/issues/30) With **Hide People You May Know** on, your chats show up sooner after Messenger starts. - [#38](https://github.com/SysAdminDoc/HushMessenger/issues/38) **Fix shared videos with xHE-AAC sound** is new. It converts that sound to regular AAC when you share such a video into Messenger, so it can be sent. ### New - HushMessenger now patches Messenger 582.0.0.61.92, all 14 arm64 builds APKMirror lists for it, and no longer accepts 580.0.0.49.91 or 581.0.0.49.91. Morphe Desktop applies every patch to each of the 14 builds. Messenger 582 looks up some of the names HushMessenger uses to tell its built-in switches apart instead of spelling them out, so the two business suggestion switches now follow that lookup. Meta also reworked the code behind the Settings row in the menu, the avatar tab in the sticker keyboard, the inbox tabs, kept unsent messages, **Save any story** and **Send videos without re-encoding**, and each of those patches now finds its spot in both ways 582 builds lay it out. - **Auto reply** is a new Conversations switch, off until you turn it on ([#42](https://github.com/SysAdminDoc/HushMessenger/issues/42)). Tap **Edit replies** under it to write up to 20 replies, each with the words that should trigger it, split by commas. A message that has one of those words, matched as a whole word in any case, gets that reply. Leave the words empty and the reply answers any message. The reply goes out through the Reply button on Messenger's own notification, so it works in encrypted chats too, and each chat gets at most one auto reply every five minutes. Group chats are left alone unless you tick **Answer in group chats too**. - There's a new **Use your own font** switch under Theme, off to begin with ([#39](https://github.com/SysAdminDoc/HushMessenger/issues/39)). With it on, Messenger's own text uses your phone's font instead of Meta's Optimistic font. Below the switch in HushMessenger settings you can also pick a .ttf or .otf file of up to 20 MB, and Messenger's text uses that font instead. The row shows just the file's name and whether it's in use. Emoji stay as they are. A change shows after Messenger restarts. - Conversations gets **Turn off the swipe up for disappearing messages**, which starts off ([#36](https://github.com/SysAdminDoc/HushMessenger/issues/36)). With it on, swiping up at the bottom of a chat no longer turns on disappearing messages, so a scroll can't set the timer by accident. Scrolling works as usual, and you can still turn disappearing messages on from the chat's settings. It takes effect right away, with no restart. - **Fix shared videos with xHE-AAC sound** is a new Conversations switch, off until you turn it on. Messenger can't send a video whose only sound is xHE-AAC, which Facebook and Instagram now use for some videos, so sharing a saved one into Messenger ended in "Unable to send". With the switch on, Messenger's copy of a video you share into it gets that sound converted to regular AAC before anything reads it. The picture is copied as it is, and videos with any other sound aren't touched. - **Stop ad attribution uploads** joins the Privacy switches, off until you turn it on. With it on, Messenger's ad attribution job stops before it reads your phone's advertising ID, whether through Google's library or its direct Play services fallback, so the request that sends Meta the ID and your ad tracking setting never gets built. The saved attribution state stays as it was, and turning the switch off lets the next run go ahead as before. The ID itself doesn't change. - **Stop inbox and ad link logging** is another new Privacy switch, and it starts off. With it on, Messenger skips two reports. One says which part of your chat list was on screen, each time the visible chats change, and Messenger files it under its inbox ads. The other says which ad and business page brought you in when a link from an ad opens a chat in Messenger. Only the reports are skipped. The code around them, which keeps track of what's on screen, still runs, and turning the switch off lets the next report through. - **Hide ad banners in business chats** is new too, under Conversations and off by default. When you start a chat with a business by tapping one of its ads, Messenger shows that ad in a banner at the top of the chat. **Hide chat promotions** never covered it, because it isn't a promotion banner, so it gets its own switch. With it on, the banner isn't added the next time you open such a chat. - HushMessenger settings has a **Support HushMessenger** row at the end of the App tab. It opens my Ko-fi page in your browser, if you'd like to buy me a coffee. ### Changed and fixed - With **Hide read receipts** on, opening a chat no longer marks it read or sends Seen, and it stays unread in your chat list ([#41](https://github.com/SysAdminDoc/HushMessenger/issues/41)). Mark as read and Mark as unread in the chat list work again, and so does Mark as read on a notification. Those show Seen, like Messenger does. Replying in a chat marks it read too, since your reply shows you saw it anyway. - **Hide read receipts** now points to Messenger's own **Read receipts** setting under Settings > Privacy & safety. With that turned off and **Hide read receipts** left off, a chat you open is marked read on your phone and the other person doesn't see Seen ([#20](https://github.com/SysAdminDoc/HushMessenger/issues/20)). - **Use the phone's camera app** now works from a chat's camera button on Messenger 582. That button starts Messenger's camera a different way there, so the switch never saw the tap and Messenger's own camera kept opening. Now your phone's camera app opens, and the photo you take opens in Messenger's editor for that chat. Messenger checks where a picked photo comes from before it opens one, and it refused this photo because the screen that hands it over runs inside Messenger. It lets that one photo through now, and every other file still gets Messenger's usual check ([#40](https://github.com/SysAdminDoc/HushMessenger/issues/40)). - With **Stop analytics uploads** on, a skipped upload now tells Messenger right away that the phone can go back to sleep. Before, each upload Messenger started directly could keep the phone awake for up to 90 seconds ([#37](https://github.com/SysAdminDoc/HushMessenger/issues/37)). - With **Hide People You May Know** on, HushMessenger asks Messenger for your chat list again about half a second after it starts instead of after 2.5 seconds, to shorten the loading circle that could still sit under your chats for a few seconds. It tries up to three more times in the first 8 seconds and stops as soon as your chats show up ([#30](https://github.com/SysAdminDoc/HushMessenger/issues/30)). - **Stop analytics uploads** now also skips the timer that sends Messenger's native analytics batch every three minutes. It leaves crash reports alone. - **Copy setup** now lists each folder in Messenger's data whose name mentions analytics, with how many files it holds and how big it is, so you can see whether Messenger's analytics pile up while **Stop analytics uploads** is on. It shows names and sizes, never what's in the files. - Restoring saved choices on Android 9 or 10 now reads the right part of the file when the app you pick it from hands it over as a stream that starts partway in. - The checks that find the code each patch changes now accept only what Messenger 582 ships. The extra shapes they used to allow for 580 and 581 are refused now, so a build that brings one back stops with an error before anything is changed. - **Stop analytics uploads** now also covers the way Google Play can hand Messenger's Google Play upload service a task directly, without starting it the usual way. With the switch on, that task is reported back as done right away, so Google Play doesn't retry it, and Messenger's other scheduled tasks on the same worker run as before. - **Keep a message log** now deletes messages older than 30 days from the saved file itself, a little after Messenger starts and every six hours, instead of only hiding them until the next message arrives. That happens with the switch off too. Off stops saving new messages and keeps the old ones until they expire or you clear the log, and the log's screen now says so. Each message keeps up to 8,000 characters and the whole log stays under 2 MB, dropping the oldest first. If the saved file can't be opened any more (say the phone's key store lost its key), it's moved aside and the log starts fresh instead of failing on every message. A save that fails partway leaves the old log as it was, and **Clear log** also drops messages that arrived a moment before but weren't saved yet, so they can't show up again afterward. - **Restore old emoji drawer** and the Meta AI tab part of **Hide Meta AI** keep the answer Messenger got when it started, so a change waits for a restart. Their rows in HushMessenger settings now say so ("Takes effect after Messenger restarts", or "Stays in effect until Messenger restarts" after you turn the switch off or pause), and Copy setup marks them with `until_restart`. An account Meta never moved to the redesigned emoji drawer has nothing to wait for, so its row doesn't say that. - Tapping a row in Messenger's menu after scrolling it now opens that row. Messenger reuses rows as the menu scrolls, and one that had been showing the HushMessenger entry could open HushMessenger settings instead of its own screen. - With **Material You theme** on, a color that one of Messenger's theme methods just takes from another is now changed once instead of twice. - **Spoof package version** now refuses a number lower than the Messenger you're patching. The Play Store would keep offering that same release as an update, and the patched app couldn't install over the version it came from. - **Keep a message log** holds on to messages when a save fails and tries them again first, in the order they arrived. A message dated in the future gets corrected in the saved file too, not only on screen. If you repatch without the switch, the saved log and its key are deleted the next time Messenger starts. On Android 13 and newer the log's screen stays out of the Recents preview. - **Send photos at original quality** now cleans its copies older than a week out of Messenger's cache. Up to 20 MB each could pile up there before. - TalkBack can now reach the message log's **View log** and **Clear log** buttons. Buttons that can't be used right now look grayed out. - The message log now says who sent each message, and in a group which chat it came from ("Ana in Weekend trip"), taken from Messenger's own notification for that chat. Before, entries were grouped under a long chat code. Messages saved before this update show as "Unknown chat". - When someone unsends a message, the message log keeps the original and no longer gains a second line like "Ana sent a message." for the unsend. That stand-in doesn't get an auto reply either. - The message log saves each message once. Messenger can build one message's notification twice, and both copies used to land in the log. A message that **Auto reply** answered also says who sent it now, instead of "Unknown chat". - Restoring choices from a file that can't be read now says "Couldn't read that file" instead of calling it an invalid backup. Canceling a restore partway says your choices didn't change. - Several lines in HushMessenger settings read more clearly, like the restart hint, the empty search result, the export and import help, and error lines, which now point to **Copy setup** for details. A switch used more than two days ago shows days ("Used 3d ago"). **Chat heads** is written the same way everywhere. - **Hide Meta AI** now also covers the list that opens when you type @ in a chat. Meta AI and imagine drop out of it, while the people in the chat still show. In a community chat the community's AI entry goes as well. Turning the switch off brings them back on the next letter you type. - With **Hide Meta AI** on, the search bar above your chats drops its "Ask Meta AI or search" hint and shows Messenger's plain one. - **Restore screens on re-signed builds** now also answers the certificate check in Messenger's own push service, which reads the signature by itself instead of asking the method the patch already covered. That service matters most on phones without Google Play services. - **Use system emoji** tries adding Messenger's emoji font behind the phone's up to three times when it fails, since a font that's still being written can fail once. - HushMessenger publishes its app shortcuts in the background now, so they don't hold up Messenger's startup on a Root Mount install. - On a Root Mount install, **Copy setup** now says how long HushMessenger took to start when Messenger first needed it, and on which thread. That shows whether it's slowing Messenger's startup down. - More of the checks that find the code each patch changes now refuse a spot the patch's code couldn't work in, like a register its call can't reach, a field Messenger's code isn't allowed to read, or a static method where it needs an instance, before anything is changed. The patch descriptions also say that the Meta AI tab goes after a restart. - The release and install check scripts now report a damaged profile record or a signer line without a key with a clear error instead of crashing. Nothing changes in the patches. - On an install that has no screen for opening your phone's camera app, like a Root Mount install, **Use the phone's camera app** is grayed out and says why. Before, it looked on while the chat camera stayed Messenger's own. - Releases now run from `scripts/release/release.ps1` in five stages that refuse to run out of order. Each Messenger build family gets patched once per release, and the release checks can wait for a free build slot instead of piling onto other builds. Nothing changes in the patches. - Extended the app audit with actual Messenger packet observations, background job and CPU measurements, and physically unplugged battery readings. Revision 2 includes aggregate data, a charge-counter chart and a repeatable procedure. It distinguishes shared encrypted hosts from specific tracking operations and documents the limits of short observations on a paused installation. No patch behavior changed. - Added a detailed Messenger internals audit with ad and tracking paths, native settings screenshots, the boundaries of the 37 controls at v0.22.0, and patch candidates with acceptance criteria. A reusable 581 DEX query batch accompanies the report. The audit identifies a conditional analytics Binder entry outside the existing guards and documents message-log isolation and retention limits. No patch behavior changed. - The README now points to the patch code, in-app settings, build profiles and catalog checks. It also walks through adding a control or a supported Messenger version. - **Material You theme** is now in Morphe Manager's default selection, so every control is there without Expert mode. Its switch is under Theme on the Controls page and starts off, so a build patched with the defaults looks like Messenger until you turn it on. **Clone install under another package name**, **Spoof package version** and **Custom new-message sound** still need Expert mode, because they change the package or need a file you pick. - Every patch description in Morphe Manager now says in plain words what the patch changes and why you might want it. It ends with where to turn it on, or says it works as soon as you patch it in. - Every switch in HushMessenger settings now explains in plain words what it does and what you'll notice. The pages, the setup panel and the bubble and app icon help text got the same plain wording. - Messages in HushMessenger settings are clearer. Saving and restoring your choices, update checks, the camera notice and the setup help now say what happened and what to do next. - The options you fill in when patching are easier to read. Clone install, Custom new-message sound and Spoof package version now explain what to type, and the version code option is called Version number. - The settings extension's unit tests now always run on JDK 21. On Windows, the Java 25.0.2 runtime bundled with Android Studio made four Android 9 and 10 restore tests read the start of a file instead of the part the provider pointed to. Restoring choices on a phone was never affected. ## 0.22.0 (2026-10-08) - **Keep emoji search on emoji** is a new switch under Stickers that starts off. With it on, typing while the emoji keyboard is open no longer flips it over to sticker search, so you stay on emoji. It takes effect right away, with no restart. - **Use the phone's camera app** is a new switch under Conversations that starts off. With it on, the camera button in a chat opens your phone's own camera app instead of Messenger's camera. The photo comes back into Messenger's photo editor for that chat, the same way a photo picked from another app does, and you send it from there. It's photos only. HushMessenger has the camera app save the photo to Messenger's cache, not your gallery. Checks cover the chat camera button in all 37 supported builds. - **Pure black dark mode** is a new switch under Appearance in settings, shown when Material You theme is patched in, and it starts off. With both on, Messenger's darkest dark mode backgrounds turn pure black. Lighter surfaces keep their wallpaper tint, and light mode doesn't change. You can flip it without patching again. - **Send videos without re-encoding** is a new switch under Conversations that starts off. Messenger already skips the re-encode for a video that's close to its target size. With the switch on, a video up to 25 MB takes that same passthrough instead of being re-encoded. Bigger videos still get Messenger's compression, and so do trimmed or edited ones and formats Messenger won't pass through. Checks cover the video transcoder in all 37 supported builds. - **Clone install under another package name** is a new patch, unselected by default. It installs a second Messenger beside the first under its own package name and app name, `com.facebook.orca.hush` and **Messenger Clone** unless you choose others in Morphe. Messenger's own permissions, provider authorities, task affinities and push categories move to the new name, and the patch stops before changing anything if one of them would still clash. The encrypted chat backup lookup that crashes under a renamed package keeps working, with a fix adapted from rushiranpise's Change package name patch. The broadcasts Messenger sends to itself, like the ones that refresh message requests and inbox filters, reach the clone's own package instead of the original app. Links it opens inside itself, from a notification or a story for example, stay in the clone too. HushMessenger's settings, launcher shortcuts and **Restore screens on re-signed builds** follow the new name. The README covers what stays tied to Messenger's original name. - **Copy setup** now shows whether Android knows HushMessenger's settings provider under the package name Messenger runs as. - **Unlock app icons** is a new switch under Theme that starts off ([#33](https://github.com/SysAdminDoc/HushMessenger/issues/33)). With it on, every icon in Messenger's App icon setting can be picked without a subscription, and Messenger changes the home screen icon with its own code, the same way it applies a free icon. The icons already ship inside the Messenger APK, so nothing gets downloaded. Messenger still decides whether the App icon setting shows on an account, and with the switch off it may put its default icon back the next time it closes. Checks cover the icon code in all 37 supported builds. - With **Hide People You May Know** on, the chat list no longer keeps a loading circle under your chats after Messenger restarts ([#30](https://github.com/SysAdminDoc/HushMessenger/issues/30)). - With **View stories anonymously** on, a story you've opened no longer keeps its new-story ring in your chat list, after a restart too ([#35](https://github.com/SysAdminDoc/HushMessenger/issues/35)). - With **Use system emoji** on, a Like in the chat list shows Messenger's thumbs-up again instead of an empty box ([#34](https://github.com/SysAdminDoc/HushMessenger/issues/34)). The phone's emoji font doesn't have Messenger's own Like character, so on Android 10 and newer that character now comes from Messenger's emoji font while every other emoji keeps the phone's look. It also shows on the first start after an update, when Messenger draws the chat list before its own emoji font has loaded. - **Spoof package version** is a new patch that starts unselected. It sets Messenger's version code to a number you choose, 2147483647 by default, so the Play Store stops offering Meta's updates over a patched build. Messenger may report that number to Meta. Later builds need the same number or higher to install over it. The patch catalog now lists each patch's options. - **Custom new-message sound** is a new patch that starts unselected ([#32](https://github.com/SysAdminDoc/HushMessenger/issues/32)). Pick an .ogg, .mp3, .m4a or .wav file of 1 MB or less when you patch, and it replaces Messenger's `new_message` sound, the one its message notifications use by default. With no file picked it changes nothing. A missing, empty, oversized or mislabeled file stops the patch with the reason. - **Restore old emoji drawer** is a new switch that starts off. It turns off Meta's redesigned emoji drawer, so the emoji keyboard keeps its earlier layout. Changes apply after **Restart Messenger**, and accounts Meta never moved to the redesign see no difference. - **Stop analytics uploads** is a new switch that starts off. It stops the background services Messenger's analytics logger uploads through. Messenger still records those events on your phone, and they can upload after you turn it off. - **Keep a message log** is a new switch that starts off. It copies each message as its notification arrives, so an unsend can't take it back, and it's the only switch that reaches end-to-end encrypted chats. The log holds only messages that raised a notification. It stays on your phone and is encrypted with a key kept in the Android keystore, so the copy never leaves the device. A new viewer in settings lists it newest first, and **Clear log** deletes the file and throws the key away. Nothing is stored while the switch is off or Pause or safe mode is on. ## 0.21.0 (2026-10-05) This release has 33 patches, 30 of them switches, for all 37 arm64 builds of Messenger 580.0.0.49.91 and 581.0.0.49.91. It adds Messenger 581 and a new switch, Hide joined community chats. Hide AI sticker tools now covers the Generate buttons in the sticker keyboard, and Allow screenshots covers view-once media and Quicksnap. ### New - HushMessenger now patches Messenger **581.0.0.49.91** as well as 580.0.0.49.91 ([#29](https://github.com/SysAdminDoc/HushMessenger/issues/29)). All 16 arm64 builds APKMirror lists for 581 pass the compatibility checks, and Morphe Desktop 1.18.1 applied all 33 patches to each of them with a 1 GB heap. On a Galaxy S22, v0.14.0 on Messenger 580 updated in place to this release on 581 and kept its sign-in and chats. Meta renumbered two server flags and moved several screens around in 581, so People You May Know, joined community chats, inbox ads, the AI sticker Generate buttons, screenshots in view-once media, Native Bubbles and the HushMessenger menu row now follow the new layout. On 581 the HushMessenger row sits right under Settings, above the new QR code row. The 580 builds patch exactly as before. - Hide joined community chats is a new control that starts off. It filters subscribed channels and announcements from the main Chats list (the All chip) while keeping conversation data, delivery and unread state intact. Displayed row counts follow the filtered list. Off or Pause restores the original list on the next render. Other chips such as Channels and Unread, search and community folders keep their rows. Folder and membership checks cover all 21 supported builds. - **Hide AI sticker tools** also hides the Generate buttons in Messenger's newer sticker keyboard. The guard matches the verified AI label and leaves other cells alone. **Allow screenshots** also covers the secure-window calls in view-once media and Quicksnap. It preserves unrelated flags, lifecycle code and the original calls while off or paused. All 21 supported builds have records for these routes. - Settings expose each control's full row as one accessible switch. The title, description and activity label share a touch target, and the switch keeps its keyboard focus. Unavailable controls can be read but can't be toggled. Live TalkBack checks on an isolated Android 16 preview read the title and description as one control and changed the saved choice once per double-tap. The enabled-count summary stays readable without announcing after every toggle. Regression checks cover Android 9 and 16. ### Changed and fixed - Patch builds now use Morphe Patcher 1.15.1 and the maintained MorpheApp ARSCLib fork. The tested tools are Morphe Manager 1.34.0 and Morphe Desktop 1.18.1. Migration checks applied all 32 patches to all 21 supported APKs at a 1024 MB heap, verified signatures for the five naming groups and retained their native libraries. Two fresh checkouts produced the same bundle bytes. Kotlin and Bouncy Castle security pins remain in place. - The install check reads signer details from Android Build Tools 37 as well as 36.1. Build Tools 37 labels each signer with its signature scheme, and the check used to stop with "Cannot establish the complete current signer set" when it saw that format. - The early v0.0.2 to v0.0.8 previews are no longer marked as pre-releases on GitHub. Catalogs that follow pre-releases kept offering v0.0.8 from them, and that stops on their next refresh. - Inbox switches such as Hide People You May Know, friend requests and growth prompts now give one steady answer to each chat list Messenger builds. Messenger asks the same question when it lists a section, when it starts the section's loading and when it stops it, and a switch flipped in between now waits for the next chat list instead of splitting those steps. **Restart Messenger** applies a change everywhere at once. - The full compatibility check now requires the exact stock APKs. Community fixtures use recorded stock identities, and media replay goes through shared discovery. Tests track fixture changes and reject duplicate builds that would leave another build untested. - File tests now share Android's atomic-replace semantics on Windows, check post-commit read failures, and cover nonseekable restores on Android 16. Community discovery also reuses its constructor identifier in both scans. - Retained unsent markers are capped at 4,096 IDs and no longer share the settings monitor. This only prunes markers, never message content. - Choices saves check media-row ownership before opening the destination for writing. A picker can't use a Messenger-owned MediaStore row to overwrite its content. - An original-photo success callback that throws no longer receives a second failure callback or loses the copy it was handed. - Theme return hooks keep incoming branches attached to the color helper. Menu binding rejects reused holder registers before making changes, and the story Save helper is retained even when the patcher has already cached direct methods. - Community filtering preserves the native list type and checks backward and switch branches before reusing temporary values. Screenshot support now stays unavailable if any matching viewer method changes, even when the original methods still exist. Other controls remain available. - Profile recording now parses the rebuilt manifest, resource table and every DEX. A successful Desktop report and valid ZIP are no longer enough to accept malformed APK contents. - Changed media-viewer or community code now leaves those controls unavailable while other patches can still apply. Community discovery runs once during setup and reuses fixed method identifiers while checking the APK. Manager 1.33.0 applied all 33 patches to Messenger 581 at its unchanged 640 MB limit, with a 288 MB peak. - Closing settings or canceling an update check no longer waits for a slow cache write. Pending writes from canceled checks are discarded, and an older write cannot replace a newer result. - Saving choices continues through rotation or closing settings, with the same 30-second limit and a completion or failure message. Closing the screen no longer cancels a save after its destination may have been emptied. Restores still cancel when settings close. - Compatibility profiles now require Desktop to apply every patch and rebuild the APK before the record is written. Discovery alone could previously accept a changed menu or drawer that the patcher rejected. The check rejects incomplete results and changing input files. - **Open** in settings and **Restart Messenger** now find Messenger when you've switched to one of its alternate app icons. They used to report that no launcher was available, because they read each icon's built-in default instead of whether Messenger had turned it on. - Safe mode keeps counting startup crashes even when its saved count can't be read, so a crash loop still pauses the controls after three tries. - Update checks recover on their own if GitHub's reply no longer matches the saved release details. A retry time from GitHub never holds checks back for more than a day, and it never shortens the normal wait between failed checks. - Development release checks compare the held public feed with the one published under its release tag, and the development version must be newer. Catalog validation runs the Gradle wrapper directly and stops the whole process tree if it times out. The compatibility report keeps going when the community route changes on a new build, and the memory gate reports a damaged output APK without dropping the other results. - The memory gate now checks every build of every supported Messenger version. It used to expect exactly 21 and would have refused to start once 581 was added. - The memory gate runs at most two builds at once, with two processors per Java process. Compatibility and patching failures include their subprocess exit codes. Regression tests check that all inputs run without exceeding the concurrency limit. - Focused dependency tests run five partial patch selections through compilation. A failed sibling keeps the successful patch, advertises no failed control and leaves its own native target unchanged. A later selection starts with no stale keys. Each run checks a single settings and extension injection. - Opted-in update checks reuse validated release details for an hour and send their ETag on later checks. GitHub retry times are shown in settings and respected. Quota reset times apply only to an exhausted quota, so secondary limits keep their own retry wait. Release links must match their tags, and development builds ahead of the public release show both versions. Late replies can't save cache data after cancellation. - Copy setup includes the control descriptions shown in settings and explains what recorded activity proves. Receipt wording keeps the local unread and reply limits explicit. Sign-in and past-call-log documentation now reflect the observed results. - Original-quality photos enforce the 20 MB limit throughout preparation and delivery. Files that grow during a read or while a callback waits are rejected. Cleanup keeps the source and earlier copies intact. Existing scan bytes, color profiles and orientation handling are preserved. - Crash records verify replacement contents before committing them. Android 9 and 10 check the backup rename before a write can overwrite the old record, and a completed save won't trigger a rollback. Recovery checks preference saves too. If a save fails, settings keep the controls paused and show a retry message. A successful recovery restores the saved theme immediately. Invalid preference types keep host startup disabled. Existing records remain readable. - Development bundles can be validated while the public feed remains held. Validation checks both DEX files, including mapped section counts, bounds and referenced item starts, and the exact loaded catalog. Cached catalog comparisons preserve JSON types. Validation freezes the bundle with its checksum outside the build folder. The memory gate uses that snapshot and checks that its bytes stay unchanged. Release validation keeps its publication checks separate. - File saves and restores can be canceled. Settings stop waiting after 30 seconds and release the screen when it closes. Late results can't change choices, and a storage app that ignores cancellation can't start unlimited background work. File slices retain their absolute boundaries, including files supplied with a different initial position. If you cancel a save, save again before you rely on that file. - Repository links now use the HushMessenger artwork as their social preview. - Manager 1.33.0 applied all 32 patches at its existing 640 MB process limit, with a peak heap of 290 MB. The signed result passed archive checks and kept every native library unchanged. Fresh-checkout reproduction and non-English setup diagnostics also passed. A development build updated an existing signed-in installation without replacing its key or losing its chat history. ## 0.14.0 (2026-10-02) This release has 32 patches, 29 of them switches, for all 21 arm64 builds of Messenger 580.0.0.49.91. It adds Native Bubbles and an optional slide animation for chats. Settings now open from Messenger's side menu too, and Use system emoji draws your phone's own emoji instead of Google's. Root Mount installs also get their long-press shortcuts back. ### New - **Allow chat bubbles** offers **Stock**, **Chat Heads** and **Native Bubbles** when Messenger's native routes are verified. Native mode uses its conversation notifications, long-lived shortcuts and embedded chat screen on Android 11 or newer. Account eligibility and Android's permissions still apply. Notification and conversation settings links include recovery guidance when a phone omits either page. Pause or Stock restores the original routing. Refs #19. - **Slide chats in and out** slides a chat in from the side when you open it and back out when you go back, while the screen underneath holds still. It works for chats opened from the chat list and from search, and right-to-left languages slide from the left. Chat heads and bubbles keep their own animations, as do chats Messenger restores. The switch starts off, and Pause or Android's **Remove animations** setting keeps Messenger's own. A phone on Android 16 showed it from the chat list and from search in both themes, and turning the switch off brought back the stock transitions. Opening a chat from a notification hasn't been checked on a phone yet. Refs #28. ### Changed and fixed - The settings-entry patch adds Messenger 580's side menu alongside its Menu tab. It builds a separate native folder row without changing existing folders, badges or snippets. Changed constructors, unallocatable models and a folder click path that can reach the row without passing the settings hook stop patching before any menu changes. An Android launch failure keeps the added row from falling into Messenger's own click handler and shows recovery guidance. On a test phone, the side-menu row and the Menu tab row both opened settings, and the side menu kept exactly one row through a cold start. Root Mount installs haven't been checked yet. Refs #26. - **Use system emoji** now draws the phone's own emoji set on Android 12 and newer. It used to load Android's standard Noto font every time, so Samsung phones, other phones with their own emoji and emoji modules got Google's emoji instead of their own. HushMessenger now asks Android which font it draws emoji with and uses that. Android 9 to 11 keep the standard font. On a Samsung test phone, the composer and Messenger's emoji picker went from Google's emoji to the phone's own set. Refs #25. - Directions to the settings now say **Long-press Messenger's home screen icon > Patch controls** in Manager's patch descriptions, the settings help text and the recovery message. "Long-press Messenger" was read as the Messenger title inside the app, where a long-press does nothing. Refs #27. - On a Root Mount install, Android never reads the patched long-press shortcuts, so **Patch controls** and **Restart Messenger** were missing from Messenger's icon. HushMessenger now adds both itself when Messenger starts there, and puts them back if Messenger's recent-chat shortcuts push them out. The missing shortcuts were reproduced on a rooted test emulator with a mounted build. A real Root Mount phone hasn't been checked yet. Refs #27. - Local Android builds use AGP 9.4.1 and Android Test Engine in place of the older UTP/Netty device-test transport. The build and all 21 supported patch inputs pass. A separate settings-preview test passed on Android 16 and verifies that host test libraries aren't bundled into the extension. SDK/lint tooling still contains advisory-matched HttpClient and Commons Lang versions. This update doesn't claim to fix those matches. - Choice files accept content-provider documents outside Messenger's own UID, so a picker cannot read or overwrite its private files through a file path or an app-owned provider. Provider failures leave choices alone and omit private exception details from logs. - Choice-file checks normalize Android user prefixes before checking provider ownership, so alternate addresses can't reach Messenger's private providers. Android 16 hardware checks rejected all six private-provider read/write addresses before access. External file export and restore preserved every choice, and the compiled theme, startup and recovery checks passed. - File backups show progress and prevent overlapping file work. A delayed restore leaves newer switch changes or clipboard restores alone and explains how to retry. - Bubble hooks initialize saved choices when they are the first control called on a Root Mount startup. Unsupported Android versions and secondary processes keep stock behavior. - Pause, switching Material You off and clearing safe mode refresh the cached dark surfaces. Palette listeners start after crash recovery is known, without holding the startup lock. - A hook that keeps failing refreshes its saved diagnostic timestamp once a minute. Repeated failures keep the latest time in memory without writing preferences on every draw. - Original-quality photos remove RGB thumbnails embedded in JFIF headers. Both send paths keep the main image data, density fields and color profiles, and leave the source file untouched. - Settings and the install guide explain that uninstalling the settings icon also removes Messenger. Hide app drawer icon removes only the launcher entry. Refs #26. - Native Bubbles has a direct Android bubble settings link. Samsung's app notification page can omit that option, so the general notification link alone couldn't finish setup. Missing settings screens leave choices unchanged and show recovery guidance. - Both settings tabs have fresh screenshots from the embedded v0.10.0 build. Install guidance separates message-content prompts from store updates, explains drawer access and unsent/read-receipt limits, and preserves account data when an installation conflicts. Manager 1.33.0 and Desktop 1.18.0 are the documented baseline, with manual signed-checksum verification. - Native capability checks follow the values connecting Messenger's shortcut, notification metadata and embedded activity. Null, disconnected and ambiguous routes keep stock behavior. ## 0.8.0 (2026-10-01) This release keeps the same 31 patches, 28 of them switches, for all 21 arm64 builds of Messenger 580.0.0.49.91. Patching with Material You theme fits in a 1 GB heap now, and you can save your choices to a file. Most of the other work makes the settings screen say plainly what each switch is doing. ### New - **Save choices to a file** and **Restore choices from a file** use Android's file picker. They share the clipboard backup format and need no storage permission. Cancelled, unreadable or corrupt documents leave choices alone, and a result from before settings reopened is ignored. ### Changed and fixed - Crash recovery is verified against API 30, 36 and 37 exit records, including low memory, user stops, package updates and MemoryLimiter:AnonSwap. Duplicate or stale records don't advance the same failure twice. A controlled test on an owned phone activated safe mode after three preview-process crashes and kept the selected choice when Resume cleared it. - Delayed update failures now have the same opt-out, destruction and supersession regression checks as delayed successes. - Update checks show progress when enabled and offer **Check now** to retry. Responses are capped at 256 KiB and checked as strict UTF-8 JSON with a valid release tag and a link to this repository. Opt-out, a newer request or closing settings cancels the connection and prevents stale results. The help explains GitHub's connection metadata. - App explains why the drawer-icon switch is absent on Root Mount, bundles without a launcher alias, or installations without the Menu row. Search links to the relevant App setting. A disabled but installed alias remains configurable, and shortcuts alone cannot hide the only reliable icon. Refs #6. - The heap verifier and its regression tests now pass the pinned formatter. Their syntax trees and assertions are unchanged. - Keep unsent activity now advances only when a legacy unsend with an identifier is intercepted. Reading ordinary or previously retained messages leaves the timestamp alone. Status checks also sample pixels from the rendered screen and inspect Android's accessibility node in both themes. - Retained-unsend identifiers are added under one lock, so concurrent events no longer overwrite each other. Duplicate events avoid another write. Calls while the control is off, paused, unavailable or in safe mode add nothing. Tests preserve 100 concurrent identifiers and existing entries through a fresh read from disk. - Keep unsent describes its verified legacy routes, unsupported encrypted chats and unverified group coverage beside the switch. **No unsend activity observed since restart** describes hook activity without implying chat support. Tests cover retained-message labels, stock behavior while off or paused, and choices retained after settings reinitializes. Refs #23. - Control activity labels refresh when settings resumes, keeping the same switches, scroll position and focus. Paused choices say **Changes paused**. Labels have full contrast in both themes, and the switch reads the current status once without exposing exception details. - Repeated taps cannot open overlapping choices pickers. Cancel lets the next request proceed. Tests also check malformed UTF-8 and require all five menu mapping groups explicitly. - Choice backups now use an exact versioned header and a 16 KiB limit. Legacy exports still restore. The entire backup is checked before one preference update. Malformed lines, duplicate keys and invalid booleans change nothing. Unknown and unavailable controls are reported separately, and omitted choices retain their saved values. - The settings menu patch validates its builder, binder, drawer setter and click route before editing any of them. Tests corrupt each target and its register contract across all five naming groups, checking that failures leave the host code and capability flags untouched. Branches to normal exits still run the settings hook. - The memory check now rejects incomplete APKs, missing extension code, changed input files and reduced catalogs. It compares edited class counts as well as color counts. Material You validates and wraps range-form color calls too. - **Open** skips the settings launcher alias, extension screens and disabled launcher entries, so it opens Messenger instead of reopening settings. Missing or rejected launchers show the existing recovery message. Restart applies the same disabled-entry guard. - Safe mode now offers **Resume** directly. If **Pause all changes** was already on, the action reads **Clear safe mode** and leaves Pause on. Both actions clear the crash streak and keep every saved choice. - Material You now finds and validates its edits before making any host class mutable. This avoids rebuilding unrelated classes and leaves the theme untouched if a required route is missing. All 31 patches apply to each of the 21 supported APKs with a 1024 MB Java heap. New tests check unchanged classes and late failures, and `scripts/verify_patch_heap.py` repeats the whole-APK check against the recorded input hashes and independently discovered color counts. Refs #18. - `scripts/CompatReport.java` checks **Material You theme** now, so its report covers all 31 patches. That switch finds its methods when it patches instead of from a build record, and the release checks for v0.7.0 caught it failing on 13 of the 21 builds before it shipped. The report lists what it found on each build and fails one where the theme's color methods are missing or ambiguous, so a new build can't be recorded until the theme fits it. A test fails if the report and the patch disagree on the colors and calls they look for. ## 0.7.0 (2026-09-30) This release supports all 21 arm64 builds of Messenger 580.0.0.49.91 and has 31 patches, 28 of them switches you can turn on in settings. ### New - Messenger 580 builds `346013394` and `346013423` are supported now. They were the last two arm64 "nodpi" builds on APKMirror that the patch turned away, so all six of those work. All 27 patches apply to both in Morphe Desktop 1.17.0. Build `346013423` checks the Notifications tab's suggestions setting one step earlier than the others, so that check now finds its spot instead of counting on a fixed position. - The 14 Messenger 580 builds made for one screen density each are supported too: `346013355`, `346013356`, `346013357`, `346013358`, `346013359`, `346013372`, `346013374`, `346013375`, `346013391`, `346013427`, `346013441`, `346013443`, `346013444` and `346013445`. That covers all 21 arm64 variants APKMirror has for 580.0.0.49.91, so grabbing "the APK for my screen" no longer ends in "version code ... is not supported". All 27 patches apply to each of them in Morphe Desktop 1.17.0. Seven of them share one new set of internal names and two share another. The other five reuse ones the patch already had. - Adding a Messenger build now starts with running `scripts/CompatReport.java --save` (dexlib2 and Guava on the classpath). It records the build under `scripts/profiles/` and prints the Kotlin to paste. If a control doesn't resolve or any other check fails, it lists what failed and writes nothing. The install checker and the changed-APK check read those records, so each build is listed in one place, and a Gradle test fails if a record and the Kotlin tables disagree. - A switch whose code fails inside Messenger now says so. Its usage line reads "Stopped with an error" and how long ago, until the next time it works. **Copy setup** adds a line for each control that failed, with the error's type, the spot in HushMessenger's code where it happened and the time. The error's message is left out because it could quote a chat. The last failure is kept across restarts, so it's still there to copy after Messenger comes back up. The sticker keyboard, system emoji and Menu tab row are covered today. Before this, those failures only reached the system log. - Releases now come with `SHA256SUMS.txt.sig`, an SSH signature over the checksum file, starting with this one. The release key's fingerprint is `SHA256:Z+UfHy7IUbtgNRO/wHkIr68+u4I+SIKPY9avfx/VAPU` and its public key is committed as `scripts/release_signers`. The README shows how to check it with `ssh-keygen`, since Morphe Manager and Desktop don't. `check_release.py --verify-signature` checks it before a release goes out and fails if the checksum file was edited or signed by any other key. The source index still leaves `signature_download_url` empty, because no manager verifies it yet. - The settings screen can be translated now. A language is one table of text in the extension, and the screen follows Messenger's language when a table matches it, falling back to English otherwise. A test fails the build when a table leaves out any text, changes a `%s` or `%d`, or has a stray `%` that wouldn't format. If one slips through anyway, that line shows in English instead of closing the screen. The "Used 5m ago" units can be translated too. No translations ship yet, the English text is unchanged, and saved choices don't depend on the language. The README says how to add one. - A new **Send photos at original quality** switch sits with the other conversation controls. Even with HD on, Messenger re-encodes a photo on your phone before encrypting and sending it, so a 6.4 MB photo went out as about 1.8 MB. With the switch on, an HD JPEG goes out with its own image data instead. Its metadata stays behind, the same as with Messenger's copy: location, camera details, capture time, the embedded thumbnail and a motion photo's video clip. In a test between two accounts the received photo was byte for byte the file that was sent. A photo saved sideways with a rotation tag, the way many phones save portrait shots, keeps just that tag, so it still shows upright. Photos over 20 MB and videos still go through Messenger's compression, and a photo just over the limit still sends as Messenger's copy. - README's troubleshooting list covers Samsung's Auto Blocker and Google's Advanced Protection. Either one stops the patched Messenger from installing on a Galaxy phone, and the note gives the settings path to turn each off for the install and back on afterwards. - A new **Material You theme** switch brings your wallpaper's colors into Messenger's dark mode on Android 12 and newer. Messenger's blue takes the accent color Android picks from your wallpaper, on the selected tab and on links. Its grays get a matching tint too, like the search bar and the message box. Every color keeps the contrast it had against the dark background. With a blue wallpaper the grays hardly change, because Messenger's own grays already lean blue. Black backgrounds stay black and each chat keeps its own theme. Light mode doesn't change, and neither does anything with the switch off. Android 11 gets a fixed blue palette. Turn on dark mode in Messenger first, then use **Restart Messenger**. - A new **View stories anonymously** switch opens other people's stories without adding you to their viewer list (#7). Stories you open this way still show as seen on the People tab and in the story viewer, so a new story from the same person stands out. That holds after Messenger restarts too, and each account on the phone keeps its own list. One spot doesn't follow along yet. The ring around that person's picture in your chat list keeps showing the story as new until it expires, because Messenger only clears that ring when it tells the poster you looked. - A new **Save any story** switch adds **Save** to the **More options** menu on other people's stories (#4). Messenger only offered it on your own. It's the same item, so the photo or video downloads the way your own stories do. A saved video lands in Movies/Messenger as an ordinary MP4. Your own story's menu doesn't change, and with the switch off nobody else's story gets the item. ### Changed and fixed - **Hide growth prompts** now hides two more kinds of nudge that got past it. Notes stop popping up their tip sheets, so **Make my notes public** and **Add lyrics to your music note** don't appear while the switch is on. The first of those is one tap away from changing who sees your notes. The **Share your own story** card at the end of someone else's stories is gone too. With the switch off, Messenger shows them as before. - Hide People You May Know now clears suggestions from the People tab, the search screen and the story viewer as well. The People tab kept its own "People you may know" list, tapping the search bar showed another one with Add friend buttons, and the story viewer could slip a page of suggested people in between stories. Each of those sits right where a stray tap sends a friend request. With the switch on, the People tab's suggestion filters (All, Current city, Hometown and the rest) come up empty, search shows only its usual Suggested row of people you already talk to, and the story viewer never asks for its suggestions page. It applies after **Restart Messenger**, like the other inbox switches. Chats, the end of the chat list and the Notifications tab work as before. - Settings open on installs made with Morphe Manager's Root Mount now (#12). Those installs leave Android with stock Messenger's list of screens, so **Patch controls**, **Restart Messenger** and the Menu tab row pointed at screens Android didn't know, and every switch stayed off because the list of patched controls was never read. Both shortcuts and the row now open settings inside one of Messenger's own screens, and the patched app carries its own list of controls. A normal install opens the same screens as before. There's no app drawer icon on a mount install, and Messenger's alternate app icons don't get the long-press shortcuts there, so use the Menu tab row with those. Safe mode still works when settings are the first thing you open. The patch checks both stock screens it uses and fails while patching if a build changes either of them. - Hide Meta AI now removes the Meta AI tab too (#13). Some accounts get it in the bottom bar between People and Notifications, and the switch used to leave it there. With the switch on, Messenger builds the bar without it, the same way it does for accounts that never get the tab, so the other tabs keep their places. It takes effect after **Restart Messenger**, and so does pausing. - Hide Facebook shortcuts now says that it also removes the "Also from Meta" section in the Menu tab (#14), with Muse, Subscriptions, Facebook Reels and whatever else Meta lists there. It already did that, header and all, but the description only mentioned toolbar, profile and sharing shortcuts, so you had no way to know. - The build now uses the Kotlin Gradle plugin 2.4.20 instead of 2.4.10, which had an unsafe deserialization flaw in its build cache (CVE-2026-53914). Bouncy Castle, which the build uses for signing, is now 1.86 everywhere. The 1.77 and 1.79 copies it replaces predate fixes for several published advisories. This only changes how the bundle is built. All 27 patches still apply in Morphe Desktop. - The update check now compares release numbers as numbers. It used to compare them as text, so a future 0.10.0 would have looked older than 0.9.0 and you'd have been told you were up to date. It also only offers a button for this project's own release pages, and it always closes its connection. Tests now cover a newer release, the same release, GitHub's rate limit, a reply with no version in it and a server that never answers. - Hide inbox ads now says what it's for. Meta stopped selling ads in the Messenger inbox on November 11, 2025 and in Messenger Stories on August 27, 2026, so there's nothing live for it to remove today. The switch works the same way and stays as a guard in case those ads come back. - `check_install.py` now finds Messenger data left behind by an uninstall that kept the data, which is what caused the "INSTALL_FAILED_VERSION_DOWNGRADE ... 2147483647" error in #9. It used to look only at installed apps, so it passed and the install failed anyway. A version code of 2147483647, installed or left behind, is now called out as another patch set's spoofed version, with a pointer to the README fix. A normal downgrade reads the same as before. - The settings screen now also makes room for a camera cutout when Android reports it apart from the status and navigation bars. On a Galaxy S22 with Android 16 it already kept clear of the camera in both landscape directions, and its layout there is unchanged. - The README now covers chat heads, photo quality and update prompts. None of these needed a patch. Chat heads still work on Android 16, but on Android 12 and newer they need Messenger's battery use set to Unrestricted. The gallery's HD switch already sends photos at full resolution. Play's in-app update prompt doesn't run on a patched Messenger. ## 0.6.0 (2026-09-29) ### New - A new **Hide app drawer icon** switch in the App tab removes the separate "HushMessenger settings" icon from your app list. Settings still open from the long-press **Patch controls** shortcut and the Menu tab row, and turning the switch off brings the icon back. The switch is only offered when the Menu tab row applied, so a launcher without app shortcuts can't leave you locked out, and Messenger restores the icon at startup if a later patch drops that row. Checked on the S25. - Support for build 346013370, the arm64 nodpi APK that Morphe Manager's download link gave two people who reported it. Before, patching stopped with "version code 346013370 is not supported". It's the same app with its internals under different names, so it has its own checked list, and all 27 patches apply to it. Hide avatar stickers finds that build's sticker keyboard too, which fills its tab list in a different way. Neither test phone can install it (both run newer builds), so it hasn't been tried on a phone yet. - Support for build 346013354, APKMirror's arm64 nodpi bundle of Messenger 580.0.0.49.91. It's the same app as the builds already supported, and all 27 patches apply to it. Before, patching stopped with "version code 346013354 is not supported". ### Changed and fixed - The line under each switch no longer reads "Not active since restart", which looked like the switch was broken. It only appears while the switch is on, says "Nothing to change yet since restart" until Messenger reaches that screen or event, and then "Used ... ago". - A Facebook patched with the same key as Messenger, such as Hushfacebook, is no longer turned away when it asks Messenger for its shared message keys. Messenger used to refuse it because its certificate wasn't Meta's. Now, while that Facebook is the app calling Messenger and its current signing key is exactly the one Messenger carries, Messenger checks it the way it checks Meta's own Facebook, so Meta's rules still decide what it may read. Any other app, a Facebook signed with a different key, and a Messenger that still carries Meta's key all get the old answer. Copy setup counts each outcome. Tests cover each case, and on the test phone a Hushfacebook build's two reads of Messenger's shared message keys were both answered. - Allow screenshots now also covers Android 14 and newer, where Messenger learns about a screenshot from Android itself rather than by watching your photos, and the photo and media viewers that lock their window in a protected chat. Before, it only stopped the older screenshot check and the block on protected video. Its description no longer mentions vanish mode, which encrypted chats don't have. View-once media stays protected. Neither the notice nor the viewer lock turned on for the test account, so this is checked with tests and on all three supported builds rather than with a live notice. - The README explains how to get alerts from only the chats you choose, using Messenger's own chat settings and Android's per-conversation notifications. Stock Messenger already offers everything needed, so there's no new switch. The order matters: silence Chats first, then set the chats you want to Alert, because a chat only keeps its own setting once you change it. Checked on the S25 with a live message. - The App tab's Quick access card now mentions the HushMessenger row in Messenger's Menu tab, on builds that have it. The text stays whole at twice the normal text size in both themes. - Pass 247 local tests. All five supported APKs apply all 27 patches, and clean builds from two separate checkouts produce the same bundle. ## 0.5.0 (2026-09-28) ### New - Restore screens on re-signed builds, always on. Messenger checks its own signing certificate against Meta's, and a re-signed build used to fail that check quietly and open to a blank screen. The patch answers that one check with Meta's original certificate for Messenger itself. Every other app still gets the real answer. On the S25 a fully patched build now opens straight to the signed-in chat list. - A HushMessenger row in the Menu tab, always on. It sits right under Messenger's own Settings row and opens the HushMessenger settings screen, while Settings still opens Messenger's settings. Accounts that get Messenger's folder grid instead of the list use a separate path that no test account has shown yet. - Allow screenshots, Hide read receipts and Keep unsent messages all start off. A kept message shows "[unsent]" before its text and stays after a restart. Hide read receipts also works in end-to-end encrypted chats, which Messenger uses for most one-to-one chats. There, Messenger marks a chat read and sends the receipt in one step, so chats you open stay unread until you reply or turn the switch off. Keep unsent messages doesn't work in end-to-end encrypted chats. Messenger removes those messages below the part of the app HushMessenger can change. - Use system emoji, off by default. Emoji are drawn with your phone's own font instead of Messenger's. If the phone has no emoji font, Messenger's set stays. - Each switch shows when it last took effect since Messenger started, and Copy setup includes that. A switch that's on but never active usually means Messenger uses a different screen on your account. - Export and Import in the App tab copy your switch choices to and from the clipboard. Only known switches with on or off values are accepted. It helps after a reinstall with a different signing key wipes Messenger's data. - Crash-loop safe mode. If Messenger closes unexpectedly three times within a minute of starting, every switch turns off and your choices stay saved. The settings screen says why, and Resume turns them back on. - An update check in the App tab, off by default. When it's on, opening settings looks for a newer release on GitHub. Nothing is sent while it's off. - Support for the arm64 build 346013442 (213-240dpi) from APKPure. Build 346013445 is organized differently inside and isn't supported. - For developers, `scripts/CompatReport.java` checks a Messenger APK without changing it. It prints the package, version code, ABI and signer, then pass or fail for each of the 27 patches. ### Changed and fixed - Hide avatar stickers now also removes the Avatar stickers tab from Messenger's newer sticker keyboard. Pausing brings it back. - Hide typing indicator now also works in end-to-end encrypted chats, which Messenger uses for most one-to-one chats. Before, the other person still saw "is typing" there. In a two-phone check the indicator stayed hidden with the switch on and came back while paused, and messages still went through. - Hide Meta AI also removes the "Ask Meta AI" button that appears in the search bar once you type, and turns off the AI agent behind search. People, messages and group results still show, and pausing brings the button back. The search field's "Ask Meta AI or search" hint doesn't change. - Other apps can no longer restart Messenger. Restart Messenger used to accept a request from any app on the phone, which could close Messenger at any moment, even during a call. The long-press shortcut and the App tab button still work. - The long-press shortcuts are found wherever a build keeps them, so build 346013442 gets them too. - The search field now reads back what you typed with a screen reader. The selected filter keeps a visible focus ring, and switches that can't work on your Android version look unavailable. - Quick toggles, including the theme switch, no longer stack up old messages. Pause now says "Changes paused" or "Changes resumed". - The selected filter in the light theme is filled like it is in the dark theme. On Android 10 and newer the search cursor uses the app's blue, and the restart screen and its system bars follow your theme. The header now lines up with the cards. - The title stays on one line at large text sizes on older Android versions, and very long pasted searches are trimmed. - In the right-to-left test language, headings and descriptions now line up on the right instead of running into their counts. - The README links the two APKMirror builds that work, since six look alike on that page. The Install beside Meta apps description no longer says signed builds don't open chats. - Checked Messenger at Android's largest font size (2x) on the S25. The chat list, chats, composer and HushMessenger settings all scale and stay usable, so there's no font patch. Long labels shorten with an ellipsis the way they do in stock Messenger. - Checked the README's "Add HushMessenger to Morphe Manager" link on a phone. It opens the morphe.software page, and its Open in Morphe button brings up Morphe Manager's Add source dialog with this repository filled in. - Building the same source now gives the same bundle from any checkout. The license files used to carry whichever line endings Git wrote, so a fresh clone couldn't reproduce the published checksum. - Release checks compare every README link to this project's own releases, and the permission failure check says when Morphe Desktop never started. - The README screenshots show this release's settings, with all 24 controls. - Pass 204 local tests. All three supported APKs apply all 27 patches, and clean builds from two separate checkouts produce the same bundle. ## 0.4.2 (2026-09-28) - Hide People You May Know now also clears the suggestions on Messenger's Notifications tab and the block after the last chat. It takes the same path as Messenger's own Hide option, even on accounts where Meta turns that option off from its servers, and it never changes Messenger's settings. Pausing HushMessenger or turning the switch off brings the suggestions back. Checked on the S25: the Notifications tab lost its suggestions, they returned while paused, and chats and notifications still showed. The end-of-list block and the server override didn't apply to that account, so they're covered by build checks only. - Pass 157 local tests. Both supported APKs apply all 21 patches, and two clean builds produce the same bundle. - Explain where to find the settings after patching: long-press Messenger for Patch controls, or open HushMessenger settings from the app drawer. ## 0.4.1 (2026-09-27) - Long-press Messenger for Patch controls or Restart Messenger. Keep the app-drawer settings entry and cover Messenger's alternate icons. - Add Quick access and a restart button at the top of the App tab. Explain when inbox changes need a restart. - Save pending choices before restarting the main process. A failed save leaves Messenger running and shows an error. Restarting doesn't clear app data. - Preserve Messenger's direct-share target, all original resource values and existing hook behavior. Rebuild both supported APKs with all 21 patches and verify their signatures. - Pass 153 local tests. Exercise the long-press menu and fresh-process restart in a temporary S25 test app, retain saved choices, and recapture both settings pages and themes. Remove the test app afterward. Update the already patched S25 in place with its matching Morphe key. Both real launcher actions and the settings restart button pass, the signed-in chat screen returns in a fresh process, and 19 enabled controls survive. S22 remains stock. Fresh-install sign-in and encrypted-history recovery still need testing. ## 0.4.0 (2026-09-27) - Pass 133 local tests and rebuild both exact APKs with all 21 patches. Verify all 57 runtime hook calls and preserve every stock class and native library. Both installed phone APKs remain stock. Their account data is unchanged. - Verify the published bundle checksum and all 21 entries through Morphe's remote lookup. Refresh the S25 source to v0.4.0. Source updates do not install a patched Messenger APK. - Keep multi-digit counts and version numbers in their normal reading order in the right-to-left test language. - Distinguish named and hidden dependencies in the generated catalog, including their transitive dependency graph. - Clearly mark the standalone settings app as a UI preview and remove its app-drawer entry. Preview setup reports never claim active Messenger controls. Remove leftover previews from both test phones after confirming their Messenger APKs remain stock. - Keep page and category state independent of translated labels. Add an English text catalog with expanded and right-to-left test languages, whole plural messages and locale-aware numbers. Honor Android app languages even when the host resource table falls back to English. - Publish a catalog generated from the built patch bundle. Local checks reject changed control keys, metadata, release versions and checksums before publication. - Add Copy setup to the App tab. It copies app versions and control states only when tapped, excludes account and chat data, and distinguishes saved choices from active controls while paused or unavailable. ## 0.3.1 (2026-09-27) - Require both shared permissions to retain signature protection. Check their DEX sites before renaming the manifest permissions. - Validate every method in a control before editing it, then publish its settings capability only after success. Reject changed browser parameters and plugin return constants. - Keep both supported build codes visible in Morphe's compatibility description. - Keep controls reachable in short windows with large text by moving the branding and reminder into the scroll area. Let navigation scroll when the keyboard leaves very little room. Preserve the normal portrait layout. - Restore search selection and each page's scroll position, refresh switches when returning to settings, and keep focus on visible controls. - Explain bubble availability on Android 9 and 10 without discarding the saved choice. Add accessible page names, correct right-to-left spacing and explain that choices apply to every account in the installation. - Reject incomplete or conflicting certificate, permission and package records during the installation check. Include apps installed in other Android profiles. - Check arm64 libraries, ELF page alignment and Android's native extraction rules. The optional `--stock-apk` argument verifies that a rebuild preserves the tested stock libraries. - Return clear errors for missing inputs, tool timeouts, corrupt compressed native libraries and malformed changed-APK reports. Read wrapped dependency errors and keep temporary APK cleanup on failure. - Pass 103 local tests. Android lint reports no errors and the same eight warnings as the baseline. - Rebuild both supported APKs with all 21 patches, verify their v3 signatures and preserve every native library. Two clean bundle builds produce the same checksum. - Exercise both settings pages and themes on an isolated S22 display. Check small windows, 200% text and keyboard-visible search on a headless Android 16 emulator. ## 0.3.0 (2026-09-27) - Redesign settings with separate Controls and App tabs, compact grouped rows and category filters. - Add a live enabled count and a clear paused state. Keep all patch selections and saved preferences. - Match the new dark and light layouts with shared colors, rectangular switches and readable section headings. - Keep appearance, version details and setup help together in the App tab. - Preserve the selected tab, category, search and scroll position when changing themes. Keep 48 dp touch targets and adapt the header to narrow screens or larger text. - Pass all 57 local tests and Android lint. Rebuild both supported APKs with all 21 patches and verify their v3 signatures. Compare both settings pages against the design references on an isolated S22 display. - Verify the public download matches both clean builds and that Morphe Desktop fetches v0.3.0 with all 21 entries. Phone source refreshes remain queued while the S25 is disconnected and the S22's Manager session is active. ## 0.2.0 (2026-09-27) - Replace the two-entry catalog with 21 selectable patches. Each feature applies independently and shares one settings extension. - Add 13 optional controls: inbox ad filtering, People You May Know, friend request cards, growth prompts, Chat Moments, AI sticker tools, avatar stickers, inbox promotions, chat promotions, business reply suggestions, business typing suggestions, event prompts and the Reels badge. - Extend the existing Meta AI control to the inbox toolbar button. - Add settings search and show only installed controls. Saved choices survive removing and later adding a patch. - Preserve stock behavior while switches are off or changes are paused. Check exact hook sets and the new plugin gates' disabled branches before patching. - Add regression tests for separate selection, capability metadata, search and ad-filter return branches. Existing tests remain intact. - Pass 26 Kotlin, 15 Android and 11 Python tests, Android lint, both full APK rebuilds and a separate single-control rebuild. Exercise settings search, persistence and themes on an isolated S25 display. - Refresh the remote source on S22 and S25 and verify all 21 entries in each phone's catalog. Keep their installed Messenger apps intact. - Keep the ad filter experimental. No affected-account ad row was available for a live removal check. Original-package startup remains unresolved. ## 0.1.0 (2026-09-27) - Add seven optional controls adapted from existing Messenger patches: stories and notes, inbox tabs, Facebook shortcuts, Meta AI buttons, external web links, typing signals and bubble eligibility. All switches start off. - Add a HushMessenger settings launcher entry with saved switches, a pause control and a light theme. Inbox changes take effect after reopening Messenger. - Check the complete hook set on both supported 580 APKs. Changed hooks stop patching rather than silently skipping a feature. - Verify the settings screen, light theme, pause and Messenger launch on an isolated S25 diagnostic copy. Stories, the Facebook toolbar shortcut and the Meta AI floating button passed before/after checks. The original-package startup failure remains unresolved. - Pass 20 patch, nine Android settings and 11 certificate tests. Both exact APKs patch and sign successfully. - Verify the v0.1.0 remote source and both patch entries on S22 and S25. Their stock Messenger installations and sign-ins stayed intact. - Correct the remote index timestamp for Manager's local date-time parser. The bundle download and checksum are unchanged. - Add bytecode and Android settings tests. Keep ad blocking and media transcoding unavailable until their current paths can be verified. ## 0.0.9 (2026-09-27) - Add a read-only installation check that verifies APK certificates and reports installed-app or permission-owner conflicts before any device changes. It checks the phone's current signer set, including API-specific rotation and multiple signers, and refuses uncertain results. - Cover the check with eleven Python tests and exercise it against the S25's installed apps, including a deliberately mismatched signing fixture. - Confirm stock encrypted message delivery between two owned accounts on S22 and S25. The S22's stock browser switch passed HTTP and HTTPS comparisons. Its original setting was restored. Re-signed Messenger still needs a working startup path. ## 0.0.8 (2026-09-27) - Record the S25 test: a same-key patched Messenger installed, but its first-run screen stayed blank. An unchanged APK rebuilt and signed through the same tool did the same. - Clarify the phone-data warning after reinstalling the original stock APK required a fresh sign-in. Chats, calls and notifications remain unverified. ## 0.0.7 (2026-09-27) - Record the S22 stock Messenger controls for inbox suggestions, external links, notifications, chat heads and accessibility without changing account settings. - Refine patch plans around the controls Messenger already provides, including checks that would justify a separate browser or suggestions patch. - Rebuild the preview bundle and repeat the S22 off-device patch, signature and changed-APK checks. ## 0.0.6 (2026-09-27) - Add the S25's Messenger 580 arm64 build to the exact compatibility list after comparing its APK with the S22 fixture. - Verified that altered permission bytecode in either APK stops patching before an output is written. - Left both phones' installed Messenger apps and local chat data untouched. ## 0.0.5 (2026-09-27) - Add a repeatable changed-APK check that confirms Morphe stops before rebuilding when permission bytecode differs from the tested Messenger build. - Ignore local signing keys and Python cache files so they cannot be staged by accident. - Explain that Manager and Desktop currently load patch bundles without verifying the source index's detached-signature URL. - Keep device-dependent patch work in a blocked tracker until an isolated signed-in arm64 session can verify it. ## 0.0.4 (2026-09-27) - Put the tested APK and phone-data warning before the preview setup steps. - Make the README easier to use on a phone, including a copyable stock APK checksum and recovery help. - Move the support link below the setup and verification details. - Give patch failures the exact Messenger build needed to retry with an unmodified APK. - Shorten the patch and source descriptions and cover the recovery message in ten unit tests. - Check both Manager 1.32.0 source methods and the published source in Morphe Desktop 1.17.0. ## 0.0.3 (2026-09-27) - Reject Messenger builds whose shared-permission manifest counts, component owners or active DEX instruction sites differ from the checked 580 APK. - Add regression tests for missing or reassigned guards, duplicate declarations and changed DEX sites. - Use the smali revision requested by Morphe Patcher 1.14.1. - Give the patch bundle a fixed release timestamp so clean builds have the same checksum. - Lock build dependencies and verify their artifact hashes, including the Morphe build plugin. - Explain how to load a preview source in Morphe Manager and Desktop. ## 0.0.2 (2026-09-27) - Published the Messenger patch source with a README hero, icon and social preview in the Hush project style. - Added a Morphe source index and a preview bundle for the exact Messenger 580 arm64 target. - Rebuilt the bundle locally, applied it to a stock APK copy and verified the signed output off-device. - Documented the signing-key requirement and the remaining phone checks. ## 0.0.1 (2026-09-27) - Started a separate local Morphe patch source for Messenger `580.0.0.49.91` (arm64, version code `346013387`). - Added a shared-permission rename patch for installation beside Meta apps. - Added the project research, roadmap, build notes and GPL attribution.