4 Commits
Author SHA1 Message Date
semantic-release-bot 5256b47f90 chore: Release v1.1.6 [skip ci]
## [1.1.6](http://gitea:3000/StanPonomarev/twitter-patch/compare/v1.1.5...v1.1.6) (2026-08-23)

### 🐛 Bug Fixes

* google update screen ([5d932b0](http://gitea:3000/StanPonomarev/twitter-patch/commit/5d932b06a9e63659a98cbc9b36c4fe17807acc39))
2026-08-23 10:17:13 +00:00
StanPonomarev 5d932b06a9 fix: google update screen
Release / Release (push) Successful in 57s
2026-08-23 12:16:13 +02:00
semantic-release-bot 076f1c2479 chore: Release v1.1.5 [skip ci]
## [1.1.5](http://gitea:3000/StanPonomarev/twitter-patch/compare/v1.1.4...v1.1.5) (2026-08-23)

### 🐛 Bug Fixes

* vending update screen ([48f0cec](http://gitea:3000/StanPonomarev/twitter-patch/commit/48f0cecbe47d73ee06c15915d5c57694856b904e))
2026-08-23 05:14:55 +00:00
StanPonomarev 48f0cecbe4 fix: vending update screen
Release / Release (push) Successful in 56s
2026-08-23 07:14:00 +02:00
6 changed files with 83 additions and 7 deletions
+12
View File
@@ -1,3 +1,15 @@
## [1.1.6](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.5...v1.1.6) (2026-08-23)
### 🐛 Bug Fixes
* google update screen ([5d932b0](https://git.krtss.de/StanPonomarev/twitter-patch/commit/5d932b06a9e63659a98cbc9b36c4fe17807acc39))
## [1.1.5](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.4...v1.1.5) (2026-08-23)
### 🐛 Bug Fixes
* vending update screen ([48f0cec](https://git.krtss.de/StanPonomarev/twitter-patch/commit/48f0cecbe47d73ee06c15915d5c57694856b904e))
## [1.1.4](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.3...v1.1.4) (2026-08-22) ## [1.1.4](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.3...v1.1.4) (2026-08-22)
### 🐛 Bug Fixes ### 🐛 Bug Fixes
+1 -1
View File
@@ -4,7 +4,7 @@ Patch bundle for X (Twitter), maintained by
[Stan Ponomarev](https://git.krtss.de/StanPonomarev). [Stan Ponomarev](https://git.krtss.de/StanPonomarev).
<!-- PATCHES_START --> <!-- PATCHES_START -->
> **[v1.1.4](https://git.krtss.de/StanPonomarev/twitter-patch/releases/tag/v1.1.4)**&nbsp;&nbsp;•&nbsp;&nbsp;`main`&nbsp;&nbsp;•&nbsp;&nbsp;2 patches total > **[v1.1.6](https://git.krtss.de/StanPonomarev/twitter-patch/releases/tag/v1.1.6)**&nbsp;&nbsp;•&nbsp;&nbsp;`main`&nbsp;&nbsp;•&nbsp;&nbsp;2 patches total
<details open> <details open>
<summary>📦 X&nbsp;&nbsp;•&nbsp;&nbsp;2 patches</summary> <summary>📦 X&nbsp;&nbsp;•&nbsp;&nbsp;2 patches</summary>
<br> <br>
+1 -1
View File
@@ -1,4 +1,4 @@
org.gradle.parallel = true org.gradle.parallel = true
org.gradle.caching = true org.gradle.caching = true
kotlin.code.style = official kotlin.code.style = official
version = 1.1.4 version = 1.1.6
+4 -4
View File
@@ -1,7 +1,7 @@
{ {
"created_at": "2026-08-22T19:19:24", "created_at": "2026-08-23T10:17:01",
"description": "## [1.1.4](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.3...v1.1.4) (2026-08-22)\n\n### 🐛 Bug Fixes\n\n* more update required fixes ([97c30af](https://git.krtss.de/StanPonomarev/twitter-patch/commit/97c30af97d00e7f92b5c2801e9e744f00704758a))", "description": "## [1.1.6](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.5...v1.1.6) (2026-08-23)\n\n### 🐛 Bug Fixes\n\n* google update screen ([5d932b0](https://git.krtss.de/StanPonomarev/twitter-patch/commit/5d932b06a9e63659a98cbc9b36c4fe17807acc39))",
"download_url": "https://git.krtss.de/StanPonomarev/twitter-patch/releases/download/v1.1.4/patches-1.1.4.mpp", "download_url": "https://git.krtss.de/StanPonomarev/twitter-patch/releases/download/v1.1.6/patches-1.1.6.mpp",
"signature_download_url": "", "signature_download_url": "",
"version": "1.1.4" "version": "1.1.6"
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"NOTE": "Do NOT manually edit this file. This file is automatically updated when semantic release (release.yml) runs. Manually editing this file can break your releases and break third party tools that use this file.", "NOTE": "Do NOT manually edit this file. This file is automatically updated when semantic release (release.yml) runs. Manually editing this file can break your releases and break third party tools that use this file.",
"version": "1.1.4", "version": "1.1.6",
"patches": [ "patches": [
{ {
"name": "Disable outdated version screen", "name": "Disable outdated version screen",
@@ -84,6 +84,27 @@ private val forceUpdateScreenRendererFingerprint = Fingerprint(
strings = listOf("onUpdateClick", "onLearnMoreClick") strings = listOf("onUpdateClick", "onLearnMoreClick")
) )
private val playCoreUpdateManagerFingerprint = Fingerprint(
definingClass = "Lcom/x/android/appupdate/b${'$'}a;",
name = "invokeSuspend",
returnType = "Ljava/lang/Object;",
parameters = listOf("Ljava/lang/Object;"),
strings = listOf("x_lite_in_app_update_enabled")
)
private val serverDrivenCoverRendererFingerprint = Fingerprint(
definingClass = "Lcom/x/urt/cover/ui/j;",
name = "a",
returnType = "V",
parameters = listOf(
"Lcom/x/urt/cover/component/e;",
"Landroidx/compose/ui/Modifier;",
"Landroidx/compose/runtime/Composer;",
"I"
),
strings = listOf("component")
)
private const val APP_UPDATE_ACTIVITY = "com.twitter.clientshutdown.update.AppUpdateActivity" private const val APP_UPDATE_ACTIVITY = "com.twitter.clientshutdown.update.AppUpdateActivity"
private val disableOutdatedVersionActivityPatch = resourcePatch { private val disableOutdatedVersionActivityPatch = resourcePatch {
@@ -179,5 +200,48 @@ val disableOutdatedVersionScreenPatch = bytecodePatch(
0, 0,
"return-void" "return-void"
) )
playCoreUpdateManagerFingerprint.method.addInstructions(
0,
"""
sget-object v0, Lkotlin/Unit;->a:Lkotlin/Unit;
return-object v0
"""
)
serverDrivenCoverRendererFingerprint.method.addInstructions(
0,
"""
move-object/from16 v0, p0
invoke-interface {v0}, Lcom/x/urt/cover/component/e;->a()Lcom/x/models/timelines/instructions/cover/URTCover;
move-result-object v0
instance-of v1, v0, Lcom/x/models/timelines/instructions/cover/URTCover${'$'}FullCover;
if-eqz v1, :check_outdated_half_cover
check-cast v0, Lcom/x/models/timelines/instructions/cover/URTCover${'$'}FullCover;
invoke-virtual {v0}, Lcom/x/models/timelines/instructions/cover/URTCover${'$'}FullCover;->getData()Lcom/x/models/timelines/instructions/cover/URTFullCover;
move-result-object v0
invoke-virtual {v0}, Lcom/x/models/timelines/instructions/cover/URTFullCover;->getPrimaryText()Lcom/x/models/text/RichText;
move-result-object v0
goto :check_outdated_cover_title
:check_outdated_half_cover
instance-of v1, v0, Lcom/x/models/timelines/instructions/cover/URTCover${'$'}HalfCover;
if-eqz v1, :outdated_server_cover_allowed
check-cast v0, Lcom/x/models/timelines/instructions/cover/URTCover${'$'}HalfCover;
invoke-virtual {v0}, Lcom/x/models/timelines/instructions/cover/URTCover${'$'}HalfCover;->getData()Lcom/x/models/timelines/instructions/cover/URTHalfCover;
move-result-object v0
invoke-virtual {v0}, Lcom/x/models/timelines/instructions/cover/URTHalfCover;->getPrimaryText()Lcom/x/models/text/RichText;
move-result-object v0
:check_outdated_cover_title
invoke-virtual {v0}, Lcom/x/models/text/RichText;->getText()Ljava/lang/String;
move-result-object v0
const-string v1, "This app is out of date."
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :outdated_server_cover_allowed
return-void
:outdated_server_cover_allowed
"""
)
} }
} }