From d21801c05e4829dbda3e2c2727803162d0bda599 Mon Sep 17 00:00:00 2001 From: Cristiandis <112336919+Cristiandis@users.noreply.github.com> Date: Sat, 14 Sep 2024 23:09:09 +0200 Subject: [PATCH 01/12] feat: change to support Revenge Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Palm --- .vscode/settings.json | 3 +- Makefile | 12 ++-- Package.swift | 12 ++-- README.md | 22 +++---- Resources/payload-base.js | 12 ++-- BunnyTweak.plist => RevengeTweak.plist | 0 .../Fonts.x.swift | 28 ++++----- .../LoaderConfig.x.swift | 8 +-- .../Themes.x.swift | 26 ++++----- .../Tweak.x.swift | 46 +++++++-------- .../Utils.x.swift | 6 +- .../{BunnyTweakC => RevengeTweakC}/Tweak.m | 0 .../include/RCTCxxBridge.h | 0 .../include/Tweak.h | 0 .../include/module.modulemap | 2 +- app-repo.json | 58 +++---------------- control | 12 ++-- 17 files changed, 103 insertions(+), 144 deletions(-) rename BunnyTweak.plist => RevengeTweak.plist (100%) rename Sources/{BunnyTweak => RevengeTweak}/Fonts.x.swift (83%) rename Sources/{BunnyTweak => RevengeTweak}/LoaderConfig.x.swift (77%) rename Sources/{BunnyTweak => RevengeTweak}/Themes.x.swift (81%) rename Sources/{BunnyTweak => RevengeTweak}/Tweak.x.swift (73%) rename Sources/{BunnyTweak => RevengeTweak}/Utils.x.swift (98%) rename Sources/{BunnyTweakC => RevengeTweakC}/Tweak.m (100%) rename Sources/{BunnyTweakC => RevengeTweakC}/include/RCTCxxBridge.h (100%) rename Sources/{BunnyTweakC => RevengeTweakC}/include/Tweak.h (100%) rename Sources/{BunnyTweakC => RevengeTweakC}/include/module.modulemap (58%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 22a409b..1ecac48 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,5 +3,6 @@ "MD029": false, "MD033": false, "MD045": false, - } + }, + "deepscan.ignoreConfirmWarning": true } diff --git a/Makefile b/Makefile index 0b88da2..45f6666 100644 --- a/Makefile +++ b/Makefile @@ -7,13 +7,13 @@ endif include $(THEOS)/makefiles/common.mk -TWEAK_NAME = BunnyTweak +TWEAK_NAME = RevengeTweak -BunnyTweak_FILES = $(shell find Sources/BunnyTweak -name '*.swift') $(shell find Sources/BunnyTweakC -name '*.m' -o -name '*.c' -o -name '*.mm' -o -name '*.cpp') -BunnyTweak_SWIFTFLAGS = -ISources/BunnyTweakC/include -BunnyTweak_CFLAGS = -fobjc-arc -ISources/BunnyTweakC/include +RevengeTweak_FILES = $(shell find Sources/RevengeTweak -name '*.swift') $(shell find Sources/RevengeTweakC -name '*.m' -o -name '*.c' -o -name '*.mm' -o -name '*.cpp') +RevengeTweak_SWIFTFLAGS = -ISources/RevengeTweakC/include +RevengeTweak_CFLAGS = -fobjc-arc -ISources/RevengeTweakC/include -BunnyTweak_BUNDLE_NAME = BunnyPatches -BunnyTweak_BUNDLE_RESOURCE_DIRS = Resources +RevengeTweak_BUNDLE_NAME = RevengePatches +RevengeTweak_BUNDLE_RESOURCE_DIRS = Resources include $(THEOS_MAKE_PATH)/tweak.mk diff --git a/Package.swift b/Package.swift index 1e010ca..0be3afc 100644 --- a/Package.swift +++ b/Package.swift @@ -65,23 +65,23 @@ let swiftFlags: [String] = libFlags + [ ] let package = Package( - name: "BunnyTweak", + name: "RevengeTweak", platforms: [.iOS(deploymentTarget)], products: [ .library( - name: "BunnyTweak", - targets: ["BunnyTweak"] + name: "RevengeTweak", + targets: ["RevengeTweak"] ), ], targets: [ .target( - name: "BunnyTweakC", + name: "RevengeTweakC", cSettings: [.unsafeFlags(cFlags)], cxxSettings: [.unsafeFlags(cxxFlags)] ), .target( - name: "BunnyTweak", - dependencies: ["BunnyTweakC"], + name: "RevengeTweak", + dependencies: ["RevengeTweakC"], swiftSettings: [.unsafeFlags(swiftFlags)] ), ] diff --git a/README.md b/README.md index 5203363..fee3d00 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -# BunnyTweak +# RevengeTweak -Tweak to inject [Bunny](https://github.com/pyoncord/Bunny) into Discord. Forked [VendettaTweak](https://github.com/vendetta-mod/VendettaTweak), modified to match with [BunnyXposed](https://github.com/pyoncord/BunnyXposed) behavior. There are still slight differences between these two, and this tweak may be missing some loader features. +Tweak to inject [Revenge](https://github.com/revenge-mod/Revenge) into Discord. Forked [BunnyTweak](https://github.com/pyoncord/BunnyTweak), modified to match with [RevengeXposed](https://github.com/revenge-mod/RevengeXposed) behavior. There are still slight differences between these two, and this tweak may be missing some loader features. > [!NOTE] > As of right now this tweak does not encompass some functionalities when running in a jailed environment with a wildcard certificate \ > If you value these features sign the application with a local dev certificate: > - setAlternateAppIcon does not work, thus breaking dynamic app icons -> - sharing files to the application/selecting items via the Files app does not work +> - sharing files to the application/selecting items via the Files app does not work ## Installation -Builds can be found in the [Releases](https://github.com/pyoncord/BunnyTweak/releases/latest) tab. +Builds can be found in the [Releases](https://github.com/revenge-mod/RevengeTweak/releases/latest) tab. > [!NOTE] > Raw decrypted IPAs which are used to provide prepatched IPAs are sourced from the [Enmity](https://github.com/enmity-mod/) community. These raw decrypted IPAs are also used throughout Enmity related projects such as [enmity-mod/tweak](https://github.com/enmity-mod/tweak/) and [acquitelol/rosiecord](https://github.com/acquitelol/rosiecord).\ @@ -19,7 +19,7 @@ Builds can be found in the [Releases](https://github.com/pyoncord/BunnyTweak/rel ### Jailbroken 1. Install the Orion runtime via your preferred package manager, by adding `https://repo.chariz.com/` to your sources, then finding `Orion Runtime`. -1. Install Bunny by downloading the appropriate Debian package (or by building your own, see [Building BunnyTweak locally](#building-bunnytweak-locally)) and adding it to your package manager. Use the file ending in `arm.deb` for rootful jailbreaks, and the file ending in `arm64.deb` for rootless jailbreaks. +1. Install Revenge by downloading the appropriate Debian package (or by building your own, see [Building RevengeTweak locally](#building-revengetweak-locally)) and adding it to your package manager. Use the file ending in `arm.deb` for rootful jailbreaks, and the file ending in `arm64.deb` for rootless jailbreaks. ### Jailed @@ -29,9 +29,9 @@ Builds can be found in the [Releases](https://github.com/pyoncord/BunnyTweak/rel > [!NOTE] > TrollStore may display an encryption warning, which you can disregard. -1. Download and install [Bunny.ipa](https://github.com/pyoncord/BunnyTweak/releases/latest/download/Bunny.ipa) using your preferred sideloading method. +1. Download and install [Revenge.ipa](https://github.com/revenge-mod/RevengeTweak/releases/latest/download/Revenge.ipa) using your preferred sideloading method. -## Building BunnyTweak locally +## Building RevengeTweak locally > [!NOTE] > These steps assume you use MacOS. @@ -42,7 +42,7 @@ Builds can be found in the [Releases](https://github.com/pyoncord/BunnyTweak/rel 2. Install the required dependencies. You can do this by running `brew install make ldid` in your terminal. If you do not have brew installed, follow the instructions [here](https://brew.sh/). -3. Setup your path accordingly. We recommend you run the following before running the next commands, as well as any time you want to build BunnyTweak. +3. Setup your path accordingly. We recommend you run the following before running the next commands, as well as any time you want to build RevengeTweak. ```bash export PATH="$(brew --prefix make)/libexec/gnubin:$PATH" @@ -58,9 +58,9 @@ bash -c "$(curl -fsSL https://raw.githubusercontent.com/theos/theos/master/bin/i If you've already installed theos, you can run `$THEOS/bin/update-theos` to make sure it's up to date. -5. Clone this repository with `git clone git@github.com:pyoncord/BunnyTweak.git` and `cd` into it. Replace the URL with your fork if you've forked this repository. +5. Clone this repository with `git clone git@github.com:revenge-mod/RevengeTweak.git` and `cd` into it. Replace the URL with your fork if you've forked this repository. -6. To build BunnyTweak, you can run `rm -rf packages && make clean && make package FINALPACKAGE=1 && make package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless`. The first command will remove any previous packages, the second will clean the project, the third will build the rootful package (which is denoted by the `arm.deb` ending), and the fourth will build the rootless package (which is denoted by the `arm64.deb` ending). +6. To build RevengeTweak, you can run `rm -rf packages && make clean && make package FINALPACKAGE=1 && make package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless`. The first command will remove any previous packages, the second will clean the project, the third will build the rootful package (which is denoted by the `arm.deb` ending), and the fourth will build the rootless package (which is denoted by the `arm64.deb` ending). The first time you run this, it might take a bit longer, but subsequent builds should be much faster. @@ -68,7 +68,7 @@ The resulting `.deb` files will be in the `packages` folder. As a reminder, `*ar ## Contributing -If you want to contribute, you will basically need to follow the steps for [Building BunnyTweak locally](#building-bunnytweak-locally), as well as run `make spm` for the Swift LSP to work. +If you want to contribute, you will basically need to follow the steps for [Building RevengeTweak locally](#building-revengetweak-locally), as well as run `make spm` for the Swift LSP to work. diff --git a/Resources/payload-base.js b/Resources/payload-base.js index 298e5af..c9c9696 100644 --- a/Resources/payload-base.js +++ b/Resources/payload-base.js @@ -1,7 +1,7 @@ globalThis.__PYON_LOADER__ = { - loaderName: "BunnyTweak", - loaderVersion: "0.3.1", - hasThemeSupport: true, - storedTheme: null, - fontPatch: 2 -} + loaderName: "RevengeTweak", + loaderVersion: "1.0.0", + hasThemeSupport: true, + storedTheme: null, + fontPatch: 2, +}; diff --git a/BunnyTweak.plist b/RevengeTweak.plist similarity index 100% rename from BunnyTweak.plist rename to RevengeTweak.plist diff --git a/Sources/BunnyTweak/Fonts.x.swift b/Sources/RevengeTweak/Fonts.x.swift similarity index 83% rename from Sources/BunnyTweak/Fonts.x.swift rename to Sources/RevengeTweak/Fonts.x.swift index acb6b16..9fabe58 100644 --- a/Sources/BunnyTweak/Fonts.x.swift +++ b/Sources/RevengeTweak/Fonts.x.swift @@ -1,4 +1,4 @@ -import BunnyTweakC +import RevengeTweakC import Orion import UIKit import os @@ -32,14 +32,14 @@ class FontsHook: ClassHook { return orig.fontWithDescriptor(finalDescriptor, size: size) } - + return orig.fontWithDescriptor(descriptor, size: size) } } func patchFonts(_ main: [String: String], fontDefName: String) { for (fontName, url) in main { - os_log("Replacing font %{public}@ with URL: %{public}@", log: bunnyLog, type: .info, fontName, url) + os_log("Replacing font %{public}@ with URL: %{public}@", log: revengeLog, type: .info, fontName, url) let fontExtension = URL(string: url)!.pathExtension let fontCachePath = pyoncordDirectory @@ -49,26 +49,26 @@ func patchFonts(_ main: [String: String], fontDefName: String) { .appendingPathComponent("\(fontName).\(fontExtension)") do { - os_log("Attempting to register font %{public}@ from %{public}@", log: bunnyLog, type: .info, fontName, url) + os_log("Attempting to register font %{public}@ from %{public}@", log: revengeLog, type: .info, fontName, url) let parent = fontCachePath.deletingLastPathComponent() if !FileManager.default.fileExists(atPath: parent.path) { - os_log("Creating parent directory: %{public}@", log: bunnyLog, type: .debug, parent.path) + os_log("Creating parent directory: %{public}@", log: revengeLog, type: .debug, parent.path) try FileManager.default.createDirectory( at: parent, withIntermediateDirectories: true, attributes: nil) } // JS side should download these already, but just in case... if !FileManager.default.fileExists(atPath: fontCachePath.path) { - os_log("Downloading font %{public}@ from %{public}@", log: bunnyLog, type: .debug, fontName, url) + os_log("Downloading font %{public}@ from %{public}@", log: revengeLog, type: .debug, fontName, url) if let data = try? Data(contentsOf: URL(string: url)!) { - os_log("Writing font data to: %{public}@", log: bunnyLog, type: .debug, fontCachePath.path) + os_log("Writing font data to: %{public}@", log: revengeLog, type: .debug, fontCachePath.path) try? data.write(to: fontCachePath) } } if let data = try? Data(contentsOf: fontCachePath) { - os_log("Registering font %{public}@ with provider", log: bunnyLog, type: .debug, fontName) + os_log("Registering font %{public}@ with provider", log: revengeLog, type: .debug, fontName) let provider = CGDataProvider(data: data as CFData) let font = CGFont(provider!) var error: Unmanaged? @@ -77,7 +77,7 @@ func patchFonts(_ main: [String: String], fontDefName: String) { if let existingFont = CGFont(font!.postScriptName!) { var unregisterError: Unmanaged? if !CTFontManagerUnregisterGraphicsFont(existingFont, &unregisterError) { - os_log("Failed to deregister font %{public}@: %{public}@", log: bunnyLog, type: .error, + os_log("Failed to deregister font %{public}@: %{public}@", log: revengeLog, type: .error, font!.postScriptName! as String, String(describing: unregisterError!.takeUnretainedValue())) } @@ -85,15 +85,15 @@ func patchFonts(_ main: [String: String], fontDefName: String) { if CTFontManagerRegisterGraphicsFont(font!, &error) { fontMap[fontName] = font!.postScriptName! as String - os_log("Successfully registered font %{public}@ to %{public}@", log: bunnyLog, type: .info, fontName, font!.postScriptName! as String) + os_log("Successfully registered font %{public}@ to %{public}@", log: revengeLog, type: .info, fontName, font!.postScriptName! as String) } else { - os_log("Failed to register font %{public}@: %{public}@", log: bunnyLog, type: .error, fontName, String(describing: error!.takeUnretainedValue())) + os_log("Failed to register font %{public}@: %{public}@", log: revengeLog, type: .error, fontName, String(describing: error!.takeUnretainedValue())) } } else { - os_log("Failed to read font data from: %{public}@", log: bunnyLog, type: .error, fontCachePath.path) + os_log("Failed to read font data from: %{public}@", log: revengeLog, type: .error, fontCachePath.path) } } catch { - os_log("Failed to register font %{public}@: %{public}@", log: bunnyLog, type: .error, fontName, error.localizedDescription) + os_log("Failed to register font %{public}@: %{public}@", log: revengeLog, type: .error, fontName, error.localizedDescription) } } -} \ No newline at end of file +} diff --git a/Sources/BunnyTweak/LoaderConfig.x.swift b/Sources/RevengeTweak/LoaderConfig.x.swift similarity index 77% rename from Sources/BunnyTweak/LoaderConfig.x.swift rename to Sources/RevengeTweak/LoaderConfig.x.swift index 729e3ba..aef8ad3 100644 --- a/Sources/BunnyTweak/LoaderConfig.x.swift +++ b/Sources/RevengeTweak/LoaderConfig.x.swift @@ -17,7 +17,7 @@ struct LoaderConfig: Codable { let defaultLoaderConfig = LoaderConfig( customLoadUrl: CustomLoadUrl( enabled: false, - url: URL(string: "http://localhost:4040/bunny.js")! + url: URL(string: "http://localhost:4040/revenge.js")! ) ) @@ -25,7 +25,7 @@ let pyoncordDirectory = getPyoncordDirectory() let loaderConfigUrl = pyoncordDirectory.appendingPathComponent("loader.json") func getLoaderConfig() -> LoaderConfig { - os_log("Getting loader config", log: bunnyLog, type: .debug) + os_log("Getting loader config", log: revengeLog, type: .debug) let fileManager = FileManager.default do { @@ -33,14 +33,14 @@ func getLoaderConfig() -> LoaderConfig { let data = try Data(contentsOf: loaderConfigUrl) let loaderConfig = try JSONDecoder().decode(LoaderConfig.self, from: data) - os_log("Got loader config", log: bunnyLog, type: .debug) + os_log("Got loader config", log: revengeLog, type: .debug) return loaderConfig } else { throw LoaderConfigError.doesNotExist } } catch { - os_log("Couldn't get loader config", log: bunnyLog, type: .error) + os_log("Couldn't get loader config", log: revengeLog, type: .error) return defaultLoaderConfig } diff --git a/Sources/BunnyTweak/Themes.x.swift b/Sources/RevengeTweak/Themes.x.swift similarity index 81% rename from Sources/BunnyTweak/Themes.x.swift rename to Sources/RevengeTweak/Themes.x.swift index 3eb8277..25c7174 100644 --- a/Sources/BunnyTweak/Themes.x.swift +++ b/Sources/RevengeTweak/Themes.x.swift @@ -1,6 +1,6 @@ import Orion import UIKit -import BunnyTweakC +import RevengeTweakC import os struct Author: Codable { @@ -56,7 +56,7 @@ func hexToUIColor(_ hex: String) -> UIColor? { } func swizzleDCDThemeColor(_ semanticColors: [String: [String]]) { - os_log("Swizzling DCDThemeColor", log: bunnyLog, type: .info) + os_log("Swizzling DCDThemeColor", log: revengeLog, type: .info) let DCDTheme: AnyClass = NSClassFromString("DCDTheme")! let dcdThemeTarget: AnyClass = object_getClass(DCDTheme)! @@ -68,25 +68,25 @@ func swizzleDCDThemeColor(_ semanticColors: [String: [String]]) { let themeIndex: ThemeIndexType = unsafeBitCast(themeIndexImpl, to: ThemeIndexType.self) let DCDThemeColor: AnyClass = NSClassFromString("DCDThemeColor")! - os_log("Found instance of DCDThemeColor", log: bunnyLog, type: .debug) + os_log("Found instance of DCDThemeColor", log: revengeLog, type: .debug) let target: AnyClass = object_getClass(DCDThemeColor)! - os_log("Found DCDThemeColor", log: bunnyLog, type: .debug) + os_log("Found DCDThemeColor", log: revengeLog, type: .debug) var methodCount: UInt32 = 0 let methods = class_copyMethodList(target, &methodCount)! - os_log("DCDThemeColor has %{public}d methods", log: bunnyLog, type: .debug, methodCount) + os_log("DCDThemeColor has %{public}d methods", log: revengeLog, type: .debug, methodCount) for i in 0.. UIColor @@ -115,28 +115,28 @@ func swizzleDCDThemeColor(_ semanticColors: [String: [String]]) { } func swizzleUIColor(_ rawColors: [String: String]) { - os_log("Swizzling UIColor", log: bunnyLog, type: .info) + os_log("Swizzling UIColor", log: revengeLog, type: .info) let UIColor: AnyClass = NSClassFromString("UIColor")! - os_log("Found instance of UIColor", log: bunnyLog, type: .debug) + os_log("Found instance of UIColor", log: revengeLog, type: .debug) let target: AnyClass = object_getClass(UIColor)! - os_log("Found UIColor", log: bunnyLog, type: .debug) + os_log("Found UIColor", log: revengeLog, type: .debug) var methodCount: UInt32 = 0 let methods = class_copyMethodList(target, &methodCount)! - os_log("UIColor has %{public}d methods", log: bunnyLog, type: .debug, methodCount) + os_log("UIColor has %{public}d methods", log: revengeLog, type: .debug, methodCount) for i in 0.. UIColor = { (self: AnyObject) -> UIColor in return hexToUIColor(rawColor)! diff --git a/Sources/BunnyTweak/Tweak.x.swift b/Sources/RevengeTweak/Tweak.x.swift similarity index 73% rename from Sources/BunnyTweak/Tweak.x.swift rename to Sources/RevengeTweak/Tweak.x.swift index cde4f6b..85aa2d8 100644 --- a/Sources/BunnyTweak/Tweak.x.swift +++ b/Sources/RevengeTweak/Tweak.x.swift @@ -1,18 +1,18 @@ import Orion -import BunnyTweakC +import RevengeTweakC import os -let bunnyLog = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "bunny") -let source = URL(string: "bunny")! +let revengeLog = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "revenge") +let source = URL(string: "revenge")! let install_prefix = String(cString: get_install_prefix()) -let isJailbroken = FileManager.default.fileExists(atPath: "\(install_prefix)/Library/Application Support/BunnyTweak/BunnyPatches.bundle") +let isJailbroken = FileManager.default.fileExists(atPath: "\(install_prefix)/Library/Application Support/RevengeTweak/RevengePatches.bundle") -let bunnyPatchesBundlePath = isJailbroken ? "\(install_prefix)/Library/Application Support/BunnyTweak/BunnyPatches.bundle" : "\(Bundle.main.bundleURL.path)/BunnyPatches.bundle" +let revengePatchesBundlePath = isJailbroken ? "\(install_prefix)/Library/Application Support/RevengeTweak/RevengePatches.bundle" : "\(Bundle.main.bundleURL.path)/RevengePatches.bundle" class FileManagerLoadHook: ClassHook { func containerURLForSecurityApplicationGroupIdentifier(_ groupIdentifier: NSString?) -> URL? { - os_log("containerURLForSecurityApplicationGroupIdentifier called! %{public}@ groupIdentifier", log: bunnyLog, type: .debug, groupIdentifier ?? "nil") + os_log("containerURLForSecurityApplicationGroupIdentifier called! %{public}@ groupIdentifier", log: revengeLog, type: .debug, groupIdentifier ?? "nil") if (isJailbroken) { return orig.containerURLForSecurityApplicationGroupIdentifier(groupIdentifier) @@ -26,15 +26,15 @@ class FileManagerLoadHook: ClassHook { class LoadHook: ClassHook { func executeApplicationScript(_ script: Data, url: URL, async: Bool) { - os_log("executeApplicationScript called!", log: bunnyLog, type: .debug) + os_log("executeApplicationScript called!", log: revengeLog, type: .debug) let loaderConfig = getLoaderConfig() - let bunnyPatchesBundle = Bundle(path: bunnyPatchesBundlePath)! + let revengePatchesBundle = Bundle(path: revengePatchesBundlePath)! - if let patchPath = bunnyPatchesBundle.url(forResource: "payload-base", withExtension: "js") { + if let patchPath = revengePatchesBundle.url(forResource: "payload-base", withExtension: "js") { let patchData = try! Data(contentsOf: patchPath) - os_log("Executing payload base", log: bunnyLog, type: .debug) + os_log("Executing payload base", log: revengeLog, type: .debug) orig.executeApplicationScript(patchData, url: source, async: true) } @@ -48,15 +48,15 @@ class LoadHook: ClassHook { var bundleUrl: URL if loaderConfig.customLoadUrl.enabled { os_log( - "Custom load URL enabled, with URL %{public}@ ", log: bunnyLog, type: .info, + "Custom load URL enabled, with URL %{public}@ ", log: revengeLog, type: .info, loaderConfig.customLoadUrl.url.absoluteString) bundleUrl = loaderConfig.customLoadUrl.url } else { bundleUrl = URL( - string: "https://raw.githubusercontent.com/pyoncord/bunny-builds/main/bunny.js")! + string: "https://github.com/revenge-mod/Revenge/releases/latest/download/revenge.js")! } - os_log("Fetching JS bundle", log: bunnyLog, type: .info) + os_log("Fetching JS bundle", log: revengeLog, type: .info) var bundleRequest = URLRequest( url: bundleUrl, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 3.0) @@ -68,7 +68,7 @@ class LoadHook: ClassHook { let fetchTask = URLSession.shared.dataTask(with: bundleRequest) { data, response, error in if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 { - os_log("Successfully fetched JS Bundle", log: bunnyLog, type: .debug) + os_log("Successfully fetched JS Bundle", log: revengeLog, type: .debug) bundle = data try? bundle?.write(to: pyoncordDirectory.appendingPathComponent("bundle.js")) @@ -92,40 +92,40 @@ class LoadHook: ClassHook { } let preloadsDirectory = pyoncordDirectory.appendingPathComponent("preloads") - + if FileManager.default.fileExists(atPath: preloadsDirectory.path) { do { let contents = try FileManager.default.contentsOfDirectory( at: preloadsDirectory, includingPropertiesForKeys: nil, options: []) - + for fileURL in contents { if fileURL.pathExtension == "js" { os_log( - "Executing preload JS file %{public}@ ", log: bunnyLog, type: .info, fileURL.absoluteString) - + "Executing preload JS file %{public}@ ", log: revengeLog, type: .info, fileURL.absoluteString) + if let data = try? Data(contentsOf: fileURL) { orig.executeApplicationScript(data, url: source, async: async) } } } } catch { - os_log("Error reading contents of preloads directory", log: bunnyLog, type: .error) + os_log("Error reading contents of preloads directory", log: revengeLog, type: .error) } } if bundle != nil { - os_log("Executing JS bundle", log: bunnyLog, type: .info) + os_log("Executing JS bundle", log: revengeLog, type: .info) orig.executeApplicationScript(bundle!, url: source, async: async) } else { - os_log("Unable to fetch JS bundle", log: bunnyLog, type: .error) + os_log("Unable to fetch JS bundle", log: revengeLog, type: .error) } - os_log("Executing original script", log: bunnyLog, type: .info) + os_log("Executing original script", log: revengeLog, type: .info) orig.executeApplicationScript(script, url: url, async: async) } } -struct BunnyTweak: Tweak { +struct RevengeTweak: Tweak { func tweakDidActivate() { if let themeData = try? Data( contentsOf: pyoncordDirectory.appendingPathComponent("current-theme.json")) { diff --git a/Sources/BunnyTweak/Utils.x.swift b/Sources/RevengeTweak/Utils.x.swift similarity index 98% rename from Sources/BunnyTweak/Utils.x.swift rename to Sources/RevengeTweak/Utils.x.swift index 48a0702..f8f4777 100644 --- a/Sources/BunnyTweak/Utils.x.swift +++ b/Sources/RevengeTweak/Utils.x.swift @@ -3,14 +3,14 @@ import Foundation func getPyoncordDirectory() -> URL { let documentDirectoryURL = try! FileManager.default.url( for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) - + let pyoncordFolderURL = documentDirectoryURL.appendingPathComponent("pyoncord") - + // Create the "pyoncord" folder if it doesn't exist if !FileManager.default.fileExists(atPath: pyoncordFolderURL.path) { try! FileManager.default.createDirectory( at: pyoncordFolderURL, withIntermediateDirectories: true, attributes: nil) } - + return pyoncordFolderURL } diff --git a/Sources/BunnyTweakC/Tweak.m b/Sources/RevengeTweakC/Tweak.m similarity index 100% rename from Sources/BunnyTweakC/Tweak.m rename to Sources/RevengeTweakC/Tweak.m diff --git a/Sources/BunnyTweakC/include/RCTCxxBridge.h b/Sources/RevengeTweakC/include/RCTCxxBridge.h similarity index 100% rename from Sources/BunnyTweakC/include/RCTCxxBridge.h rename to Sources/RevengeTweakC/include/RCTCxxBridge.h diff --git a/Sources/BunnyTweakC/include/Tweak.h b/Sources/RevengeTweakC/include/Tweak.h similarity index 100% rename from Sources/BunnyTweakC/include/Tweak.h rename to Sources/RevengeTweakC/include/Tweak.h diff --git a/Sources/BunnyTweakC/include/module.modulemap b/Sources/RevengeTweakC/include/module.modulemap similarity index 58% rename from Sources/BunnyTweakC/include/module.modulemap rename to Sources/RevengeTweakC/include/module.modulemap index 2e175d3..0649571 100644 --- a/Sources/BunnyTweakC/include/module.modulemap +++ b/Sources/RevengeTweakC/include/module.modulemap @@ -1,4 +1,4 @@ -module BunnyTweakC { +module RevengeTweakC { umbrella "." export * } diff --git a/app-repo.json b/app-repo.json index d6504c9..452a0b0 100644 --- a/app-repo.json +++ b/app-repo.json @@ -1,13 +1,13 @@ { - "name": "Pyoncord App Repo", - "identifier": "io.github.pyoncord.repo", - "iconURL": "https://pyoncord.github.io/assets/icon-altstore.png", + "name": "Revenge App Repo", + "identifier": "io.github.revenge-mod.repo", + "iconURL": "https://cdn.discordapp.com/attachments/1205207690352005243/1284228073415249950/icon-altstore.png?ex=66e5de18&is=66e48c98&hm=737f59f228f7d887881fff1fcb6d8b08258b91c3c0d4df8501dfc499b51d870d&", "apps": [ { - "name": "Bunny", + "name": "Revenge", "bundleIdentifier": "com.hammerandchisel.discord", - "developerName": "Pylix", - "iconURL": "https://pyoncord.github.io/assets/icon-altstore.png", + "developerName": "Cristiandis", + "iconURL": "https://cdn.discordapp.com/attachments/1205207690352005243/1284228073415249950/icon-altstore.png?ex=66e5de18&is=66e48c98&hm=737f59f228f7d887881fff1fcb6d8b08258b91c3c0d4df8501dfc499b51d870d&", "localizedDescription": "A client mod for Discord", "subtitle": "A client mod for Discord", "tintColor": "7289da", @@ -15,50 +15,8 @@ { "version": "246.0", "date": "2024-09-14", - "size": 103195545, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v246.0/Bunny.ipa" - }, - { - "version": "237.0", - "date": "2024-07-13", - "size": 114323285, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v237.0/Bunny.ipa" - }, - { - "version": "235.0", - "date": "2024-06-27", - "size": 112173273, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v235.0/Bunny.ipa" - }, - { - "version": "234.0", - "date": "2024-06-24", - "size": 111671815, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v234.0/Bunny.ipa" - }, - { - "version": "230.0", - "date": "2024-05-18", - "size": 102457139, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v230.0/Bunny.ipa" - }, - { - "version": "229.0", - "date": "2024-05-16", - "size": 103776118, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v229.0/Bunny.ipa" - }, - { - "version": "226.1", - "date": "2024-04-30", - "size": 102705408, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v226.1/Pyoncord.ipa" - }, - { - "version": "223.0", - "date": "2024-04-08", - "size": 106082919, - "downloadURL": "https://github.com/pyoncord/BunnyTweak/releases/download/v223.0/Pyoncord.ipa" + "size": 103194075, + "downloadURL": "https://github.com/revenge-mod/RevengeTweak/releases/download/v246.0/Revenge.ipa" } ], "appPermissions": {} diff --git a/control b/control index 6506668..ec95fac 100644 --- a/control +++ b/control @@ -1,11 +1,11 @@ -Package: io.github.pyoncord.app -Name: Bunny -Version: 0.3.1 +Package: io.github.revenge-mod.app +Name: Revenge +Version: 0.0.1 Architecture: iphoneos-arm Description: A mod for Discord's mobile apps. -Maintainer: Pylix -Author: Pylix, FieryFlames +Maintainer: Cristiandis +Author: Pylix, FieryFlames, Cristiandis Icon: https://avatars.githubusercontent.com/u/132727175 Section: Tweaks Depends: ${ORION}, firmware (>= 13.0) -Conflicts: app.enmity, mod.vendetta +Conflicts: app.enmity, mod.vendetta, mod.bunny From ddece2b0470573d76277b48142e6df686295930f Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 21:17:47 +0000 Subject: [PATCH 02/12] chore: update app-repo.json --- app-repo.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app-repo.json b/app-repo.json index 452a0b0..2e733b3 100644 --- a/app-repo.json +++ b/app-repo.json @@ -12,6 +12,12 @@ "subtitle": "A client mod for Discord", "tintColor": "7289da", "versions": [ + { + "version": "246.0", + "date": "2024-09-14", + "size": 103194076, + "downloadURL": "https://github.com/revenge-mod/RevengeTweak/releases/download/v246.0/Revenge.ipa" + }, { "version": "246.0", "date": "2024-09-14", From 908949ad3aef06821195cb50998d00597dc4b896 Mon Sep 17 00:00:00 2001 From: Palm Date: Sun, 15 Sep 2024 04:23:18 +0700 Subject: [PATCH 03/12] fix: remove duplicate version object --- app-repo.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app-repo.json b/app-repo.json index 2e733b3..ba02de3 100644 --- a/app-repo.json +++ b/app-repo.json @@ -17,12 +17,6 @@ "date": "2024-09-14", "size": 103194076, "downloadURL": "https://github.com/revenge-mod/RevengeTweak/releases/download/v246.0/Revenge.ipa" - }, - { - "version": "246.0", - "date": "2024-09-14", - "size": 103194075, - "downloadURL": "https://github.com/revenge-mod/RevengeTweak/releases/download/v246.0/Revenge.ipa" } ], "appPermissions": {} From 0c69adf534793882d0589fa479e5f68c1a99c6ac Mon Sep 17 00:00:00 2001 From: Cristiandis <112336919+Cristiandis@users.noreply.github.com> Date: Sun, 15 Sep 2024 00:37:17 +0200 Subject: [PATCH 04/12] docs: Fix image links for buttons (#2) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fee3d00..43bea02 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,8 @@ Builds can be found in the [Releases](https://github.com/revenge-mod/RevengeTwea ### Jailed - - + + > [!NOTE] > TrollStore may display an encryption warning, which you can disregard. From b3c598c21970f9d944fa8700d970ca8414f50531 Mon Sep 17 00:00:00 2001 From: Cristiandis <112336919+Cristiandis@users.noreply.github.com> Date: Sun, 15 Sep 2024 21:01:52 +0200 Subject: [PATCH 05/12] ci: swap pyzule for cyan --- .github/workflows/build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0559493..4d7c6ee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -123,10 +123,12 @@ jobs: echo "DEB_FILE_NAME=$DEB_FILE_NAME" >> $GITHUB_ENV echo "APP_NAME=$NAME" >> $GITHUB_ENV + - name: Install cyan + run: pip install --force-reinstall https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip Pillow + - name: Inject tweak run: | - bash -c "$(curl https://raw.githubusercontent.com/asdfzxcvbn/pyzule/main/install-pyzule.sh)" - pyzule -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} + cyan -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} - name: Upload ipa as artifact uses: actions/upload-artifact@v4 From 04e4543afa0178db3296b659a4e9be4b35545ddb Mon Sep 17 00:00:00 2001 From: Cristiandis <112336919+Cristiandis@users.noreply.github.com> Date: Sun, 15 Sep 2024 21:11:56 +0200 Subject: [PATCH 06/12] ci: swap pyzule for cyan in release.yml too --- .github/workflows/release.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 24deecb..deea174 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -125,10 +125,12 @@ jobs: echo "ROOTLESS_DEB_FILE_NAME=$ROOTLESS_DEB_FILE_NAME" >> $GITHUB_ENV echo "APP_NAME=$NAME" >> $GITHUB_ENV + - name: Install cyan + run: pip install --force-reinstall https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip Pillow + - name: Inject tweak run: | - bash -c "$(curl https://raw.githubusercontent.com/asdfzxcvbn/pyzule/main/install-pyzule.sh)" - pyzule -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} + cyan -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} - name: Upload ipa as artifact uses: actions/upload-artifact@v4 @@ -214,4 +216,4 @@ jobs: default_author: github_actions message: "chore: update app-repo.json" add: app-repo.json - \ No newline at end of file + From d5f4085afd9d9a8053f00663c5b136454b2c76e3 Mon Sep 17 00:00:00 2001 From: Cristiandis <112336919+Cristiandis@users.noreply.github.com> Date: Sun, 15 Sep 2024 21:33:08 +0200 Subject: [PATCH 07/12] ci: implement fix for altstore and trollstore on build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4d7c6ee..d971489 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -128,7 +128,7 @@ jobs: - name: Inject tweak run: | - cyan -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} + cyan -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} -uws - name: Upload ipa as artifact uses: actions/upload-artifact@v4 From 74e74200ee0bfd4c5b99e6d7cf6d22b33f17428c Mon Sep 17 00:00:00 2001 From: Cristiandis <112336919+Cristiandis@users.noreply.github.com> Date: Sun, 15 Sep 2024 21:33:39 +0200 Subject: [PATCH 08/12] ci: implement fix for altstore and trollstore for release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index deea174..0ce9902 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -130,7 +130,7 @@ jobs: - name: Inject tweak run: | - cyan -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} + cyan -n ${{ env.APP_NAME }} -k PyoncordIcon60x60@2x.png -d -i discord.ipa -o ${{ github.workspace }}/${{ env.APP_NAME }}.ipa -f ${{ github.workspace }}/${{ env.DEB_FILE_NAME }} -uws - name: Upload ipa as artifact uses: actions/upload-artifact@v4 From cd84e583e0b5ba27c5221302175e25646be101e4 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Sep 2024 21:22:50 +0000 Subject: [PATCH 09/12] chore: update app-repo.json --- app-repo.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app-repo.json b/app-repo.json index ba02de3..98b83a1 100644 --- a/app-repo.json +++ b/app-repo.json @@ -12,6 +12,12 @@ "subtitle": "A client mod for Discord", "tintColor": "7289da", "versions": [ + { + "version": "246.0", + "date": "2024-09-15", + "size": 102811465, + "downloadURL": "https://github.com/revenge-mod/RevengeTweak/releases/download/v246.0/Revenge.ipa" + }, { "version": "246.0", "date": "2024-09-14", From e3f70ea75f841bc13fdfa57a3d2f3907d2e5890a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 11:37:34 +0000 Subject: [PATCH 10/12] chore: update app-repo.json --- app-repo.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app-repo.json b/app-repo.json index 98b83a1..eaaef63 100644 --- a/app-repo.json +++ b/app-repo.json @@ -12,6 +12,12 @@ "subtitle": "A client mod for Discord", "tintColor": "7289da", "versions": [ + { + "version": "250.0", + "date": "2024-10-17", + "size": 101218840, + "downloadURL": "https://github.com/revenge-mod/revenge-tweak/releases/download/v250.0/Revenge.ipa" + }, { "version": "246.0", "date": "2024-09-15", From f613fd80a195ae8edb1d9db32c20da48b1877964 Mon Sep 17 00:00:00 2001 From: Cristiandis <112336919+Cristiandis@users.noreply.github.com> Date: Sun, 20 Oct 2024 20:01:26 +0200 Subject: [PATCH 11/12] fix: update bundle link and add branding changes (#4) Co-authored-by: Palm --- README.md | 56 +++++++++++++++++++---- Sources/RevengeTweak/Tweak.x.swift | 2 +- app-repo.json | 4 +- assets/logo/logo-dark.svg | 4 ++ assets/logo/logo-light.svg | 4 ++ assets/wordmark/wordmark+slogan-dark.svg | 6 +++ assets/wordmark/wordmark+slogan-light.svg | 6 +++ control | 4 +- 8 files changed, 72 insertions(+), 14 deletions(-) create mode 100644 assets/logo/logo-dark.svg create mode 100644 assets/logo/logo-light.svg create mode 100644 assets/wordmark/wordmark+slogan-dark.svg create mode 100644 assets/wordmark/wordmark+slogan-light.svg diff --git a/README.md b/README.md index 43bea02..64ef504 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,44 @@ -# RevengeTweak +

+ + + + +
+ + + + + +        + + + + + +        + + + + + +        -Tweak to inject [Revenge](https://github.com/revenge-mod/Revenge) into Discord. Forked [BunnyTweak](https://github.com/pyoncord/BunnyTweak), modified to match with [RevengeXposed](https://github.com/revenge-mod/RevengeXposed) behavior. There are still slight differences between these two, and this tweak may be missing some loader features. + +

+ +# 💊 RevengeTweak + +![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/revenge-mod/revenge-tweak/release.yml) +![Open Software License 3](https://img.shields.io/badge/License-OSL%20v3-yellow.svg) + +Tweak to inject [Revenge](https://github.com/revenge-mod/Revenge) into Discord. Forked [BunnyTweak](https://github.com/pyoncord/BunnyTweak), modified to match with [RevengeXposed](https://github.com/revenge-mod/Revenge-xposed) behavior. There are still slight differences between these two, and this tweak may be missing some loader features. > [!NOTE] > As of right now this tweak does not encompass some functionalities when running in a jailed environment with a wildcard certificate \ @@ -8,9 +46,9 @@ Tweak to inject [Revenge](https://github.com/revenge-mod/Revenge) into Discord. > - setAlternateAppIcon does not work, thus breaking dynamic app icons > - sharing files to the application/selecting items via the Files app does not work -## Installation +## 🔽 Installation -Builds can be found in the [Releases](https://github.com/revenge-mod/RevengeTweak/releases/latest) tab. +Builds can be found in the [Releases](https://github.com/revenge-mod/revenge-tweak/releases/latest) tab. > [!NOTE] > Raw decrypted IPAs which are used to provide prepatched IPAs are sourced from the [Enmity](https://github.com/enmity-mod/) community. These raw decrypted IPAs are also used throughout Enmity related projects such as [enmity-mod/tweak](https://github.com/enmity-mod/tweak/) and [acquitelol/rosiecord](https://github.com/acquitelol/rosiecord).\ @@ -23,15 +61,15 @@ Builds can be found in the [Releases](https://github.com/revenge-mod/RevengeTwea ### Jailed - - + + > [!NOTE] > TrollStore may display an encryption warning, which you can disregard. -1. Download and install [Revenge.ipa](https://github.com/revenge-mod/RevengeTweak/releases/latest/download/Revenge.ipa) using your preferred sideloading method. +1. Download and install [Revenge.ipa](https://github.com/revenge-mod/revenge-tweak/releases/latest/download/Revenge.ipa) using your preferred sideloading method. -## Building RevengeTweak locally +## 🛠️ Building RevengeTweak locally > [!NOTE] > These steps assume you use MacOS. @@ -66,7 +104,7 @@ The first time you run this, it might take a bit longer, but subsequent builds s The resulting `.deb` files will be in the `packages` folder. As a reminder, `*arm.deb` is for rootful jailbreaks and sideloading, and `*arm64.deb` is for rootless jailbreaks. -## Contributing +## 📙 Contributing If you want to contribute, you will basically need to follow the steps for [Building RevengeTweak locally](#building-revengetweak-locally), as well as run `make spm` for the Swift LSP to work. diff --git a/Sources/RevengeTweak/Tweak.x.swift b/Sources/RevengeTweak/Tweak.x.swift index 85aa2d8..642b791 100644 --- a/Sources/RevengeTweak/Tweak.x.swift +++ b/Sources/RevengeTweak/Tweak.x.swift @@ -53,7 +53,7 @@ class LoadHook: ClassHook { bundleUrl = loaderConfig.customLoadUrl.url } else { bundleUrl = URL( - string: "https://github.com/revenge-mod/Revenge/releases/latest/download/revenge.js")! + string: "https://github.com/revenge-mod/revenge-bundle/releases/latest/download/revenge.min.js")! } os_log("Fetching JS bundle", log: revengeLog, type: .info) diff --git a/app-repo.json b/app-repo.json index eaaef63..b54ab5f 100644 --- a/app-repo.json +++ b/app-repo.json @@ -1,13 +1,13 @@ { "name": "Revenge App Repo", "identifier": "io.github.revenge-mod.repo", - "iconURL": "https://cdn.discordapp.com/attachments/1205207690352005243/1284228073415249950/icon-altstore.png?ex=66e5de18&is=66e48c98&hm=737f59f228f7d887881fff1fcb6d8b08258b91c3c0d4df8501dfc499b51d870d&", + "iconURL": "https://avatars.githubusercontent.com/u/159218871?s=200&v=4", "apps": [ { "name": "Revenge", "bundleIdentifier": "com.hammerandchisel.discord", "developerName": "Cristiandis", - "iconURL": "https://cdn.discordapp.com/attachments/1205207690352005243/1284228073415249950/icon-altstore.png?ex=66e5de18&is=66e48c98&hm=737f59f228f7d887881fff1fcb6d8b08258b91c3c0d4df8501dfc499b51d870d&", + "iconURL": "https://avatars.githubusercontent.com/u/159218871?s=200&v=4", "localizedDescription": "A client mod for Discord", "subtitle": "A client mod for Discord", "tintColor": "7289da", diff --git a/assets/logo/logo-dark.svg b/assets/logo/logo-dark.svg new file mode 100644 index 0000000..cb34519 --- /dev/null +++ b/assets/logo/logo-dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/logo/logo-light.svg b/assets/logo/logo-light.svg new file mode 100644 index 0000000..b16e22f --- /dev/null +++ b/assets/logo/logo-light.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/wordmark/wordmark+slogan-dark.svg b/assets/wordmark/wordmark+slogan-dark.svg new file mode 100644 index 0000000..2f3c148 --- /dev/null +++ b/assets/wordmark/wordmark+slogan-dark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/wordmark/wordmark+slogan-light.svg b/assets/wordmark/wordmark+slogan-light.svg new file mode 100644 index 0000000..eefd512 --- /dev/null +++ b/assets/wordmark/wordmark+slogan-light.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/control b/control index ec95fac..c98928c 100644 --- a/control +++ b/control @@ -1,11 +1,11 @@ Package: io.github.revenge-mod.app Name: Revenge -Version: 0.0.1 +Version: 1.0.0 Architecture: iphoneos-arm Description: A mod for Discord's mobile apps. Maintainer: Cristiandis Author: Pylix, FieryFlames, Cristiandis -Icon: https://avatars.githubusercontent.com/u/132727175 +Icon: https://avatars.githubusercontent.com/u/159218871 Section: Tweaks Depends: ${ORION}, firmware (>= 13.0) Conflicts: app.enmity, mod.vendetta, mod.bunny From 2528e5386622aa17d27bd0470b27b1c3140a0cd1 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 20 Oct 2024 18:10:10 +0000 Subject: [PATCH 12/12] chore: update app-repo.json --- app-repo.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app-repo.json b/app-repo.json index b54ab5f..5c6b0cd 100644 --- a/app-repo.json +++ b/app-repo.json @@ -12,6 +12,12 @@ "subtitle": "A client mod for Discord", "tintColor": "7289da", "versions": [ + { + "version": "250.0", + "date": "2024-10-20", + "size": 101218873, + "downloadURL": "https://github.com/revenge-mod/revenge-tweak/releases/download/v250.0/Revenge.ipa" + }, { "version": "250.0", "date": "2024-10-17",