Rename Wintry -> Shiggy across codebase (classes, files, resources)

This commit is contained in:
kmmiio99o 2025-10-13 19:31:16 +02:00
parent b7fcedc96a
commit e925c83dac
117 changed files with 359 additions and 431 deletions

View file

@ -51,7 +51,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
tag="${{ github.ref_name }}"
apk_file="wintry-manager-$tag.apk"
apk_file="shiggy-manager-$tag.apk"
mv -T ./app/build/outputs/apk/release/app-release.apk "./$apk_file"
gh release create "$tag" \

View file

@ -1,9 +0,0 @@
## Backing up Aliucord
Note: This section is about the app installation itself, not the installed plugins, themes, and settings.
The patched Aliucord APK is tailored to the current device's Android version and CPU architecture.
Reusing a patched Aliucord APK from one device on another will likely break. Backing up and
restoring on another device will likely break.
Install Aliucord **directly via Manager** on the device you wish to use it on.

View file

@ -1,69 +0,0 @@
<div align="center">
<img src=".github/assets/wt-manager-preview.png" alt="Wintry Manager preview" />
<h1>Wintry Manager</h1>
<p>Install <a href="https://github.com/amsyarasyiq/wintry">Wintry</a> on your Android device! Based on Aliucord Manager.</p>
[![Discord](https://img.shields.io/discord/1394286025026572310?logo=discord&logoColor=white&style=for-the-badge&color=5865F2)](https://discord.gg/ybPB5tgD)
[![GitHub Stars](https://img.shields.io/github/stars/wtcord/wt-manager?logo=github&style=for-the-badge&color=ffd663)](https://github.com/wtcord/wt-manager/stargazers)
[![Build Status](https://img.shields.io/github/actions/workflow/status/wtcord/wt-manager/build.yml?label=Build&logo=github&style=for-the-badge&branch=main)](https://nightly.link/wtcord/wt-manager/workflows/build/main/app.zip)
![GitHub Downloads](https://img.shields.io/github/downloads/wtcord/wt-manager/total?style=for-the-badge&logo=github)
![Code Size](https://img.shields.io/github/languages/code-size/wtcord/wt-manager?style=for-the-badge)
[![GitHub License](https://img.shields.io/github/license/wtcord/wt-manager?style=for-the-badge&color=007ec6)](https://github.com/wtcord/wt-manager/blob/main/LICENSE)
</div>
## Prerequisites
Supported Android versions:
- Android 9 (SDK 28) - Android 16 QPR1 (SDK 36)
- Architectures: arm64, armeabi-v7, x86_64, x86
## Installation
1. Download the [latest release APK](https://github.com/wtcord/wt-manager/releases/latest)
1. Open and install Wintry Manager
- If you have not enabled "Install from unknown sources" for your browser via system settings, do so now.
1. Open Wintry Manager
1. Grant the permission requests
1. Click "New Install" or "Update" if you have previously installed Wintry.
- You may change how the Wintry app icon will look once installed.
1. Click "Install" and wait. Do not exit the app while it is running.
- If a failure occurs, it may be due to a variety of reasons:
- Poor internet connection
- Internet censorship / blocks (use a VPN or a different DNS server)
- Insufficient free storage (at least 500MB is recommended)
- If you are stuck, please ask for help in the `#support` channel of our [Discord](https://discord.gg/ybPB5tgD).
1. Click "Launch" or directly launch the newly installed Wintry app
1. Sign in to Discord
## Building
1. Install the prerequisites:
- Git
- [JDK 21+](https://adoptium.net/temurin/releases/?os=any&arch=any&version=21)
2. Clone the repo:
```shell
git clone https://github.com/wtcord/wt-manager && cd wt-manager
```
3. Build the project:
#### Linux/macOS
```shell
chmod +x gradlew && ./gradlew :app:packageStaging --stacktrace
```
#### Windows
```shell
.\gradlew.bat :app:packageStaging --stacktrace
```
4. Built APK will be located at `./app/build/outputs/apk/staging/app-staging.apk`
<!--
## Translations
This project handles crowd-sourced translations through Crowdin! If you happen to be fluent in one of the languages listed below,
then please feel free to contribute your translations!
[![Crowdin Translations](https://badges.crowdin.net/badge/light/crowdin-on-dark.png)](https://crowdin.com/project/aliucord-manager)
<br/><br/>
[![Translation Statistics](https://badges.awesome-crowdin.com/translation-15208176-543502.png)](https://crowdin.com/project/aliucord-manager)
-->

View file

@ -1,9 +0,0 @@
- Android API 21 support
- Unified permissions screen like in Aurora Store
- zip-android 64KiB alignment
- zip-android faster file deletion
- Better UI for conflicting package names
- Auto-rename package names when adding new installs...?
- `IconOptionsScreen`
- https://discord.com/channels/811255666990907402/1373756392892272691/1380726498725593220
- Reset button on PatchOptionsScreen?

View file

@ -18,24 +18,24 @@ val gitHasLocalCommits = gitCurrentBranch?.let { providers.execIgnoreCode("git",
val gitHasHasLocalChanges = providers.execIgnoreCode("git", "status", "-s").isNotEmpty()
android {
namespace = "dev.wintry.manager"
namespace = "dev.shiggy.manager"
compileSdk = 36
defaultConfig {
minSdk = 28
targetSdk = 36
versionCode = 10_00_01
versionName = "1.0.1"
versionCode = 10_00_00
versionName = "1.0.0"
vectorDrawables {
useSupportLibrary = true
}
buildConfigField("String", "APPLICATION_NAME", "\"Wintry Manager\"")
buildConfigField("String", "TAG", "\"WintryManager\"")
buildConfigField("String", "APPLICATION_NAME", "\"Shiggy Manager\"")
buildConfigField("String", "TAG", "\"ShiggyManager\"")
buildConfigField("String", "GITHUB_ORG", "\"wtcord\"")
buildConfigField("String", "SUPPORT_SERVER", "\"ybPB5tgD\"")
buildConfigField("String", "GITHUB_ORG", "\"ShiggyCord\"")
buildConfigField("String", "SUPPORT_SERVER", "\"\"")
buildConfigField("String", "BACKEND_URL", "\"https://aliucord.com/\"")

View file

@ -24,7 +24,7 @@ import com.aliucord.manager.ui.screens.home.HomeScreen
import com.aliucord.manager.ui.theme.ManagerTheme
import com.aliucord.manager.ui.widgets.updater.UpdaterDialog
import com.aliucord.manager.util.back
import dev.wintry.manager.BuildConfig
import dev.shiggy.manager.BuildConfig
import org.koin.android.ext.android.inject
class MainActivity : ComponentActivity() {

View file

@ -49,7 +49,7 @@ class ManagerApplication : Application() {
singleOf(::AliucordGithubService)
singleOf(::AliucordMavenService)
singleOf(::RNATrackerService)
singleOf(::WintryGithubService)
singleOf(::ShiggyGithubService)
})
// UI Models

View file

@ -1,7 +1,7 @@
package com.aliucord.manager.di
import android.app.Application
import dev.wintry.manager.BuildConfig
import dev.shiggy.manager.BuildConfig
import io.ktor.client.HttpClient
import io.ktor.client.call.HttpClientCall
import io.ktor.client.engine.okhttp.OkHttp

View file

@ -1,7 +1,7 @@
package com.aliucord.manager.installers
import android.content.Context
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.parcelize.Parcelize
@Parcelize

View file

@ -11,7 +11,7 @@ import android.util.Log
import androidx.core.content.ContextCompat
import com.aliucord.manager.installers.Installer
import com.aliucord.manager.util.isMiui
import dev.wintry.manager.BuildConfig
import dev.shiggy.manager.BuildConfig
import kotlinx.coroutines.suspendCancellableCoroutine
import java.io.File
import kotlin.coroutines.resume

View file

@ -4,7 +4,7 @@ import android.content.Context
import android.content.pm.PackageInstaller
import android.os.Parcelable
import com.aliucord.manager.installers.InstallerResult
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.parcelize.Parcelize
/**

View file

@ -7,7 +7,7 @@ import android.util.Log
import android.widget.Toast
import com.aliucord.manager.installers.InstallerResult
import com.aliucord.manager.installers.UnknownInstallerError
import dev.wintry.manager.BuildConfig
import dev.shiggy.manager.BuildConfig
/**
* This class is used as a callback receiver for [PackageInstaller] events,

View file

@ -5,7 +5,7 @@ import android.content.pm.PackageInstaller
import com.aliucord.manager.installers.InstallerResult
import com.aliucord.manager.installers.UnknownInstallerError
import com.aliucord.manager.util.showToast
import dev.wintry.manager.R
import dev.shiggy.manager.R
/**
* This receiver is meant to be registered dynamically in combination with [PMIntentReceiver] in order to

View file

@ -11,7 +11,7 @@ import androidx.core.content.getSystemService
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import com.aliucord.manager.util.IS_PROBABLY_EMULATOR
import com.aliucord.manager.util.isPlayProtectEnabled
import dev.wintry.manager.BuildConfig
import dev.shiggy.manager.BuildConfig
import kotlinx.serialization.*
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.decodeFromStream

View file

@ -18,10 +18,10 @@ class PathManager(
val aliucordDir = Environment.getExternalStorageDirectory().resolve("Aliucord")
/**
* The Wintry folder where shared Wintry files are stored.
* Standard path: `~/Wintry`
* The Shiggy folder where shared Shiggy files are stored.
* Standard path: `~/Shiggy`
*/
val wintryDir = Environment.getExternalStorageDirectory().resolve("Wintry")
val shiggyDir = Environment.getExternalStorageDirectory().resolve("Shiggy")
/**
* The directory in external storage in which plugins are stored by Aliucord.
@ -36,7 +36,7 @@ class PathManager(
/**
* Global keystore used for signing APKs.
*/
val keystoreFile = wintryDir.resolve("ks.keystore")
val keystoreFile = shiggyDir.resolve("ks.keystore")
/**
* The internal directory used for downloading components related to patching, and
@ -122,7 +122,7 @@ class PathManager(
fun cachedKotlinDex() = patchingDownloadDir
.resolve("kotlin.dex")
fun cachedWintryXposed(version: SemVer) = patchingDownloadDir
fun cachedShiggyXposed(version: SemVer) = patchingDownloadDir
.resolve("wt-xposed")
.resolve("$version.apk")

View file

@ -9,8 +9,8 @@ import androidx.core.content.getSystemService
import androidx.core.net.toUri
import com.aliucord.manager.manager.download.IDownloadManager.ProgressListener
import com.aliucord.manager.manager.download.IDownloadManager.Result
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.delay
import java.io.File

View file

@ -9,7 +9,7 @@ import androidx.core.content.getSystemService
import com.aliucord.manager.manager.download.IDownloadManager.Result
import com.aliucord.manager.patcher.util.InsufficientStorageException
import com.aliucord.manager.util.IS_PROBABLY_EMULATOR
import dev.wintry.manager.R
import dev.shiggy.manager.R
import io.ktor.client.HttpClient
import io.ktor.client.request.header
import io.ktor.client.request.prepareGet

View file

@ -2,7 +2,7 @@ package com.aliucord.manager.network.services
import android.util.Log
import com.aliucord.manager.network.utils.*
import dev.wintry.manager.BuildConfig
import dev.shiggy.manager.BuildConfig
import io.ktor.client.HttpClient
import io.ktor.client.request.HttpRequestBuilder
import io.ktor.client.request.request

View file

@ -6,12 +6,10 @@ import io.ktor.client.request.header
import io.ktor.client.request.url
import io.ktor.http.HttpHeaders
class WintryGithubService(
private val http: HttpService,
class ShiggyGithubService(
private val http: HttpService,
) {
/**
* Fetches all the Manager releases with a 60s local cache.
*/
/** Fetches all the Manager releases with a 60s local cache. */
suspend fun getManagerReleases(): ApiResponse<List<GithubRelease>> {
return http.request {
url("https://api.github.com/repos/$ORG/$MANAGER_REPO/releases")
@ -19,9 +17,7 @@ class WintryGithubService(
}
}
/**
* Fetches the latest Xposed release with a 60s local cache.
*/
/** Fetches the latest Xposed release with a 60s local cache. */
suspend fun getLatestXposedRelease(): ApiResponse<GithubRelease> {
return http.request {
url("https://api.github.com/repos/$ORG/$XPOSED_REPO/releases/latest")
@ -30,8 +26,8 @@ class WintryGithubService(
}
companion object {
const val ORG = "wtcord"
const val MANAGER_REPO = "wt-manager"
const val XPOSED_REPO = "wt-xposed"
const val ORG = "kmmiio99o"
const val MANAGER_REPO = "ShiggyManager"
const val XPOSED_REPO = "ShiggyXposed"
}
}

View file

@ -5,7 +5,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import kotlinx.serialization.Serializable
/**
* Data stored inside patched APKs as ~~"aliucord.json"~~ "wintry.json" in order to preserve install-time information about Aliucord and the Manager.
* Data stored inside patched APKs as ~~"aliucord.json"~~ "shiggy.json" in order to preserve install-time information about Aliucord and the Manager.
*/
@Serializable
data class InstallMetadata(
@ -45,7 +45,7 @@ data class InstallMetadata(
val lspatchVersion: Int?,
/**
* Version of WintryXposed embedded into the APK.
* Version of ShiggyXposed embedded into the APK.
*/
val wintryXposedVersion: SemVer?,
val shiggyXposedVersion: SemVer?,
)

View file

@ -0,0 +1,31 @@
package com.aliucord.manager.patcher
import com.aliucord.manager.patcher.steps.download.*
import com.aliucord.manager.patcher.steps.install.*
import com.aliucord.manager.patcher.steps.patch.*
import com.aliucord.manager.patcher.steps.prepare.*
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import kotlinx.collections.immutable.persistentListOf
class ShiggyPatchRunner(options: PatchOptions) : StepRunner() {
override val steps =
persistentListOf(
FetchDiscordRNAStep(options),
DowngradeCheckStep(options),
RestoreDownloadsStep(),
DownloadDiscordRNABaseStep(),
DownloadDiscordRNALangStep(),
DownloadDiscordRNAResourcesStep(),
DownloadDiscordRNALibStep(),
DownloadShiggyXposedStep(),
CopyDependenciesStep(),
PatchIconsStep(options),
PatchShiggyManifestStep(options),
SaveMetadataStep(options),
AlignmentStep(),
SigningStep(),
InjectShiggyXposedStep(),
InstallStep(options),
CleanupStep(),
)
}

View file

@ -9,8 +9,8 @@ import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.DownloadStep
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.ui.util.InstallNotifications
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import kotlinx.collections.immutable.ImmutableList
import kotlinx.coroutines.delay
import org.koin.core.component.KoinComponent

View file

@ -1,34 +0,0 @@
package com.aliucord.manager.patcher
import com.aliucord.manager.patcher.steps.download.*
import com.aliucord.manager.patcher.steps.install.*
import com.aliucord.manager.patcher.steps.patch.*
import com.aliucord.manager.patcher.steps.prepare.*
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import kotlinx.collections.immutable.persistentListOf
class WintryPatchRunner(options: PatchOptions) : StepRunner() {
override val steps = persistentListOf(
FetchDiscordRNAStep(options),
DowngradeCheckStep(options),
RestoreDownloadsStep(),
DownloadDiscordRNABaseStep(),
DownloadDiscordRNALangStep(),
DownloadDiscordRNAResourcesStep(),
DownloadDiscordRNALibStep(),
DownloadWintryXposedStep(),
CopyDependenciesStep(),
PatchIconsStep(options),
PatchWintryManifestStep(options),
SaveMetadataStep(options),
AlignmentStep(),
SigningStep(),
InjectWintryXposedStep(),
InstallStep(options),
CleanupStep(),
)
}

View file

@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps
import android.os.Parcelable
import androidx.annotation.StringRes
import androidx.compose.runtime.Immutable
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.parcelize.Parcelize
/**

View file

@ -10,7 +10,7 @@ import com.aliucord.manager.manager.download.KtorDownloadManager
import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.util.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.koin.core.component.KoinComponent

View file

@ -9,7 +9,7 @@ import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.util.InsufficientStorageException
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import java.io.File

View file

@ -10,7 +10,7 @@ import com.aliucord.manager.patcher.steps.base.DownloadStep
import com.aliucord.manager.patcher.steps.base.IDexProvider
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
import com.github.diamondminer88.zip.ZipReader
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.download
import com.aliucord.manager.manager.PathManager
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.inject
class DownloadDiscordRNABaseStep : DownloadDiscordRNAStep() {

View file

@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.download
import com.aliucord.manager.manager.PathManager
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.inject
class DownloadDiscordRNALangStep : DownloadDiscordRNAStep() {

View file

@ -4,7 +4,7 @@ import android.os.Build
import com.aliucord.manager.manager.PathManager
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.inject
class DownloadDiscordRNALibStep : DownloadDiscordRNAStep() {

View file

@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.download
import com.aliucord.manager.manager.PathManager
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.inject
class DownloadDiscordRNAResourcesStep : DownloadDiscordRNAStep() {

View file

@ -3,8 +3,8 @@ package com.aliucord.manager.patcher.steps.download
import androidx.compose.runtime.Stable
import com.aliucord.manager.manager.PathManager
import com.aliucord.manager.patcher.steps.base.DownloadStep
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -11,8 +11,8 @@ import com.aliucord.manager.patcher.steps.base.*
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
import com.aliucord.manager.patcher.steps.prepare.FetchInfoStep
import com.aliucord.manager.ui.components.dialogs.CustomComponentVersionPicker
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -5,7 +5,7 @@ import com.aliucord.manager.manager.PathManager
import com.aliucord.manager.patcher.steps.base.DownloadStep
import com.aliucord.manager.patcher.steps.base.IDexProvider
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -11,8 +11,8 @@ import com.aliucord.manager.patcher.steps.base.DownloadStep
import com.aliucord.manager.patcher.steps.base.StepState
import com.aliucord.manager.patcher.steps.prepare.FetchInfoStep
import com.aliucord.manager.ui.components.dialogs.CustomComponentVersionPicker
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -1,28 +1,28 @@
package com.aliucord.manager.patcher.steps.download
import com.aliucord.manager.manager.PathManager
import com.aliucord.manager.network.services.WintryGithubService
import com.aliucord.manager.network.services.ShiggyGithubService
import com.aliucord.manager.network.utils.SemVer
import com.aliucord.manager.network.utils.getOrThrow
import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.steps.base.DownloadStep
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.inject
class DownloadWintryXposedStep : DownloadStep() {
class DownloadShiggyXposedStep : DownloadStep() {
private val paths: PathManager by inject()
private val wintryGithubService: WintryGithubService by inject()
private val shiggyGithubService: ShiggyGithubService by inject()
override val localizedName = R.string.patch_step_dl_wtxposed
override val targetFile get() = paths.cachedWintryXposed(targetVersion)
override val targetFile get() = paths.cachedShiggyXposed(targetVersion)
override lateinit var targetUrl: String
lateinit var targetVersion: SemVer
private set
override suspend fun execute(container: StepRunner) {
val latestRelease = wintryGithubService.getLatestXposedRelease().getOrThrow()
container.log("Latest WintryXposed release is ${latestRelease.name}")
val latestRelease = shiggyGithubService.getLatestXposedRelease().getOrThrow()
container.log("Latest ShiggyXposed release is ${latestRelease.name}")
targetVersion = SemVer.parse(latestRelease.name)
targetUrl = latestRelease.assets.first { it.name == "app-release.apk" }.browserDownloadUrl

View file

@ -7,7 +7,7 @@ import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
import com.github.diamondminer88.zip.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -5,7 +5,7 @@ import com.aliucord.manager.manager.PreferencesManager
import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -4,9 +4,9 @@ import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
import com.aliucord.manager.patcher.steps.download.DownloadWintryXposedStep
import com.aliucord.manager.patcher.steps.download.DownloadShiggyXposedStep
import com.aliucord.manager.patcher.util.Signer
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.lsposed.lspatch.share.LSPConfig
@ -14,9 +14,9 @@ import org.lsposed.patch.LSPatch
import org.lsposed.patch.util.Logger
import java.io.File
class InjectWintryXposedStep : Step() {
class InjectShiggyXposedStep : Step() {
override val group: StepGroup = StepGroup.Install
override val localizedName: Int = R.string.patch_step_inject_wintry
override val localizedName: Int = R.string.patch_step_inject_shiggy
suspend fun patch(
container: StepRunner,
@ -58,10 +58,10 @@ class InjectWintryXposedStep : Step() {
override suspend fun execute(container: StepRunner) {
val apks = container.getStep<CopyDependenciesStep>().patchedApks
val xposed = container.getStep<DownloadWintryXposedStep>().targetFile
val xposed = container.getStep<DownloadShiggyXposedStep>().targetFile
container.log("Adding WintryXposed module with LSPatch")
container.log("WintryXposed path = ${xposed.absolutePath}")
container.log("Adding ShiggyXposed module with LSPatch")
container.log("ShiggyXposed path = ${xposed.absolutePath}")
// Create temporary folder in working directory
val tempDir = apks.first().parentFile!!.resolve("lspatched")

View file

@ -14,7 +14,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import com.aliucord.manager.ui.util.InstallNotifications
import com.aliucord.manager.util.isPackageInstalled
import com.aliucord.manager.util.isPlayProtectEnabled
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -5,7 +5,7 @@ import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
import com.aliucord.manager.patcher.util.Signer
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
/**

View file

@ -8,7 +8,7 @@ import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
import com.aliucord.manager.patcher.steps.download.DownloadAliuhookStep
import com.github.diamondminer88.zip.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
/**

View file

@ -30,7 +30,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
import com.aliucord.manager.util.getResBytes
import com.github.diamondminer88.zip.ZipWriter
import com.google.devrel.gmscore.tools.apk.arsc.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import java.io.ByteArrayOutputStream

View file

@ -8,7 +8,7 @@ import com.aliucord.manager.patcher.util.ManifestPatcher
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import com.github.diamondminer88.zip.ZipReader
import com.github.diamondminer88.zip.ZipWriter
import dev.wintry.manager.R
import dev.shiggy.manager.R
/**
* Patch the APK's AndroidManifest.xml

View file

@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.patch
import com.aliucord.manager.patcher.util.ManifestPatcher
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
class PatchWintryManifestStep(val options: PatchOptions) : PatchManifestStep(options) {
class PatchShiggyManifestStep(val options: PatchOptions) : PatchManifestStep(options) {
override fun patchManifest(manifestBytes: ByteArray, isBase: Boolean) = ManifestPatcher.patchManifest(
manifestBytes = manifestBytes,
packageName = options.packageName,

View file

@ -7,7 +7,7 @@ import com.aliucord.manager.patcher.steps.base.IDexProvider
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
import com.github.diamondminer88.zip.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -8,8 +8,8 @@ import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.download.*
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import com.github.diamondminer88.zip.ZipWriter
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import kotlinx.serialization.json.Json
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
@ -31,7 +31,7 @@ class SaveMetadataStep(private val options: PatchOptions) : Step(), KoinComponen
val aliuhook = container.getStepOrNull<DownloadAliuhookStep>()
val injector = container.getStepOrNull<DownloadInjectorStep>()
val patches = container.getStepOrNull<DownloadPatchesStep>()
val wintryXposed = container.getStepOrNull<DownloadWintryXposedStep>()
val shiggyXposed = container.getStepOrNull<DownloadShiggyXposedStep>()
val metadata = InstallMetadata(
options = options,
@ -41,12 +41,12 @@ class SaveMetadataStep(private val options: PatchOptions) : Step(), KoinComponen
injectorVersion = injector?.targetVersion,
patchesVersion = patches?.targetVersion,
lspatchVersion = LSPConfig.instance.VERSION_CODE,
wintryXposedVersion = wintryXposed?.targetVersion,
shiggyXposedVersion = shiggyXposed?.targetVersion,
)
container.log("Writing serialized install metadata to APK")
ZipWriter(apk, /* append = */ true).use {
it.writeEntry("wintry.json", json.encodeToString<InstallMetadata>(metadata))
it.writeEntry("shiggy.json", json.encodeToString<InstallMetadata>(metadata))
}
}
}

View file

@ -17,7 +17,7 @@ import com.github.diamondminer88.zip.ZipReader
import com.github.difflib.DiffUtils
import com.github.difflib.UnifiedDiffUtils
import com.github.difflib.patch.Patch
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import java.io.FileNotFoundException

View file

@ -10,7 +10,7 @@ import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.base.StepState
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import com.aliucord.manager.util.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -7,7 +7,7 @@ import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import com.aliucord.manager.ui.screens.patchopts.VersionPreference
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import kotlin.properties.Delegates

View file

@ -7,7 +7,7 @@ import com.aliucord.manager.network.utils.getOrThrow
import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -6,7 +6,7 @@ import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.base.StepState
import dev.wintry.manager.R
import dev.shiggy.manager.R
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

View file

@ -150,7 +150,7 @@ object ManifestPatcher {
"name",
android.R.attr.name,
TYPE_STRING,
"isWintry" /* originally "isAliucord" */
"isShiggy" /* originally "isAliucord" */
)
attr(ANDROID_NAMESPACE, "value", android.R.attr.value, TYPE_INT_BOOLEAN, 1)
}

View file

@ -7,7 +7,7 @@ package com.aliucord.manager.patcher.util
import com.aliucord.manager.manager.PathManager
import com.android.apksig.ApkSigner
import dev.wintry.manager.BuildConfig
import dev.shiggy.manager.BuildConfig
import org.bouncycastle.asn1.x500.X500Name
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
import org.bouncycastle.cert.X509v3CertificateBuilder
@ -32,7 +32,7 @@ object Signer : KoinComponent {
// Create new keystore if it doesn't exist
if (!paths.keystoreFile.exists()) {
paths.wintryDir.mkdirs()
paths.shiggyDir.mkdirs()
newKeystore(paths.keystoreFile)
}

View file

@ -8,7 +8,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.navigator.LocalNavigator
import com.aliucord.manager.util.back
import dev.wintry.manager.R
import dev.shiggy.manager.R
/**
* Standalone back button for interacting with the current navigator.

View file

@ -19,7 +19,7 @@ import androidx.compose.ui.unit.dp
import coil3.compose.SubcomposeAsyncImage
import com.aliucord.manager.network.models.Contributor
import com.valentinilk.shimmer.shimmer
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun ContributorCommitsItem(

View file

@ -19,7 +19,7 @@ import androidx.core.graphics.applyCanvas
import androidx.core.graphics.createBitmap
import androidx.core.graphics.drawable.toDrawable
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
import dev.wintry.manager.R
import dev.shiggy.manager.R
// Sizing information is obtained from here: https://medium.com/google-design/designing-adaptive-icons-515af294c783

View file

@ -8,7 +8,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun LoadFailure(modifier: Modifier = Modifier) {

View file

@ -12,8 +12,8 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
@Composable
fun ProjectHeader(
@ -28,7 +28,7 @@ fun ProjectHeader(
modifier = modifier,
) {
Image(
painter = painterResource(if (aliucord) R.drawable.ic_aliucord_logo else R.drawable.ic_rounded_wintry),
painter = painterResource(if (aliucord) R.drawable.ic_aliucord_logo else R.drawable.ic_rounded_shiggy),
contentDescription = null,
modifier = Modifier
.padding(bottom = 6.dp)
@ -36,7 +36,7 @@ fun ProjectHeader(
)
Text(
text = stringResource(if (aliucord) R.string.aliucord else R.string.wintry),
text = stringResource(if (aliucord) R.string.aliucord else R.string.shiggy),
style = MaterialTheme.typography.titleMedium.copy(fontSize = 26.sp)
)

View file

@ -9,7 +9,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.aliucord.manager.ui.util.mirrorVertically
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun ResetToDefaultButton(

View file

@ -16,7 +16,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import com.aliucord.manager.network.utils.SemVer
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun CustomComponentVersionPicker(

View file

@ -8,7 +8,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun InstallerAbortDialog(

View file

@ -13,7 +13,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun NetworkWarningDialog(

View file

@ -17,7 +17,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import com.aliucord.manager.ui.theme.customColors
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun PlayProtectDialog(

View file

@ -19,8 +19,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import androidx.core.net.toUri
import com.google.accompanist.permissions.*
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
@Composable
@OptIn(ExperimentalPermissionsApi::class)

View file

@ -16,8 +16,8 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import androidx.core.net.toUri
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
@Composable
fun UnknownSourcesPermissionDialog() {

View file

@ -11,7 +11,7 @@ import androidx.compose.ui.tooling.preview.*
import com.aliucord.manager.ui.screens.patching.components.TextBanner
import com.aliucord.manager.ui.theme.ManagerTheme
import com.aliucord.manager.ui.theme.customColors
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)

View file

@ -14,7 +14,7 @@ import com.aliucord.manager.ui.screens.iconopts.IconOptionsMode
import com.aliucord.manager.ui.screens.iconopts.IconOptionsScreenContent
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
import com.aliucord.manager.ui.theme.ManagerTheme
import dev.wintry.manager.R
import dev.shiggy.manager.R
import dev.zt64.compose.pipette.HsvColor
import java.io.ByteArrayOutputStream

View file

@ -23,14 +23,13 @@ import cafe.adriel.voyager.koin.koinScreenModel
import com.aliucord.manager.ui.components.*
import com.aliucord.manager.ui.screens.about.components.LeadContributor
import com.aliucord.manager.ui.util.paddings.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
@Parcelize
class AboutScreen : Screen, Parcelable {
@IgnoredOnParcel
override val key = "About"
@IgnoredOnParcel override val key = "About"
@Composable
override fun Content() {
@ -43,99 +42,94 @@ class AboutScreen : Screen, Parcelable {
@Composable
fun AboutScreenContent(state: State<AboutScreenState>) {
Scaffold(
topBar = {
TopAppBar(
title = { Text(stringResource(R.string.navigation_about_manager)) },
navigationIcon = { BackButton() },
)
}
topBar = {
TopAppBar(
title = { Text(stringResource(R.string.navigation_about_manager)) },
navigationIcon = { BackButton() },
)
}
) { paddingValues ->
LazyColumn(
verticalArrangement = Arrangement.spacedBy(2.dp),
horizontalAlignment = Alignment.CenterHorizontally,
contentPadding = paddingValues
.exclude(PaddingValuesSides.Horizontal + PaddingValuesSides.Top)
.add(PaddingValues(vertical = 16.dp)),
modifier = Modifier
.padding(paddingValues.exclude(PaddingValuesSides.Bottom))
.padding(horizontal = 14.dp),
verticalArrangement = Arrangement.spacedBy(2.dp),
horizontalAlignment = Alignment.CenterHorizontally,
contentPadding =
paddingValues
.exclude(PaddingValuesSides.Horizontal + PaddingValuesSides.Top)
.add(PaddingValues(vertical = 16.dp)),
modifier =
Modifier.padding(paddingValues.exclude(PaddingValuesSides.Bottom))
.padding(horizontal = 14.dp),
) {
item(key = "MANAGER_CREDIT_DISCLAIMER_BANNER") {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.padding(bottom = 24.dp)
.border(
width = 2.dp,
color = MaterialTheme.colorScheme.surfaceVariant,
shape = MaterialTheme.shapes.medium
)
.clip(MaterialTheme.shapes.medium)
.background(MaterialTheme.colorScheme.surfaceContainerHigh)
contentAlignment = Alignment.Center,
modifier =
Modifier.padding(bottom = 24.dp)
.border(
width = 2.dp,
color = MaterialTheme.colorScheme.surfaceVariant,
shape = MaterialTheme.shapes.medium
)
.clip(MaterialTheme.shapes.medium)
.background(MaterialTheme.colorScheme.surfaceContainerHigh)
) {
Row(
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.padding(horizontal = 20.dp, vertical = 14.dp)
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(horizontal = 20.dp, vertical = 14.dp)
) {
Text(
text = stringResource(R.string.about_manager_credit_disclaimer_notice),
style = MaterialTheme.typography.labelMedium,
text =
stringResource(
R.string.about_manager_credit_disclaimer_notice
),
style = MaterialTheme.typography.labelMedium,
)
}
}
}
item(key = "PROJECT_HEADER") {
ProjectHeader(aliucord = true)
}
item(key = "PROJECT_HEADER") { ProjectHeader(aliucord = true) }
item(key = "HEADER_DIVIDER") {
TextDivider(
text = stringResource(R.string.contributors_lead),
modifier = Modifier.padding(top = 18.dp, bottom = 20.dp),
text = stringResource(R.string.contributors_lead),
modifier = Modifier.padding(top = 18.dp, bottom = 20.dp),
)
}
item(key = "MAIN_CONTRIBUTORS") {
Row(
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxWidth(),
) {
LeadContributor("Vendicated", "the ven")
LeadContributor("Juby210", "Fox")
LeadContributor("rushii", "explod", "rushiiMachine")
LeadContributor("C0C0B01", "Creator of Kettu")
LeadContributor("kmmiio99o", "Creator of ShiggyCord")
LeadContributor("pylixonly", "Creator of Bunny")
}
}
item(key = "CONTRIBUTORS_DIVIDER") {
TextDivider(
text = stringResource(R.string.contributors),
modifier = Modifier.padding(top = 16.dp, bottom = 6.dp)
text = stringResource(R.string.contributors),
modifier = Modifier.padding(top = 16.dp, bottom = 6.dp)
)
}
when (val state = state.value) {
AboutScreenState.Loading -> item(key = "CONTRIBUTIONS_LOADING") {
Box(
contentAlignment = Alignment.Center,
content = { CircularProgressIndicator() },
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 38.dp),
)
}
AboutScreenState.Failure -> item(key = "LOAD_FAILURE") {
LoadFailure(
modifier = Modifier
.fillMaxSize()
.padding(vertical = 38.dp)
)
}
AboutScreenState.Loading ->
item(key = "CONTRIBUTIONS_LOADING") {
Box(
contentAlignment = Alignment.Center,
content = { CircularProgressIndicator() },
modifier = Modifier.fillMaxWidth().padding(vertical = 38.dp),
)
}
AboutScreenState.Failure ->
item(key = "LOAD_FAILURE") {
LoadFailure(modifier = Modifier.fillMaxSize().padding(vertical = 38.dp))
}
is AboutScreenState.Loaded -> {
items(state.contributors, key = { it.username }) { user ->
ContributorCommitsItem(user)

View file

@ -24,8 +24,8 @@ import com.aliucord.manager.ui.util.DiscordVersion
import com.aliucord.manager.ui.util.toUnsafeImmutable
import com.aliucord.manager.util.*
import com.github.diamondminer88.zip.ZipReader
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import kotlinx.coroutines.*
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
@ -37,7 +37,7 @@ class HomeModel(
private val application: Application,
private val github: AliucordGithubService,
private val maven: AliucordMavenService,
private val wtGithub: WintryGithubService,
private val wtGithub: ShiggyGithubService,
private val rnaTracker: RNATrackerService,
private val json: Json,
) : ScreenModel {
@ -47,7 +47,7 @@ class HomeModel(
private val refreshingLock = Mutex()
private var remoteDataJson: BuildInfo? = null
private var trackerIndexJson: RNATrackerIndex? = null
private var latestWintryXposedVersion: SemVer? = null
private var latestShiggyXposedVersion: SemVer? = null
private var latestAliuhookVersion: SemVer? = null
init {
@ -109,7 +109,7 @@ class HomeModel(
val metadata = try {
val applicationInfo = application.packageManager.getApplicationInfo(packageName, 0)
val metadataFile = ZipReader(applicationInfo.publicSourceDir)
.use { it.openEntry("wintry.json")?.read() }
.use { it.openEntry("shiggy.json")?.read() }
@OptIn(ExperimentalSerializationApi::class)
metadataFile?.let { json.decodeFromStream<InstallMetadata>(it.inputStream()) }
@ -190,7 +190,7 @@ class HomeModel(
private suspend fun fetchRemoteData() {
listOf(
// // These aren't needed by Wintry
// // These aren't needed by Shiggy
// screenModelScope.launch(Dispatchers.IO) {
// github.getBuildData().fold(
// success = { remoteDataJson = it },
@ -211,14 +211,14 @@ class HomeModel(
},
screenModelScope.launch(Dispatchers.IO) {
wtGithub.getLatestXposedRelease().fold(
success = { latestWintryXposedVersion = SemVer.parse(it.name) },
fail = { Log.w(BuildConfig.TAG, "Failed to fetch latest WintryXposed version", it) },
success = { latestShiggyXposedVersion = SemVer.parse(it.name) },
fail = { Log.w(BuildConfig.TAG, "Failed to fetch latest ShiggyXposed version", it) },
)
},
).joinAll()
if (trackerIndexJson == null /* remoteDataJson == null || latestAliuhookVersion == null */ || latestWintryXposedVersion == null) {
if (trackerIndexJson == null /* remoteDataJson == null || latestAliuhookVersion == null */ || latestShiggyXposedVersion == null) {
mainThread { application.showToast(R.string.home_network_fail) }
}
}
@ -230,8 +230,8 @@ class HomeModel(
return application.packageManager
.getInstalledPackages(PackageManager.GET_META_DATA)
.filter {
// Wintry doesn't have "legacy installer" whatsoever
return@filter it.applicationInfo?.metaData?.containsKey("isWintry") == true
// Shiggy doesn't have "legacy installer" whatsoever
return@filter it.applicationInfo?.metaData?.containsKey("isShiggy") == true
// // Packages installed via the legacy Installer do not have the metadata marker
// val isAliucordPkg = it.packageName == "com.aliucord"
@ -241,11 +241,11 @@ class HomeModel(
}
/**
* Checks whether the current Wintry installation is up-to-date.
* Checks whether the current Shiggy installation is up-to-date.
*
* Currently mirrors the behavior of Bunny Manager by directly comparing against
* the latest available Discord and WintryXposed release. This is a temporary approach and will remain
* in place until Wintry adds support for version pinning.
* the latest available Discord and ShiggyXposed release. This is a temporary approach and will remain
* in place until Shiggy adds support for version pinning.
*/
private fun isInstallationUpToDate(pkg: PackageInfo): Boolean? {
val trackerData = trackerIndexJson ?: return null
@ -257,7 +257,7 @@ class HomeModel(
// Try to parse install metadata. If none present, install was made via legacy installer.
val apkPath = pkg.applicationInfo?.publicSourceDir ?: return false
val installMetadata = try {
val metadataFile = ZipReader(apkPath).use { it.openEntry("wintry.json")?.read() }
val metadataFile = ZipReader(apkPath).use { it.openEntry("shiggy.json")?.read() }
?: return false
@OptIn(ExperimentalSerializationApi::class)
@ -274,6 +274,6 @@ class HomeModel(
VersionPreference.Custom -> return true
}
return latestByPref == versionCode && installMetadata.wintryXposedVersion == latestWintryXposedVersion
return latestByPref == versionCode && installMetadata.shiggyXposedVersion == latestShiggyXposedVersion
}
}

View file

@ -34,7 +34,7 @@ import com.aliucord.manager.ui.screens.plugins.PluginsScreen
import com.aliucord.manager.ui.util.paddings.PaddingValuesSides
import com.aliucord.manager.ui.util.paddings.exclude
import com.aliucord.manager.util.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize

View file

@ -8,7 +8,7 @@ import cafe.adriel.voyager.navigator.LocalNavigator
import com.aliucord.manager.ui.screens.about.AboutScreen
import com.aliucord.manager.ui.screens.logs.LogsListScreen
import com.aliucord.manager.ui.screens.settings.SettingsScreen
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun HomeAppBar() {

View file

@ -14,7 +14,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.aliucord.manager.ui.util.thenIf
import com.valentinilk.shimmer.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
private val shimmerTheme = defaultShimmerTheme.copy(
shimmerWidth = 150.dp,

View file

@ -18,7 +18,7 @@ import androidx.compose.ui.unit.dp
import com.aliucord.manager.ui.components.SegmentedButton
import com.aliucord.manager.ui.components.VersionDisplay
import com.aliucord.manager.ui.screens.home.InstallData
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun InstalledItemCard(
@ -88,7 +88,7 @@ fun InstalledItemCard(
horizontalArrangement = Arrangement.spacedBy(2.dp),
modifier = Modifier.clip(MaterialTheme.shapes.large),
) {
// // Plugins cannot be managed externally yet in Wintry
// // Plugins cannot be managed externally yet in Shiggy
// SegmentedButton(
// icon = painterResource(R.drawable.ic_extension),
// text = stringResource(R.string.plugins_title),

View file

@ -6,7 +6,7 @@ import androidx.compose.runtime.Immutable
enum class IconOptionsMode {
Original,
OldDiscord,
Wintry,
Shiggy,
Aliucord,
CustomColor,
CustomImage,

View file

@ -10,8 +10,8 @@ import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
import com.aliucord.manager.util.*
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import dev.zt64.compose.pipette.HsvColor
import java.io.IOException
@ -74,9 +74,9 @@ class IconOptionsModel(
// ---------- Other ---------- //
init {
when (prefilledOptions) {
is IconReplacement.CustomColor if prefilledOptions.color == IconReplacement.WintryColor -> {
changeMode(IconOptionsMode.Wintry)
initSelectedColor(IconReplacement.WintryColor)
is IconReplacement.CustomColor if prefilledOptions.color == IconReplacement.ShiggyColor -> {
changeMode(IconOptionsMode.Shiggy)
initSelectedColor(IconReplacement.ShiggyColor)
}
is IconReplacement.CustomColor if prefilledOptions.color == IconReplacement.AliucordColor -> {
@ -104,7 +104,7 @@ class IconOptionsModel(
return when (mode) {
IconOptionsMode.Original -> IconReplacement.Original
IconOptionsMode.OldDiscord -> IconReplacement.OldDiscord
IconOptionsMode.Wintry -> IconReplacement.CustomColor(IconReplacement.WintryColor)
IconOptionsMode.Shiggy -> IconReplacement.CustomColor(IconReplacement.ShiggyColor)
IconOptionsMode.Aliucord -> IconReplacement.CustomColor(IconReplacement.AliucordColor)
IconOptionsMode.CustomColor -> IconReplacement.CustomColor(color = selectedColor.toColor())
IconOptionsMode.CustomImage -> IconReplacement.CustomImage(

View file

@ -41,7 +41,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptionsScreen
import com.aliucord.manager.ui.util.ColorSaver
import com.aliucord.manager.ui.util.throttledState
import com.aliucord.manager.util.back
import dev.wintry.manager.R
import dev.shiggy.manager.R
import dev.zt64.compose.pipette.CircularColorPicker
import dev.zt64.compose.pipette.HsvColor
import kotlinx.parcelize.IgnoredOnParcel
@ -120,10 +120,10 @@ fun IconOptionsScreenContent(
onClick = remember { { setMode(IconOptionsMode.OldDiscord) } },
)
RadioSelectorItem(
name = stringResource(R.string.wintry),
description = stringResource(R.string.iconopts_variant_desc_wintry),
selected = mode == IconOptionsMode.Wintry,
onClick = remember { { setMode(IconOptionsMode.Wintry) } },
name = stringResource(R.string.shiggy),
description = stringResource(R.string.iconopts_variant_desc_shiggy),
selected = mode == IconOptionsMode.Shiggy,
onClick = remember { { setMode(IconOptionsMode.Shiggy) } },
)
RadioSelectorItem(
name = stringResource(R.string.aliucord),
@ -220,7 +220,7 @@ private fun IconPreview(
IconOptionsMode.Original -> PatchOptions.IconReplacement.BlurpleColor
IconOptionsMode.OldDiscord -> PatchOptions.IconReplacement.OldBlurpleColor
IconOptionsMode.Aliucord -> PatchOptions.IconReplacement.AliucordColor
IconOptionsMode.Wintry -> PatchOptions.IconReplacement.WintryColor
IconOptionsMode.Shiggy -> PatchOptions.IconReplacement.ShiggyColor
IconOptionsMode.CustomColor -> selectedColor.toColor()
IconOptionsMode.CustomImage -> error("unreachable")
}

View file

@ -7,7 +7,7 @@ import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.navigator.LocalNavigator
import com.aliucord.manager.ui.components.BackButton
import com.aliucord.manager.ui.screens.settings.SettingsScreen
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun IconOptionsAppBar() {

View file

@ -11,7 +11,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import dev.wintry.manager.R
import dev.shiggy.manager.R
import java.util.Locale
import kotlin.math.roundToInt

View file

@ -18,7 +18,7 @@ import com.aliucord.manager.ui.components.Label
import com.aliucord.manager.ui.screens.log.components.LogAppBar
import com.aliucord.manager.ui.screens.log.components.LogTextArea
import com.aliucord.manager.util.back
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
import org.koin.core.parameter.parametersOf

View file

@ -10,8 +10,8 @@ import cafe.adriel.voyager.core.model.screenModelScope
import com.aliucord.manager.manager.InstallLogData
import com.aliucord.manager.manager.InstallLogManager
import com.aliucord.manager.util.*
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
class LogScreenModel(
private val installId: String,

View file

@ -5,7 +5,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import com.aliucord.manager.ui.components.BackButton
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun LogAppBar(

View file

@ -8,7 +8,7 @@ import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import com.aliucord.manager.manager.InstallLogManager
import com.aliucord.manager.util.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList

View file

@ -21,7 +21,7 @@ import com.aliucord.manager.patcher.steps.base.StepState
import com.aliucord.manager.ui.screens.logs.LogEntry
import com.aliucord.manager.ui.screens.patching.components.StepStateIcon
import com.aliucord.manager.ui.screens.patching.components.TimeElapsed
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun LogEntryCard(

View file

@ -7,7 +7,7 @@ import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.navigator.LocalNavigator
import com.aliucord.manager.ui.components.BackButton
import com.aliucord.manager.ui.screens.settings.SettingsScreen
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun LogsListAppBar(

View file

@ -9,7 +9,7 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun LogsNone(modifier: Modifier = Modifier) {

View file

@ -8,7 +8,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun DeleteLogsDialog(

View file

@ -40,8 +40,8 @@ import com.aliucord.manager.ui.util.spacedByLastAtBottom
import com.aliucord.manager.ui.util.thenIf
import com.aliucord.manager.util.back
import com.aliucord.manager.util.isIgnoringBatteryOptimizations
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import kotlinx.collections.immutable.persistentListOf
import kotlinx.coroutines.flow.filter
import kotlinx.parcelize.IgnoredOnParcel

View file

@ -9,7 +9,7 @@ import cafe.adriel.voyager.core.model.StateScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import com.aliucord.manager.manager.*
import com.aliucord.manager.patcher.StepRunner
import com.aliucord.manager.patcher.WintryPatchRunner
import com.aliucord.manager.patcher.ShiggyPatchRunner
import com.aliucord.manager.patcher.steps.StepGroup
import com.aliucord.manager.patcher.steps.base.*
import com.aliucord.manager.patcher.steps.install.InstallStep
@ -17,8 +17,8 @@ import com.aliucord.manager.patcher.util.InsufficientStorageException
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
import com.aliucord.manager.ui.util.toUnsafeImmutable
import com.aliucord.manager.util.*
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.ImmutableMap
import kotlinx.coroutines.*
@ -125,7 +125,7 @@ class PatchingScreenModel(
}
private suspend fun startPatchRunner() {
val runner = WintryPatchRunner(options)
val runner = ShiggyPatchRunner(options)
.also { stepRunner = it }
val newSteps = runner.steps.groupBy { it.group }

View file

@ -14,7 +14,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.aliucord.manager.ui.screens.patching.PatchingScreenState
import com.aliucord.manager.ui.screens.patching.VERTICAL_PADDING
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun FunFact(

View file

@ -4,7 +4,7 @@ import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun PatchingAppBar(

View file

@ -13,7 +13,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.aliucord.manager.patcher.steps.base.Step
import com.aliucord.manager.patcher.steps.base.StepState
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.collections.immutable.ImmutableList
@Composable

View file

@ -14,7 +14,7 @@ import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.Dp
import com.aliucord.manager.patcher.steps.base.StepState
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlin.math.floor
import kotlin.math.roundToInt

View file

@ -109,9 +109,9 @@ data class PatchOptions(
val AliucordColor = Color(0xFF00C853)
/**
* The default Wintry background color.
* The default Shiggy background color.
*/
val WintryColor = Color(0xFF133E87)
val ShiggyColor = Color(0xFF133E87)
/**
* The new Discord blurple used in icons.
@ -127,10 +127,10 @@ data class PatchOptions(
companion object {
val Default = PatchOptions(
appName = "Wintry",
packageName = "dev.wintry.app",
appName = "Shiggy",
packageName = "dev.shiggy.app",
debuggable = false,
iconReplacement = IconReplacement.CustomColor(IconReplacement.WintryColor),
iconReplacement = IconReplacement.CustomColor(IconReplacement.ShiggyColor),
versionPreference = VersionPreference.Stable,
customVersionCode = "",
)

View file

@ -32,7 +32,7 @@ import com.aliucord.manager.ui.screens.patchopts.components.PatchOptionsAppBar
import com.aliucord.manager.ui.screens.patchopts.components.options.*
import com.aliucord.manager.ui.util.*
import com.aliucord.manager.util.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.coroutines.delay
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
@ -85,7 +85,7 @@ class PatchOptionsScreen(
selectedColor = when (iconModel.mode) {
IconOptionsMode.Original -> PatchOptions.IconReplacement.BlurpleColor
IconOptionsMode.OldDiscord -> PatchOptions.IconReplacement.OldBlurpleColor
IconOptionsMode.Wintry -> PatchOptions.IconReplacement.WintryColor
IconOptionsMode.Shiggy -> PatchOptions.IconReplacement.ShiggyColor
IconOptionsMode.Aliucord -> PatchOptions.IconReplacement.AliucordColor
IconOptionsMode.CustomColor -> iconModel.selectedColor.toColor()
IconOptionsMode.CustomImage -> null

View file

@ -12,7 +12,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.aliucord.manager.ui.screens.patchopts.PackageNameState
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun PackageNameStateLabel(

View file

@ -7,7 +7,7 @@ import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.navigator.LocalNavigator
import com.aliucord.manager.ui.components.BackButton
import com.aliucord.manager.ui.screens.settings.SettingsScreen
import dev.wintry.manager.R
import dev.shiggy.manager.R
@Composable
fun PatchOptionsAppBar(

View file

@ -12,8 +12,8 @@ import com.aliucord.manager.ui.util.emptyImmutableList
import com.aliucord.manager.ui.util.toUnsafeImmutable
import com.aliucord.manager.util.*
import com.github.diamondminer88.zip.ZipReader
import dev.wintry.manager.BuildConfig
import dev.wintry.manager.R
import dev.shiggy.manager.BuildConfig
import dev.shiggy.manager.R
import kotlinx.collections.immutable.ImmutableList
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.*

View file

@ -22,7 +22,7 @@ import com.aliucord.manager.ui.screens.plugins.components.*
import com.aliucord.manager.ui.screens.plugins.components.dialogs.UninstallPluginDialog
import com.aliucord.manager.ui.screens.plugins.model.PluginItem
import com.aliucord.manager.ui.util.paddings.*
import dev.wintry.manager.R
import dev.shiggy.manager.R
import kotlinx.collections.immutable.ImmutableList
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize

Some files were not shown because too many files have changed in this diff Show more