Repository navigation
v0.0.7
HushPinterest 0.0.7 has 27 patches for Pinterest 14.39.0. It's built on Morphe patcher 1.15.1, so it needs Morphe Manager 1.34.0 or newer. A patched Pinterest can now sign up for push notifications, which Google's Firebase used to refuse, and you can pick the folder your downloads go to. Hide ads also looks inside the rows of pins on Home and under a pin, and Hide shopping catches store product pins.
This release moves to Pinterest 14.39.0. Patch 14.39.0 and install it over your current HushPinterest with the same signing key, and your settings stay as they are.
What's new
- Pinterest 14.39.0 is now the supported version. All 27 patches apply to it, and 14.38.0 is no longer a target.
- New Fix push notifications patch, on by default. Google's Firebase service only signs Pinterest up for push notifications when the request names Pinterest's original signature, and a patched Pinterest is signed with a different one, so it never got a notification token. The patch gives Firebase the original signature's fingerprint when Pinterest signs up and changes nothing else in the request. Its switch is on the new Notifications page under More settings.
- Download pins has a new Save in Pinterest's folder switch, and it starts off. With it on, downloads go to Pictures/100PINT/Pins, the folder Pinterest's own image saves use, instead of filling up Download. Board downloads, long-press downloads and retries from Download history follow it too, and the download messages and Download history point to that folder instead of Downloads. (#5)
- Download pins can also save into a folder you pick. Tap Pick a download folder and choose any folder inside Pictures, DCIM, Download or Documents in Android's folder picker. Android's Downloads still does the saving, so nothing gets copied and no storage permission is needed. Each download in Download history remembers its folder, so its messages point there even after you pick another. Tap the row again to pick a different folder or go back to Download. Save in Pinterest's folder wins while it's on, and picking a folder turns it off. (#5)
- Long-press download keeps Pinterest's own buttons again. Holding a pin in a grid showed only Download, because Pinterest's Pin, Share and More ideas buttons never sprang back in after the patch laid the menu out again. Now all three show with Download after them, and letting go on any of them does what it says.
- System share sheet opens Android's share menu from a pin's Share button on 14.39.0. The pin's id is now read from the fields Pinterest's share sheet fills, found when you patch, instead of by a name that pointed somewhere else in 14.39.0, which left Pinterest's own sheet showing with the switch on.
- Hide advertising ID now keeps Pinterest's browser ID out of Google's Block Store too. Pinterest kept it there so that, on a phone with Google backup on, it would outlast an uninstall and come back on a new phone, which let a fresh install send the old ID before you'd signed in. With the switch on, Pinterest finds no saved ID, and when it tries to save one it deletes the stored copy instead, so a reinstall starts fresh. The browser cookie for the install you're using keeps working the way it did.
- The settings home ends with a Support HushPinterest row. Tapping it opens the Ko-fi page in your browser, and if no app can open it you get a message with the address instead. Its text is translated into German, Spanish, Indonesian, Brazilian Portuguese and Turkish.
- Download board no longer saves a board's pins a second time once they've dropped off Download history. The history still shows the newest 32 entries, and it now remembers the 500 before those. Removing a pin from Download history forgets its older downloads too.
- Morphe Manager and the patch index now show the HushPinterest icon next to the source instead of the owner's GitHub picture.
- Hide ads now looks inside modules. A row of ideas on Home or a group of pins under the pin you opened carries its own pins, and an ad in one got through because Hide ads only checked the row itself. Now the ad comes out of the row, and a row left with nothing in it goes too, heading and all. Hide AI-labeled pins and Hide shopping reach inside rows the same way. A pin that carries Pinterest's promotion or campaign ID also counts as an ad now. (#6)
- Hide shopping and product pins now hides a shop's product pins, the ones shown with a store name like Target or Nordstrom Rack and a tag icon under the picture. Pinterest doesn't mark them as paid, so Hide ads keeps leaving them alone, but they slipped past Hide shopping too. With Debug logging on, the diagnostic report also lists the shopping and ad fields of what stays, so a pin that still gets through can be tracked down. (#6)
- Hide ads now catches shopping spotlight stories on the feed models that keep the story kind as Pinterest's own type rather than as text. Before, only the text form counted, so a spotlight on those models stayed unless Hide shopping was on too. Other stories stay put, and Hide shopping still works on its own.
- If a Pinterest update leaves Hide ads only part of its hooks, the Feed page now names the feed lists and ad panels it couldn't reach instead of reading as if everything's covered. The diagnostic report lists every list and panel with how much of it went in, and names the two places no hook reaches yet (Shopping ideas groups in search results and shopping wrappers under related pins). A full build reads the same as before.
- Strip link tracking has a new Plain pin links switch on the Privacy page, and it starts off. With it on, a pin.it link you copy or share becomes the pin's own pinterest.com link, so it doesn't tell Pinterest who shared it. Links Pinterest makes for Copy link or a share change right away, even when you send a pin straight to another app, because HushPinterest sees which pin Pinterest made the link for. Any other short link you copy is checked with Pinterest in the background and swapped on the clipboard a moment later, as long as you haven't copied something else by then. Shared text never waits for that check, and if it fails or takes longer than 4 seconds the short link stays. A pin link from one of Pinterest's country sites, like de.pinterest.com or www.pinterest.co.uk, becomes the same www.pinterest.com link with no lookup, and a pin's sent link drops the invite code that ties it to whoever sent it. Board links and account pages stay as they are, and so does a pin link that still carries a parameter after tracking tags come off.
- HushPinterest settings has a new page under More settings, Pinterest's own settings. It shows where Pinterest keeps its own theme, privacy, notification, AI content and cellular autoplay settings, and names each step through Pinterest's menus in the language Pinterest is using. HushPinterest doesn't change any of them. The AI content row explains how it differs from Hide AI-labeled pins, and the autoplay row says Pinterest may still load part of a video ahead of time.
- HushPinterest drops its Android 9 code now that Pinterest 14.39.0 needs Android 10. The file picker saves go, along with their Pending saves page, and so does the app folder Android 9 used for diagnostic reports. Every download is handed to Android's Downloads, and a selection's summary no longer has a Saved line, since only the picker ever filled it.
- HushPinterest's short messages now show as Pinterest's own toasts. When a dialog is open, a message is long or has more than one line, or the Pinterest build's toast code isn't what the patch expects, they stay Android toasts.
Behind the scenes
- The release receipt, the patch verifier and the device lease now hold the patched app to Android 10 (API 29), the same floor the settings patch sets since the Android 9 code went. They still expected API 28, so a target whose own floor was below 29 would have failed the receipt.
- While a release hold keeps the published index behind source, the release check now wants the bug report form to name the published release with the Pinterest build it was made for. It used to pair the published version with source's newer build, a combination nobody filing a report would have.
- The privacy doc now follows Pinterest's launch event, which carries the full URL the app was opened with, to both of its uploads:
v3/callback/event/andv3/callback/track_funnel/{event}/. Disable analytics already stops both. - The privacy doc now lists every header Pinterest puts on its API requests, with where each value comes from and whether a patch covers it. The advertising ID header is the only one a patch changes today.
- The header table now explains the last two.
X-Pinterest-AppStateonly says whether the app is in front and online.X-Pinterest-Platform-BIDis Pinterest's_bbrowser cookie, which the app keeps in Google Block Store (backed up to the cloud when Block Store offers end-to-end encryption), so it can survive a reinstall or a move to a new phone. - The privacy doc now follows the install ID to all of its uses. Besides its own header it's Pinterest's signed-out ID, AppsFlyer's
unauth_id, and the ID on analytics, push and reCAPTCHA events. A signed-in emulator kept its session, feed and search after the ID was swapped for a fresh one, so no hook is planned for it. - System share sheet now checks, when you patch, that Pinterest gives a pin the share kind the patch makes pin links for. A build that numbers its kinds differently is refused instead of sharing a board's id as a pin link. The fixture tests cover that refusal and the two ways the sendable's constructor can stop naming its id and kind.
- Long-press download now checks that a menu button's detach handler really cancels the spring driver the patch clears, by finding the cancel call on that driver, not just a call that reads it. The fixture tests pin 14.39.0's spring fields and refuse a handler without the cancel.
- The patch verifier's System share and long-press checks now match the patch. The sendable's id and kind have to be its own fields written through itself, the springs reset needs a zero that isn't the button's register, and the spring driver has to be one the detach handler cancels.
scripts/test-app-inventory.ps1checks the inventory tool on two tiny real APKs inscripts/checks/inventory-fixture, every section and the diff between them, in PowerShell 7 and 5.1. The script contract suite runs it, andscripts/checks/build-inventory-fixtures.ps1rebuilds the APKs from their Java sources.- The Pinterest reference docs now describe 14.39.0. The APK facts, class and method names, endpoints and resource names were checked against the 14.39.0 build, with the old 14.38.0 name kept next to each one that moved. The patch reference covers all 27 patches. The signed-in screen survey and the runtime measurements are still the 14.38.0 runs, and the docs say so.
- The patch reference records the push sign-up check from a fresh emulator install. Without Fix push notifications, Firebase refused the sign-up with a 403. With it, the same install registered with Firebase.
- A fixture run that passes every check is now kept under a key made from the bundle, the APK, the patch selection and the hash of every verifier script, and a later run with the same key reuses it instead of patching Pinterest again. The release push gate patches each declared fixture once and the release receipt reads those runs.
scripts/patch-for-device.ps1can sign the gate's patched APK for a phone when its key matches. A changed input means a full run, and a failed run is never kept. - The push gate now runs the unit tests and lint in a quick Gradle pass before the fixture suite, so a broken test stops the push in minutes instead of after the Pinterest APK runs. Each pass waits for its own slot in the build queue.
- The script contract tests now parse every tracked PowerShell file, so a syntax slip in a script that only runs on a release or with a phone shows up on the next script push.
- Releases now run in stages from
scripts/release/release.ps1: prepare, preflight, gate, build and publish. Each stage checks that the one before it finished, and running one again after it's done changes nothing. The CHANGELOG cut refuses any bullet that isn't a one-line Pinterest or Tooling entry and names it. The GitHub notes carry every bullet of the section.publish-release.ps1pushes the index commit as soon as the release is up and ends withverify-published-index.ps1. The notes and index text come fromrelease_text.py, which has its own unit tests. (#3) scripts/app-inventory.ps1lists what a Pinterest build talks to and what it reads about the device. That covers its Retrofit endpoints with their verbs, the startup tasks, the hosts its code names, who opens connections, the SDK packages, and who reads the advertising ID, Android ID, install referrer or device identifiers. The lines come out sorted, with renamed packages written as~, so-BaseApkcan diff two builds. The privacy notes now carry the 14.39.0 inventory and what changed from 14.38.0.
Reported issues
Where each report on the tracker stands with this release.
- #6, ads getting through (@darenrue). Hide ads now checks inside the rows of pins on Home and under a pin you open, where an ad could slip past before. The store cards with a shop name and a tag icon, like the Target one in the report, aren't paid ads, so Hide ads leaves them.
Hide shopping and product pinsnow hides them, and it starts off, so turn it on under Feed. The issue stays open until it's confirmed on your phone. - #5, save downloads to a folder you choose (@boox3). New here.
Pick a download folderunder Pin actions saves pins straight into any folder in Pictures, DCIM, Download or Documents.Save in Pinterest's folderputs them in Pictures/100PINT/Pins with Pinterest's own saves. - #4, one patch source for every Hush app (@Stark-0505). Still open. HushPinterest is still its own source in this release.
- #3, matching the Morphe template's release setup (@Stark-0505). Partly in. The patch index now goes up in the same step as the release, so Morphe Manager offers the update as soon as it's out, and a check after every release confirms the index matches. Moving to the template's own release workflow is still open.
- #2, Download pin said Pinterest had no original image (@Stark-0505). Fixed in 0.0.5. Download pin gets the original image behind the size Pinterest shows.
Install
- Install Morphe Manager 1.34.0 or newer.
- Add HushPinterest as a patch source: https://morphe.software/add-source?github=SysAdminDoc%2FHushPinterest
- Download Pinterest 14.39.0, version code 14398020, as the universal APK, and patch it. It needs Android 10 or newer.
- Uninstall the stock Pinterest first, since Android won't put one over the other. Save anything you keep only on the phone before you do. Your boards and pins come back when you sign in.
- Sign in with your email and a Pinterest password. If you joined through Google or Facebook, tap Forgot your password? on Pinterest's login page to set one first.
- Right after your first patch, export Morphe Manager's signing key (Settings, then System, then Import & export, then Signing key) and keep it somewhere private. Updates only install over a Pinterest signed with that same key.
Already on HushPinterest? Skip steps 4 and 5. Patch 14.39.0 with the same key and install it over the one you have.
The .mpp download is a patch bundle, not a Pinterest APK. Installation instructions. SHA256SUMS.txt is signed with the HushPinterest release key, fingerprint FCE5 ECE3 182A 647B 3AF2 C5ED 2DC3 5E8D 5C00 E8A6. How to check a download.
Validation
All 204 patch tests and 702 extension tests passed on this commit, none skipped. The bundle attached here was patched onto a real Pinterest 14.39.0 APK with Morphe's desktop patcher, and all 27 patches applied without forcing. release-receipt-0.0.7.json records that result, the APK's hash and what patching changed in the app's manifest. Pick a download folder, the store pin filter and the module filter for Hide ads were also checked on a phone running this build's patches.