Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
076f1c2479 | ||
|
|
48f0cecbe4 | ||
|
|
015ce16efc | ||
|
|
97c30af97d | ||
|
|
7727f37a18 | ||
|
|
1985bf307b | ||
|
|
351917cbbd | ||
|
|
7062792215 |
@@ -1,3 +1,27 @@
|
|||||||
|
## [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)
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
* more update required fixes ([97c30af](https://git.krtss.de/StanPonomarev/twitter-patch/commit/97c30af97d00e7f92b5c2801e9e744f00704758a))
|
||||||
|
|
||||||
|
## [1.1.3](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.2...v1.1.3) (2026-08-22)
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
* xchat shutting down the app ([1985bf3](https://git.krtss.de/StanPonomarev/twitter-patch/commit/1985bf307b4552655216079082757a53af00140b))
|
||||||
|
|
||||||
|
## [1.1.2](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.1...v1.1.2) (2026-08-22)
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
* manifest ([7062792](https://git.krtss.de/StanPonomarev/twitter-patch/commit/7062792215590cce79caa6e78354ee73375eaa79))
|
||||||
|
|
||||||
## [1.1.1](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.0...v1.1.1) (2026-08-21)
|
## [1.1.1](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.0...v1.1.1) (2026-08-21)
|
||||||
|
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
|
|||||||
@@ -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.1](https://git.krtss.de/StanPonomarev/twitter-patch/releases/tag/v1.1.1)** • `main` • 2 patches total
|
> **[v1.1.5](https://git.krtss.de/StanPonomarev/twitter-patch/releases/tag/v1.1.5)** • `main` • 2 patches total
|
||||||
<details open>
|
<details open>
|
||||||
<summary>📦 X • 2 patches</summary>
|
<summary>📦 X • 2 patches</summary>
|
||||||
<br>
|
<br>
|
||||||
|
|||||||
+1
-1
@@ -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.1
|
version = 1.1.5
|
||||||
|
|||||||
+4
-4
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"created_at": "2026-08-21T23:29:59",
|
"created_at": "2026-08-23T05:14:44",
|
||||||
"description": "## [1.1.1](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.0...v1.1.1) (2026-08-21)\n\n### 🐛 Bug Fixes\n\n* update screen ([cb1230a](https://git.krtss.de/StanPonomarev/twitter-patch/commit/cb1230a7abf46edb11f2b8dad100b091dd672aee))",
|
"description": "## [1.1.5](https://git.krtss.de/StanPonomarev/twitter-patch/compare/v1.1.4...v1.1.5) (2026-08-23)\n\n### 🐛 Bug Fixes\n\n* vending update screen ([48f0cec](https://git.krtss.de/StanPonomarev/twitter-patch/commit/48f0cecbe47d73ee06c15915d5c57694856b904e))",
|
||||||
"download_url": "https://git.krtss.de/StanPonomarev/twitter-patch/releases/download/v1.1.1/patches-1.1.1.mpp",
|
"download_url": "https://git.krtss.de/StanPonomarev/twitter-patch/releases/download/v1.1.5/patches-1.1.5.mpp",
|
||||||
"signature_download_url": "",
|
"signature_download_url": "",
|
||||||
"version": "1.1.1"
|
"version": "1.1.5"
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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.1",
|
"version": "1.1.5",
|
||||||
"patches": [
|
"patches": [
|
||||||
{
|
{
|
||||||
"name": "Disable outdated version screen",
|
"name": "Disable outdated version screen",
|
||||||
|
|||||||
@@ -57,9 +57,42 @@ private val shutdownStateFingerprint = Fingerprint(
|
|||||||
parameters = emptyList()
|
parameters = emptyList()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private val appUpdateScreenRendererFingerprint = Fingerprint(
|
||||||
|
definingClass = "Lcom/twitter/clientshutdown/update/j;",
|
||||||
|
name = "<init>",
|
||||||
|
returnType = "V",
|
||||||
|
parameters = listOf(
|
||||||
|
"Landroid/view/View;",
|
||||||
|
"Landroid/app/Activity;",
|
||||||
|
"Lcom/twitter/app/common/activity/b;",
|
||||||
|
"Lcom/twitter/subsystem/clientshutdown/api/c;"
|
||||||
|
),
|
||||||
|
strings = listOf("rootView", "activityFinisher", "eventLogHelper")
|
||||||
|
)
|
||||||
|
|
||||||
|
private val forceUpdateScreenRendererFingerprint = Fingerprint(
|
||||||
|
definingClass = "Lcom/x/forceupdate/g;",
|
||||||
|
name = "a",
|
||||||
|
returnType = "V",
|
||||||
|
parameters = listOf(
|
||||||
|
"Lkotlin/jvm/functions/Function0;",
|
||||||
|
"Lkotlin/jvm/functions/Function1;",
|
||||||
|
"Landroidx/compose/ui/Modifier;",
|
||||||
|
"Landroidx/compose/runtime/Composer;",
|
||||||
|
"I"
|
||||||
|
),
|
||||||
|
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 const val APP_UPDATE_ACTIVITY = "com.twitter.clientshutdown.update.AppUpdateActivity"
|
private const val APP_UPDATE_ACTIVITY = "com.twitter.clientshutdown.update.AppUpdateActivity"
|
||||||
private const val APP_UPDATE_ACTIVITY_ALIAS = "com.twitter.clientshutdown.update.AppUpdateActivityAlias"
|
|
||||||
private const val START_ACTIVITY = "com.twitter.android.StartActivity"
|
|
||||||
|
|
||||||
private val disableOutdatedVersionActivityPatch = resourcePatch {
|
private val disableOutdatedVersionActivityPatch = resourcePatch {
|
||||||
execute {
|
execute {
|
||||||
@@ -73,16 +106,6 @@ private val disableOutdatedVersionActivityPatch = resourcePatch {
|
|||||||
.single { it.getAttribute("android:name") == APP_UPDATE_ACTIVITY }
|
.single { it.getAttribute("android:name") == APP_UPDATE_ACTIVITY }
|
||||||
}
|
}
|
||||||
appUpdateActivity.setAttribute("android:enabled", "false")
|
appUpdateActivity.setAttribute("android:enabled", "false")
|
||||||
|
|
||||||
val appUpdateActivityAlias = document.getElementsByTagName("activity-alias")
|
|
||||||
.let { aliases ->
|
|
||||||
(0 until aliases.length)
|
|
||||||
.asSequence()
|
|
||||||
.map { aliases.item(it) }
|
|
||||||
.filterIsInstance<Element>()
|
|
||||||
.single { it.getAttribute("android:name") == APP_UPDATE_ACTIVITY_ALIAS }
|
|
||||||
}
|
|
||||||
appUpdateActivityAlias.setAttribute("android:targetActivity", START_ACTIVITY)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,7 +119,6 @@ val disableOutdatedVersionScreenPatch = bytecodePatch(
|
|||||||
compatibleWith(COMPATIBILITY_X)
|
compatibleWith(COMPATIBILITY_X)
|
||||||
dependsOn(disableOutdatedVersionActivityPatch)
|
dependsOn(disableOutdatedVersionActivityPatch)
|
||||||
|
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
forceUpdateNavigationFingerprint.method.addInstructions(
|
forceUpdateNavigationFingerprint.method.addInstructions(
|
||||||
0,
|
0,
|
||||||
@@ -128,7 +150,10 @@ val disableOutdatedVersionScreenPatch = bytecodePatch(
|
|||||||
|
|
||||||
shutdownEntryPointDisablerFingerprint.method.addInstructions(
|
shutdownEntryPointDisablerFingerprint.method.addInstructions(
|
||||||
0,
|
0,
|
||||||
"return-void"
|
"""
|
||||||
|
invoke-virtual {p0}, Lcom/twitter/subsystem/clientshutdown/i;->c()V
|
||||||
|
return-void
|
||||||
|
"""
|
||||||
)
|
)
|
||||||
outdatedVersionEnforcementFingerprint.method.addInstructions(
|
outdatedVersionEnforcementFingerprint.method.addInstructions(
|
||||||
0,
|
0,
|
||||||
@@ -145,5 +170,31 @@ val disableOutdatedVersionScreenPatch = bytecodePatch(
|
|||||||
return v0
|
return v0
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
appUpdateScreenRendererFingerprint.method.addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
new-instance v0, Lcom/twitter/subsystem/clientshutdown/a;
|
||||||
|
invoke-direct {v0, p2}, Lcom/twitter/subsystem/clientshutdown/a;-><init>(Landroid/content/Context;)V
|
||||||
|
const/4 v1, 0x2
|
||||||
|
const-string v2, "com.twitter.clientshutdown.update.AppUpdateActivityAlias"
|
||||||
|
invoke-virtual {v0, v1, v2}, Lcom/twitter/subsystem/clientshutdown/a;->b(ILjava/lang/String;)V
|
||||||
|
invoke-virtual {p2}, Landroid/app/Activity;->finish()V
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
forceUpdateScreenRendererFingerprint.method.addInstructions(
|
||||||
|
0,
|
||||||
|
"return-void"
|
||||||
|
)
|
||||||
|
|
||||||
|
playCoreUpdateManagerFingerprint.method.addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
sget-object v0, Lkotlin/Unit;->a:Lkotlin/Unit;
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user