# Changelog Every Hushfacebook release, newest first. ## 0.7.2 (2026-10-04) Source preparation. The latest published bundle remains v0.7.1. ### Added * **Facebook:** `Hide AI-detected posts` has a new switch, Hide Meta AI in the feed, under News feed. It takes out the Meta AI cards Facebook adds to the feed between posts, by the card's own type, so people's posts stay whatever they say about AI. It starts on. * **Facebook:** Phones with a 32-bit processor on Android 11 or newer can patch Facebook 581.0.0.45.58. Pick its 32-bit build for Android 11 and newer, 475215364 on APKMirror. It keeps its code readable the way the 64-bit build does, and every patch applies to it. * **Facebook:** New patch, `Block Instant Games ads`, in the default selection with its switch under Menu. A game you play in Facebook that asks for an ad, whether a full-screen one, a rewarded one or a banner, is told there's none to show, the answer Facebook gives when it has no ad. So nothing is fetched or played, a rewarded ad gives no reward, and the game carries on. The idea comes from De-Vanced, which drops those asks. * **Facebook:** `Hide sponsored Marketplace listings` also covers Marketplace's video ads. The two components that draw one in the feed draw nothing while the switch is on, and the ad's video isn't fetched. The diagnostic report counts them on its Marketplace ads line. The idea comes from De-Vanced's ad patch. * **Facebook:** New patch, `Hide tabs`, with a switch under Appearance for each of the Feeds, Friends, Marketplace, Groups, Gaming and Events tabs. Turn one on and that tab leaves the tab bar once Facebook restarts. Its page stays in the Menu and opens there on a screen of its own, and a start tab set to it opens Home. Checked on a phone with 581, with Friends and Marketplace hidden and then brought back. It's in Manager's default selection with every switch off. The idea comes from Loukious, which hides the Marketplace and Games tabs. * **Facebook:** New patch, `Block screenshot detection`, under Privacy. Facebook watches for screenshots across the app, in the feed, Reels, chats, games, Marketplace and ads, and on Android 14 and newer it can ask Android to report screenshots and screen recordings. With the patch picked and its switch on, it never finds out, so whatever it would do about a screenshot doesn't happen. Checked on a phone with 581: with the switch on, screenshots taken in the feed and in Reels never reach Facebook's screenshot check, and with it off they do. It's off in Manager's default selection and its switch starts on once it's picked. The idea comes from ReVanced's screenshot detection patch, which Loukious and NexAlloy offer too. * **Facebook:** New patch, `Allow screenshots`, under Privacy. Facebook blocks screenshots and screen recordings on a few pages, which come out black. With the patch picked and its switch on, those pages show up in screenshots, recordings and the recent apps view like any other. A page that's already open changes the next time you open it. It's off in Manager's default selection and its switch starts on once it's picked. The idea comes from ReVanced's screenshot patch, which Loukious and NexAlloy offer too. * **Facebook:** New patch, `Hold back analytics uploads`, under a new Privacy section. Facebook uploads how you use the app in the background, every three minutes while it's open, and runs Papaya jobs that train models on your phone and report back. With the patch picked and its switch on, the uploads don't start and the Papaya jobs end without running. It's off in Manager's default selection, its switch starts on once it's picked, and a change takes a restart of Facebook. * **Facebook:** With the Saved shortcut switch on, Facebook's Menu gets a Saved row at the end of Settings and privacy, right above Hushfacebook settings. It opens your saved items inside Facebook, and unlike the icon's long-press entry it shows on Samsung phones too. It comes with `Hushfacebook in the Menu`. * **Facebook:** Block account setup reminders, under Notifications, stops the "finish setting up your account" notifications some people keep getting while they're signed in. It starts off like the other notification switches, and login and security alerts still come through (issue #57). ### Fixed * **Facebook:** With Save videos other apps can open on, reels and stories that Facebook sends only as AV1 or VP9 picture with xHE-AAC sound now save at their full resolution. Those used to drop to Facebook's own MP4, which for a story can be 360p. The phone now turns the picture into H.264 and the sound into AAC-LC before joining them, which takes a few seconds for a 1080p reel, and the file keeps the colors the original states (issue #77). * **Facebook:** Resume long videos works again for long videos opened full screen. Facebook 581 plays those in its reels viewer, which loops what it plays, so they were skipped as reels. A reel of two minutes or more now resumes like any other long video, and shorter reels still start from the beginning. * **Facebook:** Under Material You, a wallpaper palette with almost no color in its accent no longer turns unseen story rings the same gray as watched ones. Facebook's own blue now stands in for an accent that gray, so unseen rings, unread dots and badges stay easy to tell apart, while the palette still colors the grays. A palette with some color in its accent looks as it did. The diagnostic report's new Material You section gives the accent's chroma (issue #67). * **Facebook:** At large text sizes on narrow screens, the settings home title stays on one line and the empty search field keeps its whole hint visible. Back and Clear search retain their touch targets. * **Tooling:** Codec cleanup no longer fails a completed media test when closing the launcher's input retries a buffered release byte after the process has exited. Cleanup still reports errors while the launcher is alive. * **Facebook:** With `Hide the Reels tab` on, the Reels row in Facebook's Menu opens Reels on a screen of its own. Checked on a phone with 581. * **Facebook:** Messenger and Instagram rows no longer say links open here when Android's link handling is off or the relevant address states are missing. The rows refresh together from one Android answer when you return from settings. ### Changed * **Facebook:** Hide the Stories tray no longer waits for Facebook to restart. Turn it on or off and the tray goes or comes back the next time you pull the feed down to refresh. Facebook now builds the tray while it's hidden so it can come back without a restart. * **Facebook:** Hushfacebook now builds on Morphe patcher 1.15.1, so it needs Morphe Manager 1.34.0 or newer. Manager 1.33.0 carries patcher 1.15.0 and asks for an update before it'll load the bundle. * **Facebook:** Checked on a phone with 581: the reel Download button, its quality choices and the save notification's Cancel all have spoken labels for TalkBack, at normal and double font size. With Check for new Hushfacebook releases on, the daily check runs as Facebook starts. * **Tooling:** The fixture checks run on desktop CLI 1.18.1, which carries patcher 1.15.1. The patcher's new ARSCLib commit is pinned in the dependency verification metadata. * **Facebook:** The settings overview shows the version and a short build identity with its source state. About and diagnostic reports retain the full identity. At large text sizes, Pause, Resume and Undo appear before the recovery guidance so they stay in view. * **Facebook:** Installation help explains Expert mode and how to identify overlapping Facebook patch sources. Bug reports now ask for every source's version and patch selection, including the details needed to diagnose issue #79. ## 0.7.1 (2026-10-03) * **Facebook:** This release gathers everything since v0.7.0. It keeps the same 60 patches for Facebook 581.0.0.45.58, and 580.0.0.51.74 and 577.0.0.50.72 still work. New this time are separate switches for the top Stories tray and Stories between posts, Hide story prompts, whole-word matching for the post filters, an optional Saved shortcut, and Open and Share buttons on the notification when a save finishes. Morphe Manager 1.33.0 or newer is still required. ### Added * **Facebook:** Hide story prompts, a new switch under Stories (issue #21). It takes out the cards next to Create story that suggest a story to make, like Share music you love. It's off until you turn it on, and the change shows the next time Facebook loads the tray. * **Facebook:** Messenger and Instagram rows under Supported links, next to the Meta App Manager one (issue #78). Android verifies Meta's own Messenger for facebook.com, www.facebook.com, m.me and www.m.me, and Instagram for facebook.com, www.facebook.com and m.facebook.com. With either one installed, those switches on Hushfacebook's Open by default page kept turning themselves back off, and links to those addresses went through the browser first. Each row shows only while one of that app's addresses doesn't open here. A tap opens that app's own page, where you turn off Open supported links before selecting the addresses for Hushfacebook. Back from that page, the row tells you as soon as its links open here. Diagnostic reports now say whether Messenger and Instagram are installed and enabled. * **Facebook:** Completed native saves now keep a generic notification with Open and Share actions for the committed gallery file. It uses temporary read grants and stores no source links or post details. * **Facebook:** Optional whole-word matching for both post-filter lists. It starts off, preserves existing imports, and respects Unicode word boundaries and keep-list overrides. * **Facebook:** Settings-import previews name each changed switch and show its saved current and incoming state. Long lists scroll above the actions, with spoken state labels and no phrase contents. * **Facebook:** Separate controls for the top Stories tray and Stories between posts. Upgrades keep the old choice, imports accept the combined or independent values, and exports save the independent choices. * **Facebook:** Diagnostic reports now carry a build identity that also appears in status and About. Later source builds bind it to the packaged bytes and their source inputs. Missing or inconsistent metadata remains unknown or unverified. * **Facebook:** Debug diagnostics for Marketplace response shapes, including the themed-ad and related-ad queries and the stock local-pickup/radius request fields. The report records fixed field names and types with model counts, leaves private values out, and identifies incomplete captures. It doesn't enable another listing filter. * **Facebook:** An optional Saved shortcut under Menu. It starts off, opens Saved in the same Facebook install, and leaves every existing launcher entry in place. A full launcher or missing Saved route gives a status message. The Saved route has been checked from cold and warm starts on a phone. Its icon is rendered locally because Android rejects shortcut resources borrowed from another package. ### Changed * **Facebook:** With AMOLED black on, unread notifications are easy to spot again (issue #72). Facebook tints an unread row with a very faint blue that looked almost black on a black page, so that tint is now stronger in dark mode. Material You still gives it your palette's accent. * **Tooling:** The manifest check now also makes sure every supported Facebook build keeps the plain launcher query that lets it see Messenger and Instagram. Facebook doesn't name either app, and without that query their rows would never show. * **Tooling:** Source-build notes now explain Saved's launcher limits and the codec runner's verified process ownership. * **Facebook:** The black-Reels report in #62 was traced to a custom ROM, with stock-firmware playback confirmed by the reporter. The Stories-between-posts fix (#45) and suggested Groups/Stories fixes (#8/#10) also have reporter confirmation. Their remaining switch and preserved-content comparisons are still tracked. * **Facebook:** Messenger and Threads support have their own projects and release schedules, [HushMessenger](https://github.com/SysAdminDoc/HushMessenger) and [HushThreads](https://github.com/SysAdminDoc/HushThreads). * **Tooling:** Source audits now fail when GitLab search is skipped, denied, unresolved or malformed, and keep the existing census date. GitLab.com's disabled global code search is documented instead of treating a token as the missing requirement. * **Tooling:** Codec tests now own each tool's descendants before it starts, so an immediately exiting parent can't leave a child holding output open. Windows checks preserve the exact native Unicode arguments. Windows and Linux checks pass. macOS remains unverified. ### Fixed * **Facebook:** With `Material You theme` in dark mode, the "What's on your mind?" row at the top of the feed now takes your palette like the rest of the feed, instead of staying Facebook's dark gray (issue #37). Facebook paints that row straight from a gray it keeps in its resources, a path none of the theme's other changes reached. * **Tooling:** Codec test cleanup no longer fails a successful tool run just because the launcher closes its control pipe while exiting. * **Facebook:** The overview now calls out a missing Restore screens on re-signed builds patch directly, including the profile and Settings pages it can break. Root Mount installs don't show that warning. * **Tooling:** Patch tests ignore nested fixture extraction files when checking their inputs. Top-level fixture changes still rerun tests, and an empty or invalid configured folder can't reuse a skipped result. * **Facebook:** Build identity detects missing source inputs even when Git hides their removal. A clean claim requires the complete input set to match the committed tree. * **Facebook:** Fragmented video saves now reject samples that point into box headers, gaps or past a media-data payload. Valid codec joins keep their existing samples, including media stored before a fragment or across several boxes. * **Tooling:** Java lookup now returns the executable's full path when a suitable JDK is already on PATH. Push checks and explicit JDK validation use the same executable. * **Facebook:** Cancellation and gallery publication now choose one winner. A cancellation accepted through the final flush leaves no saved entry. Once publication starts, progress stays visible and Cancel is disabled. A failed gallery close or update reports failure and removes the unfinished entry. ## 0.7.0 (2026-10-02) * **Facebook:** This release gathers everything since v0.6.0: 60 patches, up from 59, now for Facebook 581.0.0.45.58, the newest release. Facebook 580.0.0.51.74 and 577.0.0.50.72 still work. The new patch is `Force dark mode`, for tablets whose Settings page has no Dark mode row. Morphe Manager 1.33.0 or newer is required. * **Facebook:** Hushfacebook now supports Facebook 581.0.0.45.58, the newest release. Take its (arm64-v8a) (320-640dpi) (Android 11+) bundle from APKMirror, build 475215365. Facebook 580.0.0.51.74 and 577.0.0.50.72 still work. Every patch applies to 581 without forcing anything, though three needed a new way to find their spot. Facebook's build tools moved some of the text they looked for out of the code that uses it and into shared lookup lists, so `Download any story` and `Hide Meta AI in search` now read those lists as well as the code. `Turn off double tap to like` finds the like's source wherever the call puts it, since 581 added callbacks after it. * **Tooling:** The bundle is now built on Morphe patcher 1.15.0, the one Morphe Manager 1.33.0 ships, so Morphe Manager 1.33.0 or newer is required. Manager 1.32.0 turns the bundle down and asks you to update. Every patch applies the same way on Facebook 581, 580 and 577. * **Facebook:** The diagnostic report has a new **Last screen left** section for the missing reel Download button (issue #18). Each time you leave a Facebook screen, it notes which kinds of views sit under two points at that screen's right edge, where a reel's buttons are, by class and resource name only. Nothing the screen says goes in. Reports from affected phones showed neither of the two sidebars the button goes into, so a report taken after leaving one of those reels (press Home while it's on screen, then open Hushfacebook settings and export) should show what draws their buttons instead. * **Facebook:** When Meta App Manager is on your phone and Facebook's web addresses don't open in Hushfacebook, a new **Meta App Manager** row under Supported links opens App Manager's link page (issue #30). App Manager comes preinstalled on many phones and Android verifies it for facebook.com, so the switches on Hushfacebook's own Open by default page kept turning themselves back off. Turn off Open supported links for App Manager, then select the addresses for Hushfacebook. Diagnostic reports now say whether App Manager is installed and enabled. * **Facebook:** New **Force dark mode** switch under Appearance keeps Facebook dark whatever its own Dark mode setting says (issue #64). Facebook's Settings page comes from its servers, and on some tablets it has no Dark mode row at all, so there was no way to turn it on. The switch starts off. Turn it on and restart Facebook, and both dark themes follow it too. Pause Hushfacebook and Facebook goes back to its own setting once it restarts. Export settings carries the switch. * **Facebook:** A copy made with Morphe's **Clone app** now installs next to the official Facebook (issue #60). With Clone app's **Update permissions** off, which is how it comes, the copy kept five of Facebook's own permission names, and Android won't let a second app signed with another key declare them. Hushfacebook now moves those under the copy's own name and points everything that asks for one at the moved name, the same way it already moved the copy's providers. * **Facebook:** With **Open on a chosen tab** set to Feeds, the new **Feeds opens on** row picks the filter the Feeds tab opens on: All, Favorites, Friends, Groups or Pages (issue #56). Hushfacebook asks the Feeds tab once, the first time it shows after Facebook starts from its icon, through the same route Facebook uses for a link to a filter. When your tab bar has no Feeds tab, Facebook opens Home, and the filter is picked the first time you open Feeds from the Menu. Every filter you tap after that stays as you tapped it, and a link to the Feeds tab still opens where it leads. Friends, Groups and Pages are only on the Feeds tab that opens on the most recent posts, so the usual Feeds tab opens as it always does for those. Export settings carries the choice, and an import refuses a filter this version doesn't know. * **Facebook:** **Words to hide** and **Words that keep a post** now hold up to 1,000 phrases each, up from 50 (issue #58). The two lists share 56 KB of room, enough for 1,000 short phrases in each, so they always fit in an exported settings file. The line under each editor says how full that room would be as you type. Save turns down a list with too many phrases, or one that would overfill the room, and leaves the editor open with everything you typed, so nothing gets cut off. An import whose lists wouldn't fit changes nothing. Each post's text is now read once, however long the lists are, where before every phrase was looked for on its own. * **Tooling:** Run the fixture checks of every patch on Facebook 581 as well. Where a build keeps a piece of text as a literal and another moves it into a lookup list (feed type names, Stories between posts, Messenger's link check), the tests accept either and check that the list really answers with that text. * **Tooling:** Check that every supported Facebook build still names Meta App Manager in its manifest's package queries. Facebook doesn't ask to see every app, so without that entry Android hides App Manager from it and the new row under Supported links would never show. * **Tooling:** Give the settings rows their own classes instead of borrowing the settings page's name, so code outside the settings package can't reach them and tests name them where they live. The page now keeps its Downloads section to itself. The translation check also reads a row helper called through the page's name, which it used to skip. * **Tooling:** Tighten how the system font patch spots a typeface compare. A static call on two objects now counts only when its own code does nothing but compare them, the way Kotlin's areEqual does, and any other call like that gets the picked font file. Both supported Facebook builds patch exactly as before. * **Tooling:** Stop the injected-register device check from clearing the log of a shared phone or emulator. It writes a line of its own to the log before dex2oat runs and counts only what comes after it, and it refuses the run when that line has already rolled out of the buffer. The fixture suite's fake ADB fails on any log clear and puts another run's lines ahead of the marker, so a tally that counts them fails too. It also puts another run's marker after this one, so a check that stops at any run's marker instead of its own fails as well. * **Tooling:** Review a new GPL Facebook Lite candidate, four forks and changed branch history. Shared Messenger compatibility constants now have a watch path. The 2026-10-02 census keeps historical and licensing restrictions and its public counts match the records. * **Tooling:** All 59 patches were verified on both supported Facebook builds with English, Arabic and Persian patcher locales. Each run passed the manifest, resource-table and injected-code checks, and every generated DEX matched the English run byte for byte. Existing instruction formatting already meets this requirement. * **Tooling:** Keep retired Facebook sources separate from active records while retaining their reachable historical code and license evidence. The census now checks whether a watched path still exists, so its deletion commit can't be mistaken for current Facebook code. A returning source or lost historical pin requires review. * **Facebook:** Copied and saved diagnostic reports now include each declared domain's supported-link state, along with the link-handling permission, and say so plainly when a state isn't available. Unicode domain labels, including combining marks, survive only in their structured manifest-state lines. Visited URLs and other report data keep their privacy filters. Link ownership is read without changing it. * **Tooling:** Enforce the real-codec test's subprocess deadline during execution. Temporary output files retain failure diagnostics without waiting for a pipe to close. Regression checks cover hanging tools, tracked descendants, nonzero exits and complete large output. * **Tooling:** Reuse expanded fixture DEX files between patch-anchor scans. The temporary cache checks the bundle's content hash and every reused DEX, refuses changed or corrupt bytes, and cleans up when the test worker exits. Existing checks still run on both exact Facebook builds. * **Tooling:** Align the Android test result-listener's HttpClient and HttpMime with 4.5.14. The compatibility gate rejects malformed URI authorities that the old parser routed to a host, while checking ordinary host selection and multipart report construction. * **Tooling:** Update the Android test transports to Netty 4.1.138.Final and Jetifier's settings dependency to JDOM2 2.0.6.1. Dependency changes now exercise both gRPC transports and the JDOM parser before a push, using the resolved artifact hashes. The shipping payload and Android plugin pairing stay the same. * **Tooling:** Record resolved settings-plugin, build and test dependency graphs separately from the payload SBOM. New release receipts bind the tooling report to their source and bundle, and publication refuses skipped audits, serious advisories and expired applicability reviews. Align Guava, Commons Lang and jose4j with their reviewed fixes. * **Facebook:** The README's troubleshooting section now reflects the confirmed Media settings, WhatsApp-compatible saves and top-bar Reels results. * **Facebook:** Marketplace search now limits the size and depth of an answer before building its result tree. A large complete answer could bypass the old limit, and deeply nested data could exhaust the parser stack. When a limit is reached, its listings stay available and deferred fields still reach the correct result after an earlier ad was removed. Diagnostics count the reason without recording search content. ## 0.6.0 (2026-10-01) * **Facebook:** This release gathers everything since v0.5.0: 59 patches for Facebook 580 and 577, up from 51. The eight new ones are `Hide Meta AI questions under posts`, `Keep post dates`, `Hide post prompts`, `Hide reel interest prompts`, `Hide affiliate product links`, `Hide the Feeds header`, `Tab bar at the bottom` and `Start on x86 devices`. The first five start on. `Hide the Feeds header` and `Tab bar at the bottom` go in with their switches off, and `Start on x86 devices` has no switch. * **Tooling:** The MP4 join's real codec check finds FFmpeg and FFprobe on PATH, or through the explicit `HUSHFACEBOOK_TEST_FFMPEG` and `HUSHFACEBOOK_TEST_FFPROBE` paths. It no longer depends on a maintainer's folder. A wrong explicit path fails, and an unavailable local tool produces one named skip. Release validation still refuses skipped codec checks. * **Facebook:** The **Words to hide** and **Words that keep a post** editors now scroll as one page, the explanation and the whole list together (issue #58). With the keyboard open you can scroll a long list from its first line to its last, the view follows where you're typing, and Save and Cancel stay on screen. Before, the list scrolled inside a box of eight lines that the keyboard squeezed, and dragging it often didn't move. * **Facebook:** **Import settings** takes back a file whose **Words to hide** or **Words that keep a post** list is long. The reader refused any value over 1,024 characters as damaged, and 50 phrases of 60 characters come to about 3,000, so a file Hushfacebook itself saved couldn't be imported. It now allows a list as long as the row can hold, emoji included, and still refuses anything past that without changing a setting. * **Facebook:** A video you open from a link in another app, like your browser, plays again with `Tap to play` on (issue #59). Facebook opens some of those links in a full-screen player that starts the video as if you'd tapped it and has no play button of its own, so the video sat on its first frame with nothing to press. Now a link from another app lets the first start Facebook makes for you in the next 15 seconds go ahead, once. A tap or a swipe before then cancels it, so feed videos, the next video and anything Facebook starts because it came into view still wait for your tap. * **Tooling:** The font file's tests now go over every check in both Facebook builds of whether a typeface is Android's default, Kotlin's way of asking included, and over the spans and drawings the emoji typeface is handed to. A change that made one of those checks ask about the picked file now fails them, and so does one that hooked a typeface read in those emoji spans and drawings. The hook that hands a text view to the extension also writes its register in plain digits, so it goes in on a phone whose language writes numbers in its own. * **Facebook:** A picked font file now reaches the text Facebook draws in Android's own text views too, like the search box (issue #1). Those views take their font from a layout or never set one, and Android fills that in with your phone's font in its own code, so the file never got there. Each one Facebook builds itself or makes through its layout inflater now gets the file right after it's built, at the weight of the phone's font it had. A view set to another of Android's fonts, like its monospace, keeps it. Hushfacebook's own settings keep your phone's font, so a file that's hard to read is always easy to undo. * **Facebook:** A picked font file now reaches comments and the names Facebook sets in its medium weight too, on accounts where Facebook draws its text in Roboto (issue #1). Facebook asks Android for those by a weight's name, like `sans-serif-medium`, or builds them from a typeface it already has, and the patch went through neither. Now both get the file at the weight Android would have drawn. Facebook's check for whether a piece of text set a font of its own still sees Android's default, so ordinary text no longer slips back to the phone's font. Android's other fonts, like its monospace, stay as they are. * **Tooling:** `Hide Meta AI questions under posts` also refuses a Facebook build where a plugin check can be reached with anything but a plugin's name in the register its hook reads, or where a check answers into that register. The hook decides by that name, so another value there could keep Meta AI's row or hide a different one. * **Tooling:** Three tests now fail when the fix they guard breaks, where before they'd have passed. The translation tables refuse a curly apostrophe. The register walk is tried on a write that throws. And the font file's rewrite runs over both Facebook builds, checking every place it changes, more than a hundred in each. * **Tooling:** The settings screen's code is split by category page. Each section is now built in one of four classes, for the feed, video, the rest of Facebook and Hushfacebook itself, and the kinds of row live in two of their own, so the main settings class is half the size it was. Nothing on the screen changes. Every settings page was compared in light and dark with the build before it, and they match. * **Tooling:** `Hide Meta AI questions under posts` refuses a Facebook build where anything but a plugin check's answer can reach the instruction after a check, or where a try block or a catch handler sits on that instruction. Each check's hook goes right there, so another way in would skip it. The second check, which feeds the log and jumps back to the first one's branch, still applies, since its own hook took that answer. * **Facebook:** A font file picked for `Use the system font` now reaches posts and menus on accounts where Facebook draws them in Roboto rather than Meta's Optimistic (issue #1). Names in bold are covered too. On those accounts the file only showed up on a few screens, like Marketplace's header. That Roboto comes from a builder of Facebook's own, and the bold names at the top of a post or in a notification come straight from Android's default bold, and the patch went through neither. With no file picked nothing changes, since both are your phone's font already. * **Facebook:** The Turkish settings now use a straight apostrophe in every name with a suffix, like Facebook'u and GitHub'ı. Seven rows had a curly one, so the note to restart Facebook looked different from one row to the next. * **Tooling:** `Keep post dates` refuses a Facebook build where the post header's choice reaches a branch on it only through a catch handler. The branch between the rotating subtitle and the one line runs when nothing throws, so that one isn't it, and the hook would have gone in and changed nothing. * **Tooling:** `Hide the Feeds header` refuses a Facebook build with a try block over, or starting or ending at, a spot where one of its hooks goes in, as the hand-over to the filters' controller already did. That covers each answer to whether the tab gets a title row and the branch that gives the posts room for the filters. A try block there could take the hook's call in and hand its handler the registers the hook writes. * **Tooling:** `Hide Meta AI questions under posts` refuses a Facebook build with a catch handler over the `stars` name's load that reads the name's register. The hook keeps its answer in that register until the load, so the handler would have found a boolean where it expects the name, and Android would have turned the whole class away. * **Tooling:** `Tab bar at the bottom` refuses a Facebook build where anything but the key's load leads into the read of the bar's preference, or anything but that read leads into its ordinal. In a read like `prefs.read(other ? OTHER_KEY : KEY)` the hook would have swapped the other key's answer for the bar's too. * **Tooling:** `Keep post dates` now looks for the branch on the post header's choice over the same ways it checks, into a try block's handler only from what can throw. A branch in a handler nothing can reach no longer lets through a Facebook build whose real branch reads something else, which would have been patched with a hook nothing reads. * **Facebook:** New `Hide the Feeds header` takes the title row, with Feeds, the menu and search, and the All, Favorites, Friends, Groups and Pages filters off the top of the Feeds tab, so it opens on its posts (issue #34). It's in Morphe Manager's default selection with its switch off, under News feed. Facebook builds that row only when the Feeds tab asks for one, and shows the filters through a controller it hands their container. Once they show, it moves the posts down by their height. With the switch on Hushfacebook answers no to the row and hands the controller a container that's never on screen. It also tells Facebook the filters aren't showing, so the posts start at the top instead of under an empty gap. Opened from the menu, Feeds keeps Facebook's own bar with back and search. Restart Facebook after changing the switch. Until then a Feeds tab that's already open stays as it was built, and its posts keep their place. * **Tooling:** `Keep post dates` follows a try block's handler only from what can throw, the way Hide Meta AI questions under posts does, so a try block over code that can't throw no longer gets a Facebook build refused. * **Tooling:** `Hide Meta AI questions under posts` refuses a Facebook build with a catch handler, or a try block's start or end, on the `stars` name's load, where its hook goes in. A handler there would have skipped the hook, so a Meta AI row reaching it would still have been drawn. * **Tooling:** `Hide Meta AI questions under posts` follows a try block's handler only from what can throw, so a try block over the branch on the `meta_ai` answer no longer stops the patch. A row a handler returns before that branch is refused without saying which way it's on, since the type isn't known there yet. * **Tooling:** `Keep post dates` now wants the first branch on the post header's choice along every way from its log to read the choice itself, so a later Facebook build where one way skips that branch, writes the register and branches on something else is refused. A choice made again inside a loop no longer counts as another value on the next pass, since the hook runs on every pass. * **Tooling:** `Tab bar at the bottom` now takes a TriState kept in a high register, and refuses a Facebook build that hands the bar's key anywhere besides a read or a write it knows, uses the key again past that call, or reads the TriState again past its ordinal. Before, a build that read one of the two places some other way would have patched with only the other place hooked. * **Tooling:** `Hide Meta AI questions under posts` now follows catch handlers on its way from the `meta_ai` compare to the `stars` compare, so a later Facebook build whose handler hands the Meta AI row back first is refused rather than patched with the row left in. When the early return sits on the way where the row isn't Meta AI's, the refusal says that now, instead of blaming a Meta AI row. * **Tooling:** `Keep post dates` now follows each way from the post header's choice to the branch it hooks. A Facebook build where one way writes over the choice before the branch reads it gets its own refusal, since the hook couldn't keep the date there, and a build with no branch on the choice at all is told exactly that. * **Facebook:** New `Tab bar at the bottom` moves Facebook's tab bar to the bottom of the screen on accounts that have it at the top (issue #49). Facebook decides where the bar goes by a server setting, and it keeps a preference of its own that overrides that setting either way. With the switch on, Hushfacebook answers that preference with the bottom, so after a restart the bar sits there with the same tabs in the same order. It's in Morphe Manager's default selection with its switch off, under Appearance, and Pause brings Facebook's choice back after a restart. * **Tooling:** `Hide Meta AI questions under posts` now checks while patching that a Meta AI row drawn the default way can't be returned before the patch sees it, and refuses a Facebook build where it could, rather than leaving the row in. * **Tooling:** `Keep post dates` now checks while patching that the branch it hooks reads the post header's choice itself, so a later Facebook build that moves that branch gets a clear refusal rather than a patch that goes in and does nothing. * **Facebook:** If Google Play keeps offering a Facebook update it can't install (issue #46), the README now says how to add Morphe's own `Disable Play Store updates` beside Hushfacebook in Morphe Manager. With Hushfacebook's default selection on Facebook 580.0.0.51.74, a Facebook patched with both stayed signed in and loaded the feed. Once a Facebook with it is installed, keep picking it, since Android treats a build without it as an older version. * **Facebook:** New `Keep post dates` keeps the date under the poster's name (issue #40). On some accounts Facebook's newer post header swaps that line for details it takes turns showing, and on some phones the line goes blank about half a second after a post shows, with Hushfacebook paused too. With this on, the header draws the plain line other accounts get, with the date and who can see the post, and on group posts the name of whoever posted. It's in the default selection with its switch on, under News feed in Hushfacebook's settings, and turning it off or pausing Hushfacebook gives Facebook back its rotating line. The diagnostic report counts each header it kept to one line. Facebook never gives the account I test with the rotating line, so I haven't seen this fix it on a phone yet. * **Facebook:** Two people confirmed on issue #11 that WhatsApp sends reels saved with Save videos other apps can open turned on. That switch has been under Downloads in Hushfacebook's settings since 0.3.0. With it off, the sharpest reels still save as AV1, which WhatsApp won't send. * **Tooling:** The bundle has been checked against Morphe patcher 1.15.0, the one Morphe Manager 1.33.0 ships. On Facebook 580.0.0.51.74 and 577.0.0.50.72 all 56 patches apply just as they do on patcher 1.14.1, so the bundle stays built on 1.14.1 and keeps working on Morphe Manager 1.32.0 as well as 1.33.0. * **Facebook:** When `Keep the reel speed` can't go in on a Facebook build and `Hold a reel for 2x` isn't picked, the release guard the two share now leaves reels as Facebook plays them. Before, it went by Hold's switch there, which starts on. The diagnostic report doesn't count the guard's runs under Keep the reel speed there anymore, since neither patch is in that build. If the guard can't go in, Morphe now names the guard rather than Hold a reel for 2x, so a build with only Keep the reel speed picked doesn't blame a patch you didn't pick. With Debug logging on, a gear menu pick that isn't kept now says why: no player was found, its video couldn't be read, or the video isn't a reel. * **Facebook:** New `Hide Meta AI questions under posts` takes out the row of Meta AI questions Facebook adds under some posts, like "How to earn Mythic Achievements?" under a news link (issue #48). Facebook can also draw that row a second way, as a plain row with Meta AI's icon, and that one goes too. The post, its link card and its buttons stay, and so does any other row Facebook would put in that spot. It's in the default selection with its switch on, under News feed in Hushfacebook's settings, and turning it off or pausing Hushfacebook brings the row back on the posts drawn after that. The diagnostic report counts each row it kept out. * **Facebook:** `Hide Stories tray` now also takes out the rows of stories Facebook puts between posts (issue #45). Those rows reach the feed the way posts do, not the way the tray at the top does, so the switch never saw them, and a row with a Create story card could still show further down. While the switch is on, a row of your friends' stories goes too, and so would the tray itself if Facebook ever sent it between posts. So do the two other ways Facebook can show stories between posts, one large story tile or one person's stories on their own. Turning the switch off brings the tray and the rows back. The diagnostic report counts each row it takes out under the kind of row Facebook sent. The account I test with hasn't been shown any of these yet, so this hasn't been seen on a phone. * **Facebook:** `Hide sponsored reels` now also catches an ad that arrives looking like an ordinary reel (issues #47 and #35). Facebook builds its own ad item for a reel ad only when the ad's details pass a check, and an ad that fails it can be built like any other reel around the same post, which the filter let through. Now each reel's post is checked for the ad data Facebook marks every ad with, the same check Facebook's own Reels code makes before it shows a promotion over a reel. The diagnostic report counts what each reel was, so a report taken after a sponsored reel shows up says which way it came. * **Facebook:** `Keep the reel speed` now keeps the speed you pick (issue #25). On accounts that have Facebook's own hold-to-speed-up for reels, Facebook puts a reel back to the speed it started at every time a finger lifts, so a single tap or the start of a swipe dropped a reel picked at 1.5x to normal speed. Now a lift that doesn't end one of Facebook's holds leaves the speed alone. Holding a reel still speeds it up, and letting go brings back your speed. A pick in the Playback speed list some accounts get under a reel's More menu carries over to the next reels too. Only the speed menu that shows a toast after a pick used to be remembered. * **Facebook:** `Hide suggested stories` now takes the "Find friends from contacts" card out of the Stories tray too, under its own switch, Hide "Find friends from contacts", which starts on. With `Hide suggested and promoted posts` in the build as well, Hide "People you may know" takes out the tray's People you may know cards, the ones with an Add button. Both go by the type Facebook gives each card rather than its text, so they work in any language. Friend requests, your own story and your friends' stories stay. Checked on Facebook 580: with both switches on, the tray's People you may know and contacts cards were gone, and with them off they came back. * **Tooling:** The patch-time scan that finds the theme colours Facebook reads in a way a colour state list breaks now follows each path through the code, helpers that pass a colour along included, and the fixture test pins what it can't work out on its own. It also lists what it can't trace in code that checks a colour's type only some of the time, and any helper it finds no caller for, so those get looked at too. None of the new ones on 577 or 580 is a theme colour. Facebook 577 and 580 still come out at the same nine colours, so nothing on screen changes. React Native's PlatformColor looks a colour up by name while the app runs, and when that was logged, Marketplace's screens didn't ask it for any. * **Facebook:** `Default playback quality` has now been checked beyond reels, on the Video tab that Watch's links open and on videos in the feed. Up to 480p started them at 480p, or at 360p for a video that had no 480p, Data saver at each video's lowest quality and Highest at its best. Video stories haven't been checked yet. * **Facebook:** `Material You theme` and `AMOLED black theme` now reach Marketplace home in dark mode. It's a React Native screen, so its colours come straight from the screen's own code and never passed through anything either theme changed. Now React's own background, border, image tint and text colours go through the themes too. On Marketplace home the selected chip, the location pin and the location name take the palette's accent, and the strip behind the chips takes its neutral, or black with AMOLED. A listing's page, the search field and search results follow too. With Material You, the greys Facebook's dark mode gives cards there, like the box you'd message a seller from, take the palette's neutral at the same lightness, the way they do everywhere else. Light mode, and any colour the themes don't list, stay as Facebook made them. * **Facebook:** `Material You theme` now gives the palette to every blue and grey it knows in the views Facebook builds from its own layouts in dark mode, not only the ones that sat close to one of the palette's shades. The lighter link blue and the see-through blues Facebook lays over selected and highlighted things used to keep Facebook's colour there. Now each takes the palette at its own lightness, and a see-through one stays just as see-through. Android 12 and newer work it out from your wallpaper's colours and Android 11 from the fixed blue palette, the same as the rest of the theme. A few colours some of Facebook's screens read in a way that can't follow that, like the main text, the page background, dividers and the accent blue, take the nearest palette shade instead, or keep Facebook's colour when no shade is close. Light mode doesn't change. * **Facebook:** `AMOLED black theme` has a Background colour option for anyone who finds pure black too harsh (issue #34). Give it a dark #RRGGBB colour and pages, bars and the Video tab take it in place of black, with cards, popovers and search fields a small step lighter, as they are above black. Facebook's own black, such as behind a video, stays black. Blank means black, as before. A colour too light for Facebook's white text (under 4.5:1 on the lightest surface the theme makes from it) is refused, and Hushfacebook's settings name the colour under Patched. * **Facebook:** New Save to under Downloads picks where saves go (issue #42). Movies and Pictures, the default, keeps videos in Movies and photos in Pictures as before. DCIM puts both next to the camera's photos, for a gallery that doesn't show Movies, and Download puts both with the phone's other downloads, through the Downloads collection Android requires there. The save folder goes under whichever you pick. A save Android stopped halfway is still cleaned up on the next start wherever it was going, saves you already have aren't moved, and Export settings carries the choice. * **Tooling:** The build moves to Gradle 9.8.0 and Guava 33.7.2. That Guava release fixes a flaw in how it reads serialized data (GHSA-xxph-c9ww-hj94), and every Guava the build used before, its own pin and the older ones the patcher and the test tools asked for, was in the affected range. Nobody was exposed: Guava only runs while the patches are built and tested, and nothing there reads serialized Java objects. * **Facebook:** The video file name takes a new `{owner_id}` token, the number of the profile or Page that posted the video (issue #6). It stays the same when a Page renames itself, so `{owner}_{owner_id}_{posted}` names a reel `Some Page_100064123456789_20260925.mp4` and your saves stay easy to trace. When a save doesn't know the number it's left out like the other tokens, and a name that counts on it gets the date and time on the end. The diagnostic report never includes it. On a phone, a Page's reel and a video saved from the feed both came out with the right number, and a video a friend shared takes the name and number of the friend who shared it. * **Facebook:** Export settings now carries When you tap Download and App to send to (issue #41), so a file saved with Send the link to an app and a package name puts both back on a new phone. The import preview and the toast after it say what Download will do and which app gets the links. A file whose action isn't Save to phone or Send the link to an app, or whose app isn't blank or one package name, changes nothing, the same as a bad quality. Files from earlier builds leave both rows as they are. * **Tooling:** The push and release scripts now read git's output as UTF-8 in a process with no console as well, like a push started from a detached process or a service. Windows PowerShell refused to change the console's encoding there, so each git helper stopped with "The handle is invalid" before git ran. pwsh already coped. A new contract case runs the helper with no console under both. * **Facebook:** New `Start on x86 devices` keeps Facebook from crashing or freezing as it starts on an x86 device that runs its arm code through Android's translator, like an emulator or an x86 Chromebook. One of Facebook's own start-up steps changes how its code is protected in memory, and under the translator that leaves the phone's own framework code unable to run, so most starts ended in a crash or a splash screen that never went away. The patch adds that step to the list Facebook already keeps of start-up steps to skip. Phones and tablets with arm chips start as before. It's in Morphe Manager's default selection and has no switch, since it runs before Hushfacebook's settings can be read, so Pause doesn't change it. On an emulator, ten cold starts in a row reached the feed with no crash. * **Facebook:** Hide suggested groups on its own now takes only the "Suggested for you" groups row out of Facebook's promo cards. Since v0.5.0 it took every card of that kind, so turning off Hide page suggestions and Facebook's own promos still lost the Meta AI card and the People you may know rows Facebook sends the same way. Each card names the promotion it belongs to, and the groups switch now goes by that. People you may know follows its own switch, and the promos switch still hides every card. Facebook picks those promotion numbers on its servers, so if it moves the groups row to a new one, the groups switch alone lets it back until Hushfacebook learns the new number. The promos switch catches it either way. With only the groups switch on, the groups row has now been seen coming up on a phone and taken out, while People you may know went by its own switch. * **Tooling:** The fingerprint tool and its calibration suite work again when the fixture folder holds a second file for the same Facebook version, like the emulator's `-minapi28.apk` beside the 580 bundle. A version that names one split bundle among its files now reads the bundle. Before, both refused because the version named two files, so the suite stopped before it checked anything. A version with no fixture, or with two bundles, still fails and says how many files it found. A new contract case covers all three, and the suite passes under PowerShell 7 and Windows PowerShell 5.1. * **Facebook:** `Material You theme` now reaches the buttons Facebook builds from its own layouts in dark mode, like Find friends on an empty Pages feed, which kept Facebook's blue after the issue #37 change. Those views take their colours from Facebook's dark theme styles and never ask the colour code the theme hooks, so the patch now gives those styles a night version that points each colour it knows at the palette. The Video tab uses the same styles in light mode, and there it keeps Facebook's colours. * **Tooling:** The release and push scripts now read what git prints as UTF-8, whatever code page the console is on. A push started from Git Bash gets a console on code page 437, and there the byte order mark at the top of the manifest allowlist came back as three stray characters, so the pre-push check refused the push. Non-ASCII file names in a push were misread the same way. A new contract case reads that allowlist under code page 437 and checks the console gets its own code page back. * **Facebook:** `Material You theme` now reaches the parts of Facebook that stayed blue in dark mode (issue #37). The palette's accent colour now shows on the Confirm button for friend requests, tagged names in comments, story rings in comments, groups and the story tray, the share menu, See all and Add to story on profiles, the selected chip and new post dots in groups, Create story, the Add friends button under Birthdays, the verified badge, unread notifications, and the Like button after you've liked something. Some of those blues are the same in Facebook's light and dark themes, so the patch waits until Facebook says dark mode is on before it changes them, and light mode keeps every one. Facebook's exact blues change when a server sends them too, and the logo, maps, charts and app icons keep Facebook's colours. Checked on Facebook 580 in dark mode, with AMOLED on as well, and in light mode, where nothing changed. The Like button after a like hasn't been checked on screen yet. * **Facebook:** Download can now send a reel or a feed or Watch video to another app instead of saving it (issue #41). Under Downloads, set When you tap Download to Send the link to an app, and the reel button and the video menu item hand the video's facebook.com link to YTDLnis, Seal or whichever app you name by package, or to Android's app picker when you name none or it isn't installed. Holding the reel button copies the link. Only a link built from the video's number is sent, never text from the post. Saving stays the default, and stories always save. * **Facebook:** New `Hide affiliate product links` takes away the product cards of the shop links creators add to their posts: the card on a reel, the one under a feed post and the one floating over the comment box. The "Commission eligible" label stays. It's in Morphe Manager's default selection with its switch on, and Pause brings the cards back. Andrew Liang wrote the first version. It hasn't been seen on a live post with a shop link yet. * **Facebook:** New `Hide post prompts` takes away the strip Facebook adds to some posts, like "Are you interested in this post?", "Show less" or the line saying who recently commented, with the follow and chat suggestions that sit in the same place, and leaves no gap. New `Hide reel interest prompts` does the same for the "Are you interested in this reel?" prompt. Both are in Morphe Manager's default selection with their switches on, both answer only Facebook's own question of whether to show the prompt, and Pause brings the prompts back. Andrew Liang wrote the first version of both. * **Tooling:** The list of Facebook patch sources is current as of 2026-09-30. It pins Andrew Liang's dev branch with its 18 Facebook features (still for 577 only) and De-Vanced's rewrite for Facebook 580 with its GPL-3.0 licence, and it records that NexAlloy has no Facebook patches. The Morphe community directory lists Hushfacebook now, so that release check is settled. * **Facebook:** When a saved video is AV1, VP9 or HEVC, or its sound is xHE-AAC, and `Save videos other apps can open` is off, the message after the save now says WhatsApp and some editors may refuse it (issues #11 and #14). A notification comes with it, and its Open the setting button takes you straight to that switch under Downloads. If Facebook's notifications are off, the message says where the switch is instead. H.264 and AAC saves say what they always said, and with the switch on nothing changes. The check reads the saved file itself, not what Facebook said it would send. * **Facebook:** Checked on Facebook 580 for issue #12: Media, Language and region, Browser, Tab bar, Time management and Dark mode in Facebook's own settings all open on a patched build, and so do groups, profiles from search and Edit profile. They need `Restore screens on re-signed builds`. Without it those rows do nothing when tapped, and the settings overview now says that patch is missing. * **Facebook:** When your build is missing patches Morphe Manager picks by default, the settings overview now says so right under the status card, as in "2 default patches aren't in this build". Tap it to see their names. A patch left out is the usual reason ads or suggestions still show (issues #29 and #35), and until now nothing on the phone said which one it was. The diagnostic report lists the same patches on a line of its own. A build with every default patch shows nothing new. ## 0.5.0 (2026-09-29) * **Facebook:** This release gathers everything since v0.4.0: 51 patches for Facebook 580 and 577, up from 43. The eight new ones are `Hide the Reels tab dot`, `Hide the Reels tab`, `Keep the reel speed`, `Hold a reel for 2x`, `Default playback quality`, `Turn off double tap to like`, `Open Messenger from the top bar` and `View stories anonymously`. `Hide the Reels tab dot`, `Keep the reel speed` and `Open Messenger from the top bar` are in Morphe Manager's default selection, the last with its switch off until you turn it on, and the other five are yours to pick. Among the fixes, the "Suggested for you" groups row is hidden again, Marketplace search results lose their ads, stories and VP9 reels save at full quality, AMOLED cards turn black, and a Messenger patched with the same key signs in through your Facebook. * **Tooling:** The build notes now say the unit tests on Windows need JDK 25 or newer, and the test run warns on an older one, since those JDKs can't rename a file over an existing one there. Two test classes also stopped leaking state into the ones after them, which had made a translation test and a launcher shortcut test fail now and then. * **Facebook:** `Hide the Reels tab` now takes Facebook's Reels shortcut out of the long-press menu of its icon too, so that way into Reels goes with the tab. Checked on a device: the Reels shortcut was gone after a start with the switch on, and Facebook put it back at the next start with the switch off. * **Facebook:** New patch, `Hide the Reels tab dot`, on by default under Reels and Watch. The Reels tab, which some accounts call Video, stops showing a dot or a number for new reels, and every other tab keeps its count. On a phone the Reels tab's dot and its "1 new" went, and Notifications kept its badge. * **Facebook:** The "Suggested for you" row of groups to join, with its Discover more groups button, is hidden again. Facebook now sends it as one of its own promo cards instead of the groups row the feed filter knew, so it got through even with every switch on. Hide suggested groups, or Hide page suggestions and Facebook's own promos, now takes it out, along with Facebook's other cards of that kind. Checked on a phone: the row sat at the top of Home with both switches off and was gone with them on. * **Facebook:** If CapCut or InShot won't open a saved video, or can't export it, the answer is now in settings: the Save videos other apps can open switch under Downloads says it's for video editors such as CapCut and InShot too. By default a save keeps Facebook's sharpest picture, which can be AV1 video, and some stories come with xHE-AAC sound only. In a test on a phone, CapCut opened AV1 video as an empty black clip, and xHE-AAC sound left CapCut's export stuck near the end and made InShot's export silent. H.264 or VP9 video with AAC sound opened and exported fine in both. With the switch on, a save keeps to H.264 video with AAC sound, or Facebook's own MP4 when there's no such pair. Checked on a phone: with the switch on, a reel whose manifest offered only AV1 video and xHE-AAC sound saved as Facebook's own 720p H.264 MP4 with HE-AAC sound, and CapCut and InShot both opened it and exported it with its sound. * **Facebook:** New patch, `Default playback quality`, for anyone who wants to save data or always get the sharpest picture. Pick Data saver, Up to 480p, Up to 720p or Highest under Playback in Hushfacebook's settings, and reels, Watch videos, feed videos and video stories play at that quality where Facebook offers it. A video with nothing at or under your pick plays the closest quality above. Facebook's own quality menu changes only the video you pick in, so the next reel goes back to Auto, and a pick there still wins for that video. It's off in Morphe Manager, and once it's in, the list starts at Auto, Facebook's own choice, so nothing changes until you pick one. Settings files carry the choice too. Checked on a phone: with Up to 480p a new reel started at 480p, and with Highest at 1080p. * **Facebook:** New patch, `Hold a reel for 2x`. Press and hold a playing reel and it plays at double speed until you let go, then goes back to the speed it had, even when that's a speed you picked in the menu or one `Keep the reel speed` carried over. Pull your finger down while you hold and Facebook locks the reel at double speed, with a "Locked at 2x speed" note, until you move on to the next reel. Facebook already built this into its Reels player for some accounts, and the patch turns it on anywhere on the reel. The hold takes the place of Facebook's long-press menu on reels, which the reel's more button still opens, and ads keep that menu. A tap still plays or pauses, and double taps and the side buttons work as before. The patch starts off in Morphe Manager, and its switch, under Reels and Watch, starts on once you pick it. Checked on a phone: on a reel playing at a kept 2x, a two-second hold and a half-second hold each went to 2x, and letting go put 2x back. * **Facebook:** New patch, `Keep the reel speed`, for anyone tired of picking the same playback speed on every reel (issue #25). Pick a speed in a reel's menu and the reels after it play at that speed too, until you pick another one or Facebook restarts. Picking Normal brings back Facebook's own way in that place only, where every new reel starts at normal speed. A reel you pause and start again stays at whatever speed it's at. The speed sticks to the place you picked it, so a speed picked in Reels carries on through Reels, whether your account has them in their own tab or in the Video tab, and a speed picked on a reel in your feed carries on through the feed's reels. Ads and live videos play at Facebook's own speed, and so does anything that isn't a reel. The patch is in the default selection and its switch is under Reels and Watch. Checked on a phone: after picking 2x, each next reel played at 2x once it started. * **Facebook:** Stories and reels that Facebook sends only as VP9 video now save at full quality with their sound, instead of dropping to the story's 360p file with a "lower quality" message. Android's own MP4 writer won't take VP9, so Hushfacebook now writes that MP4 itself: it copies the VP9 picture and the AAC sound into one file as they are, without re-encoding, and keeps them in sync. The same writer handles AV1 before Android 14, so a phone on Android 11 to 13 that can play AV1 now saves AV1 stories and reels at full quality too. Formats every app plays, like H.264, still go through Android's writer, and with `Save videos other apps can open` on, H.264 is still what a save picks. Some players and editors don't open VP9, so turn that switch on if one turns a save down. Checked on a phone: a VP9-only story saved at 1080p and played with its sound in the phone's own video player. * **Facebook:** With `AMOLED black theme` on in dark mode, cards no longer stay dark grey on the black page (issue #27). Facebook's dark mode draws cards a shade lighter than the page, #333334, and AMOLED only turned the page black, so things like a Page's card in search results or the Reel and Live bar on a profile stood out as grey blocks. Cards and comment bubbles now go near black, about #121212, and pop-up menus a touch lighter. They stay just off black so a card still shows its edge, and a message box or button drawn on one still stands out from it. A search field or a pill on a black page used the same fill as a card, so the first pass took it down just as far and left its shape barely visible. It now only goes down partway, to about #262627, enough to still show against black. The Page card in search results needed its own fix, since Facebook sends the colours for search results from its servers instead of taking them from the app. That card, with its Follow button and "Write a message..." box, now gets the same near black, and the message box stays a visible step lighter than the card. Colours from the server that are a bit lighter than a card, like some buttons and dividers, keep Facebook's grey. Light mode doesn't change. Checked on a phone on a Page's card in search results. * **Facebook:** `Hide sponsored Marketplace listings` now takes the ads out of Marketplace search results too (issue #29). A search gets its ads back mixed in with the listings, so they come out of the answer before Marketplace draws it, and the listings close up with no empty tile. The typeahead suggestions and your search history stay as they were. The diagnostic report counts what came out on its `Marketplace search ads` line. Checked on a phone: a search for bikes, scrolled through several pages, showed no ad tile and no gap, and a listing and its Message seller screen opened as usual. * **Facebook:** A new `Hide the Reels tab` patch takes the Reels tab, which some accounts call Video, off the tab bar (issue #26). It works whether or not your account gets Facebook's own Hide under Settings, Tab bar, Customize the bar, and it never undoes that Hide, so a tab you hid there stays hidden with the switch off too. Reel links, the reels in your feed and the Reels viewer still open. Home, Marketplace, Notifications and Menu keep their order, just moved one slot to where Reels used to be. Its switch is under Reels and Watch and starts on once you pick the patch in Morphe Manager. Turning it off, or pausing Hushfacebook, brings the tab back the next time Facebook starts. If Open on a chosen tab is set to Video, Facebook opens on Home while the tab is hidden, and the Tab to open on row says so. Checked on a phone: the tab was gone at a cold start with Facebook's own Hide option set to Auto. Turning the switch off and restarting brought it back, and with Video set as the tab to open on, Facebook opened on Home. * **Facebook:** Saved stories now come out at the quality the story plays at, up to your Download quality, even when you save the moment a story opens or turned on `Save any story` while it was open. The save used to look for the story's player to find its better tracks, and when it hadn't seen that player yet it fell back to the story's own 360p file without saying so. A story carries the same list of tracks its player uses, so the save now reads it from the story itself. And when a save ends up clearly below the best picture Facebook shows, for example when a save has to fall back to a smaller file, the message after the save says it's lower quality than on Facebook, measured from the file that was actually saved rather than guessed from its address. The diagnostic report names the best picture on offer whenever the saved file measures below it, not a guess read off the address it fetched. A small shortfall, like a 720p save when the only bigger track is AV1 and the phone can't write AV1 yet, doesn't raise that message on its own, but the same shortfall against a picture the phone could actually have written, such as a dropped DASH fetch that falls back to a smaller H.264 file, still does. That message was also too quick to show up on a plain, working save: a file the phone couldn't measure back, a couple of pixels of rounding, and a track your Download quality setting wouldn't actually have used could all trigger it on their own. It now only shows up for a real shortfall against a picture your setting would have let through. Checked on a phone: a story saved from its menu came out at 1080p from the story's own track list. * **Facebook:** A Messenger, Messenger Lite or Facebook Lite you patch with the same key as your Facebook is now treated as Meta's own when it calls your Facebook, so it gets exactly what the Meta-signed app would and can sign in through it. Facebook checks a caller's signing certificate against its own in a few different ways, so a re-signed Messenger was turned away with a security error even though you signed both with your one Manager key, and widening one of those checks alone didn't cover the rest. Now, when one of them calls in carrying your key, Facebook reads its certificate as Meta's, the same certificate a re-signed Facebook already reads for itself, so every check passes just as it does for the real thing. Those are the Meta apps signed with Facebook's own certificate. Instagram and Instagram Lite carry Instagram's, so they keep Facebook's own answer like any other app, and so does one whose name only looks like a Meta app's, one signed with another key, or a caller that can't be identified. A Root Mount install keeps Meta's key, so nothing changes there. This comes with `Restore screens on re-signed builds`, whether or not you also pick `Install beside Meta's apps`. To check it on a phone, turn on Debug logging, open Hushfacebook settings again and tap **Test the Messenger link** under Pause, backup and diagnostics: it runs the two reads Facebook makes through Messenger at startup right away, and says whether each one answered without showing what it read. The test was checked on a phone: with a Messenger patched with the same key, both reads answered and Messenger let Facebook in. The other way round works too: a fresh Messenger patched with the same key listed the Facebook accounts under Continue as and signed in with a tap, no password. * **Facebook:** New patch, `Turn off double tap to like`, for anyone who keeps liking reels by accident. With its switch on, a double tap on a reel or a video doesn't like it and the heart doesn't show, in Reels, Watch, the video viewer and the reels Facebook chains from a post in the feed. A single tap still plays or pauses, and the Like button still likes. The patch starts off in Morphe Manager, and its switch, under Reels and Watch in Hushfacebook's settings, starts on once you pick it. Checked on a phone on the Reels tab. * **Facebook:** The diagnostic report now says why `Block background-return feed refresh` let Facebook refresh, such as away over ten minutes or the switch being off, next to how often it kept the feed instead. Before, the report's line for it only said how many times a check ran, and a feed resume or tab switch that wasn't a background return at all counted the same as a real refusal, so a working install's report could read "let Facebook refresh" a dozen times over with nothing wrong. Checked on a phone: after a 7-minute return the report counted the feed kept, and after an 11-minute one it counted "let Facebook refresh: away over ten minutes". * **Facebook:** With Facebook's dark mode off, the Video tab's bottom bar keeps Facebook's own dark grey under `AMOLED black theme` and `Material You theme`. That tab stays dark in light mode and reads the same colours dark mode does, so AMOLED turned the bar black and Material You could tint the tab's other dark surfaces. Both themes now ask Facebook whether its dark mode is on before they change a colour that either mode could use. In dark mode the bar still goes black with AMOLED, and with Material You alone it now takes your palette like the bar on the other tabs, as do other screens that read Facebook's dark grey the same way. Checked on a phone with both themes. * **Facebook:** With Facebook in light mode, the Video tab's status bar and navigation bar keep Facebook's own colours under `AMOLED black theme` and `Material You theme`. That tab stays dark in light mode, and Facebook writes its dark grey bar colour straight into its code for both themes, so the themes turned the bars black or tinted them even with dark mode off. That colour is now left for the bar painters, which check whether Facebook's dark mode is on before they change anything. In dark mode the bars still go black, or take your palette with Material You alone. Checked on a phone with both themes, before and after Recent Apps. * **Facebook:** A word list saved right as you close the settings page now takes effect straight away instead of waiting for Facebook to restart. The page could stop listening for that save a moment before it actually landed, so the word filter kept running the old list until a restart caught up. Not yet checked on a phone. * **Facebook:** Pop-ups the settings page opens itself, like Licenses or the note about word list lines that were left out, now close when the page goes away, for example when you leave settings. Android counted them as leaked windows before. The note also no longer tries to open over a page that's already closing. Not yet checked on a phone. * **Facebook:** Clone app's coexistence fix from issue #16 only catches the package rename when a selected patch whose name sorts before "Clone app" is picked too, and choosing Clone app alone, or only with patches named after it, skipped that fix without a word about why. The patch log now spells out, at its detailed level, what to add, such as Block ad telemetry, which is on by default. Checked with unit tests that reproduce the selection, not yet on a phone. * **Facebook:** On Android, the diagnostic report now leaves out the whole of a value or web address that has a no-break space in it. Android's regex engine took that space for the end of the value, so the part after it stayed in a report you share. A name starting with the old long s, as in ſecret=, loses its value now too. So that a phone reads every name the way the tests do, the report writes ß, the long s, the Kelvin sign and letter ligatures like fi out in plain letters, which means ß shows as ss. Checked with ICU, the regex library Android builds on, but not yet on a phone. * **Facebook:** A copy made with Morphe's Clone app no longer crashes as it opens when the Facebook it was cloned from is installed too (issue #16). Facebook's code reaches some of its own content providers by the name com.facebook.katana, so the copy was reaching into the original app, which turned it away. Those names now follow the copy's package. With Clone app's Update permissions option on, the copy's manifest also went on requiring permissions only the original declares, and now it names the copy's own. With Update providers off, the copy's providers get its own names too, so it installs beside the original instead of clashing with it. A Facebook that isn't cloned doesn't change. Checked on a phone: a copy made with Update permissions on, and one with it off, both open to Facebook's sign-in screen and stay open, and Hushfacebook's settings open in them. Screens that need you signed in to the copy haven't been tried yet. * **Tooling:** The tests for saves that join a video's picture and its sound now go through the same save a tap on a phone starts. They called shortcut forms of the join that nothing on a phone uses, so a fault in how a real save hands over its progress or its size limit could slip past them. The shortcuts are gone, and every check those tests made still runs on the real path. * **Facebook:** When you save a word list under `Hide posts by words` and some lines are left out, the explanation now opens in a small window you close with OK. It used to be a pop-up message, and Android 12 and later cut those off after two lines, so most of the reasons went unseen, even more so with large text. The wording hasn't changed. Checked on a phone at normal and double text size. * **Facebook:** Saves already take the ordinary AAC sound track when Facebook offers one. Some videos come with xHE-AAC sound only, though, and the save keeps it rather than make a silent file. Some players can't play xHE-AAC, so the diagnostic report now says so on that save's line. If a saved video plays without sound, try turning on Save videos other apps can open. For a video like that it saves Facebook's own MP4 instead when there is one. Checked on a phone: a 1080p reel that only had xHE-AAC sound saved with the note, and it played with sound in Samsung Gallery. * **Facebook:** `Block background-return feed refresh` now holds the feed for its whole window, ten minutes, or any time away with No time limit on (issue #23). After a few minutes in the background Facebook clears the feed it has loaded, and when you come back it checks whether the feed is stale, so after about six minutes away you still landed on new posts. Only one of Facebook's checks was held before. With the switch on, the feed now stays loaded while you're away, and every check Facebook makes as you come back keeps your place, including the auto-scroll some accounts get. A return past ten minutes without No time limit still loads new posts, and so do pull to refresh and a fresh start. With Debug logging on, the log says what each check decided. Checked on a phone: after 7 minutes away, and after 11 with No time limit on, the feed was where you left it, and 11 minutes without No time limit brought new posts. * **Facebook:** On Android, the diagnostic report now also drops a token, password, cookie, ID, web address or @handle written straight after a letter like é, я or 猫, as in étoken=... Android's regex engine counts those letters as part of the word, so it found no name there and kept the value, while the tests, which run on a computer, saw it go. An @ in between doesn't hide anything either, so in é@token=... or josé@facebook.com/... the handle goes along with the value or the address after it, and the same is true with nothing unusual in front of the @ at all: @token=..., @access_token=..., @c_user=... and @user_id=... now lose their value too, while an ordinary handle like @dana or @facebook still just goes. Checked with ICU, the regex library Android builds on, but not yet on a phone. * **Facebook:** The diagnostic report keeps the value after a few ordinary words that happen to contain sid, uid, guid or auth, such as inside, guide, residual, author and authority. Lines like "inside: 3 rows", "guide=on" or "author: 3f9a2c1b0e7d" used to lose everything after the colon or equals sign. Any other name holding one of those short names still has its value left out, including run-together ones like authkey, basicauth, SAPISID or FBUID, so a name the report doesn't know stays hidden. Plain forms of those same ordinary words the list missed, such as authorized, unauthorized, authorize, considering and reconsider, kept their value too and now do the same. Not yet checked on a phone. * **Facebook:** When a save can't show its notification, because Facebook's notifications or the Hushfacebook saves channel are off, the message as it starts now says where to cancel it: "Saving... Cancel: Downloads in Hushfacebook." It stays up a little longer so there's time to read it, and the wording is short enough that Android's largest font size still shows the whole thing rather than cutting it off after two lines. With the notification showing, a save still just says "Saving...". Translated into all five languages, though a translation can run longer than English and may still be cut at that font size. Checked on a phone at double text size in English. * **Facebook:** On Android 15 and newer the navigation bar at the bottom of the screen now turns black with the AMOLED theme. Facebook draws that bar itself there, and it came up in Facebook's own dark grey until a tab asked for another colour. Other parts of the app that ask Facebook's theme for a colour the same way, like parts of the top bar, now pick up the theme too. Light mode doesn't change. Checked on a phone with AMOLED. With Material You alone in dark mode the bottom strip now takes your palette too, the same colour as the tab bar above it. Facebook colours that strip for every tab with the Video tab's dark grey, and Material You now tints that grey the same way it tints the Video tab's own bar. Checked on a phone with Material You alone too. * **Facebook:** If an import fails after you press Import but before the settings are written, Export settings and Import settings now come back at once with "Couldn't start that. Try again in a moment." Before, the two rows could stay greyed out until Facebook restarted. Nothing in the current build is known to fail there, so this only guards against a future bug. Checked with unit tests, not on a phone. * **Facebook:** The diagnostic report now leaves out an account ID written after user_id, userid, userId, user-id or their plurals, whatever it looks like. Only an ID of 15 digits or more was caught before, so a shorter or non-numeric one could reach a report you share. A list of account IDs goes whole, written with commas or spaces or as JSON, and words after the ID on its line go with it, up to the next name with an equals sign or colon, since they can't be told from a second ID. The value of a HAR-style name and value pair naming an account, post, story or other ID is left out as well, and so is a list or object under any ID name. Not yet checked on a phone. * **Facebook:** With the Material You theme in dark mode, the status bar on Android 15 and newer now takes your wallpaper palette, both when Facebook opens and after you come back from Recent Apps. Facebook paints that bar itself on newer Android, and it kept Facebook's own greys. With AMOLED in the same build the bar stays black, and light mode doesn't change. Checked on a phone. * **Facebook:** New patch, `Open Messenger from the top bar` ([#19](https://github.com/SysAdminDoc/Hushfacebook/issues/19)). With its switch on, a tap on the Messenger icon at the top of Facebook opens the Messenger app instead of Facebook's own Chats. It starts Messenger the way its home screen icon does, so the Messenger from the Play Store works beside a patched Facebook. Without Messenger installed, Chats opens as before. A long press on the icon still does what Facebook does with it, also on phones where Facebook takes a held press as a plain tap once you let go. The patch is in the default selection with its switch off, so turn it on under Chats in Hushfacebook's settings. A tap opening Messenger and a long press staying in Facebook have both been checked on a phone. * **Facebook:** New patch, `View stories anonymously` ([#24](https://github.com/SysAdminDoc/Hushfacebook/issues/24)). Facebook adds you to a story's viewer list when the story viewer reports which stories you watched, and the patch stops that report before it's even built. Replying or reacting still shows you, since those are sent separately. Because Facebook never hears about the view, a story you watched keeps its unwatched ring, and it stays that way after Facebook restarts. The patch starts off in Morphe Manager, and its switch, under Stories in Hushfacebook's settings, starts on once you pick it. On a phone, stories watched with the switch on were still listed as unwatched when Facebook reloaded the tray, while one watched with it off was marked as seen. Nobody has looked at the viewer list from the other side yet. * **Facebook:** `Hide posts by words` now takes a single character when it's a word on its own: a Chinese character like 猫, a kana, a Hangul syllable or an emoji. Before, every phrase needed at least two characters, so none of these could be listed. A lone letter or digit is still left out because it would hide nearly every post. The dialogs and the message about left-out lines now say which lengths work, in all five languages. Checked with unit tests, not yet on a phone. * **Facebook:** The Morphe Manager descriptions of `Marketplace only` and `Open on a chosen tab` now say their switches start off. Marketplace only is in the default selection, so its description read as if patching alone would hide your tabs. Turn either on under Opening Facebook in Hushfacebook's settings. * **Facebook:** `Hide sponsored reels` can no longer pass an error into Facebook's Reels page. If a page can't be read while it's being filtered, it now goes through as Facebook sent it and the diagnostic report names the hook that failed. The section filter already worked this way. Found in a code audit, not reported by anyone. * **Facebook:** `Hide AI-detected reels and videos` now reads both of the signals Facebook's own Reels menu uses to offer its "AI info" row: the reel's AI attribution and the detection result on the reel itself. Before, reels on the Reels tab were checked only for the second and other reels only for the first, so a reel Facebook had flagged one way could stay. It still hides only what Facebook's detection marked, never a reel only its creator labelled. It hasn't been checked on a flagged reel yet. * **Facebook:** `Open links in external browser` now sends a link out even when its address starts with HTTPS:// or HTTP:// in capitals. Those used to stay in Facebook's own browser. Links now go only to apps that say they open web pages, as Android recommends for any link one app hands another. * **Facebook:** Three settings fixes from a design pass. With the Material You theme in dark mode, a switch that's off now has a dark thumb that stands out from its grey track; the light thumb there was too faint to read at a glance. The filled button in a dialog, such as Import or Save, keeps some space from the dialog's bottom edge. The message on the page shown when settings can't open is centred under its title. * **Facebook:** Brazilian Portuguese reads more naturally, thanks to @ViictorNunes (PR #15). Their fixes are in every row the settings still show, and rows added since then now use the same words, like publicação for post and aplicativo for app. A few slips were corrected along the way, such as "um publicação" and "patrocinadass". Checked in offscreen renders at normal and double text size, not on a phone. * **Facebook:** The status card on the settings overview, and the paused line on each category page, put their Pause, Resume or Undo button under the text once the text size is 150% or more. Beside the text it left so little room that "Hushfacebook" broke in the middle of the word. While paused, the card now says to tap Resume and then restart Facebook, where it used to read as if the restart came first. * **Tooling:** The download tests now go through the same save a tap on a phone starts. Several of them used an older all-in-one save that nothing on a phone runs anymore, so they could pass while the real save did something else. That old save is gone, and so are the shortcut forms of the fetch and the gallery copy that only tests called. Every check those tests made still runs, now on the real path. * **Tooling:** When a settings backup test fails while its stand-in file app still holds a file open, the tests after it now start clean. The cleanup used to time out waiting for that file before it reset anything, so every later test found the Export and Import rows still busy and failed as well, which hid the one that broke. It now lets the file go first. * **Tooling:** The two settings backup tests where a file app stops answering now wait until the stand-in app is really holding the file before they let the 30 seconds run out. On a busy machine the timeout could fire before the file was even opened, and the check that the cancel reached the app failed now and then. * **Facebook:** Cancel now stops a save at once when you press it just as the save starts downloading. At that moment the Cancel could reach the connection before it had opened, so it closed nothing, and the save went on waiting for the server's answer for up to 20 seconds. Its notification disappeared as soon as you pressed Cancel, but the "Save cancelled" message came late and the save kept one of the three save slots until then. Checked on a phone: a Cancel pressed a quarter of a second after the tap stopped the save right away. * **Tooling:** The test that cancels one of two running saves no longer fails on a busy machine. It gave the cancelled save 15 seconds to stop. Now both downloads are let through to the end and the test checks how each save ended, so a Cancel that doesn't work still fails it. ## 0.4.0 (2026-09-28) * **Facebook:** This release gathers everything since v0.3.4, still 43 patches for Facebook 580 and 577. A copy of Facebook renamed with Morphe's Clone app patch can open its Settings screens again (issue #16). The AMOLED status bar stays black after you come back from Recent Apps (issue #22), and Block background-return feed refresh can now keep your place with no time limit (issue #23). Saves got the most work. Running saves now show under Downloads with a Cancel button, and a save cut short is cleaned up the next time Facebook starts. Error pages and oversized files also stop a save sooner. The diagnostic report always has your build details now, leaves out more private values and says why a reel has no Download button (issue #18). Most of this was checked with tests and has not been tried on a phone yet, so please report anything that looks off. * **Facebook:** `Restore screens on re-signed builds` now works in a copy renamed by Morphe's Clone app patch (issue #16). It used to recognize itself only by the name com.facebook.katana. Now it compares the ID Android gives each installed app, so a clone counts as itself while stock Facebook installed beside it, Messenger and look-alike names keep their own signatures. Isolated helper processes, like the in-app browser's renderers, run under an ID of their own, so they keep the old name check. Dark mode and Active status should open in a clone again, but that hasn't been checked on a phone yet. Nor have sign-in and notifications in a clone. * **Facebook:** A save now stops before copying anything when it can't write down its unfinished gallery entry. That record is how a save cut short by Android gets cleaned up later, so an entry missing from it could sit half written in the gallery for about a week. The entry is removed straight away and the save reports that it failed. If the gallery won't remove it either, the diagnostic report says so. Files you've already saved aren't touched. Checked with unit tests only, not yet on a phone. * **Facebook:** Cancel now stops a video save while its picture and sound are being joined. Before, it only took effect once the whole file was written. The join checks for Cancel before each sample, deletes its unfinished file and never adds a gallery entry. If Android's muxer fails to stop or release, both input tracks are still closed and the report keeps the first error. The join hasn't been timed on a phone yet. * **Facebook:** The diagnostic report now leaves out credentials it used to let through. A token, session, password, API key, cookie or device ID is dropped when its name is a quoted, escaped, unicode-escaped or HTML-escaped JSON key, when it sits in an object nested any number of levels deep, when it's a HAR-style name and value pair, or when an arrow or a percent-encoded sign separates it from its value. A password's unquoted value goes to the end of its line. So does the whole value of a Cookie or Authorization header, and a Bearer or Basic credential that carries on alone on the next line goes with it. Short post and story IDs go too, camel-cased or hyphenated names included. A header with nothing after it takes nothing from the next line, so build lines, timestamps and every stack frame stay, and so do ordinary words after Bearer, OAuth or Basic. The settings summary, README and bug form now say what's removed and that other private text still needs a look before sharing. A synthetic test corpus went through both Copy quick report and Save full report. Neither was tried on a phone. * **Facebook:** The diagnostic report now says why a reel has no Download button (issue #18). Its only counter used to run on a tap, so a missing button left nothing behind. Hook status now counts each reel sidebar Facebook builds: with the button, without it because the switch is off, Hushfacebook is paused or its settings weren't ready, or drawn by Facebook's other reel sidebar, which the Download button can't go in yet. The Reels viewer picks that sidebar by a server-side switch, and several other viewers use it too. That's the likeliest reason for #18, but it's unconfirmed, so the issue stays open until a report from an affected phone shows it. The counts carry no reel IDs or names. Nothing changed on the phone screen, and this wasn't checked on a device. * **Facebook:** Saves now keep their temporary files within your free storage. Every save running at once shares what's free and at least 128 MB is always left over, so a save that won't fit stops instead of filling the phone. A joined video's picture and sound files go as soon as they're joined, before the gallery copy starts. DASH manifests over 128 KB or 64 tracks are neither kept nor read, and the save takes the single file instead. The manifest is now read on the save's own thread, not the moment you tap. A track that declares enormous samples fails its join straight away and the save falls back to the single file, where it used to try to set aside that much memory. None of this has been checked on a phone yet. * **Facebook:** When Android closes Facebook in the middle of a save, the next start now cleans up after it, even if you never save anything again. Before, the half-written gallery entry, the cache files and a stuck "Saving a video" notification waited for the next save. The cleanup runs in the background, so it doesn't slow Facebook's start, and a save you tap while it runs waits for it to finish. Finished files, the rest of Facebook's cache and a save that's already running are left alone. Checked with unit tests only, not yet on a phone. * **Facebook:** A new Supported links row under Links shows whether Android sends Facebook's web addresses to this app, and a tap opens Android's Open by default page to select them (Morphe Manager issue #1028). Android verifies those links with Meta's signing key, so a re-signed build loses them. Selecting the addresses by hand sends the links back but doesn't restore Meta's verification, and the browser and tracking switches don't change. Android 11 doesn't report the selection, so there the row opens the app's info page. When Android's answer can't be read, the row says it's unknown. Incoming link routing hasn't been checked on a phone yet. * **Facebook:** `Block background-return feed refresh` has a new No time limit switch under News feed (issue #23). With it on, coming back to Facebook keeps your place however long you were away, not just within ten minutes. Pull to refresh and a fresh start still load new posts, and the switch starts off. If Android closed Facebook while it was in the background, Facebook starts fresh as before. * **Facebook:** Settings search now tells TalkBack how many settings it found. A short line under the search box shows the count and TalkBack reads it once you stop typing. Before, typing a search only got "Edit box" read out while the list changed silently. Back from a category also puts TalkBack's focus on the row you opened instead of the whole screen. Opening a category was already announced once, and disabled rows already said so. Tested with unit tests; a TalkBack check on a phone comes with the next build. * **Facebook:** A save that gets an error page back no longer waits for all of it. At most 64 KB is read, for at most three seconds, and Cancel stops it sooner, so an error that never finishes can't tie up one of the three save slots. A server that sends only part of a file when the whole was asked for is now refused instead of being saved as a cut-off video. When the phone's storage can't take the file, the save is logged as a storage problem rather than a network one. Connections are also closed when the reply's headers fail. Checked with unit tests against a local server only, not yet on a phone. * **Facebook:** Export diagnostic report now always gives a report, with Debug logging off and nothing logged too. It used to say there was nothing to report until something had gone wrong in the log, which left reports like #16 and #18 without build facts. Every report now names the app's package and version code, the Android API level and profile (a Dual Apps or work profile clone runs as another user), the ABI, the Hushfacebook version, whether Hushfacebook is paused and whether Debug logging is on. It lists the patches in the build and what each hook has counted. Nothing is sent anywhere, and the report goes through the same redaction as before. The bug form now asks whether Facebook is a clone, whether an .apkm or a single .apk was patched and where a reel or video was opened. This wasn't tried on a phone. * **Facebook:** `Resume long videos` now forgets where you left a video once 30 days have passed, even after you turn it off. Each saved point keeps the video's ID, and with the switch off nothing ever read them, so they stayed for good. Facebook's start now clears the old ones either way, and points from the last 30 days still wait in case you turn it back on. * **Facebook:** Hushfacebook's settings now list every save that's running at the top of Downloads. Each one shows whether it's downloading, joining its picture and sound or copying to the gallery, and has its own Cancel button. So a save can be stopped with Facebook's notifications or the saves channel turned off, and saving still never asks for notification permission. A finished save leaves the list, and nothing about it is stored. The new text is translated into all five languages. Checked in offscreen captures, not yet on a phone. * **Facebook:** `AMOLED black theme` now keeps the status bar black when you switch back to Facebook from Recent Apps (issue #22). On the Reels or Video tab, Facebook painted the bar its own dark grey, #333334, which the theme didn't catch, and the bar stayed grey until Facebook was closed. The theme now checks the colour right before Facebook paints the bar, on every tab, and in dark mode a dark grey turns black. Light mode keeps Facebook's colours, even though it asks for the same grey. This comes from reading Facebook 577 and 580's code and hasn't been checked on a phone yet. * **Facebook:** A save no longer fails because cleaning up after an earlier interrupted save went wrong. Every save runs that cleanup first, and an error there used to stop the new save too. It's now logged, and what couldn't be cleaned up is tried again the next time Facebook starts. * **Facebook:** Closes a way sponsored posts could get into the news feed past the filter. Besides adding posts, Facebook can put a new post in the place of one that's already loaded, and its ad hot-swap uses that to drop a fresh ad from a pool it keeps. Those swaps never went through Hushfacebook's feed filter. Now every swapped-in post gets the same check as any other, so a kind of post you've hidden stays out and the post it would have replaced keeps its place. The diagnostic report counts each swap under Feed edge swaps, so it can show whether Facebook does this on your account at all. This came from reading Facebook's code and hasn't been seen on a phone yet. * **Tooling:** The check of a patched build now also wants that swap guard exactly once, in the one Facebook method holding the swap's log line. The contract file has a new rule kind for it, with broken test builds for each way it can go wrong. * **Facebook:** Reels and Watch now opens with a map of how to block Reels, and a search for "block reels" finds it. It separates the rows of reels in the feed, reels that play by themselves, the Reels tab and Marketplace only. Each line whose patch is in your build jumps to that setting's row. A line whose patch is missing says so and names the patch to add, and the tab line points to Facebook's own Tab bar setting and says what it means when an account doesn't have it. Nothing saved changes. This was checked in offscreen renders and tests, not on a phone. * **Facebook:** The diagnostic report now says what a saved video actually holds, read back from the saved file. That's the video's codec and profile, picture size and duration, plus the sound's codec, AAC object type, sample rate and channels. When a single file was saved in place of the streamed tracks, the line says why. Anything the file doesn't state is written as unknown, and the line never names the file, its folder or where it came from. This is meant to help with the WhatsApp and Xiaomi Gallery reports (#11 and #14), which aren't resolved yet. Not checked on a phone. * **Facebook:** A settings import that fails while saving no longer leaves switches on screen that the phone didn't keep. Every failed write now puts the running settings back on what's stored, even when the commit itself threw. When even the old settings couldn't be put back, the message says so instead of claiming nothing changed. A failed release check save no longer shows a release the next start won't remember. * **Facebook:** Resume on the overview now turns safe mode and the Pause switch off in one save, and only after any `hushfacebook-safe-mode` file is gone. If that save fails, both stay on and a message asks you to try again. The Pause switch no longer flips off by itself after a failed Resume. These failures were checked with injected storage faults in tests, not on a phone. * **Facebook:** Export settings now reads the saved file back. An app that won't truncate the old file used to leave its tail behind while the export still said it worked. Now you're told the file won't import and to save it as a new one, and an app that won't hand the file back is named as the reason it wasn't checked. Import settings treats any failure while reading as an unreadable file instead of stopping silently. * **Facebook:** A file app that stops answering no longer keeps the Export and Import rows greyed out. After 30 seconds the screen cancels the request, gives the rows back and says it stopped waiting, without claiming the app stopped too. Nothing that app hands over later is imported or reported as saved, and no new file request starts until it has let go. Checked with a test provider, not on a phone. * **Facebook:** Category pages and search results now say when Hushfacebook is paused. A switch that's on used to look active on a paused start even though it wasn't doing anything. A short line at the top now says every switch but Debug logging acts as if it were off until you resume, while changes made when you patched stay in. Resume and Undo sit right on that line. The Pause switch's own description said Debug logging and patches applied during installation keep working, which read as if nothing paused, since every patch is applied then. It now says the same thing as that line. It also says when a pause or its end is waiting on a restart, and when a setting on that page is. Your saved choices aren't touched. Checked in offscreen renders, dark and light and at 200% text, not on a phone yet. * **Tooling:** The release check now downloads the published bundle, checksums, SBOM and receipt with `-UseBasicParsing`. Without it, Windows PowerShell 5.1 (the push hook's shell whenever pwsh isn't on the PATH) stops each download to ask a question no hook can answer, so every index push through it failed at the first download. PowerShell 7 ignores the switch. * **Tooling:** A release receipt now has to prove each declared Facebook build by its version code as well as its version name. Going by the name alone, another arm64 build of 580 (APKMirror lists several, each with its own code) would have counted as an unforced run of the declared one. The fixture check, the receipt builder and the phone build now treat such a build as undeclared, and their messages name the codes the catalog pins. * **Tooling:** The release check now reads the README's version badge and the sentence naming the latest release. A README with both still at 0.1.0 used to pass. Once a release is out, they have to name it and its patch count. While the next version is being prepared, they may name either that version or the published one. * **Tooling:** A release whose notes carry development-only entries like this one now passes the release check. Morphe Manager shows these lines to nobody, but the check refused every bullet not scoped to Facebook, so a release had to drop them or relabel them as user-facing changes. It still needs at least one Facebook entry. * **Tooling:** The fixture check, the receipt builder, the phone build and the release check's patch count no longer stop under Windows PowerShell 5.1 when Morphe's command line patcher logs a warning. It writes warnings and errors to standard error, and 5.1 turned the first one into a fatal error before the run's own result was read. * **Tooling:** Pushing main together with a new branch no longer gets the release checks meant for publishing a new index. A new branch is read from its whole tree, which always holds the index file, and that counted as main changing it. Only main or a tag that changes the index gets those checks now. * **Tooling:** A push now stops when a text file it changes still holds an unresolved merge conflict. One reached this changelog on main and every check let it through. A Markdown heading underlined with equals signs isn't mistaken for one. ## 0.3.4 (2026-09-27) * **Facebook:** This public release includes all changes recorded below for development builds 0.3.0 through 0.3.3. Those builds weren't published separately. There are now 43 patches, up from 27 in v0.2.0, for the same supported Facebook 580 and 577 bundles. Morphe Manager 1.32.0 or newer is required. * **Facebook:** Settings now open to a searchable overview. Six main categories lead to their own pages, with the rest under More settings. Search keeps the real controls in its results. Back returns through the pages, and rotation keeps your location and search. * **Facebook:** The settings pages have clearer spacing and consistent dark surfaces, with Material icons and refreshed dialogs. The existing light and wallpaper themes still work. Pause and Resume are available from the overview, with Undo before restarting. * **Facebook:** Video file names now show an example while you type. The field appears before its help text, so it's easier to reach above the keyboard. Several long descriptions are shorter, with updated translations in all five supported languages. * **Facebook:** Opening a page starts at the top, and Back restores the category list's scroll position. The overview action leaves more room for status text. All six download quality choices fit at the normal text size. ## 0.3.3 (2026-09-27) * **Facebook:** Tap to play now clears the initial Reels play button when playback starts. Facebook only cleared that state for certain viewer configurations, which could leave the button over a moving video. The fix uses the existing control cleanup and keeps paused controls and the off setting unchanged. * **Facebook:** A quick swipe after tapping Play no longer carries that tap into the next video. Swipes expire the previous tap and its player bind grace, while the current video and direct media controls keep working. * **Facebook:** Checked on the S22 with Facebook 580: the play button clears during playback and returns on pause, and both ordinary and rapid swipes leave the next reel waiting. Turning Tap to play off or pausing Hushfacebook restores native playback. The reporter's exact viewer configuration still needs confirmation. * **Facebook:** Marketplace mode passed S22 checks for cold launch, listing details, seller profiles and the listing's message composer. Return to regular Facebook restored six tabs and kept the saved startup choice. No message was sent. Incoming notifications and shared-listing links still need live checks. ## 0.3.2 (2026-09-27) * **Facebook:** Marketplace only is now included in the default patch selection. Its switch and Open on a chosen tab start off, so a normal installation keeps Facebook's navigation. Stored values are kept; older development builds that never stored their default-on choice need the switch enabled once after upgrading. * **Facebook:** Marketplace settings now show the mode's actual state, explain a missing or hidden Marketplace tab, and disable the startup choices the mode overrides. Return to regular Facebook restores normal navigation at the next restart without resetting other settings. The Menu settings entry is included with the mode. * **Facebook:** Quiet social notifications can silence entertainment suggestions, memories, birthdays and friend suggestions while Marketplace mode is selected. It starts off and preserves the individual notification settings. Messages, trading updates and unknown types pass through. * **Facebook:** Skip feed preloading can hold back two feed warm-ups once Marketplace mode is active. It starts off, preserves the screen-on scheduler cleanup and leaves early startup fetching alone. No data or battery reduction has been measured. * **Facebook:** The new controls and status messages are translated into all five supported languages. Offscreen Android view captures cover the active and regular modes; live listing, messaging and notification checks remain pending. ## 0.3.1 (2026-09-27) * **Facebook:** Compatible video saves now keep a known H.264/AAC pair even when an unchecked single MP4 has the same or higher resolution. Previously that file could take priority and bring back the sharing problem reported in #11. * **Facebook:** Normal video saves prefer AAC-LC or HE-AAC sound when available, while keeping the selected video resolution. A manifest with sound in an unsupported format now falls back to the complete MP4 instead of producing a silent video. These changes address download paths relevant to #14; Xiaomi Gallery playback and WhatsApp import still need confirmation on the affected apps. * **Tooling:** The stale-save test now uses a retired notification ID. Its fixed ID could collide with the next save after other tests ran, making a correct cleanup fail the test. ## 0.3.0 (2026-09-27) * **Facebook:** This was a development build. The published bundle remained v0.2.0 while the remaining phone checks and reported failures were investigated. The README now records the Media settings and Xiaomi Gallery reports and removes stale notes for checks already recorded below. * **Tooling:** A first push of a feature branch now checks its code without treating the branch's copy of `patches-bundle.json` as a new release. The old hook compared unreleased patch counts with v0.2.0 and blocked the push. * **Facebook:** New patch, Marketplace only, for people who open Facebook just for Marketplace. The tab bar keeps Marketplace, Notifications and your profile or Menu, and Facebook opens on Marketplace. Home with the news feed goes, and so do Video, Friends, Feeds, Groups, Gaming and Events, the same way a tab you hide in Facebook's own tab bar settings goes. It's off in Morphe Manager, and once it's in, its switch sits under Opening Facebook in Hushfacebook's settings and takes effect when Facebook restarts. Notifications and links to posts still open, and a tab bar without Marketplace is left as it is. * **Facebook:** Choosing a font file can no longer leave Hushfacebook's settings naming one font while Facebook draws in another. The file's name is saved before its copy takes the old one's place, and if either step fails, the font you had stays, name and all. The old copy is never deleted before the new one is in place, so a failed pick can't lose both. Use your phone's font also shows up whenever a copy is left over with no font named, so there's always a way to remove it. * **Facebook:** Open on a chosen tab now stops asking for the tab if Facebook still hasn't built its main screen about 12 seconds after the screen first shows. From then on Facebook's own start decides, so a tab bar it builds late or reloads later can't be pushed onto the chosen tab. The diagnostic report's tab bar reading also waits until the screen shows a tab, so Hushfacebook never sets up Facebook's tab bar data before Facebook does. * **Facebook:** Open on a chosen tab didn't open the chosen tab when Facebook started from scratch on accounts where Facebook's own setting for it is off. Those starts still landed on Home. Facebook's start-up swaps the request from the icon for a copy with no tab in it, and its tab bar ignores the tab a start asks for unless that server-side setting is on. Now the tab goes back into the copy and the tab bar uses it, but only while the screen started from the icon is being built, so notifications and links still open where they lead. That lasts until Facebook has built the screen, which on a cold start happens behind its splash screen after the screen has already shown. The diagnostic report also reads the tab bar right after a cold start now, where it used to call it unreadable. * **Facebook:** A saved video whose name is already in the save folder now gets the time of the save on the end, like `Some Page_20260925_143005.mp4`. With a name like `{owner}_{posted}`, a second video one person posted that day used to be left to Android, which numbers each repeat up to (31) and then refuses the save. The Video file name dialog says so too. * **Facebook:** The Hide sponsored reels and Hide AI-detected reels and videos rows now say that a change starts with the next batch of reels Facebook loads. Both filters work on each batch as it arrives, so reels already loaded stay as they were. The README says so too. * **Facebook:** The README now says why Meta's Facebook builds for Android 9 and Android 8 can't be patched. They keep all of their code except a small startup part in a compressed archive the patcher can't read, so none of the patches apply, rather than lacking the code some patches need, as it used to say. Android 11 and newer is the only range Hushfacebook supports. * **Facebook:** Patching a Facebook build for Android 9 or older now stops at once and says why. Such a build keeps nearly all of its code in a compressed archive the patcher can't read, so the message points to the (arm64-v8a) (Android 11+) build instead. It used to stop with a note that no class of FbMainTabActivity's hierarchy declares onCreate, which named the symptom and not the build. * **Facebook:** New patch, Open on a chosen tab. Starting Facebook from its icon opens the tab you pick, which is Marketplace unless you change it. Home, Feeds, Video, Friends, Notifications and Menu are the others. It asks Facebook for the tab the way Facebook's own shortcuts do, so notifications and links still open where they lead, and a tab your tab bar doesn't have opens Home instead. It only acts as Facebook starts, so the tab you tap afterwards stays. The patch starts off in Morphe Manager, and once it's picked, its switch and the list of tabs sit under Opening Facebook in Hushfacebook's settings. People on the r/MorpheApp thread who only open Facebook for Marketplace asked for it. * **Facebook:** A saved video's quality in the diagnostic report, and in the ranking that picks which file to save, no longer comes from the video's length. A 640x360 video that ran 1485 seconds was listed as 1485p and could outrank a real 720p file. A file that doesn't say its quality now reads unknown. * **Facebook:** Hushfacebook's settings page has a Jump to a section row at the top. It lists the page's sections, so Downloads or Links is two taps away instead of several screens of scrolling, and Back returns you to where you were once before it closes the page. * **Facebook:** The check that runs on every patched build now holds Don't send reel watch history to what it promises. Facebook's one call that sends the batch has to be gone and Hushfacebook's stand-in has to take its place, reading the same values. Before, a build that kept the old call beside the new one and still sent every batch could have passed. * **Facebook:** A new test ties each patch to its own switch in Hushfacebook's settings. A patch that turned on a misspelled switch would have applied without a word and then shown as not patched. * **Facebook:** Use the system font can now draw Facebook in a font file you pick. A new Font file row under Appearance in Hushfacebook's settings opens Android's file picker for a TrueType or OpenType font of up to 20 MB, and Hushfacebook keeps a copy in Facebook's own storage once Android has shown it can draw with it. If that copy ever stops loading, your phone's font takes over, and Use your phone's font drops it. The screens Facebook builds with React Native, such as parts of Marketplace, follow the patch now too. The patch keeps its name and its switch, so an update from 0.2.0 keeps your choice in Morphe Manager and the switch as you left it. The picked font stays out of exported settings files, since a file can't carry the font itself. Asked for in issue #1. * **Facebook:** The check that runs on every patched build now reads Facebook's code the way the patcher sees it, with what the extra download files carry merged in. On 580 the in-app browser brings its own copy of some of Facebook's methods, and read against base.apk alone they showed up as about 15,000 changed or new methods the patches never touched. Now only the methods a patch really changed or added are listed. A method Facebook defines twice is checked in each copy a patch changed, so a copy nothing touched can't hide a bad one. Meta's signature is still checked on base.apk, and the merge has to carry base.apk's code byte for byte. * **Facebook:** New switch under Downloads, Save videos other apps can open. It's off by default. Facebook's sharpest version of a video is often AV1 with xHE-AAC sound, which Gallery and VLC play but apps like WhatsApp turn down with "Can't send this video". With the switch on, every video you save, from Reels, Stories, the feed or Watch, is H.264 with AAC sound within your Download quality, and when Facebook offers no such pair you get its own single MP4 file instead. So a save can come out below the sharpest version. A video that has neither saves the way it always did. Reported in issue #11. * **Facebook:** The README now points to Facebook's own setting for taking the Reels tab off the tab bar: Settings, Tab bar, Customize the bar, then Hide next to Reels. It worked straight away on a test account, so Hushfacebook doesn't add a switch of its own for it. * **Facebook:** New patch, Hide the Get Messenger card. Facebook's own Chats kept a big "Get the Messenger app" card above your chats even with Messenger installed. Facebook does drop that card when Messenger is there, but it only counts a Messenger signed with its own key, and a re-signed Facebook never matches Meta's. The patch hides the card while Messenger is installed and leaves your chats, search and notes alone. Without Messenger the card stays, so you can still install it from there. It's on by default, with its switch under Chats in Hushfacebook's settings. * **Facebook:** New patch, Tap to play. Videos, reels, stories and music wait for your tap instead of starting by themselves, and a tap plays them as usual. People reported profile Stories, Reels, Marketplace ads and songs on posts starting on their own, some of them with Facebook's Autoplay setting already off. It works in Facebook's two video players, where a start goes ahead only within a second of a tap, from the media controls or the seek bar, or on something a tap already started. What Facebook starts because a video came into view or because you came back to a screen still waits. Facebook's own Autoplay setting reads Off while the switch is on, so the feed and the Reels controls draw their own play button, and it reads what you chose again when the switch is off. The patch starts off in Morphe Manager, and once it's picked, its switch sits under Playback in Hushfacebook's settings. With Debug logging on, the diagnostic report says what each start was and why it went ahead or waited. It hasn't been checked on a signed-in phone yet. * **Facebook:** With Tap to play on, a reel that's waiting for you now shows Facebook's own play button right away, so one tap on it plays the reel. It used to take one tap to bring up the button and a second to play. Ad breaks keep Facebook's own controls. * **Facebook:** New patch, Hide Menu promotions. It takes the Upgrades and Also from Meta sections out of Facebook's Menu, the list you open from the Menu tab or from the corner of your profile. Upgrades is where Facebook puts its offers, and Also from Meta lists Meta's other apps next to ads for its headsets and glasses. Each section has its own switch under Menu in Hushfacebook's settings, and both start on. Settings and privacy, Help and support, Log out and your shortcuts stay where they were. Hushfacebook knows the two sections by the names Facebook's code gives them rather than by their titles, so it works in any language. Reported in issue #9. * **Facebook:** New patch, Hide Meta AI in search. Facebook's search can put a Meta AI answer on top of your results, mix Ask Meta AI prompts in among them, and send a search to Meta AI when you tap a suggestion. With the patch those answers and prompts stay out, and a suggestion opens ordinary results. People, groups, pages and posts are left alone, and the Meta AI button beside the search box and the Meta AI tab on the results page still work when you want them. It's on by default, with its switch under Search in Hushfacebook's settings. On a test phone, a search for pizza lost its Meta AI summary while the Meta AI tab still answered. * **Facebook:** New patch, Default comment order, for people tired of comments reverting to Most relevant. Pick Most relevant, Newest or All comments under Comments in Hushfacebook's settings, and a post's comments open that way wherever Facebook would otherwise choose. An order you pick in a post's own sort menu still wins, and it now stays for that post when the comments reload or you open them again, until Facebook restarts. A link to one comment, like a reply notification, still opens in Facebook's order, and so does a post opened on its own page. It's off in Morphe Manager, and once it's in, the order starts as Facebook's own, so nothing changes until you pick one. Settings files carry the order too. On a test phone, comments opened in the chosen order and kept the order picked in a post's comments. * **Facebook:** The README's notes on Tap to play now match what a test phone showed. Opening the Reels tab counts as your tap, so the first reel plays and the next one you swipe to waits, and feed videos and reels were checked on a signed-in phone. * **Facebook:** Two new patches take ads out of search and profiles. Hide sponsored search results leaves the ads out of Facebook's search results. Facebook gives each block of results a role and keeps its own list of the roles that are ads, and only those blocks go, so the people, pages and posts you searched for stay. Hide sponsored profile posts leaves out the ads between the posts on someone's profile or a Page, the ones Facebook tags as sponsored there. The profile's own posts stay. Both are on by default, with their switches under Search and News feed in Hushfacebook's settings, and the diagnostic report counts what each one saw. The search one shares its place in Facebook's code with Hide Meta AI in search, and each keeps its own switch. On a test phone both ran on every search page and profile row without finding an ad to take out, because the test account isn't being shown these ads. Marketplace ads have a patch of their own, further down. Ads inside videos were already blocked by Hide sponsored reels. * **Facebook:** New patch, Hushfacebook in the Menu. Hushfacebook's settings now have a row in Facebook's own Menu. Open Settings and privacy and it's the last row, called Hushfacebook settings in your language. The logo long press and the launcher shortcut still work, and like them the row stays while Hushfacebook is paused, since the settings are where you turn Pause off. Facebook's record of which Menu rows you saw and tapped leaves this one out. On a signed-in test phone the row sat at the end of Settings and privacy and opened the settings. * **Facebook:** The "People you may know" switch of Hide suggested and promoted posts now also takes the carousel of friend suggestions off your own profile, the one under Add to story and Edit profile. It used to reach only the row in the feed. Your profile's header, friends and posts stay. Hushfacebook finds the carousel by the name Facebook's code gives it, not by its title, so it works in any language. The diagnostic report counts how often your profile built it and how often it went. On a signed-in test phone the carousel was gone and the rest of the profile was still there. * **Facebook:** Hide AI-detected reels and videos can now read the reels on the Reels tab. A test phone showed it never removed one there: all 20 reels it checked were counted as "no model". The Reels tab keeps each reel's video and post one step further in than the filter looked. The filter now also reads Facebook's own detection flag on those by the field's name, the same flag Facebook's Reels menu reads to offer its AI info row. A reel flagged that way is taken out, and one it can't read stays. The diagnostic report counts these reels under kinds that start with "tree". Back on the test phone, all 44 reels it saw were read this way. None of them carried the flag, so a flagged reel going away is still to be seen. * **Facebook:** Hide suggested and promoted posts has a new switch, Hide suggested groups (issue #8). It takes out the row of groups to join that Facebook puts between posts, the one under a "Suggested for you" header with a Discover more groups button. Facebook's app tells that row apart from People you may know and friend requests by its own type, even though all three share one piece of code, and the switch goes by that type. Posts from groups you're in and friend requests stay, and you can still look for groups from the Groups tab. It's on by default, and it hasn't been checked on a phone yet, since the test account hasn't been shown the row. * **Facebook:** Hide suggested and promoted posts has another new switch, Hide "Stories you might like" (issue #10). It takes out the row of Stories from people you aren't connected to that Facebook puts between posts. Facebook's own code marks that row with a flag and opens its Stories as suggestions because of it, and the switch reads the same flag. A row of your friends' Stories stays, and so do the Stories tray and a link straight to a Story. It's on by default. It hasn't been checked on a phone yet, since the test account hasn't been shown the row. * **Facebook:** New patch, Block promotional notifications. People asked for Facebook's trending and other promotional pushes to go quiet while messages, friend requests and login alerts keep coming. Every push Facebook sends carries a type its own code names, like BIRTHDAY_REMINDER or TOP_TRENDING_VIDEO, and the patch reads it just before Facebook posts the notification. Six switches under Notifications in Hushfacebook's settings cover trending videos and reels picked for you, memories, birthdays, group and Page highlights, People you may know, and nearby places and weather. They all start off. A type Hushfacebook doesn't know always comes through, and so do messages, friend requests, comments, mentions, calls and login alerts. Android's own notification categories for Facebook keep working too. It hasn't been checked on a phone yet. * **Facebook:** New patch, Hide suggested stories, for the stories Facebook puts in the Stories tray from people and Pages you visited but don't follow (issue #7). Facebook marks those itself: the tray's own card writes Suggested under a story when the story carries Facebook's suggested flag or its first label is SUGGESTED, and the patch reads those same two marks, so it works in any language. Only those stories leave the tray. Your friends' stories, the Pages you follow, your own story and Create story stay, and so does anything Hushfacebook can't read. It's on by default, with its switch under Stories in Hushfacebook's settings, and a change shows the next time Facebook loads the tray. On a test phone it took two suggested stories out of each load of the tray, and no story marked Suggested was left in it. * **Facebook:** New patch, Hide sponsored Marketplace listings. Marketplace is drawn by React Native, so its ads never pass through a list Hushfacebook could filter, but the requests its React Native code sends go through Facebook's own network code first, and the patch changes those requests on their way out. The feed's request has a setting of its own that asks Facebook's servers to leave the ads and boosted listings out, and the patch turns it on. The four requests that fetch nothing but ads aren't sent at all. The listings people post stay. It's on by default, with its switch under Marketplace in Hushfacebook's settings, and with Debug logging on the diagnostic report names each Marketplace request and what was done to it. On a test phone the ads-only requests never went out, the feed's own request already asked to skip its ads, and a dozen screens of Marketplace showed no sponsored or boosted listing between the ordinary ones. * **Facebook:** Use the phone's emoji now reaches the big emoji a chat shows on its own, like the one a chat's emoji button sends. Facebook drew that one as a picture of Meta's emoji it downloads, so it kept Meta's look. With the switch on, Facebook now skips that picture and draws the emoji with your phone's emoji font, the way it already showed it while the picture loaded. Reactions and stickers stay as they are. This hasn't been checked on a phone yet. * **Facebook:** Open links in external browser now only unwraps the links Facebook's own code treats as its click tracker. It used to take any Facebook link carrying a `u` for one, so a share link such as `facebook.com/sharer/sharer.php?u=...` would have opened the shared page in your browser instead of Facebook's share page. What it unwraps now is the list Facebook 577 and 580 check for themselves: `/l.php` on Facebook's domains, the older link forms Messenger's cards use, and the warning page Facebook shows before a suspicious link. Links in chats that Meta wraps on `l.messenger.com` still open in your browser too. A link wrapped twice unwraps all the way. This hasn't been checked on a phone yet. * **Facebook:** New patch, Hide posts by words. Under News feed in Hushfacebook's settings you list words or phrases to hide, one per line, and a second list of words that keep a post whatever else it says. A post goes when its own text, or the text of a post it shares, has a word from the first list and none from the second. Matching is plain text anywhere in the post, capital letters don't matter, and there are no patterns. Each list holds up to 50 phrases of 2 to 60 characters. A post with no text, or one whose text can't be read, stays. Hushfacebook reads the words the author wrote, not Facebook's translation, and never puts them in the diagnostic report or a log, which only count the posts each list matched. The lists go into exported settings files with the rest. The switch starts off and the lists start empty. On a test phone one common word took 17 of 30 posts out of the feed, and putting the same word in the keep list brought every one of them back. * **Facebook:** New patch, Tag suggestions only after @, for people tired of a list of people to tag popping up over ordinary words. Facebook's text boxes look people up for any longer word they take for a name, even with no @ in front, and a tap in the wrong place turns that word into a tag. With the patch in and its switch on, only a word that starts with @ brings up people to tag. Hashtags still come up after #, tagging people in photos isn't touched, and what you type is never changed. A list an earlier @ left open closes once you type on. It's off by default, with its switch under Writing in Hushfacebook's settings. On a test phone, names typed into a comment brought up nobody to tag, and typing @Ma still brought up the list. * **Facebook:** New patch, Resume long videos. A video longer than two minutes that you stop partway now picks up where you left it the next time it plays, once each time it opens, even after Facebook restarts. Drag the seek bar first and your spot wins, and so does a place Facebook carries over itself, like a link to a moment in the video. Stopping in the last 10 seconds counts as finishing it. Reels, live videos, ads, looping videos and songs start as usual. Hushfacebook remembers up to 200 videos for 30 days, on your phone only, and the diagnostic report counts what it saved and resumed without saying which videos. The patch is in by default with its switch off, under Playback in Hushfacebook's settings. It hasn't been checked on a phone yet. * **Facebook:** Hushfacebook's edit dialogs now shrink to fit above the keyboard: Save folder, Video file name and the two word lists. With a large font size, the video file name's explanation pushed Save and Cancel under the keyboard on a phone screen, where nobody could reach them. On an emulator at double text size the dialog now keeps its title, scrolls its explanation and shows both buttons above the keyboard. * **Facebook:** Hide AI-detected posts has a new switch, Also hide posts labelled as AI. On a test phone with the feed switch on, group posts showing "AI content" next to the poster's name stayed in the feed, and all 14 posts the switch read had Facebook's detection flag off. Facebook shows that label for two reasons, its own detection or the poster saying the post was made with AI, and each has a flag of its own. The feed switch goes by the detection flag alone and still does. The new switch, right below it under News feed, reads the poster's flag too, so a post with either flag goes. It starts off, and a post whose flags can't be read stays. The diagnostic report counts the posts it read under Creator AI label flag, and with Debug logging on, each feed post's log line says what both flags read. It hasn't been checked on a phone yet, so whether those group posts go with it is still to be seen. ## 0.2.0 (2026-09-26) * **Facebook:** New patch, Use the phone's emoji. Facebook draws the emoji in its text with Meta's own emoji font, which it downloads to your phone. This patch has it use your phone's emoji font instead, so emoji in posts and comments look like the ones on your keyboard, and so do the smileys Facebook makes from text like :). Reactions and stickers are pictures rather than text, so they stay as they are. The patch starts off in Morphe Manager, and its switch, under Appearance in Hushfacebook's settings, starts on once you pick it. Restart Facebook after changing the switch. Asked for on the r/MorpheApp thread. * **Facebook:** The Video file name setting takes two more tokens. `{owner}` becomes the name of whoever posted the video and `{posted}` the day it went up, so `{owner}_{posted}` names a saved video `Some Page_20260925.mp4`, whether it came from Reels, Stories, the feed or Watch. Both are left out when a save doesn't know them, the way `{video_id}` is, and the settings dialog names all four (issue #6). * **Facebook:** The Hide Stories tray switch now says, in its settings row and in the README, that it takes effect when Facebook restarts. Facebook builds the feed's fixed rows once, when the feed is set up, so pulling to refresh or coming back to the feed neither brings the tray back nor takes it away. The README used to say the tray comes or goes the next time the feed is built. * **Facebook:** New patch, Stop update prompts. A patched Facebook can't install Meta's updates, so this stops Facebook asking. It turns off the two things Facebook does for Meta App Manager, the update promotions it shows for it and the push message that has the manager look for an update, and it drops the chat promotions aimed at older versions. Its switch sits under Updates. Meta App Manager's own notices come from that app, which the patch can't reach, and the README says what to do about them. * **Facebook:** New patch, Use the system font. It draws Facebook's text in your phone's font instead of Meta's Optimistic, at the same weight and slant, and leaves the icons and the text you put on a story alone. The patch starts off in Morphe Manager, and its switch, under Appearance in Hushfacebook's settings, starts on once you pick it. Restart Facebook after changing the switch. Asked for in issue #1. * **Facebook:** You can now open Hushfacebook's settings from inside Facebook by long-pressing the Facebook logo at the top of your feed, handy on a launcher with no long-press menu (#2). A tap on the logo still does what it always did, and the Hushfacebook item on Facebook's launcher icon stays. * **Facebook:** Hide AI-detected posts now reaches Reels and Watch. A new switch under Reels and Watch takes out the reels and videos Facebook's own detection marked as made with AI, going by the same flag the viewer's own AI label reads, so a reel only its creator labelled stays. Like the feed switch it starts off, and a reel whose flag can't be read stays. * **Facebook:** The README has a Troubleshooting section for the Morphe Manager messages people have run into: Unsupported Version on another build of 580, a damaged .apkm, running out of storage, an outdated Manager and install conflicts. It also says what Meta can see of a patched Facebook and where to ask for help, and its install steps name the exact APKMirror bundle to take. * **Facebook:** Block background ad prefetch, Block ad telemetry, Disable Audience Network and Hide suggested and promoted posts now name, in the patch log, each target a Facebook build lacks. They still apply to whatever the build has, and they still stop when it has none of their list. Before, a build that had renamed most of a list patched without a word. Patching Facebook 580 lists six feed units it no longer has. * **Facebook:** New patch, Don't send reel watch history. The Reels viewer sends Facebook the reels you watch in batches, as a list of their ids that Facebook ranks your Reels feed with and nobody else sees. The patch holds each batch back at the moment it would go out, after it has left the queue, so a batch it holds back isn't kept to send later. Reels you've already watched may come back in the feed. The patch starts off in Morphe Manager, and its switch, under Reels and Watch in Hushfacebook's settings, starts on once you pick it. * **Facebook:** The diagnostic report now also leaves out a Facebook address with nothing in front of it, like facebook.com/ followed by a profile name. It used to catch one only with www. or another prefix. No line in a report prints such an address today, so this covers the next one that might. * **Facebook:** A debug setting stored with the wrong type used to make Facebook crash as it started. Now Hushfacebook clears that value and starts with the default, and the diagnostic report says which setting it was. Nothing writes such a value today, but a hand-edited or restored preferences file could. * **Facebook:** Copy quick report builds the report in the background now, so the settings screen no longer stalls while a long diagnostic log is filtered. The copy and its message arrive once it's ready. * **Facebook:** In Hushfacebook's settings, a row that opens something when you tap it, such as a dialog or the file picker, now ends in a chevron. Its title's colour was the only thing that set it apart from a plain line of text, so Licenses and Version looked alike. The chevron points the other way in right-to-left languages. Switch rows keep their switch, and the rows that act as soon as they're tapped, such as Clear diagnostic data and the paused status card, go without one. * **Facebook:** Export diagnostic report's two choices now show as cards, each with what it does under its name. Both show whole above Cancel at any text size, in right-to-left languages too. * **Facebook:** Patches that change code in the middle of a Facebook method now check that the spare registers they use really are spare. If a future Facebook build keeps something in one, the patch stops with a message instead of breaking Facebook quietly. Hide sponsored reels also patches a build whose reel page sits in a higher register, which it used to refuse. * **Facebook:** The checks every release goes through got stricter. A patched build's resources and manifest are now compared with Facebook's whole split bundle rather than only its base APK, the injected-code check covers helpers added to Facebook's own classes, and the receipt published with a release has to match the one built here byte for byte. * **Facebook:** New patch, Install beside Meta's apps, on by default. The official Messenger, Facebook Lite, Business Suite and Workplace declare two permissions that Facebook declares too, and Android lets only one signing key own a permission, so they couldn't be installed beside a patched Facebook (`INSTALL_FAILED_DUPLICATE_PERMISSION`). The patch gives Facebook's two their own names, everywhere the manifest and Facebook's code use them. If you patched before, patch again and install over the top: it's an ordinary update, so Facebook keeps its data. * **Facebook:** Hushfacebook can now tell you when a new release is out. Turn on Check for new Hushfacebook releases, under Updates in Hushfacebook's settings, and once a day, when Facebook starts, it asks GitHub for the latest release. When that's newer than yours, the status card at the top of the screen says so, along with the Facebook version it targets if yours is a different one. Check now asks straight away. The switch starts off, since it's the only time Hushfacebook goes online for itself. Pause stops it, and a settings file can't turn it on. It never downloads anything or posts a notification. Asked for on r/MorpheApp. * **Facebook:** The 27 patches target Facebook 580.0.0.51.74 and 577.0.0.50.72. Morphe Manager 1.32.0 or newer is required. ## 0.1.8 (2026-09-26) * **Facebook:** Clean up Reels now takes the Follow button off reels on the Reels tab too. It only caught the Following button next to people you already follow, so a reel from anyone else kept its Follow button. * **Facebook:** The 22 patches target Facebook 580.0.0.51.74 and 577.0.0.50.72. Morphe Manager 1.32.0 or newer is required. ## 0.1.7 (2026-09-26) * **Facebook:** New patch, Clean up Reels. It takes the Follow button off reels and stops the comment and friends' reactions Facebook previews under them. The Remix, Use template, Add yours and Edits buttons go as well, along with the ones for Stars, games, partner apps and links out of Facebook. Each part has its own switch under Reels and Watch. The patch starts off in Morphe Manager, and its switches start on once you pick it. * **Facebook:** Saved photos and videos now use the file type found in their bytes when the server labels them incorrectly, so the gallery gets the right extension. * **Facebook:** A save now reports a gallery write failure when the file stream can't close or the pending entry can't be published. Unfinished entries are removed. * **Facebook:** If the gallery won't remove an unfinished save, Hushfacebook remembers it and tries again at the first save after Facebook restarts. * **Facebook:** With Open links in external browser on, links to fb.watch, fb.me, m.me and Facebook's other short addresses open in Facebook again, not on the web in your browser. * **Facebook:** The settings screen lost a few rough edges. Cancel is easier to read on the black page, and a row you can't tap right now looks dimmed. The status card tells you when a Pause change waits for the next restart. Tapping Source code and issues on a phone without a browser shows the address instead of closing Facebook. * **Facebook:** The diagnostic report counts the Block background-return feed refresh hook, like every other one. * **Facebook:** The Hushfacebook item now stays first when you long-press Facebook's icon. Facebook pushes three shortcuts of its own ahead of it whenever it posts notifications, and a launcher that shows only a few shortcuts, or fewer next to a notification, left Hushfacebook off the end (#2). * **Facebook:** Download any reel is on by default now, so a fresh patch puts a Download button beside every reel. Its switch in Hushfacebook's settings still takes it out. * **Facebook:** A new Download quality setting holds story, reel and feed video saves to 1080p, 720p, 480p or 360p, or picks the smallest file. Best stays the default. A video with nothing at or under your pick saves at the closest quality above it, so a save never fails over the setting. * **Facebook:** A new Video file name setting names saved videos from a template with `{date}` and `{video_id}`. It starts as Facebook's own `FB_VID_{date}`, and photos keep their `FB_IMG_` names. A name that would repeat on every save gets the date added. The quality and the file name travel in settings files, and an import refuses a value this version can't use. * **Facebook:** Clearer settings wording. Hide AI-detected posts now says a post only its creator labelled as AI stays, and the crash pause says Facebook crashed or froze. An empty diagnostic export tells you how to fill it. Each translation also uses the same words for the same things throughout, and the Download quality and Video file name dialogs show Cancel in Facebook's language, as Save folder does. The list of what stays in while paused names the patch to leave out for each item. * **Facebook:** The 22 patches target Facebook 580.0.0.51.74 and 577.0.0.50.72. Morphe Manager 1.32.0 or newer is required. ## 0.1.6 (2026-09-26) * **Facebook:** Settings cards and actions read more clearly in the default dark theme. Recovery actions and dialogs are easier to pick out. * **Facebook:** Shorter settings descriptions in all five translations explain what each control does without hiding important exceptions. Pause has a visible badge when it's on. * **Facebook:** The Save folder dialog says where files go and reports the folder name it actually saved when invalid characters need replacing. The diagnostic choices explain the quick and full reports. * **Facebook:** The Licenses screen wraps its long notices for a phone and opens the credited projects' links when tapped. * **Facebook:** The same 21 patches still target Facebook 580.0.0.51.74 and 577.0.0.50.72. Morphe Manager 1.32.0 or newer is required. ## 0.1.5 (2026-09-26) * **Facebook:** The optional Stop Story auto-advance patch keeps a finished Story on screen until you tap or swipe. Its switch restores Facebook's timing at any time. * **Facebook:** The Hushfacebook settings screen groups controls into rounded cards, gives its status a stronger header, and uses clearer blue controls in the default dark theme. * **Facebook:** New patch, Block background-return feed refresh. It keeps the feed in place when you return to Facebook within ten minutes. Pull to refresh and a fresh launch still work. The patch starts off in Morphe Manager, and its switch starts on once you pick it. * **Facebook:** Hide Reels in the feed now catches Reels showcase rows filed under other feed categories and the row Facebook injects just before the feed ends. Other showcases and reels posted by people you follow stay. * **Facebook:** All 21 patches apply to both supported Facebook builds. Morphe Manager 1.32.0 or newer is still required. ## 0.1.4 (2026-09-25) * **Facebook:** New patch, Hide Reels in the feed. It takes the rows of reels between posts out of the news feed, and the reels Facebook adds where your feed ends. A reel a friend posts stays. The patch starts off in Morphe Manager, and its switch starts on once you pick it. * **Facebook:** Both Facebook 580.0.0.51.74 and 577.0.0.50.72 take all 19 patches. It still needs Morphe Manager 1.32.0 or newer. ## 0.1.3 (2026-09-25) * **Facebook:** New patch, Hide Stories tray. It takes the row of stories at the top of the feed away, "Create story" included, the way Facebook builds the feed when its own tray is turned off. Stories still open from a profile, a notification or the Stories viewer. * **Facebook:** Hide suggested and promoted posts has two new switches. "Suggested for you" hides the posts Facebook recommends from people, pages and groups you don't follow, going by the same flag Facebook's own "hide suggested posts" reads, so posts from friends and pages you follow stay. "People you may know" hides that row in the feed and leaves friend requests alone. * **Facebook:** New patch, Hide AI-detected posts. It hides feed posts Facebook's own detection labelled as made with AI. Its switch starts off, and a post whose label can't be read stays. * **Facebook:** New patch, Download any video. "Download to phone" in a video post's menu saves feed and Watch videos through the same checked downloader stories and reels use. A new Save folder setting names the folder saves go to, under Movies for videos and Pictures for photos, and it starts as Facebook. * **Facebook:** New patch, Material You theme. Facebook's dark mode takes the colours of your wallpaper on Android 12 and newer, and a fixed palette on Android 11, while light mode stays as it is. Each colour keeps its lightness, so text keeps the contrast Facebook gave it. The Hushfacebook screen follows your phone's dark or light setting in the same palette. It's off unless you pick it. With AMOLED black theme in the same build the backgrounds stay black, and Material You colours the text, icons, dividers and cards. * **Facebook:** New patch, Sanitize sharing links. It takes the tracking tags Facebook adds to the links you share or copy (mibextid, a random per-share extid, sfnsn and others) back off, with a switch of its own. A facebook.com/share/ link is made on Facebook's servers for one share, so it can still be traced back to you, and the switch says so. * **Facebook:** Links that open in your browser leave without the fbclid tag Facebook adds to them. * **Facebook:** Hushfacebook's text, the launcher shortcut included, is in the language Facebook itself shows. A phone set to German with Facebook set to English used to get an English screen under a German shortcut. * **Facebook:** A settings file holding a number too large to read is refused with a message. The import used to stop without saying anything. * **Facebook:** Every release now comes with a software bill of materials (CycloneDX) for the bundle, and a release stops if a dependency has a known advisory nobody has looked at. * **Facebook:** Both Facebook 580.0.0.51.74 and 577.0.0.50.72 take all 18 patches. It still needs Morphe Manager 1.32.0 or newer. ## 0.1.2 (2026-09-25) * **Facebook:** Hushfacebook settings can now export the runtime feature switches to a JSON file and import them on this phone or another one. Import shows what will change, skips names this build doesn't know, and refuses damaged or newer files without changing anything. Pause and debug logging stay local. The new flow follows the phone's language in English, German, Spanish, Indonesian, Brazilian Portuguese and Turkish. * **Facebook:** Added a Facebook-blue Hushfacebook identity with a new icon, README hero and light or dark wordmarks. The README now leads with the product's main benefits and direct install, download and support links. * **Facebook:** AMOLED black theme no longer breaks a screen on Facebook 580. The colour sweep rewrote some dark greys Facebook keeps as 64-bit values with a 32-bit constant, and Android refused the class that held them. Only builds with AMOLED on had it. * **Facebook:** Story and reel saves only fetch from Meta's media servers, over HTTPS. A file reaches your gallery only once it's whole and really is the photo or video it claims to be, and nothing over 512 MB is kept. A save that fails leaves nothing behind in the gallery or the cache. The checks still let saves through behind a home router that answers DNS from a fake-IP range, as OpenClash, ShellCrash and sing-box do. * **Facebook:** Two saves started at the same moment no longer end with one of them failing. * **Facebook:** The settings screen says exactly what Pause turns off and what stays in while paused, and Debug logging keeps working while paused, so a paused start can still be logged. The story save's player recorder now stops while its switch is off or Hushfacebook is paused. * **Facebook:** Retry and Back on the settings recovery page, and a screen rotation, stay inside the settings screen instead of dropping you back into Facebook. * **Facebook:** The diagnostic report names your Facebook build and ABI and lists every patch with whether a switch runs it. It also carries failed saves and Reels filter trouble, along with any link no browser would open. File names and the ids inside them are left out. Copy quick report keeps the build line and the patch list when it has to shorten a long report. * **Facebook:** A story or reel save shows a notification with how far it has got and a Cancel button. Cancel stops it straight away, and with two saves running each Cancel stops its own. A save Android cut short when it closed Facebook leaves nothing in the gallery, the cache or the notification shade the next time one starts. * **Facebook:** A hook that Facebook calls before its app has started takes Facebook's own path until Hushfacebook knows whether this start runs paused. One that read a switch too early could stop Facebook from starting at all. * **Facebook:** Everything Hushfacebook shows, from the settings screen to the save notification and the name TalkBack reads for the reel Download button, is in German, Spanish, Indonesian, Brazilian Portuguese or Turkish when the phone is, and in English otherwise. Facebook's own language doesn't change. The diagnostic report and Debug logging's error toasts stay in English. * **Facebook:** TalkBack reads section titles as headings and says each switch is a switch, and whether it's on. Rows that do something when tapped are read as buttons. Every row's text wraps in full at any text size, where Android used to cut the longest summaries at ten lines. * **Facebook:** Pause and safe mode take out the reel Download button and the Save item on other people's stories, which used to stay in whatever Pause said. The Download button has its own switch now, and Save any story off leaves Save only on your own stories, as unpatched. * **Facebook:** The bundle is built with Morphe patcher 1.14.1, so it needs Morphe Manager 1.32.0 or newer. Both Facebook 580.0.0.51.74 and 577.0.0.50.72 take all 13 patches. ## 0.1.1 (2026-09-24) * **Facebook:** The Hushfacebook settings screen is readable. Its row titles were drawn in Facebook's near-black text on the black page, and the Export diagnostic report and Clear diagnostic data rows showed up blank. Both were found on a Galaxy S25 running 0.1.0. ## 0.1.0 (2026-09-24) * **Facebook:** First release, with 13 patches for Facebook 580.0.0.51.74 and 577.0.0.50.72 (arm64-v8a). They bring the Facebook patches of Andrew Liang's Morphe patches into one source, rewritten with the fixes below, and every one applies to both builds. * **Facebook:** Hide sponsored posts now drops posts Facebook files as promotions too, not only sponsored ones, as FroggoMorphePatches does. Both have their own switch. * **Facebook:** Hide sponsored posts and Hide suggested and promoted posts share one feed guard instead of each adding their own to the same Facebook method. Two guards there are how FroggoMorphePatches users got "target dex pc is not at instruction start" crashes. * **Facebook:** Hide sponsored reels works on Facebook 580. The ad-break state that keeps retrying a failed ad lookup moved into a parent class it shares with two other states, and the patch now stops only that state's poller. * **Facebook:** AMOLED black theme works on Facebook 580, where the colour resolver for Facebook's components split in two and the patch stopped finding it. It now finds every resolver on the class by what it does. * **Facebook:** Download any reel works on Facebook 580, whose sidebar button factory takes one more setting than 577's. The new setting is a Facebook experiment flag, passed as off. * **Facebook:** Reel downloads no longer depend on the Kotlin library Facebook renames. The handler used to ship a copy of Kotlin's standard library inside Facebook, over a thousand classes, and now uses Facebook's own. * **Facebook:** A story or reel saved from its DASH tracks keeps its sound when the audio starts before zero. Some AAC tracks report their first frames at negative times, and the join stopped the sound track there, leaving a silent file. * **Facebook:** New Hushfacebook settings, reached by long-pressing Facebook's icon. It has switches for the feed, story and Reels filters, the external browser and story saves, plus Pause Hushfacebook, debug logging, a diagnostic export and the licenses. Hushfacebook pauses itself after Facebook crashes within a minute of starting three times in a row. * **Facebook:** The diagnostic report counts the feed posts, story ad sources and Reels items each filter saw and how many it took out, even with debug logging off. A report now shows whether a filter ran at all. * **Compatibility:** Every patch is checked against the real Facebook 580.0.0.51.74 and 577.0.0.50.72 bundles, and the rebuilt resource table is held to Facebook's own. All 13 patches apply to both, and every stock resource still resolves.