github SysAdminDoc/HushFacebook v0.13.0

3 hours ago

This release gathers everything since v0.12.0 and still brings 88 patches for Facebook 582.0.0.50.54. New switches hide reposts, save the picture behind a photo Story with music, take the Meta AI button out of Chats and keep saves quiet. With Picture-in-picture on, a link that opens while a reel floats brings Facebook back full screen. Link posts leave Home on 582 again, the kept top bar stops fading, and a reel waiting to play starts its bar at the beginning. A failed save says why, Morphe Manager shows this release's whole list of changes, and the Reported issues list below maps each report this release touches.

New in this release

  • Hide posts by words has a new switch under News feed, Hide reposts (issue #133). With it on, a post that shares someone else's post stays out of the feed, whether the person sharing it wrote anything above it or not. Posts people write themselves stay, and so does any post Hushfacebook can't read. The diagnostic report counts how many it hid and keeps nothing a post says. It starts off, and a change applies to the posts Facebook loads next.

  • A photo Story with music gets Save photo in its menu next to Save, with Save any story on (issue #38). Facebook plays that kind of Story as a video made from the photo, so Save keeps the video. Save photo keeps the picture it was made from, at the size Facebook serves it. Video Stories and plain photo Stories still get just Save. It hasn't been tried on a real music photo Story yet.

  • Clean up Facebook's chat list has a third switch under Chats, Hide the Meta AI button in Chats. It takes the Meta AI button off the search row at the top of Chats and off Chats' search screen, and the search box gets the room. Your chats with Meta AI stay, and the diagnostic report counts how often it kept the button out. It starts off and takes effect the next time Chats opens.

  • A new switch under Downloads, Quiet saves, turns off the toasts a save shows when it starts, finishes or is canceled (issue #142). A save that fails still tells you why, and the WhatsApp warning still shows when no notification carries it. It starts off.

Fixes

  • A save that fails now says why. The toast and the Last save row under Downloads used to give the same "try again" whatever went wrong. No connection, an expired link, a download cut short, too little free space, a video the phone couldn't put together and a gallery that wouldn't take the file each get their own message now. Anything else still gets the plain "Download failed" one.

  • Export settings saves one whole set of choices, even when you change something while the file is being written. It used to read your settings one by one in the background, so a Quick setup tapped at that moment, or a change to both word lists, could leave the file with some settings from before and some from after. That was a mix you never picked. Now it takes all of them the moment you choose where to save, and the file holds your settings as they were then. Exporting while paused still saves what you chose, and import works as it did.

  • If the settings screen is rebuilt while you're typing in its search box, the box keeps what you typed and gets the cursor back, and the screen asks for the keyboard again. Android 17 stopped bringing the keyboard back by itself after a change like a rotation, and the box never got its focus back on any version, so you had to tap it again.

  • A saved video whose track holds only empty samples now gets a size table other players can read. When every sample had the same size and that size was 0, the join wrote just the 0, which in an MP4 means "the sizes follow", and none did. An hour of fuzzing the joiner found it.

  • A video manifest that gives a track an empty type no longer lists it as a track. The track now takes its adaptation set's type, or is skipped when there's none to take. The parser fuzzer found this one too.

  • A saved video now carries only the sample descriptions its track counts. A few stray bytes after the last one used to be copied into the saved file, where players that read that box to its end could take them for another description. The fuzzer turned this one up on its second hour.

  • With Default comment order on All comments, a post's comments that come back as Most relevant or Newest after a refresh get All comments picked again (#110). The first pick held, but a reload Facebook built from the post's first request came back in its own order with nothing to pick it. It's picked once per answer, so a post where Facebook won't give All comments isn't asked over and over. A link to one comment still opens in Facebook's own view.

  • Keep the top bar on screen now keeps the bar from fading out too. Facebook fades the top bar as it scrolls away on some phones and accounts, and only the slide was held before, so the bar could stay put and still disappear.

  • With Picture-in-picture on, opening a Facebook link, a notification or a settings shortcut while a reel floats in its window brings Facebook back full screen on that page. The page used to open inside the little window and stay there until you tapped the app icon.

  • Hide link posts hides website links on 582. Facebook sends their preview card with a template style first and the plain link style second, and only the first one was checked, so these posts stayed in Home. A post goes now when its card lists the link style anywhere and the link leads off Facebook. Shared events and shared reels stay, and so does a photo post with a web address typed in its text.

  • With Hide the Meta AI button in Chats on, the box on Chats' search screen stops short of the screen's right edge again. Hiding the button took the box's end margin with it, so the box ran all the way to the edge. It now keeps the same gap as the search box at the top of Chats.

  • Morphe Manager lists every change of the release your Facebook was patched with, not just a short summary (issue #143). For that one release Manager shows the patch bundle's description instead of the changelog, and the description was a paragraph while every older release listed its changes. It now goes on with the release's changelog groups and bullets after the summary, starting with this release.

  • A reel that's waiting to play no longer shows where the last reel stopped (issues #90 and #120). Facebook moves one Reels progress bar from reel to reel, and only a playing reel updates it. So a reel held by Tap to play, or one whose video was slow to start, showed the last reel's bar position and, with Keep the progress bar, its time too. With either switch on, each reel's bar now starts at the beginning, and the time stays hidden until the reel plays and can show its own.

Other changes

  • Quick setups can be hidden from the settings home with a long press on its row, and its help line now says so. The Quick setups on the home page row on Pause, backup and diagnostics brings it back. Settings files and the Quick setups choices leave it alone.

  • The README's two settings screenshots come from 0.12.0 now, so the overview shows the Quick setups row.

  • The README's Facebook keeps closing section no longer says adb can make the pause file on Android 11. Android 11 refuses it with "Permission denied", so the section now points there to patching again without the suspect patch, signed with the same key, which keeps your sign-in and settings.

  • The release receipt records what each native library says about 16 KB pages in separate parts now (ZIP offsets, LOAD segments and RELRO ends, each library with its hash). It used to keep one flag that only spoke for the ZIP.

  • The Support Hushfacebook row at the bottom of settings is just its name now. The "Buy me a coffee on Ko-fi" line under it is gone, and a tap still opens the Ko-fi page.

  • A release now builds its commit a second time, in a fresh worktree, and compares that bundle with the staged one before anything is tagged. Every class, DEX file, extension payload and resource has to match by name and SHA-256, whatever the ZIP order or the timestamps say. What a bundle records about its own build used to be taken on its word. A checkout with other line endings still passes when the classes come out the same. scripts/release/release.ps1 -Stage rebuild runs it, publish won't go ahead for a bundle that wasn't compared, and it adds one build to a release.

  • The source census has a tested prototype for covering GitLab, which has no code search across every project to lean on. scripts/scan-gitlab-coverage.ps1 lists public projects up to a highest id it fixes at the start, pins each branch at its commit, reads each tree at that commit and keeps a ledger of every result, including the ones it couldn't read. It can stop anywhere and carry on from the ledger. A check that reads only the ledger says whether coverage is complete or lists what's still open, and a few known projects are checked a second way against GitLab directly. When GitLab says to slow down, every later run keeps to the wait it asked for, even when that came before a ledger existed or during the second check. It has only read those few projects so far, so the GitLab part of the census still isn't counted and the census still lists it as skipped.

  • Parser fuzzing runs build on each other now. scripts/fuzz-parsers.ps1 keeps the inputs Jazzer finds for each target under build/fuzz/corpus/, up to 4096 files and 64 MB, and starts the next run from them along with the seeds and the saved findings. Every run, clean or not, leaves a record of its seed, tool versions, commit, time, executions, coverage and corpus size, plus its full log. A clean run used to delete all of that. It only runs between 19:00 and 07:00 unless you pass -AllowDaytime, and exits 3 when it skips a run for the hour. A setup problem such as a JDK without javac now exits 2, like any other failure of the fuzzer itself. It could exit 1 before, which means a finding. Saved findings in tools/fuzz/regressions/ are marked binary for git, so a line ending conversion can't change the bytes they replay.

  • Block background ad prefetch now says which jobs it stops, the background ad downloads and the ad-ranking model, instead of promising data and battery savings. Short runs with and without it couldn't tell the two apart on data used, so that promise is off the README and the patch list until a longer measurement backs it.

Reported issues

  • #133 Mute reposts: the new Hide reposts switch under News feed keeps shared posts out of Home, whether the person sharing wrote something above them or not.

  • #142 Turning off the saving and saved toasts: Quiet saves under Downloads. A save that fails still tells you why.

  • #90 and #120 A reel's bar showing time before Play is tapped, and the bar starting where the last reel stopped: each reel's bar starts at the beginning now, and its time waits until that reel plays.

  • #126 Picture-in-picture display issue: a link, a notification or a settings shortcut that opens while a reel floats now brings Facebook back full screen instead of opening in the small window. The pink block you reported hasn't shown up on my phones, so if you still see it after updating, please say so on the issue.

  • #110 Comment sorting: All comments gets picked again when Facebook reloads a post's comments in its own order, and a link to one comment still opens in Facebook's view.

  • #132 Keep the top bar on screen: the kept bar doesn't fade out anymore on phones where Facebook fades it as it scrolls away.

  • #143 The changelog in Morphe Manager: Manager lists every change of the release you patched with, starting with this one.

  • #38 Saving photo Stories as pictures: a photo Story with music gets Save photo next to Save. None has been served to me yet, so please say on the issue whether it saves the picture for you.

Behind the scenes

  • The release facts check takes a GitHub description that says what the patches do without naming a release. It used to insist the description name the version, the patch count and the Facebook build. A description that does name any of them still has to name this release's.

The changelog has every earlier release too.

How to update

  1. Update Morphe Manager to 1.34.0 or newer, then refresh the Hushfacebook source.
  2. Patch Facebook 582.0.0.50.54. On most phones that's build 475417104, the arm64-v8a one. Phones with a 32-bit processor take build 475417036, the armeabi-v7a one.
  3. Install over your current patched Facebook with the manager's existing signing key. Keep that key so updates keep working.

The .mpp download is a patch bundle, not a Facebook APK. Installation instructions.

Look over a diagnostic report before you share it. The filter can still miss private text it doesn't recognize.

What was checked

Local checks passed: 2830 runtime tests and 936 patch tests with no failures, plus both Android lints and the release-script checks. All 88 patches applied without forcing to Facebook 582.0.0.50.54, both the arm64-v8a and the 32-bit build, and a second build of the same commit matched this bundle class by class. I patched 582 with this bundle and installed it over the build already on an Android 16 emulator. Facebook opened signed in on the first and second launch with no crash, and Hushfacebook settings showed 0.13.0. Pause and Resume each took effect through the restart row, which brought Facebook back to the same settings page. A full diagnostic report saved to Download/Hushfacebook, and a reel saved at 720p with sound. On a Samsung phone, a build with the same patch code passed the reel bar check: ten reels waiting for a tap each started with an empty bar and no time, and each showed its own time once it played. Always use Clean mode opened 140 reels in a row with the side buttons hidden on that phone too.

Don't miss a new HushFacebook release

NewReleases is sending notifications on new releases.