diff --git a/TODO.md b/TODO.md
index 724b446d..401d469e 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,11 +1,17 @@
# Todo List for SideStore-Docs
-[ ] Fix error codes and troubleshooting
+- [ ] Error Codes and Troubleshooting cleanup
-[X] Add details in faq about 3 app limit
-
-[X] macOS Pairing File Instructions
-
-[X] Linux Pairing File Instructions
-
-[ ] SideJITServer Docs (start)
+iloader translation:
+- [X] EN
+- [ ] ES
+- [ ] FR (partial)
+- [ ] DE (partial)
+- [X] IT
+- [ ] NL (partial)
+- [X] ZH
+- [ ] JA
+- [ ] RU
+- [X] KO
+- [X] SV
+- [ ] VI
diff --git a/docs/advanced/alternative.mdx b/docs/advanced/alternative.mdx
new file mode 100644
index 00000000..b54ddbfa
--- /dev/null
+++ b/docs/advanced/alternative.mdx
@@ -0,0 +1,184 @@
+---
+title: Alternative/Outdated instructions
+description: "A place for alternative/outdated SideStore setup instructions. Note: many of these walkthroughs may be incompatible with latest iOS or SideStore versions."
+---
+
+## Installation
+### AltServer
+#### macOS
+Follow the instructions (steps 1-3) [here](https://faq.altstore.io/altstore-classic/how-to-install-altstore-macos) to setup AltServer
+#### Windows
+Follow the instructions (steps 1-3) [here](https://faq.altstore.io/altstore-classic/how-to-install-altstore-windows) to setup AltServer
+#### Linux (Altcon)
+Before you start, make sure to have installed usbmuxd.
+
+1. Ensure you have usbmuxd installed and updated by running `sudo apt install -y usbmuxd` in the Linux terminal.
+2. Install either Docker or Podman on your machine.
+2. Plug in your secondary iDevice. If you recieve a prompt, select "trust" and enter your passcode.
+
+3. Now, run Altcon with Docker or Podman using the following command (may require `sudo`):
+
+Docker setup:
+```bash
+docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+```
+Podman setup:
+```bash
+podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+```
+5. Altcon will pair with your device. When you receive another prompt, select "trust" and enter your passcode again.
+
+#### Setting up SideStore for multiple devices on the same account using AltServer
+Steps:
+1. Setup AltServer on macOS/Windows using instructions above
+2. Install AltStore to one device using AltServer (We need AltStore once since it seems AltServer won't put machine identifier in apps other than AltStore)
+3. Sign in Apple ID in AltStore
+4. Export Certificate
+5. Delete AltStore
+
+Then for each device:
+1. Install SideStore using AltServer with the same Apple ID (Hold [Option/Mac, Shift/Windows] when clicking AltServer -> Install IPA -> Select SideStore.ipa)
+2. Import certificate
+3. Sign in Apple ID in SideStore (We need to sign in after importing the certificate otherwise it won't let you sign in without revoking AltStore's certificate)
+4. Sideload
+
+When the old certificate expires:
+1. SideStore will prompt to reinstall itself on one device
+2. After reinstalling, export the certificate
+
+Then for each other device:
+1. Import new certificate
+2. Sideload SideStore ipa from SideStore
+
+
+## Pairing
+### idevice_pair
+#### Installation Instructions
+
+##### macOS
+
+1. Download [idevice pair for macOS](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg).
+2. Open the Disk Image and drag `idevice pair` to `Applications`.
+
+##### Windows
+
+1. Ensure iTunes ([64-bit](https://apple.com/itunes/download/win64) or [32-bit](https://apple.com/itunes/download/win32)) is installed from from Apple's website (it should already be installed from the process of setting up AltServer).
+2. Download [idevice pair for Windows](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe) and move it somewhere you will remember it.
+
+##### Linux
+
+1. Ensure usbmuxd is installed on your machine by running `sudo apt install -y usbmuxd` in the Linux terminal.
+2. Download the version of idevice_pair for Linux ([x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage) or [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage)) which corresponds to your PC's architecture. Move it somewhere you will remember it, and make it executable.
+
+#### Pairing Instructions
+
+1. Connect your secondary device to your computer via cable. If a prompt appears, select `trust` and type in your passcode.
+2. Unlock your device, then open `idevice pair` and select your device in the drop-down menu.
+3. Ensure your device is unlocked and opened to the home screen, then select `load`. If a prompt appears on your device, tap `trust`. Your pairing file should appear.
+4. Ensure your device is still open to the home screen, then scroll down and select `install` underneath "SideStore". `Success` should appear in green.
+
+### JitterbugPair
+JitterbugPair (*not* the Jitterbug app) allows us to create a pairing file for programs like SideStore to talk to your device remotely. This is required to use SideStore, or it will not function.
+
+Download JitterbugPair for [Windows (64-bit)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip), [macOS](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-macos.zip), or [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip).
+
+#### Pairing Instructions
+
+:::tip
+
+Depending on your method, when transferring your .mobiledevicepariring file, the file extension might change (usually to .txt or cropping off the "ing"). It is always recommended to zip your pairing file before transferring it. SideStore only accepts .mobiledevicepairing files (or .plist files in older versions).
+:::
+
+##### Windows
+
+1. **Extract** `jitterbugpair-win64.zip`.
+2. **Set a passcode** for your device if you haven't already. Unlock your device and connect it to your computer via cable. If a prompt appears, tap "trust" and type in your passcode.
+3. Open your device to the homescreen.
+4. In File Explorer, locate `jitterbugpair.exe` and run it by double-clicking or right-clicking and selecting "open". The first time you run the tool, you will get a prompt for your passcode on your secondary device. Type it in, then keep the screen on and unlocked and run the tool again.
+5. JitterbugPair will generate a **pairing file** in the same folder. This file will have the extension `.mobiledevicepairing`.
+6. For best results, compress the file into a .zip folder. Then, **transfer the pairing file** to your iOS device using One/iCloud/Google Drive, email, or another method you prefer.
+
+On Windows, you might have to execute the program using Command Prompt or Powershell, as double-clicking the `.exe` file doesn't always open it.
+
+7. In File Explorer, navigate to the folder where jitterbugpair is located.
+8. In the navigation bar where the folder location is, click an empty spot and type `powershell`. It should open a (possibly blue colored) window called PowerShell.
+9. From there, type `./jitterbugpair.exe` and press enter while your device is plugged in.
+
+##### macOS
+
+1. **Extract** `jitterbugpair-macos.zip`.
+2. **Set a passcode** for your device if you haven't already. Unlock your device and connect it to your computer via cable. If a prompt appears, tap "trust" and type in your passcode.
+3. Open your device to the homescreen.
+4. Find and open the extracted `jitterbugpair` file (it should have a black and green icon) by double-clicking it or right-clicking it and selecting "open". The first time you run the tool, you will get a prompt for your passcode on your secondary device. Type it in, then keep the screen on and unlocked and run the tool again.
+5. If you get the message" "macOS cannot verify that this app is free from malware":
+ - Go to System Settings > Privacy & Security
+ - Scroll down to the message about the app
+ - Click "Open Anyway," if the program doesn't run automatically, try manually running it again
+6. JitterbugPair will generate a **pairing file** with the extension `.mobiledevicepairing` to your user's home folder.
+7. If you can't find the pairing file:
+ - Copy the name of the pairing file generated
+ - Paste it into Finder
+ - If you ran the program more than once, all pairing files for your device should appear since they share the same name
+8. For best results, compress the file into a .zip folder. Then, **transfer the pairing file** to your iOS device via AirDrop, iCloud/One/Google Drive, email, or another method you prefer.
+
+##### Linux
+
+These instructions expect that you are familiar with the linux commandline.
+
+1. **Extract** `jitterbugpair-linux.zip`.
+2. Open a terminal in the extracted directory.
+3. Make the program executable:
+ ```bash
+ chmod +x ./jitterbugpair
+ ```
+4. **Set a passcode** for your device if you haven't already. Unlock your device and connect it to your computer via cable. If a prompt appears, tap "trust" and type in your passcode.
+5. Open your device to the homescreen.
+6. Execute the program:
+ ```bash
+ ./jitterbugpair
+ ```
+7. The first time you execute the tool, you will get a prompt for your passcode on your secondary device. Type it in, then keep the screen on and unlocked and run the tool again. Type it in, then keep the screen on and unlocked and execute the tool again.
+8. JitterbugPair will generate a **pairing file** with the extension `.mobiledevicepairing`.
+9. For best results, compress the file into a .zip folder. Then, **transfer the pairing file** to your iOS device using email, cloud storage, or another method you prefer.
+## SideStore exploits
+### SparseRestore (3-app limit)
+:::note
+
+The SparseRestore "Bypass 3 app limit" exploit **only works on iOS/iPadOS versions between 17.0 and 18.1 beta 4 (not including 17.7.1)**. If you are not on these versions and it doesn't work, **please do not ask for support on this**.
+
+:::
+
+#### Prerequisites
+* An iDevice running versions supported by the SparseRestore exploit (see note above).
+* At least 1 free app slot.
+* SideStore version 0.5.9 or later. You can find the latest versions [here](https://github.com/SideStore/SideStore/releases).
+* To perform this exploit, you MUST have **Find My** turned off on your iDevice during the process. It will not work otherwise. Here is how you can turn it off:
+ - Open the Settings app.
+ - Tap on your name at the top.
+ - Tap on Find My.
+ - Tap on Find My iPhone/iPad.
+ - Turn off Find My iPhone/iPad.
+ - You may be required to enter your Apple ID password to confirm.
+
+ > **Note:** You may still not be able to turn off Find My since having Stolen Device Protection on might prevent you from turning it off. Turn off Stolen Device Protection before trying to turn off Find My.
+
+#### Steps
+1. Install SparseBox. This can be done with a variety of methods, but for the purposes of this, install it with SideStore. The latest version can be found [here](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip) (unzip artifact.zip for the .ipa file).
+
+2. Tick on "Disable App Limit" in SideStore, and make sure SideStore is **closed** (not in background), then open SparseBox.
+
+3. Enable StosVPN, select your pairing file and tap 'Bypass 3-app limit'. This should bring up a log output. Wait for it to say `idevicebackup2 exited with code -18` or `idevicebackup2 exited with code 2`, then close the app. No need to hit apply.
+
+4. Re-open SideStore, and scroll down in SideStore settings. Press "clear cache", this will allow the exploit to be seen by SideStore.
+
+5. Test that the exploit has worked (you may need to install more than one app to test, depending on how many free slots you have). If it throws an error about the limit, reopen SideStore or retry the exploit. If it installs the app, congratulations! You can now have more than 3 apps installed at one time.
+
+#### Notes
+Due to certain limitations, this exploit must be done for every 3 additional apps you sideload.
+
+If you want/need Find My for other purposes, you can now turn it back on. However, if you want to install or refresh more apps, you will need to turn it off again.
+
+### MacDirtyCow (3-app limit)
+[MDC-Compatible IPA](https://cdn.discordapp.com/attachments/949183273827983370/1074037820328521829/SideStore_MDC_14.ipa)
+
+The MDC version of SideStore above (bypass 3-app limit) is only compatible with iOS 15.0-16.1.2, and is very outdated, and so you may experience issues. If you want to have this feature, we reccomend you join our Discord and go to the [sidestore-downloads](https://discord.com/channels/949183273383395328/1126118099930861638) channel, which will contain MDC compatible SideStore builds. Then, [seperately install WDBRemoveThreeAppLimit with SideStore](https://github.com/zhuowei/WDBRemoveThreeAppLimit/releases/tag/v1.0) to apply the patch.
diff --git a/docs/advanced/jit.mdx b/docs/advanced/jit.mdx
index dc51b84f..e0746a5d 100644
--- a/docs/advanced/jit.mdx
+++ b/docs/advanced/jit.mdx
@@ -4,21 +4,23 @@ description: A tutorial on how to enable Just-in-Time (JIT) Compilation for apps
---
:::note
-iOS 26 has broken JIT once again. An update has been released to StikDebug with a fix, but support is **very** limited. As of writing (Sep 16), the only supported apps are:
+iOS 26 has broken JIT once again. An update has been released to StikDebug with a fix, but support is limited. As of writing (Nov 10), the only supported apps are:
* UTM
* Amethyst
* MeloNX
-* maciOS (not fully released)
+* maciOS
+* DolphiniOS (beta)
+* Geode
Please keep an eye on our announcements channel in our Discord server and on the [idevice server](https://discord.gg/mACqxMxP3X)'s announcements and compatibility channels for further updates.
-There are many methods to enabling JIT, such as AltJIT, SideJITServer, and more. This tutorial will cover the use of StikDebug (formerly StikJIT), as it is the method we currently recommend. For more information, consult the [official StikDebug pairing guide](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
+There are many methods to enabling JIT, depending on your iOS version. This tutorial will cover the use of StikDebug (formerly StikJIT), as it is the method we currently recommend. For more information, consult the [official StikDebug pairing guide](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
As an alternative, SideStore 0.6.2 includes updates to minimuxer, allowing built-in JIT functionality similar to StikDebug. To use this, simply ensure you are connected to StosVPN with either Wi-Fi connected or Airplane Mode enabled, then navigate to "My Apps," longpress the app you wish to enable JIT for, and tap "enable JIT".
:::
## Prerequisites
-* An iDevice running iOS/iPadOS 17.4-18.6, excluding 18.4b1. If you are on 17.0-17.3, you must use an alternative such as [SideJITServer](https://github.com/nythepegasus/SideJITServer). As stated above, versions newer than 18.6 are currently unsupported.
+* An iDevice running iOS/iPadOS 17.4-all iOS 18 versions, excluding 18.4b1. If you are on 17.0-17.3, you must use an alternative such as [SideJITServer](https://github.com/nythepegasus/SideJITServer). SideStore's JIT enabler will only work on iOS 26 if your device is about 4+ years old (non-TXM capable).
## StikDebug installation with Apple App Store
@@ -37,7 +39,7 @@ As an alternative, SideStore 0.6.2 includes updates to minimuxer, allowing built
Open and close StikDebug to build the app's folder in files, then import the same **pairing file** you use for SideStore using idevice pair. For more information on this process, see [here](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
2. **Mount the DDI:**
- Open StikDebug with Wi-Fi and the VPN connected and the pairing file imported, then close it and reopen it. This mounts the DDI and must be performed every time you restart your idevice.
+ Open StikDebug with Wi-Fi and the VPN connected and the pairing file imported, then close it and reopen it. This mounts the DDI and must be performed every time you restart your iDevice.
## To enable JIT:
diff --git a/docs/advanced/pairing-file.mdx b/docs/advanced/pairing-file.mdx
new file mode 100644
index 00000000..d828aa35
--- /dev/null
+++ b/docs/advanced/pairing-file.mdx
@@ -0,0 +1,13 @@
+---
+title: Pairing File
+description: A guide on manually reimporting your pairing file.
+---
+:::warning
+Caution, if you update or reset your iDevice, your pairing file will expire and you will need to reimport it. This also occurs at random times. This is simply because of how Apple's software works, and there is nothing we can do at this point to fix it. This guide instructs you how to manually replace your pairing file with iloader.
+:::
+
+## Replacing your pairing file
+1. Make sure you have followed the steps in the [install guide](../installation/prerequisites) to install and setup iloader and SideStore.
+2. For best results, connect your iDevice to your computer via USB cable, but if your device only appears wirelessly, that should work too.
+3. Click "Manage Pairing File"
+4. To the right of "SideStore" and any other apps you wish, click "Place". "Pairing file placed successfully!" should appear in green.
diff --git a/docs/advanced/sparserestore.mdx b/docs/advanced/sparserestore.mdx
deleted file mode 100644
index df370a4d..00000000
--- a/docs/advanced/sparserestore.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: 3-App Limit Bypass
-description: A tutorial on how to install more than 3 apps via SideStore using the SparseRestore exploit.
----
-
-:::note
-
-The SparseRestore "Bypass 3 app limit" exploit **only works on iOS/iPadOS versions between 17.0 and 18.1 beta 4 (not including 17.7.1)**. If you are not on these versions and it doesn't work, **please do not ask for support on this**.
-
-:::
-
-## Prerequisites
-* An iDevice running versions supported by the SparseRestore exploit (see note above).
-* At least 1 free app slot.
-* SideStore version 0.5.9 or later. You can find the latest versions [here](https://github.com/SideStore/SideStore/releases).
-* To perform this exploit, you MUST have **Find My** turned off on your iDevice during the process. It will not work otherwise. Here is how you can turn it off:
- - Open the Settings app.
- - Tap on your name at the top.
- - Tap on Find My.
- - Tap on Find My iPhone/iPad.
- - Turn off Find My iPhone/iPad.
- - You may be required to enter your Apple ID password to confirm.
-
- > **Note:** You may still not be able to turn off Find My since having Stolen Device Protection on might prevent you from turning it off. Turn off Stolen Device Protection before trying to turn off Find My.
-
-## Steps
-1. Install SparseBox. This can be done with a variety of methods, but for the purposes of this, install it with SideStore. The latest version can be found [here](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip) (unzip artifact.zip for the .ipa file).
-
-2. Tick on "Disable App Limit" in SideStore, and make sure SideStore is **closed** (not in background), then open SparseBox.
-
-3. Enable StosVPN, select your pairing file and tap 'Bypass 3-app limit'. This should bring up a log output. Wait for it to say `idevicebackup2 exited with code -18` or `idevicebackup2 exited with code 2`, then close the app. No need to hit apply.
-
-4. Re-open SideStore, and scroll down in SideStore settings. Press "clear cache", this will allow the exploit to be seen by SideStore.
-
-5. Test that the exploit has worked (you may need to install more than one app to test, depending on how many free slots you have). If it throws an error about the limit, reopen SideStore or retry the exploit. If it installs the app, congratulations! You can now have more than 3 apps installed at one time.
-
-## Notes
-Due to certain limitations, this exploit must be done for every 3 additional apps you sideload.
-
-If you want/need Find My for other purposes, you can now turn it back on. However, if you want to install or refresh more apps, you will need to turn it off again.
-
-## Alternatives
-If either the exploit doesn't work for you, or your iDevice is on an unsupported version, there is an alternative to be able to use more than 3 apps at once. [LiveContainer](https://livecontainer.github.io/), developed by Duy Tran Khanh ([khanhduytran0](https://github.com/khanhduytran0)) (the person who also made SparseBox), allows for iOS apps to be run in containers in-app rather than installing them separately. This may also be easier to use over SparseRestore in some cases. The GitHub page can be found [here](https://github.com/khanhduytran0/LiveContainer).
diff --git a/docs/contributing/contributing.mdx b/docs/contributing/contributing.mdx
index a8951b1c..bde30a6f 100644
--- a/docs/contributing/contributing.mdx
+++ b/docs/contributing/contributing.mdx
@@ -38,7 +38,7 @@ This guide assumes you:
cd SideStore
```
- If you are using GitHub Desktop, refer to [this guide](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop).
+ If you are using GitHub Desktop, refer to [this guide](https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop).
3. **Copy `CodeSigning.xcconfig.sample` to `CodeSigning.xcconfig`** and fill in the values.
diff --git a/docs/faq.mdx b/docs/faq.mdx
index 66208957..7d367093 100644
--- a/docs/faq.mdx
+++ b/docs/faq.mdx
@@ -10,12 +10,16 @@ This is a list of frequently asked questions for SideStore. This has a list of c
## What is SideStore?
-SideStore is an iOS application that allows you to sideload apps onto your iOS device using only your Apple ID. SideStore resigns apps with your personal development certificate, and then uses a [specially designed VPN](https://github.com/jkcoxson/em_proxy) in order to trick iOS into installing them. SideStore will periodically "refresh" your apps in the background, to keep their normal 7-day development period from expiring.
+SideStore is an iOS application that allows you to sideload apps onto your iOS device using only your Apple ID. SideStore resigns apps with your personal development certificate, and then uses a [specially designed VPN](https://apps.apple.com/us/app/stosvpn/id6744003051) in order to trick iOS into installing them. SideStore will periodically "refresh" your apps in the background, to keep their normal 7-day development period from expiring.
SideStore's goal is to provide an untethered sideloading experience. It's a community driven fork of [AltStore](https://github.com/rileytestut/AltStore), and has already implemented some of the community's most-requested features. You only need a computer once during installation.
(Contributions are welcome! 🙂)
+### What limitations does SideStore have?
+
+If using a free Apple Account, SideStore can only install 3 apps (including itself) at a time. Additionally, only 10 different apps may be installed in a week. (Referred to as App IDs).
+
### Can I activate JIT?
For users using iOS/iPadOS 16 or lower, you can activate JIT directly from the SideStore 'My Apps' page by holding down on your app and selecting 'Enable JIT'.
@@ -32,7 +36,7 @@ Yes you can, just like AltStore!
### Does SideStore have AltStore (beta) features?
-We do implement AltStore (beta) features, but they aren't always latest. We try to keep up to date, or implement them in our own way if it's necessary.
+We do implement AltStore (beta) features, but they aren't always latest. We try to keep up to date, or implement them in our own way if necessary.
### Will having the VPN on drain my battery?
@@ -42,33 +46,29 @@ It does not, as it's only connecting to your own device. No remote servers are u
It does not, as there is no remote server used.
-### Updating SideStore hangs towards the end
-
-Go to the homescreen for it to finish. We don't know why this happens, but it might have to do with using a VPN to direct `installd` to refresh SideStore (itself).
-
### Can I sign more than 3 apps to be active?
Normally, no, as that’s an iOS and developer account limitation. Apple only allows 3 apps to be installed using a free Apple Developer account.
To remove this restriction (and also get a 365 day expiry), you can pay for a $99/year Apple Developer account.
-Alternatively, on iOS versions 18 db5/18.0.1 and below, you can utilize the SparseRestore exploit to bypass the 3-app limit.
+Alternatively, you can use LiveContainer, or on iOS versions 18 db5/18.0.1 and below, you can utilize the SparseRestore exploit to bypass the 3-app limit. (doesn't bypass the 10 app-id limit)
-A tutorial for using this can be found [here](advanced/sparserestore).
+A tutorial for using this can be found [here](advanced/alternative).
### I have a problem or bug or request for a feature or quality of life improvement
-Please make a GitHub issue on our GitHub page to make a bug report or feature request (with appropriate labels)!
+Please check [common issues](troubleshooting/common-issues) and existing GitHub issues, if you don't find it, please create a new a GitHub issue on our GitHub page to make a bug report or feature request (with appropriate labels)!
### I am a developer, how does this affect me?
-It doesn’t affect you directly, other than maybe an update to AltKit when/if we get our additions.
+Your apps shouldn't need any modification to work with SideStore!
### Do I need to install AltStore to install SideStore?
-Nope, you can sideload SideStore directly following our guides for [Windows](/docs/installation/windows.mdx), [macOS](/docs/installation/mac.mdx), and [Linux](/docs/installation/linux.mdx) since currently it operates like AltStore while signing.
+Nope, you can sideload SideStore directly by following our helpful [guide](installation/prerequisites)!
-### As a user, I’m having trouble logging into SideStore. I get an error
+### As a user, I’m having trouble logging into SideStore. I get an error.
There are many reasons this can happen, but the most common issue is a temporary Anisette server downtime. You can currently change the Anisette server on your device’s Settings app in SideStore under “Anisette URL”.
@@ -76,7 +76,7 @@ There are many reasons this can happen, but the most common issue is a temporary
We currently have a Community Source! Source URL: https://community-apps.sidestore.io/sidecommunity.json
-We also have a service called [SideStore Connect](https://connect.sidestore.io) which allows devs to publish their own apps.
+We also have a service called [SideStore Connect](https://connect.sidestore.io) which allows developers to publish their own apps.
### Why does my app have an update called "pacer test"?
@@ -84,7 +84,7 @@ This was a test update to see if there were problems between major versions, and
### Why do my JIT based apps not automatically activate JIT?
-We currently don’t have an automatic JIT activation method, and if we did you would need StosVPN on.
+We currently don’t have an automatic JIT activation method, and if we did you would need StosVPN on. Alternatively, you can use StikDebug.
### Does SideStore have an iPadOS UI?
@@ -98,17 +98,13 @@ These Macs are not real, and they are automatically generated by the Anisette se
Older Anisette servers that are used by many users are known to cause locking of Apple ID's. Please use one of the official Anisette servers, or host your own [anisette-v3-server](advanced/anisette).
-### Why do I get error -36607?
-
-This is a login issue with the Anisette server. There isn’t really much of any info about it other than changing Anisette servers sometimes helps, or you can keep trying to login until it does.
-
### Can I transfer my AltStore/Sideloadly apps?
Yes, just don’t remove the original app on your device. Go into SideStore and sideload the same or an updated IPA of the app, and it should be added to your list of apps within SideStore with your data still intact.
### Why do I need to refresh SideStore first thing after login?
-This is because AltServer or other programs sideload SideStore with their own app groupID, while we use our own. Refreshing SideStore changes it to ours, which makes apps disappear as their groupIDs are not updated. It’s best to not sideload anything before refreshing SideStore on a clean install.
+This is because AltServer and other programs tend to sideload SideStore with their own app groupID, while we use our own. Refreshing SideStore changes it to ours, which makes apps disappear as their groupIDs are not updated. It’s best to not sideload anything before refreshing SideStore on a clean install.
### Does SideStore support OTA updates?
@@ -116,26 +112,10 @@ Yep! Just click the update button when it appears!
### I want to test a SideStore version, and I want my data to stay when switching to a test version. Do I remove my app or sideload the test version via SideStore?
-You can sideload a nightly SideStore version via SideStore or AltServer and your data should be the same, or enable beta updates and select "nightly" in Settings. We cannot guarantee your data transfers when testing an unofficial or nightly build.
-
-### My apps disappeared and I don't know what to do
-
-Don't panic! Re-sideload the apps without removing them from your device, and your data should be fine. Unfortunately it's possible that your deactivated apps are gone, but to confirm that just refresh SideStore to see if they come back.
-
-### I'm unable to select my pairing file with any file type
-
-Make sure your pairing file's extension ends with `.mobiledevicepairing` or `.plist`. If it doesn't, double check to see if you had zipped your pairing file before sending it to your phone. Failing to do so may lead to the file being corrupted during transport. Also, when signing SideStore with a certificate, you won't be able to select the pairing file from within app. You can try moving the pairing file to the root directory of the SideStore folder in the Files app in "On My iPhone/iPad", and naming it `ALTPairingFile.mobiledevicepairing`. If you do not see the SideStore folder in the files app, connect your phone to your computer, and you can drag and drop the pairing file to the files of the SideStore app. Ensure to change it to name mentioned above. Note that it is case sensitive.
-
-### Cannot start DebugServer
-
-There is times when the DebugServer doesn't work. However, there is a fix you can try:
-
-**Make a new pairing file**
-
-To start the process of using a new pairing file you go to settings tab and click Reset Pairing file, and you accept the prompt. Then you just follow the [Pairing File instructions](installation/pairing-file).
+You can sideload a nightly SideStore version via SideStore or iloader and your data should remain, or enable beta updates and select "nightly" in Settings. We cannot guarantee your data transfers when testing an unofficial or nightly build.
### Currently Known issues
-If you're currently having issues and want to know if we already know about them. Then check out our GitHub issue page which has a list of known issues and ways to mitigate some of the issues you might be having. Some of the issues in this list might be known that are not there, but are in the GitHub issues section. https://github.com/SideStore/SideStore/issues/490
+If you're currently having issues and want to know if we already know about them, check out our GitHub issue page and the troubleshooting page which has a list of known issues and ways to mitigate some of the issues you might be having. Some of the issues in this list might be known that are not there, but are in the GitHub issues section. [GitHub](https://github.com/SideStore/SideStore/issues/490), [troubleshooting](/docs/troubleshooting/).
If you have any issues that aren't in this list. Just make a GitHub issue or [join our discord.](https://dis.sidestore.io/)
diff --git a/docs/installation/install.mdx b/docs/installation/install.mdx
new file mode 100644
index 00000000..60a51ead
--- /dev/null
+++ b/docs/installation/install.mdx
@@ -0,0 +1,30 @@
+---
+title: Install
+description: Installing SideStore to your iDevice
+sidebar_position: 2
+---
+## Installing SideStore
+1. Connect your iDevice to your computer via cable. If you are prompted, trust the computer and enter your passcode.
+2. Open iloader.
+3. Sign in to an Apple Account (It doesn't need to match the account your device is connected to.)
+4. Select your iDevice
+5. Select "Install SideStore".
+
+### On your iDevice
+Do the following:
+1. Open the Settings app.
+2. Navigate to 'General', and then 'VPN & Device Management'.
+3. Approve the "Developer App" under the Apple Account's email.
+4. Navigate to 'Privacy and Security'.
+5. Scroll to the bottom, and turn on 'Developer Mode'. Your phone will restart.
+6. Open StosVPN and select 'Connect'.
+7. Open SideStore.
+9. Sign in to the Apple Account you used with iloader.
+10. Navigate to "My Apps".
+11. Tap the "x DAYS" button to the right of SideStore, (x is the number of days until an app's expiry).
+12. If you receive a prompt asking to revoke or create a new signing certificate, tap "Yes" or "Refresh Now".
+
+If this process is successful, SideStore will open your device to your home screen (accompanied by a notification), and SideStore will be avaliable again within a few seconds.
+
+Caution, if you update or reset your iDevice, your pairing file may expire, requiring you to replace it using [this guide](../advanced/pairing-file). This also occurs at random times because of Apple's software.
+
diff --git a/docs/installation/linux.mdx b/docs/installation/linux.mdx
deleted file mode 100644
index 464e6c81..00000000
--- a/docs/installation/linux.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Linux Instructions
-description: Instructions for installing SideStore using Linux
-sidebar_position: 4
----
-
-Before you start, make sure to have all steps completed found in the [prerequisites](prerequisites)!
-
-1. Ensure you have usbmuxd installed and updated by running `sudo apt install -y usbmuxd` in the Linux terminal.
-2. Install either Docker or Podman on your machine.
-2. Plug in your secondary iDevice. If you receive a prompt, select "trust" and enter your passcode.
-
-3. Now, run Altcon with Docker or Podman using the following command (may require `sudo`):
-
-Docker setup:
-```bash
-docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
-```
-Podman setup:
-```bash
-podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
-```
-5. Altcon will pair with your device. When you receive another prompt, select "trust" and enter your passcode again.
-6. On your secondary device, do the following:
- * Approve the "Developer App" under your Apple ID's email (you can find this in Settings, under "General", and then "VPN & Device Management").
- * Open the Settings app.
- * Navigate to the 'Privacy and Security' section.
- * Turn on 'Developer Mode' at the bottom.
-
-Now, proceed to create your [pairing file](pairing-file).
diff --git a/docs/installation/mac.mdx b/docs/installation/mac.mdx
deleted file mode 100644
index 956cb115..00000000
--- a/docs/installation/mac.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: macOS Instructions
-description: Instructions for installing SideStore using macOS
-sidebar_position: 2
----
-
-Before you start, make sure to have all steps completed found in the [prerequisites](prerequisites)!
-
-1. Download AltServer from [AltStore's website](https://cdn.altstore.io/file/altstore/altserver.zip). Copy AltServer.app to your `Applications` folder, then open it (using Finder, Launchpad, or Spotlight). It should appear as an icon in your menu bar.
-2. Download the SideStore IPA which you can find [here](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Hold option and click on the AltServer menu bar icon. Click "Sideload .ipa", and select the SideStore IPA file.
-4. On your secondary device, do the following:
- * Approve the "Developer App" under your Apple ID's email (you can find this in Settings, under "General", and then "VPN & Device Management").
- * Open the Settings app.
- * Navigate to the 'Privacy and Security' section.
- * Turn on 'Developer Mode' at the bottom.
-
-Now, proceed to create your [pairing file](pairing-file).
diff --git a/docs/installation/pairing-file.mdx b/docs/installation/pairing-file.mdx
deleted file mode 100644
index 8a4c8ebf..00000000
--- a/docs/installation/pairing-file.mdx
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Pairing File
-description: Pairing files are essential to SideStore's functionality.
-sidebar_position: 5
----
-
-idevice_pair is a program which creates a pairing file which allows apps like SideStore to perform actions on your device remotely. This is required to use SideStore, otherwise it will not function.
-:::warning
-Caution, if you update or reset your iDevice, your pairing file will expire and you will need to create a new one. This also occurs at random times. This is due to Apple's systems, and there is nothing we can do at this point to fix it.
-:::
-
-### Installation Instructions
-#### macOS
-1. Download [idevice_pair for macOS](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg)
-2. Open the Disk Image and drag `idevice_pair` to `Applications`
-
-#### Windows
-1. Install [iTunes](https://apple.com/itunes/download/win64) from Apple's website
-2. Download [idevice_pair for Windows](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe) and save it to a memorable location
-
-#### Linux
-1. Install usbmuxd:
- ```bash
- sudo apt install -y usbmuxd
- ```
-2. Download idevice_pair for your architecture and save it to a memorable location:
- - [x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage)
- - [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage)
-3. Make the downloaded file executable
-
-### Pairing Instructions
-
-1. **Connect your device** to your computer via USB cable
- - If prompted, tap `Trust` and enter your passcode
-2. **Open idevice_pair** and select your device from the dropdown menu
-3. **Load pairing file**:
- - Ensure your device is unlocked and on the home screen
- - Click `Load`
- - If prompted, tap `Trust` and enter your passcode
-4. **Install to SideStore**:
- - Keep your device unlocked and on the home screen
- - Scroll down and click `Install` under "SideStore"
- - You should see `Success` appear in green
-
-## Next steps
-Now, follow the [post-install instructions](post-install).
diff --git a/docs/installation/post-install.mdx b/docs/installation/post-install.mdx
deleted file mode 100644
index 4baf9986..00000000
--- a/docs/installation/post-install.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Post-Install Instructions
-description: Almost there, just a few more steps!
-sidebar_position: 6
----
-The last step to installing SideStore is to refresh SideStore within itself.
-
-To do this, you need to:
-
-1. Connect to StosVPN.
-2. Open SideStore.
-3. If you haven't already, import/select your pairing file.
-4. Sign in with your Apple ID.
-5. Navigate to "My Apps".
-6. Tap the "x DAYS" button to the right of SideStore, (x is the number of days until an app's expiry).
-7. A prompt asking to create a new signing certificate should appear, tap "Refresh Now".
-8. If a prompt appears asking if you want to revoke a certificate from AltStore, tap "Yes".
-
-If this process is successful, SideStore will open your device to your home screen, accompanied by a notification.
-
-If SideStore is not refreshed like this immediately, a bug causing early expiry will require you to reinstall SideStore using AltServer. There is a plan to have this done automatically, but for now it needs to be done manually.
-
-If you reinstall SideStore using AltServer, your certificate will be revoked and you will need to manually refresh it again.
-
-If you wish to install SideStore on another device using the same Apple ID, follow [these steps](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291).
diff --git a/docs/installation/prerequisites.mdx b/docs/installation/prerequisites.mdx
index d15b31a0..beba5e43 100644
--- a/docs/installation/prerequisites.mdx
+++ b/docs/installation/prerequisites.mdx
@@ -10,25 +10,39 @@ SideStore's installation process may seem tricky, but with the ***one-time*** us
To install SideStore, you will need:
-- An iPhone or iPad [with a passcode](https://support.apple.com/en-us/119586) running iOS/iPadOS 14 or higher
-- A [Mac](/docs/installation/mac), [Windows](/docs/installation/windows), or [Linux (support is experimental)](/docs/installation/linux) computer
-- An Apple ID
-- The StosVPN app (see below)
+- An iPhone/iPad [with a passcode](https://support.apple.com/en-us/119586) running iOS/iPadOS 14 or higher
+- A computer (one-time)
+- An Apple Account
- A Wi-Fi connection
- Some time (This is a quick process, but you should [leave time for troubleshooting](/docs/troubleshooting/))
-## StosVPN
+## Preparing Your Devices
+
+### On your iPhone/iPad:
SideStore utilizes an on-device VPN which allows SideStore to communicate with internal services.
-1. Download the StosVPN app from the [Apple App Store](https://apps.apple.com/us/app/stosvpn/id6744003051).
-2. Enable the VPN.
+1. Install the StosVPN app from the [Apple App Store](https://apps.apple.com/us/app/stosvpn/id6744003051). If StosVPN is unavailable, you can utilize the [StikDebug](https://apps.apple.com/us/app/stikdebug/id6744045754) VPN.
+2. Connect to the VPN. If you are prompted to "Allow VPN Configurations", select allow and enter your passcode.
This VPN is required to be turned on any time you wish to install, update, or refresh apps in SideStore.
+### On your Mac
+1. Download and install iloader for Mac ([M-Series](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg) or [Intel](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg)).
+2. If you are met with an error when running iloader, open Terminal, run `sudo xattr -c ./Applications/iloader.app`, and enter your password if prompted.
+
+
+## On your Windows PC
+1. Download and install [iTunes](https://apple.co/ms).
+2. Download the iloader installer ([exe](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe) or [msi](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)).
+3. Run the installer.
+
+## On your Linux Machine
+1. Download and install `usbmuxd` (may be preinstalled for your distro, otherwise install with your package manager).
+2. Download and install iloader for your distro ([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [other](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)).
+
+
## Next Steps
-Next, follow the installation instructions for your operating system!
-- [macOS](mac)
-- [Windows](windows)
-- [Linux (experimental)](linux)
+Next, follow the installation instructions to install SideStore!
+- [Install](install)
diff --git a/docs/installation/windows.mdx b/docs/installation/windows.mdx
deleted file mode 100644
index edd7e47b..00000000
--- a/docs/installation/windows.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Windows Installation
-description: Instructions for installing SideStore using Windows
-sidebar_position: 3
----
-
-Before you start, make sure to have all steps completed found in the [prerequisites](prerequisites)!
-
-On your machine, uninstall any version of iCloud or iTunes you may have downloaded from the Microsoft store, then install the non-Microsoft Store versions of iTunes ([64-bit](https://apple.com/itunes/download/win64) or [32-bit](https://apple.com/itunes/download/win32)) and [iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe). The non-Microsoft Store version of iCloud was removed from Apple’s website in mid-September 2022, so the above link directs to an older version of iCloud that is still compatible with AltServer, and still available directly from Apple’s servers (safe).
-
-1. Download `altinstaller.zip` from [AltStore's website](https://cdn.altstore.io/file/altstore/altinstaller.zip). Extract `altinstaller.zip` and run `setup.exe`. In your Windows taskbar, type in "AltServer" and click "Run as administrator." Make sure to allow access to private networks if prompted. AltStore will appear as an icon in the system tray (where Internet, Wi-Fi, Battery, etc. are displayed).
-2. Download the SideStore IPA which you can find [here](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Hold shift and click on the AltServer tray icon. Click "Sideload .ipa", and select the `sidestore.ipa` you previously downloaded.
-4. On your secondary device, do the following:
- * Approve the "Developer App" under your Apple ID's email (you can find this in Settings, under "General", and then "VPN & Device Management").
- * Open the Settings app.
- * Navigate to the 'Privacy and Security' section.
- * Turn on 'Developer Mode' at the bottom.
-
-Now, proceed to create your [pairing file](pairing-file).
diff --git a/docs/intro.mdx b/docs/intro.mdx
index b1f0298b..0e188432 100644
--- a/docs/intro.mdx
+++ b/docs/intro.mdx
@@ -8,4 +8,4 @@ Welcome to SideStore!
SideStore makes sideloading applications on iOS/iPadOS 14+ devices easy.
-To get started, go to the [Prerequisites](/docs/installation/prerequisites.mdx) page and follow the instructions.
+To get started, go to the [Prerequisites](installation/prerequisites.mdx) page and follow the instructions.
diff --git a/docs/release-notes.mdx b/docs/release-notes.mdx
index 6c7d5e40..80691abd 100644
--- a/docs/release-notes.mdx
+++ b/docs/release-notes.mdx
@@ -10,7 +10,6 @@ sidebar_position: 6
### Changelog
- Deprecation of WireGuard, complete transition to [StosVPN](https://apps.apple.com/us/app/stosvpn/id6744003051)
-- jitterbugpair is being superseded by [idevice pair](https://github.com/jkcoxson/idevice_pair)
- Merge more of AltStore 2.0 upstream
- Added support for importing/exporting your Apple ID's certificate for use with multiple devices, instructions to utilize this [here](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291)
- Adds url scheme/allow exporting certificate (to LiveContainer)
diff --git a/docs/troubleshooting/common-issues.mdx b/docs/troubleshooting/common-issues.mdx
index d20c3de5..9b3e6b7c 100644
--- a/docs/troubleshooting/common-issues.mdx
+++ b/docs/troubleshooting/common-issues.mdx
@@ -1,6 +1,6 @@
---
title: Common Issues
-description: Common issues found in SideStore.
+description: Common issues encountered using SideStore.
---
:::warning
@@ -11,23 +11,29 @@ This page is currently a work in progress. The information provided should be ac
## Common Issues with SideStore
-### AFC Connection Failure
+### I have an issue with the latest nightly
#### Cause
-Connection issues or an invalid pairing file.
+Our nightly builds include bleeding-edge features and improvements, some of which may cause instablity.
#### Resolution
-1. Attempt to reconnect
-2. Create and import a new pairing file using idevice pair. See our [Pairing File instructions](/docs/installation/pairing-file) for details
+Switch to the latest stable build. Please do not create issues or request support for bugs encountered in nightly builds.
-### No Wi-Fi or VPN Connection
+### I am receiving error code: "X"
+#### Cause
+An error occurred.
+#### Resolution
+Check our helpful [list of error codes](error-codes)!
+
+### AFC Connection Failure / No Wi-Fi or VPN Connection
#### Cause
Connection issues with the minimuxer service.
#### Resolution
1. If using WireGuard, switch to StosVPN
-2. Turn off any DNS-blocking servers
-2. Try again (spamming the button often helps)
-3. Restart SideStore
-4. Restart StosVPN
-5. Recreate and import a new pairing file using idevice pair. See our [Pairing File instructions](/docs/installation/pairing-file) for details
+2. Turn off any DNS-blockers
+3. Ensure StosVPN and Wi-Fi are both connected
+4. Try again (spamming the button sometimes helps)
+5. Restart SideStore
+6. Restart StosVPN
+7. [Replace your pairing file](../advanced/pairing-file) using iloader.
### SideStore Hangs Partway Through Installation
#### Cause
@@ -45,7 +51,7 @@ Cache or protocol issues.
#### Cause
Multiple possible causes.
#### Resolution
-1. Make sure you installed SideStore through AltServer
+1. Make sure you installed SideStore through iloader
2. Reinstall SideStore
If the above doesn't work, do the following:
@@ -53,8 +59,10 @@ If the above doesn't work, do the following:
1. Delete SideStore and all apps that you have installed from SideStore
2. Reinstall SideStore
3. Import your pairing file and login. (It will give you a prompt to refresh SideStore, select no)
-4. Install the `sidestore.ipa` file to your device
-5. Import the `sidestore.ipa` file into SideStore like how you would install any other IPA
+4. Install the `SideStore.ipa` file to your device
+5. Import the `SideStore.ipa` file into SideStore like how you would install any other IPA
6. This will allow SideStore to do a clean refresh, and hopefully fix the issue
-
+### I couldn't find my issue here
+#### Resolution
+Please check our [comprehensive troubleshooting guide](/docs/troubleshooting).
diff --git a/docs/troubleshooting/error-codes.mdx b/docs/troubleshooting/error-codes.mdx
index 24cbad74..31bc641e 100644
--- a/docs/troubleshooting/error-codes.mdx
+++ b/docs/troubleshooting/error-codes.mdx
@@ -51,7 +51,7 @@ This means that SideStore could not locate the file to download or install, most
`SideStore.OperationError 1006`
-This means that SideStore couldn't read the device UDID embedded by AltServer when installing SideStore. Make sure you're installing SideStore with the latest AltServer version and not via another method.
+This means that your pairing file has been corrupted. [Replace it using iloader](../advanced/pairing-file).
#### (1007) This app is in an invalid format.
@@ -105,7 +105,8 @@ Your device was unable to receive data from a V3 anisette server. Please try aga
`SideStore.OperationError 1414`
-You do not appear to be connected to Wi-Fi and/or StosVPN. SideStore cannot refresh or install applications without Wi-Fi and StosVPN, ensure both are enabled. If that doesn't work, try regenerating your pairing file.
+You do not appear to be connected to Wi-Fi and/or StosVPN. SideStore cannot refresh or install applications without Wi-Fi and StosVPN, ensure both are connected. If that doesn't work, [replace your pairing file using iloader](../advanced/pairing-file).
+
## Minimuxer Errors
@@ -119,149 +120,8 @@ This means you are attempting to enable JIT on an unsupported iOS version. SideS
`minimuxer.MinimuxerError 27`
-This means you have an invalid pairing file. Follow the steps in these docs to recreate it.
-
-More coming, open to contributions...
-
-## AltServer / SideServer Errors
-
-#### (0) Exception Error
-
-`AltServer.ExceptionError`
-
-This error can appear for many reasons, and below are a few that you might see (this is not an exhaustive list).
-
-"vector too long"
-
-This means that Windows Defender is blocking your request. You may need to first disable Real-Time Protection on Windows in order for SideStore to work as expected.
-
-#### (1999) Underlying Error
-
-`AltServer.ServerError`
-
-This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.
-
-#### (2000) Unknown Error
-
-`AltServer.ServerError`
-
-This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.
-
-#### (2001) Could not connect to AltServer. / There was an error connecting to the device.
-
-`AltServer.ServerError`
-
-This means that AltServer is having trouble connecting to your iOS device. Try plugging your device directly into your computer if it is not already.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2002) Lost Connection to AltServer.
-
-`AltServer.ServerError`
-
-This means that the connection was dropped between AltServer and your iOS device. Make sure your device and computer are connected to the same Wi-Fi network and try again.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2003) AltServer could not find this device.
-
-`AltServer.ServerError`
-
-This means that AltServer had trouble locating your iOS device either over USB or via Wi-Fi. Make sure your device and computer are connected to the same Wi-Fi network and that your device is trusted and try again.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2004) Failed to write app data to device.
-
-`AltServer.ServerError`
-
-This means that AltServer tried to write a file to your device and could not or was interrupted. Make sure your device and computer are connected to the same Wi-Fi network and that your device is trusted and try again.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2005) AltServer received an invalid request.
-
-`AltServer.ServerError`
-
-This means that AltServer received a request it did not understand. This may be because you are running an outdated AltServer version, so please make sure to update to the latest version.
-
-#### (2006) AltServer sent an invalid response.
-
-`AltServer.ServerError`
-
-This means that SideStore received a response from AltServer it did not understand. This may be because you are running an outdated SideStore version, so please make sure to update to the latest version.
-
-#### (2007) The app is invalid.
-
-`AltServer.ServerError`
-
-This means that the app your were attempting to install was found to be in an invalid format. If you continue to have issues, try downloading from alternate source.
-
-#### (2008) An error occurred while installing the app.
-
-`AltServer.ServerError`
-
-This means that iOS rejected the app you were attempting to install. Make sure to use a version compatible your iOS version.
-
-#### (2009) Cannot activate more than 3 apps with a non-developer Apple ID.
-
-`AltServer.ServerError`
-
-This means that you have reached the maximum amount of sideloaded apps you can have with a Free Developer Account. Apple limits the amount of sideloaded apps you can have with a free account, and to remove the limit you need to sign up for a Paid Developer account at [developer.apple.com](https://developer.apple.com).
-
-#### (2010) Your device must be running iOS 12.2 or later to install AltStore.
-
-`AltServer.ServerError`
-
-This means that you will need to update your phone to the minimum iOS version required before you can continue to use AltStore.
-
-#### (2011) AltServer does not support this request.
-
-`AltServer.ServerError`
-
-This means that AltServer received a request it did not recognize. You may be running an outdated AltServer version, so be sure to update.
-
-#### (2012) Received an unknown response from AltServer.
-
-`AltServer.ServerError`
+Ensure Wi-Fi and StosVPN are both connected. If the error doesn't resolve, [replace your pairing file with iloader](../advanced/pairing-file).
-This means that AltStore received a response from AltServer it did not recognize. You may be running an outdated AltStore version, so be sure to update.
-
-#### (2013) The provided anisette data is invalid.
-
-`AltServer.ServerError`
-
-This means that the Apple ID information AltStore used to try to sign in was invalid because of an unknown issue. Make sure you are using the latest version of iCloud if you are on Windows and that your date/time are accurate.
-
-#### (2014) AltServer could not connect to Mail plug-in. (macOS)
-
-`AltServer.ServerError`
-
-This means that AltServer could not find the Mail plug-in either because it is not enable or you are not running the Mail app on your Mac. Make sure the Mail app is running on your Mac and that the plug-in is enabled.
-
-#### (2015) Could not find provisioning profile.
-
-`AltServer.ServerError`
-
-This means that the provisioning profile needed to install this app could not be located. This is most likely a problem with AltStore itself, so please message support or to our Patreon inbox.
-
-#### (2016) An error occurred while removing the app.
-
-`AltServer.ServerError`
-
-This means that there was an issue while removing an app. There are a number of different issues so make sure to check your error log for a more specific message on your issue.
-
-#### (2100) The Requested app is not currently running on the device.
-
-`AltServer.ServerError`
-
-This means that you tried to enable JIT without the requested app running in the foreground. Make sure to launch the app and have it running before you enable JIT.
-
-#### (2101) The disk is incompatible with \[iOS version].
-
-`AltServer.ServerError`
-
-This means that the developer disk required to enable JIT is not compatible with your device's OS version. Make sure you're running the latest version of AltStore and AltServer, and try again later.
## Apple Developer Errors
@@ -419,66 +279,26 @@ You may need to agree to Apple’s Terms of Service on [developer.apple.com](htt
This error means that the username or password used to authenticate your Apple ID is either expired or invalid. Make sure you've entered them both in correctly and that your computer's date and time are accurate.
-#### Connection Errors
-
-#### (0) Error Unknown.
-
-`AltServer.ConnectionError`
-
-This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.
-
-#### (1) Device Locked.
-
-`AltServer.ConnectionError`
-
-This means that you will need to unlock your device before AltServer can connect.
-
-#### (2) Invalid Request.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (3) Invalid Response.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (4) Usbmuxd.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (5) SSL Error.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (6) Timed Out.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
+## Other Errors
-## Windows Errors
+#### (512) Failed to write to disk
-#### (1100) Your session has expired. Please log in.
+`NSCocoaErrorDomain`
-`NSURLErrorDomain`
+This means that an error occurred while writing files to disk. Make sure your phone and PC both have plenty of available disk space and try again.
-1. Make sure iTunes is closed.
-2. Go to Program Data -> Apple Computer -> iTunes -> ADI -> delete the files
-3. Start iTunes
-4. Retry installing SideStore
+#### ldid Error
-## Other Errors
+`ldid.cpp(X): X`
-#### (512) Failed to write to disk
+Follow the steps here to fix this error:
-`NSCocoaErrorDomain`
+1. First, you need to install Feather.
+2. Then, import the IPA with this issue to Feather app as well as any random .mobileprovision and .p12 file, they can be expired since we are just using this app to reallocate the headers of the IPA
+3. Sign the IPA with the certificate you imported.
+4. Open the signed app in files and pack it back to IPA.
+5. Install the packed IPA in AltStore
-This means that an error occurred while writing files to disk. Make sure your phone and PC both have plenty of available disk space and try again.
+### (-1011) NSURLErrorDomain
+Navigate to https://developer.apple.com/, sign in, and accept the new Apple Developer Terms of Service.
diff --git a/docs/troubleshooting/troubleshooting.mdx b/docs/troubleshooting/troubleshooting.mdx
index 2c1eafa4..1cca7be9 100644
--- a/docs/troubleshooting/troubleshooting.mdx
+++ b/docs/troubleshooting/troubleshooting.mdx
@@ -16,14 +16,11 @@ description: A guide to troubleshooting SideStore in situations without an error
#### Windows Instructions
1. **Trust Device**: After connecting your iOS device to your Windows computer, ensure you have selected “Trust” on both your computer and iOS device. You can verify this by:
- Opening iTunes and checking if a dialog box appears asking if you want to trust the device.
-2. **Run AltServer as Administrator**: Right-click on AltServer and select “Run as Administrator” to ensure proper permissions.
-3. **Use Another Apple ID**: Try using another Apple ID. If needed, you can [create a new Apple ID](https://appleid.apple.com/account#!\&page=create) specifically for SideStore for free.
-4. **Non-Microsoft Store Version of iTunes and iCloud**:
- - If you installed iTunes or iCloud from the Microsoft Store, you’ll need to uninstall them.
- - Download and install the non-Microsoft Store versions of iTunes and iCloud using the following links:
- - [Download iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe)
- - [Download iTunes](https://www.apple.com/itunes/download/win64/)
+2. **Use Another Apple ID**: Try using another Apple ID. If needed, you can [create a new Apple ID](https://appleid.apple.com/account#!\&page=create) specifically for SideStore for free.
+### Updating SideStore hangs towards the end
+
+Go to the homescreen for it to finish. We don't know why this happens, but it might have to do with using a VPN to direct `installd` to refresh SideStore (itself).
## Sign-In Issues
@@ -64,38 +61,10 @@ Another common issue during sign-in is not receiving a verification code when us
- Use this code in SideStore to complete the sign-in process.
-## Can't Refresh or Install Apps
-
-### Resolving No Wi-Fi or VPN Error
-
-1. Enable Airplane Mode and connect to a stable Wi-Fi network.
-2. Ensure that Apple domains and the domain for your anisette server are not restricted. Check the following:
- - Turn off any DNS servers blocking domains such as `ocsp.apple.com`
- - Disconnect from school/work Wi-Fi, try connecting to a restriction-free network.
-3. Verify VPN is connected in StosVPN.
-4. Turn StosVPN off, then back on, and wait a few seconds in SideStore before trying to refresh.
-5. Recreate your pairing file.
- - If none of the above worked, it is very likely that the pairing file is corrupted. You can reference the documentation on how to create a new pairing file [here](/docs/installation/pairing-file).
-
-
-## Cannot Choose Pairing File
-
-### If you are unable to select a pairing file in SideStore, follow these steps to resolve the issue:
-
-1. **Reimport Pairing File**: Use idevice_pair to recreate and import your pairing file to your device. If idevice pair doesn't work, try jitterbugpair and follow the steps below.
-2. **Check File Extension**: Make sure your pairing file's extension ends with `.mobiledevicepairing` or `.plist`. If it doesn't, double-check to see if you had zipped your pairing file before sending it to your phone. Failing to do so may lead to the file being corrupted during transport.
-3. **Move Pairing File**: If you are unable to select the pairing file from within the app, rename the file to `ALTPairingFile.mobiledevicepairing` and try moving the pairing file to the root directory of the SideStore folder in the Files app in "On My iPhone/iPad".
-4. **Certificate Signing**: When signing SideStore with a certificate, you won't be able to select the pairing file from within the app. You can try the fix mentioned above. If you do not see the SideStore folder in the Files app, connect your phone to your computer, and you can drag and drop the pairing file to the files of the SideStore app. Make sure to change it to the name mentioned above.
-
-## AltServer
+## My apps disappeared from SideStore and I don't know what to do!
-### What if I need to use the Windows Store version of iCloud?
+Don't panic! Re-sideload the apps as usual without removing them from your device, and your data should be fine. Unfortunately it's possible that your deactivated apps are gone, but to confirm that, just refresh SideStore to see if they come back.
-AltServer requires that you install iCloud directly from Apple in order to authenticate your Apple ID. If you want or need to use the Windows Store version as well, you can follow these alternate instructions copied from [this reddit post](https://www.reddit.com/r/jailbreak/comments/rp5buz/tutorial\_how\_to\_use\_altserver\_if\_you\_have\_to\_use/?utm\_source=share\&utm\_medium=ios\_app\&utm\_name=iossmf) and updated:
+## Cannot start DebugServer
-1. Download and install [iTunes](https://www.apple.com/itunes/) from the official Apple website here ([64-bit](https://secure-appldnld.apple.com/itunes12/001-80053-20210422-E8A3B28C-A3B2-11EB-BE07-CE1B67FC6302/iTunes64Setup.exe) or [32-bit](https://secure-appldnld.apple.com/itunes12/001-80042-20210422-E8A351F2-A3B2-11EB-9A8F-CF1B67FC6302/iTunesSetup.exe).
-2. Download and install iCloud from the official Apple website [here](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe).
-3. Locate your "C:\Program Files (x86)\Common Files\Apple" folder. Copy the "Apple Application Support" and "Internet Services" folders, then create a new folder somewhere you won't lose it, name it anything you want, and paste them in.
-4. Remove iCloud from your computer. **DO NOT** remove iTunes! (Also, **NEVER** remove the "Apple Mobile Device Support" or the "Apple Application Support" that are installed alongside iTunes and iCloud.)
-5. Install [iCloud](https://www.microsoft.com/store/productId/9PKTQ5699M62) from the Windows Store.
-6. Download and install [AltServer](https://cdn.altstore.io/file/altstore/altinstaller.zip). When you open it for the first time (with admin rights), click on "Choose Folder..." and select the folder you created in the 3rd step.
+There are times when the DebugServer doesn't work. However, you can try [replacing your pairing file using iloader](../advanced/pairing-file).
diff --git a/docusaurus.config.js b/docusaurus.config.js
index a0a10ebe..4aa7f15c 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -37,7 +37,7 @@ const config = {
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'en',
- locales: ['en', 'es', 'fr', 'de', 'it', 'nl', 'zh', 'ja', 'ru', 'ko', 'sv', 'vi'],
+ locales: ['en', 'it', 'zh', 'ko', 'sv'],
},
presets: [
@@ -60,7 +60,7 @@ const config = {
'docusaurus-lunr-search',
{
// Chinese isn't supported yet
- languages: ['en', 'es', 'fr', 'de', 'it', 'nl', 'ja', 'ru', 'ko', 'sv', 'vi'],
+ languages: ['en', 'it', 'ko', 'sv'],
// Keep max results to 10
maxHits: 10,
indexBatchSize: 100,
@@ -127,7 +127,7 @@ const config = {
items: [
{
label: 'Discord',
- href: 'https://discord.gg/sidestore-949183273383395328',
+ href: 'https://dis.sidestore.io',
},
{
label: 'X (formerly Twitter)',
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx b/i18n/de/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
new file mode 100644
index 00000000..0621b2d4
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
@@ -0,0 +1,13 @@
+---
+title: Pairing-Datei
+description: Eine Anleitung zum manuellen Reimport der Pairing-Datei.
+---
+:::warning
+Achtung: Wenn Sie Ihr Apple-Gerät aktualisieren oder zurücksetzen, wird Ihre Pairing-Datei ungültig und Sie müssen mithilfe von [dieser Anleitung](../advanced/pairing-file) sie wieder importieren. Dies kann auch wegen Apples Software zufällig geschehen. Wir können dagegen leider nichts tun. Diese Anleitung hilft Ihnen ihre Pairing-Datei mit iloader manuell zu reimportieren.
+:::
+
+## Reimportieren der Pairing-Datei
+1. Stellen Sie sicher, dass Sie diese [Anleitung](../installation/prerequisites) zur Einrichtung von iloader und Installation von SideStore befolgt haben.
+2. Verbinden Sie ihr Gerät für das beste Ergebnis mit einem USB-Kabel, ansonsten können Sie es kabellos durchführen, wenn Ihr Gerät auftaucht.
+3. Klicken Sie auf "Manage Pairing File"
+4. Klicken Sie rechts von "SideStore" oder anderen gewünschten Apps auf "Place Pairing File". Ein grünes "Pairing file placed successfully!" sollte auftauchen.
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/de/docusaurus-plugin-content-docs/current/faq.mdx
index 403a099a..274f252e 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/faq.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/faq.mdx
@@ -128,17 +128,13 @@ Du kannst sie via SideStore sideloaden und deine Daten sollten bleiben. Es gibt
Gerate nicht in Panik! Installiere deine Apps neu, ohne sie von deinem Gerät zu entfernen und deine Daten sollten erhalten bleiben. Leider ist es möglich, dass deine deaktivierten Apps weg sind, aber um sicherzugehen, solltest du SideStore erneuern und schauen, ob sie wieder erscheinen.
-### Ich kann meine Pairing Datei mit keinem Dateityp auswählen
-
-Stelle sicher, dass deine Pairing Datei mit `.mobiledevicepairing` oder `.plist` endet. Falls nicht, überprüfe nochmal, ob du deine Pairing Datei komprimiert hast, bevor du sie an dein Handy gesendet hast. Wenn du dies nicht tust, kann es dazu führen, dass die Datei während des Transports beschädigt wird. Außerdem: Wenn du SideStore mit einem Zertifikat signierst, kannst du die Pairing Datei nicht in der App auswählen. Du kannst versuchen, die Pairing Datei ins Stammverzeichnis vom SideStore Ordner (in der Dateien App bei „Auf meinem iPhone/iPad“) zu verschieben und sie in `ALTPairingFile.mobiledevicepairing` umzubenennen. Falls du keinen SideStore Ordner in der Dateien App findest, versuche dein Handy mit deinem Computer zu verbinden und verschiebe die Pairing Datei zu den Dateien der SideStore App. Stelle sicher, dass du die Pairing Datei zum oben genannten Namen änderst. Beachte die Groß- und Kleinschreibung.
-
### Ich kann den Debug Server nicht starten
Es gibt Zeiten, in denen der Debug Server nicht funktioniert. Jedoch gibt es eine Lösung, die du probieren kannst.
**Erstelle eine neue Pairing Datei**
-Um den Vorgang zur Nutzung einer neuen Pairing Datei zu starten, gehe in die SideStore Einstellungen und drücke auf „Reset Pairing File“. Folge der Anweisung und anschließend der [Pairing Datei Anleitung](installation/pairing-file).
+[Reimportieren Sie Ihre Pairing-Datei mit iloader.](advanced/pairing-file)
### Aktuell bekannte Probleme
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/de/docusaurus-plugin-content-docs/current/installation/install.mdx
new file mode 100644
index 00000000..99070626
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/installation/install.mdx
@@ -0,0 +1,33 @@
+---
+title: Installation
+description: SideStore auf Ihrem Gerät installieren
+sidebar_position: 2
+---
+## SideStore installieren
+1. Verbinden Sie Ihr Apple-Gerät per Kabel an einen Computer. Falls aufgefordert, vertrauen Sie dem Computer und geben Sie Ihren Passcode ein.
+2. Öffnen Sie iloader.
+3. Melden Sie sich bei Ihrem Apple-Konto an
+4. Wählen Sie Ihr Gerät aus
+3. Wählen Sie "Install SideStore".
+
+### Auf Ihrem Apple-Gerät
+Machen Sie Folgendes:
+1. Öffnen Sie die App "Einstellungen".
+2. Navigieren Sie zu "Allgemein" und dann "VPN und Geräteverwaltung".
+3. Genehmigen Sie die Entwickler-App unter Ihrer E-Mail-Adresse.
+4. Navigieren Sie zu "Datenschutz & Sicherheit".
+5. Scrollen Sie nach unten und aktivieren Sie den Entwicklermodus. Ihr Gerät wird neu gestartet.
+6. Öffnen Sie StosVPN und wählen Sie "Connect".
+7. Öffnen Sie SideStore.
+9. Melden Sie sich mit Ihrem Apple-Konto an.
+10. Navigieren Sie zu "My Apps".
+11. Tippen Sie auf den "x DAYS"-Knopf rechts von SideStore (x ist die Anzahl der Tage bis eine App abläuft).
+12. Es wird ein Fenster angezeigt, welches anfragt, ein neues Zertifikat zu erstellen. Tippen Sie auf "Refresh Now".
+
+Falls der Prozess erfolgreich war, wird SideStore Sie zum Homescreen schicken und eine Nachricht anzeigen. In ein paar Sekunden wird SideStore wieder verfügbar sein.
+
+Achtung: Wenn Sie Ihr Apple-Gerät aktualisieren oder zurücksetzen, wird Ihre Pairing-Datei ungültig und Sie müssen mithilfe von [dieser Anleitung](../advanced/pairing-file) sie wieder importieren. Dies kann auch wegen Apples Software zufällig geschehen.
+
+Wenn Sie SideStore erneut mithilfe von iloader installieren, könnte Ihr Zertifikat ungültig werden, was dazu führt, dass Sie erneut refreshen müssen.
+
+Falls Sie SideStore auf einem anderen Gerät mit demselben Apple-Konto installieren möchten, folgen Sie [diesen Schritten](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291).
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/installation/linux.mdx b/i18n/de/docusaurus-plugin-content-docs/current/installation/linux.mdx
deleted file mode 100644
index 4d972e01..00000000
--- a/i18n/de/docusaurus-plugin-content-docs/current/installation/linux.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Linux Instructions
-description: Instructions for installing SideStore using Linux
-sidebar_position: 5
----
-
-To install SideStore (or any other IPA) on Linux, make sure you have Docker installed. Before you start, make sure to install StosVPN and any other and [prerequisites](prerequisites) that are satisfied!
-
-1. Run altcon with Docker
-```bash
-docker run --rm -it -e ALTSERVER_ANISETTE_SERVER="https://ani.sidestore.io/" -v ${PWD}/:/mnt/ -v /var/run:/var/run ghcr.io/sidestore/altcon
-```
-
-You can also run altcon with Podman
-```bash
-podman run --privileged --rm -it -e ALTSERVER_ANISETTE_SERVER="https://ani.sidestore.io/" -v ${PWD}/:/mnt/ -v /var/run:/var/run ghcr.io/sidestore/altcon
-```
-
-Altcon will start to pair with your device, plug it in if you haven't. Press "trust" and enter your passcode.
-
-When you finish, then follow the [post-install instructions](post-install).
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/installation/mac.mdx b/i18n/de/docusaurus-plugin-content-docs/current/installation/mac.mdx
deleted file mode 100644
index 43102741..00000000
--- a/i18n/de/docusaurus-plugin-content-docs/current/installation/mac.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: macOS Instructions
-description: Instructions for installing SideStore using macOS
-sidebar_position: 4
----
-
-Before you start, make sure to have all steps completed found in the [Prerequisites](prerequisites), and that you have a [pairing file](pairing-file)!
-
-1. Download and run AltServer from [AltStore's website](https://AltStore.io).
-2. Download the SideStore IPA which you can find [here](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Hold option/alt and click on the AltServer menu bar icon. Click "Sideload .ipa", and select the SideStore IPA file.
-4. Approve the "Developer App" with your Apple ID's email.
- * You can find this in Settings, under "General", and then "VPN & Device Management".
-5. Open SideStore, select your pairing file, and sign in with your Apple ID.
-
-When you finish, then follow the [post-install instructions](post-install).
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx b/i18n/de/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
deleted file mode 100644
index 508c4483..00000000
--- a/i18n/de/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Pairing File
-description: Pairing files are essential to SideStore's functionality.
-sidebar_position: 2
----
-
-Using JitterbugPair (*not* the Jitterbug app) allows us to create a pairing file for programs like SideStore to talk to your device. This is required to use SideStore, or it will not function.
-
-Download JitterbugPair for [Windows (64-bit)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip), [macOS](https://github.com/SideStore/SideStore-Docs/releases/download/need-a-place-to-put-jittterbug/jitterbugpair), or [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip).
-
-## Pairing Instructions
-
-:::tip
-
-When using cloud storage, the file extension might change (usually to .txt). It is always recommended to zip your pairing file before transferring it. SideStore only accepts .mobiledevicepairing files.
-:::
-
-### Windows
-
-1. Extract the JitterbugPair zip file.
-2. Plug your device into your computer, and open your device to its home screen. Once done, execute the program.
- * Your device may ask you to trust your computer. Make sure to accept this prompt, as it is required for the pairing process.
-3. Once it is done, you will get a file that ends with `.mobiledevicepairing`.
-4. Transfer this file to your device using iTunes, or any other method. Zipping the file before sending it off is the best way to ensure the pairing file won't break during transport.
- * Transferring using cloud storage may change the file's extension (most likely turning into a .txt file), so be careful. It is also possible to change the extension to `.plist` for use with older SideStore versions, like `0.1.1`.
-
-On Windows, you might have to execute the program using Command Prompt or Powershell, as it can sometimes not open by double clicking the `.exe` file.
-
-5. In File Explorer, navigate to the folder where jitterbugpair is located.
-6. In the navigation bar where the folder location is, click an empty spot and type `powershell`. It should open a (possibly blue colored) window called PowerShell.
-7. From there, type `./jitterbugpair.exe` and press enter while your device is plugged in.
-
-
-### macOS
-
-1. **Extract** `Jitterbugpair-macos.zip`.
-2. **Set a passcode** for your device if you haven't already. Unlock your device, connect it to your computer via cable. If a prompt appears: tap "Trust."
-3. Open your device to the homescreen.
-4. Find the extracted `jitterbugpair` file (it should have a black and green icon).
-5. Open Terminal (in Launchpad, it's in the "Utilities" folder).
-6. Drag the `jitterbugpair` file into Terminal and press "Return" or Enter.
-7. If you get "macOS cannot verify that this app is free from malware":
- - Go to System Settings > Privacy & Security
- - Scroll down to the message about the app
- - Click "Open Anyway"
- - Try running the program again
-8. JitterBugPair will generate a **pairing file** with the extension `.mobiledevicepairing`.
-9. If you can't find the pairing file:
- - Copy the name of the pairing file generated
- - Paste it into Finder
- - If you ran the program more than once all pairing files for your device should appear since they share the same name
-10. **Transfer the pairing file** to your iOS device using AirDrop, iCloud/One/Google Drive, email, or any other method. For best results, compress the file into a .zip folder first.
-
-### Linux
-
-These instructions expect that you are familiar with the linux commandline.
-
-1. Extract the Jitterbug zip file, and open a terminal (if you haven't already) to the extracted directory.
-2. In that terminal, run `chmod +x ./jitterbugpair`
-3. Plug your device into your computer, and open your device to its home screen. Once done, execute the program in your terminal with `./jitterbugpair`
- * If you get a prompt saying you need to trust the computer from your iDevice, make sure to do so. You may need to rerun jitterbugpair.
-4. Once it is done, you will get a file that ends with `.mobiledevicepairing` in the directory you ran jitterbugpair from.
-5. Transfer this file to your device in a way of your choosing. Zipping the file before sending it off is the best way to ensure the pairing file won't break during transport
- * Transferring using cloud storage may change the file's extension (most likely turning into a .txt file), so be careful. It is also possible to change the extension to `.plist` for use with older SideStore versions, like `0.1.1`.
-
-You might have success by just adding execute permissions and running jitterbugpair from a file manager, but it is recommended to just do it from the terminal.
-
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/installation/post-install.mdx b/i18n/de/docusaurus-plugin-content-docs/current/installation/post-install.mdx
deleted file mode 100644
index 0bd5958b..00000000
--- a/i18n/de/docusaurus-plugin-content-docs/current/installation/post-install.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: Post-Install Instructions
-description: Almost there, just a few more steps!
-sidebar_position: 6
----
-The last step to installing SideStore is to refresh SideStore, within itself.
-
-To do this, you need to:
-
-1. Connect to StosVPN.
-2. Open SideStore.
-3. If you haven't already, select the pairing file.
-4. Go to "My Apps".
-5. Select the "x DAYS" button, where x is the number of days until expire.
- * If successful, this will open a blank Safari tab or go to your home screen. You will get a notification also telling you to do this.
-
-If SideStore is not refreshed, a bug causing early expiry will require you to reinstall SideStore. There is a plan to have this done automatically, but for now it needs to be done manually.
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/de/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
index a3f8f29c..d86d1bfe 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
@@ -1,36 +1,48 @@
---
-title: Prerequisites
-description: 'The first steps of installation.'
+title: Voraussetzungen
+description: 'Die ersten Schritte der Installation'
sidebar_position: 1
---
-SideStore's installation process can seem tricky, but with the ***one-time*** use of a computer, and some time, you'll have SideStore on your device!
+Die Installation von SideStore könnte erst schwierig erscheinen, aber mit der ***einmaligen*** Nutzung eines Computers haben Sie schon SideStore auf Ihrem Gerät!
-## Requirements
+## Erforderungen
-To install SideStore, you will need:
-- An iOS or iPadOS device running iOS or iPadOS 14 or higher.
-- A Windows, macOS, or Linux computer (Linux support is experimental).
-- An Apple ID.
-- The StosVPN app.
-- Some time (This is a quick process, but you should leave time for troubleshooting).
+Um SideStore zu installieren, benötigen Sie:
-Users of iOS/iPadOS 16 or higher *must* have Developer Mode enabled. Do this by:
-1. Open the Settings app.
-2. Go to the 'Privacy and Security' section.
-3. Turn on 'Developer Mode' at the bottom.
+- Ein iPhone/iPad [mit einem Passcode](https://support.apple.com/en-us/119586), welches iOS/iPadOS 14 oder höher ausführt
+- Einen Computer (einmalig)
+- Ein Apple-Konto
+- Eine WLAN-Verbindung
+- Einige Zeit (Dies ist ein kurzer Prozess, aber Sie sollten sich [Zeit für Problembehandlung](/docs/troubleshooting/) lassen)
-> **Note:** You will only see the 'Developer Mode' option after you have successfully installed SideStore.
+## Vorbereitung Ihrer Geräte
-## StosVPN
+### Auf Ihrem iPhone/iPad:
-SideStore utilizes an on-device VPN which allows SideStore to communicate with internal services.
+SideStore verwendet ein on-device VPN, welches es SideStore ermöglicht, mit internen Diensten zu kommunizieren.
-1. Download the StosVPN app from the [Official App Store](https://apps.apple.com/us/app/stosvpn/id6744003051).
-2. Enable the VPN.
+1. Laden Sie die StosVPN App vom [Apple App Store](https://apps.apple.com/us/app/stosvpn/id6744003051) herunter.
+2. Aktivieren Sie das VPN.
-This VPN is required to be on any time you wish to install or update apps in SideStore.
+Dieses VPN muss immer aktiviert sein, wenn sie es wünschen, Apps zu installieren, aktualisieren oder zu refreshen.
-## Next Steps
+### Auf Ihrem Mac
+1. Laden Sie iloader für einen Mac der ([M-Serie](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg) oder [Intel](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg)) herunter.
+2. Öffnen Sie das Terminal, führen Sie `sudo xattr -c ./Applications/iloader.app` aus und geben Sie falls nötig Ihr Passwort ein.
-Now, go to the next page to generate your pairing file!
+
+## Auf Ihrem Windows-PC
+1. Installieren Sie [iTunes](https://apple.co/ms) (nicht vom Microsoft Store!)
+2. Laden Sie das iloader-Installationsprogramm (als [.exe](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe) oder [.msi](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)) herunter.
+3. Führen Sie das Installationsprogramm aus.
+
+## Auf Ihrem Linux-Rechner
+1. Installieren Sie `usbmuxd` (könnte bei ihrer Distribution bereits vorhanden sein, andererseits installieren Sie es mit Ihrem Package-Manager).
+2. Installieren Sie iloader für Ihre Distribution: ([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [andere](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)).
+
+
+## Nächste Schritte
+
+Befolgen Sie zunächst die Installationsanweisung!
+- [Installation](install)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/installation/windows.mdx b/i18n/de/docusaurus-plugin-content-docs/current/installation/windows.mdx
deleted file mode 100644
index 81b4ffaa..00000000
--- a/i18n/de/docusaurus-plugin-content-docs/current/installation/windows.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Windows Installation
-description: Instructions for installing SideStore using Windows
-sidebar_position: 3
----
-
-Please make sure that on your machine the non-Microsoft Store versions of [iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe) and [iTunes](https://support.apple.com/en-us/HT210384) are installed, if you are running Windows. Before you start, make sure to have all steps completed found in the [Prerequisites](prerequisites), and that you have a [Pairing File](pairing-file)!
-
-The non-Microsoft Store version of iCloud was removed from Apple’s website sometime in mid-September, 2022. The above link directs to an older version of iCloud that is still compatible, and still available directly from Apple’s servers.
-
-1. Download and run AltServer from [AltStore's website](https://altstore.io/).
-2. Download the SideStore IPA which you can find [here](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Hold shift and click on the AltServer tray icon. Click "Sideload .ipa", and select the SideStore IPA file.
-4. Approve the "Developer App" with your Apple ID's email.
- * You can find this in Settings, under "General", and then "VPN & Device Management".
-5. Open SideStore, select your pairing file, and sign in with your Apple ID.
-
-When you finish, then follow the [post-install instructions](post-install).
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/advanced/jit.mdx b/i18n/es/docusaurus-plugin-content-docs/current/advanced/jit.mdx
index 251a211e..5636906c 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/advanced/jit.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/advanced/jit.mdx
@@ -37,7 +37,7 @@ Hay muchos metodos para activar JIT, como AltJIT, SideJITServer, y mas. Este tut
Emmpieza activando StosVPN para StikJIT o la VPN ya incorporada en StikDebug.
2. **Sube el archivo de emparejamiento:**
- Cuando te lo pregunte, importa el mismo **archivo de emparejamiento descomprimido** obtenido atraves de JitterBugPait que usaste para SideStore. Para más información en obtener este archivo de emparejamiento, visita [este sitio](/docs/installation/pairing-file).
+ Cuando te lo pregunte, importa el mismo **archivo de emparejamiento descomprimido** obtenido atraves de JitterBugPait que usaste para SideStore. Para más información en obtener este archivo de emparejamiento, visita [este sitio](/docs/advanced/pairing-file).
## Para activar JIT:
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/es/docusaurus-plugin-content-docs/current/faq.mdx
index fe1a8c20..1f79a6ab 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/faq.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/faq.mdx
@@ -56,7 +56,7 @@ To remove this restriction (and also get a 365 day expiry), you can pay for a $9
Alternatively, there is currently a nightly build available [here](https://github.com/SideStore/SideStore/releases/tag/nightly) (version 0.5.9-nightly.2024.10.23.1+1e969a0 as of writing) that utilizes the SparseRestore exploit to bypass the 3-app limit. Currently, this only works on iOS versions below 18 dev beta 5 plus 18.0.1 for definite.
-A tutorial for using this can be found [here](advanced/sparserestore).
+A tutorial for using this can be found [here](/docs/advanced/alternative).
### I have a problem or bug or request for a feature or quality of life improvement
@@ -134,7 +134,7 @@ There is times when the Debugserver doesn't work. However, there is a fix you ca
**Make a new pairing file**
-To start the process of using a new pairing file you go to settings tab and click Reset Pairing file, and you accept the prompt. Then you just follow the [Pairing File instructions](installation/pairing-file).
+To start the process of using a new pairing file you go to settings tab and click Reset Pairing file, and you accept the prompt. Then you just follow the [Pairing File instructions](/docs/advanced/pairing-file).
### Currently Known issues
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx b/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
index 87a194aa..612b02e2 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
@@ -16,7 +16,7 @@ This page is currently a work in progress. The information provided should be ac
Connection issues or an invalid pairing file.
#### Resolution
1. Attempt to reconnect
-2. Generate a new pairing file using JitterbugPair and import it via the settings menu. See our [Pairing File instructions](/docs/installation/pairing-file) for details.
+2. Generate a new pairing file using JitterbugPair and import it via the settings menu. See our [Pairing File instructions](/docs/advanced/pairing-file) for details.
### No WiFi or VPN Connection
#### Cause
@@ -26,7 +26,7 @@ Connection issues with the minimuxer service.
2. Try again (spamming the button usually helps)
3. Restart SideStore
4. Restart StosVPN
-5. Generate a new pairing file using JitterbugPair and import it via the settings menu. See our [Pairing File instructions](/docs/installation/pairing-file) for details.
+5. Generate a new pairing file using JitterbugPair and import it via the settings menu. See our [Pairing File instructions](/docs/advanced/pairing-file) for details.
### Sidestore Hangs Halfway Through Installation
#### Cause
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx b/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
index 2604b067..8bae14a0 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
@@ -75,7 +75,7 @@ Another common issue during sign-in is not receiving a verification code when us
3. Verify VPN is connected in StosVPN.
4. Turn StosVPN off, then back on, and wait a few seconds in SideStore before trying to refresh.
5. Create a brand new pairing file.
- - If none of the above worked it is very likely that the pairing file is corrupted. You can reference the documentation on how to create a new pairing file [here](/docs/installation/pairing-file).
+ - If none of the above worked it is very likely that the pairing file is corrupted. You can reference the documentation on how to create a new pairing file [here](/docs/advanced/pairing-file).
- After creating a new pairing file, go to Sidestore settings and press "Reset pairing file", then choose the new pairing file you just created.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/faq.mdx
index b30fbeb1..02cf5801 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/faq.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/faq.mdx
@@ -52,7 +52,7 @@ Pour supprimer cette restriction (et obtenir également une expiration de 365 jo
Alternativement, il existe actuellement une version nightly disponible [ici](https://github.com/SideStore/SideStore/releases/tag/nightly) (version 0.5.9-nightly.2024.10.23.1+1e969a0 au moment de l'écriture) qui utilise l'exploit SparseRestore pour contourner la limite des 3 applications. Actuellement, cela fonctionne uniquement sur les versions iOS inférieures à la bêta 5 d'iOS 18, ainsi que la version 18.0.1 de manière définitive.
-Un tutoriel pour l'utiliser est disponible [ici](advanced/sparserestore).
+Un tutoriel pour l'utiliser est disponible [ici](advanced/alternative).
### J'ai un problème, un bug, une demande de fonctionnalité ou une suggestion d'amélioration de la qualité de vie
@@ -126,14 +126,14 @@ Assurez-vous que l'extension de votre fichier d'appairage se termine par `.mobil
### Impossible de démarrer DebugServer
-Il y a des moments où DebugServer ne fonctionne pas. Cependant, il existe une solution que vous pouvez essayer.
+Il y a des moments où DebugServer ne fonctionne pas. Cependant, il existe une solution que vous pouvez essayer:
**Créer un nouveau fichier d'appairage**
-Pour commencer le processus d'utilisation d'un nouveau fichier d'appairage, allez dans l'onglet des réglages et cliquez sur Réinitialiser le fichier d'appairag, puis acceptez l'invite. Ensuite, il vous suffit de suivre les [instructions pour le Fichier d'appairage](installation/pairing-file).
+[Réimporter votre Fichier d'appairage en utilisant iloader](installation/pairing-file).
### Problèmes connus actuellement
Si vous rencontrez des problèmes et souhaitez savoir si nous en avons déjà connaissance, consultez notre page des problèmes GitHub qui contient une liste des problèmes connus ainsi que des solutions pour atténuer certains des problèmes que vous pourriez rencontrer. Certains des problèmes présents dans cette liste peuvent être connus mais non mentionnés ici, cependant ils figurent dans la section des problèmes GitHub. https://github.com/SideStore/SideStore/issues/490
-Si vous rencontrez des problèmes qui ne figurent pas dans cette liste, créez un problème sur GitHub ou [rejoignez notre Discord](https://discord.gg/sidestore-949183273383395328).
\ No newline at end of file
+Si vous rencontrez des problèmes qui ne figurent pas dans cette liste, créez un problème sur GitHub ou [rejoignez notre Discord](https://discord.gg/sidestore-949183273383395328).
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/installation/install.mdx
new file mode 100644
index 00000000..ded5776c
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/installation/install.mdx
@@ -0,0 +1,33 @@
+---
+title: Install
+description: Installer Sidestore dans votre iDevice
+sidebar_position: 2
+---
+## Installer SideStore
+1. Connectez votre iDevice à votre ordinateur avec un cable. Si demander, se fier de l'ordinateur et entre votre code.
+2. Ouvrer iloader.
+3. Connectez-vous à un identifiant Apple (elle n'est pas obligé d'être le même que votre appareil)
+4. Selectionnez votre iDevice
+5. Selectionnez "Install SideStore".
+
+### Dans votre iDevice
+Faisez ceci:
+1. Ouvrez l'application de Réglages.
+2. Navigatez à 'Général' et puis 'VPN et gestion de l'appareil'.
+3. Approvez le "App du développeur" sous l'email de identifiant Apple.
+4. Navigatez-vous à 'Confidentialité et sécurité'.
+5. défilez jusqu'en bas et activer le 'Mode développeur'. Votre telephone vas se redémarrer.
+6. Ouvrez StosVPN et appuiez sur 'Connect'.
+7. Ouvrez SideStore.
+9. Connectez-vous avec votre identifiant Apple que vous avez utilisez pour iloader.
+10. Allez dans "My Apps".
+11. Sélectionnez le bouton "x DAYS" (x représente le nombre de jours avant l'expiration).
+12. Une invite concernant votre certificat de signature devrait apparaître, appuyez sur "Refresh Now".
+
+Si ce processus est réussi, Sidestore émmene votre appareil à l'écran d'accueil, accompanier avec une notification et Sidestore sera disponible dans quelques secondes.
+
+Avertissement, si vous mettez à jour où réinitialiser votre iDevice, votre ficher d'appairage s'expira et vous devrez le réimporter en utilisant [ce guide](../advanced/pairing-file). Cela peut s'arrivez at random times à cause des logiciels Apple.
+
+Si vous voulez réinstaller SideStore en utilisant iloader, votre certificat pourriez être révoqué, te forcant de le rafraîchir.
+
+Si vous souhaite installé SideStore dans un autre appareil en using le même identifiant Apple, suivez [ses étapes](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291).
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/installation/linux.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/installation/linux.mdx
deleted file mode 100644
index be1e24ba..00000000
--- a/i18n/fr/docusaurus-plugin-content-docs/current/installation/linux.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Instructions pour Linux
-description: Instructions pour installer SideStore en utilisant Linux
-sidebar_position: 4
----
-
-Avant de commencer, assurez-vous d'avoir complété toutes les étapes indiquées dans les [Prérequis](prerequisites)!
-
-1. Les commandes suivantes installeront usbmuxd et docker. Exécutez-les en tant qu'utilisateur non-root sur votre machine et cette étape n'est à réaliser qu'une seule fois.
-```bash
-sudo apt install -y usbmuxd
-curl -fsSL https://test.docker.com -o test-docker.sh
-sudo sh test-docker.sh
-sudo usermod -aG docker $USER
-```
-2. Redémarrez votre terminal pour vous assurer que les modifications sont prises en compte. Ensuite, branchez votre iDevice. Si une fenêtre apparaît, sélectionnez "Faire confiance" et saisissez votre code d'accès. Enfin, lancez Altcon avec Docker en utilisant ce code (cette commande doit être exécutée à chaque installation de SideStore):
-```bash
-docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd ghcr.io/sidestore/altcon
-```
-3. Altcon s'appairera avec votre appareil. Lorsque vous recevrez une nouvelle demande, sélectionnez "Faire confiance" et saisissez à nouveau votre code d'accès.
-4. Sur votre appareil secondaire, procédez comme suit:
- * Approuvez l'"Application développeur" associée à l'adresse e-mail de votre identifiant Apple (vous pouvez la trouver dans Réglages, sous "Général", puis "VPN et gestion de l'appareil").
- * Ouvrez l'application Réglages.
- * Accédez à la section 'Confidentialité et sécurité'.
- * Activez le 'Mode développeur' tout en bas.
-5. Ouvrez SideStore et sélectionnez "autoriser" à chaque demande jusqu'à ce que SideStore réclame un fichier d'appairage. Quittez ensuite l'application.
-
-À présent, procédez à la génération de votre [Fichier d'appairage](pairing-file).
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/installation/mac.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/installation/mac.mdx
deleted file mode 100644
index 6ccc7b0a..00000000
--- a/i18n/fr/docusaurus-plugin-content-docs/current/installation/mac.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Instructions pour macOS
-description: Instructions pour installer SideStore en utilisant macOS
-sidebar_position: 2
----
-
-Avant de commencer, assurez-vous d'avoir complété toutes les étapes indiquées dans les [Prérequis](prerequisites)!
-
-1. Téléchargez AltServer depuis [le site d'AltStore](https://cdn.altstore.io/file/altstore/altserver.zip). Copiez AltServer.app dans votre dossier 'Applications', puis ouvrez-le (via Finder, Launchpad ou Spotlight). Il devrait apparaître sous forme d'icône dans votre barre de menus.
-2. Téléchargez le fichier IPA de SideStore que vous pouvez trouver [ici](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Maintenez la touche Option enfoncée et cliquez sur l'icône AltServer dans la barre de menus. Cliquez sur "Sideload .ipa", puis sélectionnez le fichier IPA de SideStore.
-4. Sur votre appareil secondaire, procédez comme suit:
- * Approuvez l'"Application développeur" associée à l'adresse e-mail de votre identifiant Apple (vous pouvez la trouver dans Réglages, sous "Général", puis "VPN et gestion de l'appareil").
- * Ouvrez l'application Réglages.
- * Accédez à la section 'Confidentialité et sécurité'.
- * Activez le 'Mode développeur' tout en bas.
-5. Ouvrez SideStore et sélectionnez "autoriser" à chaque demande jusqu'à ce que SideStore réclame un fichier d'appairage. Quittez ensuite l'application.
-
-À présent, procédez à la génération de votre [Fichier d'appairage](pairing-file).
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
deleted file mode 100644
index 5cc784d5..00000000
--- a/i18n/fr/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: Fichier d'appairage
-description: Les fichiers d'appairage sont essentiels au bon fonctionnement de SideStore.
-sidebar_position: 5
----
-
-idevice pair est un programme qui crée un fichier d'appairage Jitterbug, permettant à des applications comme SideStore de communiquer à distance avec votre appareil. Ceci est indispensable pour utiliser SideStore dans le cas où sans cela, l'application ne fonctionnera pas.
-:::warning
-Attention, si vous mettez à jour ou réinitialisez votre iDevice, votre fichier d'appairage expirera et vous devrez en générer un nouveau. Cela peut également se produire de manière aléatoire, et il n'existe actuellement aucune solution pour éviter ce problème.
-:::
-
-Télécharger idevice pair pour
-- [macOS](https://github.com/jkcoxson/idevice_pair/releases/download/v0.1.3p1/idevice_pair--macos-universal.dmg)
-- [Windows](https://github.com/jkcoxson/idevice_pair/releases/download/v0.1.3p1/idevice_pair--windows-x86_64.exe)
-- Linux ([x86_64](https://github.com/jkcoxson/idevice_pair/releases/download/v0.1.3p1/idevice_pair--linux-x86_64.AppImage) ou [AArch64](https://github.com/jkcoxson/idevice_pair/releases/download/v0.1.3p1/idevice_pair--linux-aarch64.AppImage))
-
-## Instructions d'appairage
-
-### macOS
-
-1. Téléchargez `iDevicePair--macos-universal.dmg`. Ouvrez le fichier et faites glisser `idevice pair` dans votre dossier `Applications`.
-2. Connectez votre appareil secondaire à votre ordinateur avec un câble. Si une invite s'affiche, appuyez sur "Faire confiance" et saisissez votre code d'accès.
-3. Déverrouillez votre appareil, puis, ouvrez idevice pair et sélectionnez votre appareil dans le menu déroulant.
-4. Assurez-vous que votre appareil est déverrouillé et affiché sur l'écran d'accueil, puis sélectionnez "generate". Lorsqu'une invite apparaît sur votre appareil, appuyez sur "Faire confiance". Votre fichier d'appairage devrait alors apparaître.
-5. Assurez-vous que votre appareil est toujours sur l'écran d'accueil, puis faites défiler jusqu'à la section SideStore et sélectionnez "install". Le mot "success" devrait apparaître en vert.
-
-### Windows (64-bit)
-
-1. Si ce n'est pas déjà fait pour AltServer, installez [iTunes](https://apple.com/itunes/download/win64) depuis le site web d'Apple.
-2. Téléchargez `iDevicePair--windows-x86_64.exe` (déplacez-le à un endroit où vous ne risquez pas de le perdre).
-3. Connectez votre appareil secondaire à votre ordinateur avec un câble. Si une invite s'affiche, appuyez sur "Faire confiance" et saisissez votre code d'accès.
-4. Déverrouillez votre appareil, puis, dans l'Explorateur de fichiers, ouvrez `idevice pair` et sélectionnez votre appareil dans le menu déroulant.
-5. Assurez-vous que votre appareil est déverrouillé et affiché sur l'écran d'accueil, puis sélectionnez "generate". Lorsqu'une invite apparaît sur votre appareil, appuyez sur "Faire confiance". Votre fichier d'appairage devrait alors apparaître.
-6. Assurez-vous que votre appareil est toujours sur l'écran d'accueil, puis faites défiler jusqu'à la section SideStore et sélectionnez "install". Le mot "success" devrait apparaître en vert.
-
-### Linux
-
-1. Si ce n'est pas déjà fait pour Altcon, exécutez la commande suivante dans le terminal Linux pour installer usbmuxd:
-```bash
-sudo apt install -y usbmuxd
-```
-2. Téléchargez la version d'idevice pair correspondant à l'architecture de votre PC et rendez-la exécutable.
-3. Connectez votre appareil secondaire à votre ordinateur avec un câble. Si une invite s'affiche, appuyez sur "Faire confiance" et saisissez votre code d'accès.
-4. Déverrouillez votre appareil, puis, exécutez idevicepair et sélectionnez votre appareil dans le menu déroulant.
-5. Assurez-vous que votre appareil est déverrouillé et affiché sur l'écran d'accueil, puis sélectionnez "generate". Lorsqu'une invite apparaît sur votre appareil, appuyez sur "Faire confiance". Votre fichier d'appairage devrait alors apparaître.
-6. Assurez-vous que votre appareil est toujours sur l'écran d'accueil, puis faites défiler jusqu'à la section SideStore et sélectionnez "install". Le mot "success" devrait apparaître en vert.
-
-## Étapes suivantes
-À présent, suivez les [Instructions après installation](post-install).
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/installation/post-install.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/installation/post-install.mdx
deleted file mode 100644
index 2bea3787..00000000
--- a/i18n/fr/docusaurus-plugin-content-docs/current/installation/post-install.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Instructions après installation
-description: On y est presque, plus que quelques étapes!
-sidebar_position: 6
----
-La dernière étape pour installer SideStore consiste à actualiser SideStore depuis l'application elle-même.
-
-Pour cela, vous devez:
-
-1. Connectez-vous à StosVPN.
-2. Ouvrez SideStore.
-3. Si ce n'est pas déjà fait, sélectionnez le fichier d'appairage.
-4. Connectez-vous avec votre identifiant Apple.
-5. Allez dans "My Apps".
-6. Sélectionnez le bouton "x DAYS" (x représente le nombre de jours avant l'expiration). Une invite concernant votre certificat de signature devrait apparaître, appuyez sur "Refresh Now". Si une invite vous demande si vous souhaitez révoquer un certificat provenant d'AltStore, appuyez sur "yes".
- * En cas de succès, cela ouvrira un onglet vide dans Safari ou vous ramènera à l'écran d'accueil, accompagné d'une notification l'indiquant.
-
-Si SideStore n'est pas actualisé, un bug entraînant une expiration anticipée vous obligera à réinstaller SideStore. Une automatisation est prévue à l'avenir, mais pour l'instant, cette étape doit être effectuée manuellement.
-
-Si vous réinstallez SideStore ou l'installez sur un autre appareil avec le même identifiant Apple via AltServer, votre certificat sera révoqué et vous devrez le renouveler manuellement comme indiqué ci-dessus (sur les deux appareils, si nécessaire).
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
index 4ebb9fa2..95706d17 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
@@ -11,24 +11,37 @@ Le processus d'installation de SideStore peut sembler compliqué, mais avec l'ut
Pour installer SideStore, vous aurez besoin de:
- Un iPhone ou iPad [avec un code d'accès](https://support.apple.com/fr-fr/119586) fonctionnant sous iOS/iPadOS 14 ou supérieur
-- Un ordinateur sous [Windows](installation/windows.mdx), [macOS](installation/mac.mdx) ou [Linux](installation/linux.mdx) (le support de Linux est expérimental)
+- Un ordinateur (une seule fois)
- Un identifiant Apple
-- L'application StosVPN (voir ci-dessous)
- Une connexion Wi-Fi
- Un peu de temps (C'est un processus rapide, mais il vaut mieux [prévoir du temps pour le dépannage](/docs/troubleshooting/))
-## StosVPN
+## Préparez votre appareil
+
+### Dans votre iPhone/iPad:
SideStore utilise un VPN intégré qui permet à SideStore de communiquer avec les services internes.
-1. Téléchargez l'application StosVPN depuis l'[App Store officiel](https://apps.apple.com/fr/app/stosvpn/id6744003051).
+1. Téléchargez l'application StosVPN dans l'[App Store officiel](https://apps.apple.com/fr/app/stosvpn/id6744003051).
2. Activez le VPN.
-Ce VPN doit être activé à chaque fois que vous souhaitez installer ou mettre à jour des applications dans SideStore.
+Ce VPN doit être activé à chaque fois que vous souhaitez installer, mettre à jour, ou rafraîchir des applications dans SideStore.
+
+### Dans votre Mac
+1. Télechargez et installez iloader pour Mac ([Séries M](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg) ou [Intel](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg)).
+2. Ouvrez le Terminal, éxecuter `sudo xattr -c ./Applications/iloader.app` et entrez votre mot de passe si demandé.
+
+### Dans votre Ordinateur Windows
+1. Télechargez et installez [iTunes](https://apple.co/ms).
+2. Télegarchez l'installateur iloader ([exe](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe) ou [msi](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)).
+3. Éxecutez le programme d'installation.
+
+### Dans votre Machine Linux
+1. Télechargez et installez `usbmuxd` (peut être près-installer dans votre distro, sinon l'installe avec votre package manager).
+2. Télecharger et installez iloader pour votre distro ([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [other](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)).
+
-## Étapes suivantes
+## Prochaines étapes
-Ensuite, suivez les instructions d'installation correspondant à votre système d'exploitation!
-- [macOS](mac)
-- [Windows (64-bit)](windows)
-- [Linux (expérimental)](linux)
+Maintenenant, suivez les processus d'installation pour installer SideStore!
+- [Installer](install.mdx)
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/installation/windows.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/installation/windows.mdx
deleted file mode 100644
index 2525b481..00000000
--- a/i18n/fr/docusaurus-plugin-content-docs/current/installation/windows.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Installation sous Windows
-description: Instructions pour installer SideStore en utilisant Windows
-sidebar_position: 3
----
-
-Avant de commencer, assurez-vous d'avoir complété toutes les étapes indiquées dans les [Prérequis](prerequisites)!
-
-Sur votre ordinateur, désinstallez toute version d'iCloud ou d'iTunes que vous auriez pu télécharger depuis le Microsoft Store, puis installez les versions hors Microsoft Store d'[iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe) et [iTunes](https://apple.com/itunes/download/win64). La version hors Microsoft Store d'iCloud a été retirée du site d'Apple à la mi-septembre 2022. Le lien ci-dessus pointe donc vers une ancienne version d'iCloud, toujours compatible avec AltServer, et encore disponible directement sur les serveurs d'Apple (sécurisé).
-
-1. Téléchargez `altinstaller.zip` depuis [le site d'AltStore](https://cdn.altstore.io/file/altstore/altinstaller.zip). Extrayez `altinstaller.zip` puis exécutez `setup.exe`. Dans la barre des tâches de Windows, tapez "AltServer" et cliquez sur "Exécuter en tant qu'administrateur". Assurez-vous d'autoriser l'accès aux réseaux privés si cela vous est demandé. AltStore apparaîtra sous forme d'icône dans la barre d'état système (là où est affiché Internet, Wi-Fi, batterie, etc.).
-2. Téléchargez le fichier IPA de SideStore que vous pouvez trouver [ici](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa)
-3. Maintenez la touche Maj enfoncée et cliquez sur l'icône AltServer dans la barre d'état système. Cliquez sur "Sideload .ipa" et sélectionnez le fichier IPA de SideStore.
-4. Sur votre appareil secondaire, procédez comme suit:
- * Approuvez l'"Application développeur" associée à l'adresse e-mail de votre identifiant Apple (vous pouvez la trouver dans Réglages, sous "Général", puis "VPN et gestion de l'appareil").
- * Ouvrez l'application Réglages.
- * Accédez à la section 'Confidentialité et sécurité'.
- * Activez le 'Mode développeur' tout en bas.
-5. Ouvrez SideStore et sélectionnez "autoriser" à chaque demande jusqu'à ce que SideStore réclame un fichier d'appairage. Quittez ensuite l'application.
-
-À présent, procédez à la génération de votre [Fichier d'appairage](pairing-file).
\ No newline at end of file
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/advanced/alternative.mdx b/i18n/it/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
new file mode 100644
index 00000000..ec838777
--- /dev/null
+++ b/i18n/it/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
@@ -0,0 +1,178 @@
+---
+title: Istruzioni alternative/obsolete
+description: "Posto per istruzioni alternative/obsolete per il setup di SideStore. Nota: alcuni di questi step potrebbero essere non compatibili col le ultime versioni di iOS o SideStore"
+---
+
+## Installazione
+### AltServer
+#### macOS
+Segui le istruzioni (step 1-3) [qui](https://faq.altstore.io/altstore-classic/how-to-install-altstore-macos) per configurare AltServer
+#### Windows
+Segui le istruzioni (step 1-3) [qui](https://faq.altstore.io/altstore-classic/how-to-install-altstore-windows) per configurare AltServer
+#### Linux (Altcon)
+Prima di iniziare, assicurati di aver installato usbmuxd.
+
+1. Assicurati di avere usbmuxd installato e aggiornato eseguendo `sudo apt install -y usbmuxd` nel terminale Linux.
+2. Installa Docker o Podman sul tuo PC.
+3. Collega il tuo iDevice. Se ricevi un avviso, seleziona "autorizza" e inserisci il codice.
+4. Ora, esegui Altcon con Docker o Podman con il seguente comando (potrebbe richiedere `sudo`):
+
+Docker setup:
+```bash
+docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+```
+Podman setup:
+```bash
+podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+```
+5. Altcon si collegherà al tuo dispositivo. Quando ricevi un altro avviso, seleziona di nuovo "autorizza" e inserisci il codice.
+
+#### Configurare SideStore su più dispositivi
+Step:
+1. Configura AltServer su macOS/Windows utilizzando le istruzioni qui sopra
+2. Installa AltStore su un dispositivo tramite AltServer (Abbiamo bisogno di AltStore perché pare che AltServer non inserisca il machine identifier in applicazioni che non siano AltStore)
+3. Accedi col tuo Apple ID in AltStore
+4. Esporta il certificato
+5. Cancella AltStore
+
+Poi per ogni device:
+1. Installa SideStore tramite AltServer con lo stesso Apple ID(Tieni premuto [Option/Mac, Shift/Windows] quando clicchi su AltServer -> Install IPA -> Seleziona l'ipa di SideStore)
+2. Importa il certificato
+3. Accedi col tuo Apple ID in SideStore (Bisogna accedere dopo aver importato il certificato altrimenti non sarà possibile accedere senza revocare il certificato di AltStore)
+4. Sideload
+
+Quando scade il vecchio certificato:
+1. SideStore chiederà di reinstallarsi da solo su un dispositivo
+2. Dopo la reinstallazione, esporta il certificato
+
+Poi, per ogni device:
+1. Importa il nuovo certificato
+2. Esegui il sideload di SideStore ipa da SideStore
+
+
+## Pairing
+### idevice_pair
+#### Istruzioni di installazione
+
+##### macOS
+
+1. Scarica [idevice pair per macOS](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg).
+2. Apri la disk image e trascina `idevice pair` in `Applicazioni`.
+
+##### Windows
+
+1. Assicurati che iTunes ([64-bit](https://apple.com/itunes/download/win64) o [32-bit](https://apple.com/itunes/download/win32)) sia installato dal sito Apple (dovresti averlo già installato dal processo di setup di AltServer).
+2. Scarica [idevice pair per Windows](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe) e spostalo in un posto comodo.
+
+##### Linux
+
+1. Assicurati che usbmuxd sia installato sulla tua macchina eseguendo `sudo apt install -y usbmuxd` nel terminale Linux.
+2. Scarica la versione di idevice_pair per Linux ([x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage) o [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage)) corrispondente all'architettura del tuo PC. Spostala in un posto comodo e rendila eseguibile
+
+#### Istruzioni di Pairing
+
+1. Collega il tuo device al PC via cavo. Se appare un avviso, seleziona `autorizza` e inserisci il codice.
+2. Sblocca il tuo dispositivo, poi apri `idevice pair` e seleziona il tuo dispositivo dalla lista.
+3. Assicurati che il device sia sbloccato e nella schermata home, seleziona `load`. Se appare un avviso, seleziona `autorizza`. Dovrebbe apparire il pairing file.
+4. Assicurati che il device sia ancora nella schermata home, scorri in basso e seleziona `install` sotto a "SideStore". Dovrebbe apparire `Success` in verde.
+
+### JitterbugPair
+JitterbugPair (*non* l'app Jitterbug) ci permette di creare il pairing file per programmi come SideStore per comunicare da remoto al device. È necessario per l'utilizzo di SideStore, che altrimenti non funzionerà.
+
+Scarica JitterbugPair per [Windows (64-bit)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip), [macOS](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-macos.zip), o [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip).
+
+#### Istruzioni di Pairing
+
+:::tip
+A seconda del tuo metodo, trasferendo il file .mobiledevicepairing l'estensione potrebbe cambiare (di solito a .txt o senza "ing" finale). È sempre consigliato zippare il file prima di trasferirlo. SideStore accetta solo file .mobiledevicepairing (o file .plist nelle vecchie versioni).
+:::
+
+##### Windows
+
+1. **Estrai** `jitterbugpair-win64.zip`.
+2. **Imposta un passcode** al tuo device se non l'hai già fatto. Sblocca il tuo device e collegalo al pc via cavo. Se appare un avviso, tocca "autorizza" e inserisci il tuo codice.
+3. Sblocca il tuo device nella schermata home.
+4. In Esplora File, trova `jitterbugpair.exe` ed eseguilo cliccando due volte. La prima volta che esegui il tool, riceverai un avviso per il tuo codice. Inseriscilo, poi mantieni il device sbloccato ed esegui di nuovo il tool.
+5. JitterbugPair genererà un **pairing file** nella stessa cartella. Questo file avrà l'estensione `.mobiledevicepairing`.
+6. Per una migliore esperienza, comprimi il file in una cartella .zip. Poi **trasferisci il pairing file** al tuo dispositivo iOS tramite OneDrive/iCloud/Google Drive, email, o qualsiasi altro metodo tu voglia.
+
+Su Windows, potresti dover eseguire il programma utilizzando il Prompt dei Comandi o PowerShell, visto che cliccare due volte il file `.exe` non lo apre sempre.
+
+7. In Esplora File, naviga alla cartella in cui hai messo jitterbugpair.
+8. Nella barra di navigazione, clicca su un posto vuoto e scrivi `powersheel`. Dovrebbe aprirsi una finestra (probabilmente blu) chiamata PowerShell.
+9. Da lì, scrivi `./jitterbugpair.exe` e premi enter col device collegato.
+
+##### macOS
+
+1. **Estrai** `jitterbugpair-macos.zip`.
+2. **Imposta un passcode** al tuo device se non l'hai già fatto. Sblocca il tuo device e collegalo al pc via cavo. Se appare un avviso, tocca "autorizza" e inserisci il tuo codice.
+3. Sblocca il tuo device nella schermata home.
+4. Trova ed apri il file `jitterbugpair` (dovrebbe avere un'icona nera e verde) cliccando due volte o cliccando col destro e selezionando "Apri". La prima volta che esegui il tool, riceverai un avviso per il tuo codice. Inseriscilo, poi mantieni il device sbloccato ed esegui di nuovo il tool.
+5. Se ricevi il messaggio "macOS non può verificare che questa app non contenga malware":
+ - Vai nelle Impostazioni > Privacy e Sicurezza
+ - Scorri in basso fino a trovare un messaggio relativo all'app
+ - Clicca "Apri Comunque", se il programma non si esegue automaticamente, prova ad eseguirlo di nuovo manualmente
+6. JitterbugPair genererà un **pairing file** con l'estensione `.mobiledevicepairing` nella cartella home del tuo utente.
+7. Se non riesci a trovare il pairing file:
+ - Copia il nome del pairing file generato
+ - Incollalo nel Finder
+ - Se hai eseguito il programma più di una volta, compariranno tutti i pairing file visto che hanno lo stesso nome
+8. Per una migliore esperienza, comprimi il file in una cartella .zip. Poi **trasferisci il pairing file** al tuo dispositivo iOS tramite AirDrop, OneDrive/iCloud/Google Drive, email, o qualsiasi altro metodo tu voglia.
+
+##### Linux
+
+Queste istruzioni sottointendono che tu sia familiare con la commandline Linux.
+
+1. **Estrai** `jitterbugpair-linux.zip`.
+2. Apri il terminale nella cartella estratta.
+3. Rendi eseguibile il programma
+ ```bash
+ chmod +x ./jitterbugpair
+ ```
+4. **Imposta un passcode** al tuo device se non lo ha già. Sblocca il dispositivo e connettilo al PC via cavo. Se appare un avviso, tocca "autorizza" e inserisci il codice.
+5. Sblocca il tuo device nella home.
+6. Esegui il programma:
+ ```bash
+ ./jitterbugpair
+ ```
+7. La prima volta che esegui il tool, riceverai un avviso per il tuo codice. Inseriscilo, poi mantieni il device sbloccato ed esegui di nuovo il tool.
+8. JitterbugPair genererà un **pairing file** con l'estensione `.mobiledevicepairing`.
+9. Per una migliore esperienza, comprimi il file in una cartella .zip. Poi **trasferisci il pairing file** al tuo dispositivo iOS tramite OneDrive/iCloud/Google Drive, email, o qualsiasi altro metodo tu voglia.
+
+## Exploit SideStore
+### SparseRestore (limite 3-app)
+:::note
+
+L'exploit di SparseRestore "Bypass 3 app limit" **funziona solo su versioni iOS/iPadOS tra la 17.0 e la 18.1 beta 4 (escludendo 17.7.1)**. Se non sei su queste versioni non funzionerà, **non chiedere supporto**.
+
+:::
+
+#### Prerequisiti
+* Un iDevice con una versione supportata da SparseRestore (vedi la nota sopra).
+* Almeno uno slot app libero.
+* SideStore 0.5.9 o successivi. Puoi trovare le ultime versioni [qui](https://github.com/SideStore/SideStore/releases).
+* Per eseguire l'exploit, DEVI avere **Dov'è** disattivato sul tuo dispositivo durante il processo. Altrimenti non funzionerà. Ecco come puoi disattivarlo:
+ - Apri l'app Impostazioni.
+ - Tocca sul tuo nome in alto.
+ - Tocca su Dov'è.
+ - Tocca su Trova il mio iPhone/iPad.
+ - Disattiva Trova il mio iPhone/iPad.
+ - Ti chiederà la password dell'Apple ID per confermare.
+
+ > **Nota:** Potresti non essere in grado di disattivare Trova il mio iPhone/iPad se hai attiva la Protezione Dispositivo Rubato. Disattivala per continuare.
+
+#### Step
+1. Installa SparseBox. Può essere fatto in vari modi, ma in questo caso la installeremo con SideStore. Scarica [qui](https://github.com/khanhduytran0/SparseBox/releases/) l'ultima versione.
+2. Abilita "Disable App Limit" in SideStore e assicurati che SideStore sia **chiuso** (anche in background), poi apri SparseBox.
+3. Abilita StosVPN, seleziona il tuo pairing file e tocca 'Bypass 3-app limit'. Dovrebbe apparire un log. Aspetta che dica `idevicebackup2 exited with code -18` o `idevicebackup2 exited with code 2`, poi chiudi l'app. Non è necessario premere Apply.
+4. Riapri SideStore, scorri nelle impostazioni. Premi "clear cache", questo permetterà all'exploit di essere visto da SideStore.
+5. Prova a vedere se funziona l'exploit (potresti dover installare più di un'app, in base a quante ne avevi installate). Se dà un errore riguardante il limite, riapri SideStore o riesegui l'exploit. Se installa l'app, congratulazioni! Puoi avere più di 3 app installata allo stesso tempo.
+
+#### Note
+A causa di certi limit, questo exploit deve essere applicato ogni 3 ulteriori app.
+Se vuoi/ti serve Dov'è per altri motivi, puoi riattivarlo. Però, ogni volta che installi o refeshi altre app, dovrai spegnerlo di nuovo.
+
+### MacDirtyCow (3-app limit)
+[MDC-Compatible IPA](https://cdn.discordapp.com/attachments/949183273827983370/1074037820328521829/SideStore_MDC_14.ipa)
+
+La versione MDC di SideStore qui sopra è compatibile solo con iOS 15.0-16.1.2 ed è molto vecchia, potresti incontrare problemi. Se vuoi questa funzionalità, entra nel nostro Discord e vai nel canale [sidestore-downloads](https://discord.com/channels/949183273383395328/1126118099930861638), che contiene build di SideStore compatibili con MDC. Poi, [installa separatamente WDBRemoveThreeAppLimit con SideStore](https://github.com/zhuowei/WDBRemoveThreeAppLimit/releases/tag/v1.0) per applicare la patch.
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/advanced/jit.mdx b/i18n/it/docusaurus-plugin-content-docs/current/advanced/jit.mdx
index 0888d84c..285e0bf2 100644
--- a/i18n/it/docusaurus-plugin-content-docs/current/advanced/jit.mdx
+++ b/i18n/it/docusaurus-plugin-content-docs/current/advanced/jit.mdx
@@ -4,21 +4,23 @@ description: Tutorial su come abilitare la compilazione Just-In-Time (JIT) per a
---
:::note
-iOS 26 ha rotto di nuovo JIT. È stato rilasciato un fix in StikDebug, ma il supporto è **molto** limitato. Ad oggi (16 sett), le uniche app supportate sono:
+iOS 26 ha rotto di nuovo JIT. È stato rilasciato un fix in StikDebug, ma il supporto è **molto** limitato. Ad oggi (10 Nov), le uniche app supportate sono:
* UTM
* Amethyst
* MeloNX
-* maciOS (non rilasciata completamente)
+* maciOS
+* DolphiniOS
+* Geode
-Ci sono diversi metodi per abilitare JIT, come AltJIT, SideJITServer e altri. Questo tutorial copre l'uso di StikDebug (prima StikJIT), in quanto è il metodo raccomandato. Per più info, vedi la [guida ufficiale per il pairing StikDebug](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
+Tieni d'occhio il nostro canale di annunci nel server Discord e sul [server di idevice](https://discord.gg/mACqxMxP3X) per ulteriori aggiornamenti.
-Come alternativa, SideStore 0.6.2 include aggiornamenti a minimuxer, permettendo la funzionalità JIT built-in, in modo simile a StikDebug. Per usarlo, assicurati di essere connesso a StosVPN con il Wi-Fi connesso o la Modalità Aereo attiva, poi naviga in "Le mie app", tieni premuto l'app in cui vuoi abilitare JIT e tocca "abilita JIT".
+Ci sono diversi metodi per abilitare JIT in base alla tua versione iOS. Questo tutorial copre l'uso di StikDebug (prima StikJIT), in quanto è il metodo raccomandato. Per più info, vedi la [guida ufficiale per il pairing StikDebug](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
-Tieni d'occhio il nostro canale di annunci nel server Discord e sul [server di idevice](https://discord.gg/mACqxMxP3X) per ulteriori aggiornamenti.
+Come alternativa, SideStore 0.6.2 include aggiornamenti a minimuxer, permettendo la funzionalità JIT built-in, in modo simile a StikDebug. Per usarlo, assicurati di essere connesso a StosVPN con il Wi-Fi connesso o la Modalità Aereo attiva, poi naviga in "Le mie app", tieni premuto l'app in cui vuoi abilitare JIT e tocca "abilita JIT".
:::
## Prerequisiti
-* Un iDevice con iOS/iPadOS 17.4-18.6, esclusa 18.4b1. Se sei su 17.0-17.3 devi usare un metodo alternativo come [SideJITServer](https://github.com/nythepegasus/SideJITServer). Come scritto sopra, le versioni successive alla 18.6 non sono supportate al momento.
+* Un iDevice con iOS/iPadOS 17.4-tutte le versioni di iOS 18, esclusa 18.4b1. Se sei su 17.0-17.3 devi usare un metodo alternativo come [SideJITServer](https://github.com/nythepegasus/SideJITServer). Il JIT-enabler di SideStore funziona su iOS 26 solo se il tuo dispositivo ha più di 4 anni (non-TMX capable).
## Installazione di StikDebug nell'App Store di Apple
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx b/i18n/it/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
new file mode 100644
index 00000000..01494006
--- /dev/null
+++ b/i18n/it/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
@@ -0,0 +1,13 @@
+---
+title: File di Pairing
+description: Guida per reimportare manualmente il pairing file.
+---
+:::warning
+Attenzione, se aggiorni o ripristini il tuo iDevice, il pairing file scadrà e dovrai reimportarlo. Questo succede anche randomicamente a causa di Apple, non c'è niente che possiamo fare per prevenirlo. Questa guida ti insegna a importare manualmente il pairing file in SideStore utilizzando iloader.
+:::
+
+## Reimportare il pairing file
+1. Assicurati di aver seguito gli step nella [guida di installazione](../installation/prerequisites) per installare e configurare iloader e SideStore.
+2. Per un funzionamento migliore, collega il tuo iDevice al computer tramite cavo USB, ma se il tuo dispositivo appare wireless funzionerà comunque.
+3. Clicca "Manage Pairing File"
+4. Alla destra di "SideStore" e qualsiasi altra app tu voglia, clicca "Place Pairing File". Dovrebbe apparire "Pairing file placed successfully!" in verde.
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx b/i18n/it/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
deleted file mode 100644
index 8a6fcf52..00000000
--- a/i18n/it/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Bypass del limite delle 3 App
-description: Tutorial su come installare più di 3 app tramite SideStore tramite l'exploit SparseRestore.
----
-
-:::note
-
-L'exploit bypass del limite delle 3 app di SparseRestore **funziona solo sulle versioni iOS/iPadOS tra la 17.0 e la 18.1 beta 4 (esclusa la 17.7.1)**. Se non sei su queste versioni non funziona, **non chiedere supporto**.
-
-:::
-
-
-## Prerequisiti
-* Un iDevice con versioni supportate dall'exploit SparseRestore (vedi le note sopra).
-* Almeno uno slot app libero.
-* SideStore 0.5.9 o successive. Puoi trovare le ultime versioni [qui](https://github.com/SideStore/SideStore/releases).
-* Per eseguire questo exploit DEVI disattivare **Trova il mio iPhone** sul tuo iDevice durante il processo. Altrimenti non funzionerà. Ecco come puoi disattivarlo:
- - Apri l'app Impostazioni
- - Tocca il tuo nome in alto.
- - Tocca Dov'è
- - Tocca Trova il mio iPhone/iPad.
- - Disattiva Trova il mio Iphone/iPad.
- - Potresti dover inserire la password del tuo Apple ID per confermare.
-
- > **Nota:** Potresti non essere in grado di disattivare Trova il mio iPhone a causa della Protezione del dispositivo rubato. Disattiva Protezione del dispositivo rubato prima di disattivare Trova il mio iPhone.
-
-## Procedimento
-1. Installa SparseBox. Si può fare in vari modi, ma in questo caso installalo con SideStore. Puoi trovare l'ultima versione [qui](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip) (unzippa artifact.zip per avere il file .ipa).
-
-2. Abilita "Disattiva Limite delle App" in SideStore e assicurati che SideStore sia **chiuso** (non in background), poi apri SparseBox.
-
-3. Abilita StosVPN, seleziona il pairing file e tocca 'Bypass 3-app limit'. Dovrebbe apparire un log. Aspetta che ci sia scritto `idevicebackup2 exited with code -18` o `idevicebackup2 exited with code 2`, poi chiudi l'app. Non è necessario premere Apply.
-
-4. Riapri SideStore e scorri in basso nelle impostazioni. Premi "cancella cache", in questo modo SideStore vedrà l'exploit.
-
-5. Verifica che l'exploit funzioni (potresti dover installare più di un'app, in base a quanti slot liberi hai). Se mostra un errore riguardante il limite, riapri SideStore o riesegui l'exploit. Se installa l'app, congratulazioni! Puoi avere più di 3 app installate nello stesso momento.
-
-## Note
-A causa di alcune limitazioni, l'exploit deve essere eseguito ogni volta che installi altre 3 app.
-
-Se vuoi/ti serve Trova il mio iPhone per altre ragioni, puoi riattivarlo. In ogni caso, se vuoi installare o refreshare altre app, dovrai disattivarlo di nuovo.
-
-## Alternative
-Se l'exploit non funziona, o il tuo iDevice è su una versione non supportata, c'è un'alternativa per poter usare più di 3 app alla volta. [LiveContainer](https://livecontainer.github.io/), sviluppato da Duy Tran Khanh ([khanhduytran0](https://github.com/khanhduytran0)) (la stessa persona che ha sviluppato SparseBox), permette di eseguire app containerizzate anziché installarle separatamente. È anche più semplice rispetto ad utilizzare SparseRestore in alcuni casi. La pagina GitHub è raggiungibile [qui](https://github.com/khanhduytran0/LiveContainer).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/contributing/contributing.mdx b/i18n/it/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
index a286a637..5576eec8 100644
--- a/i18n/it/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
+++ b/i18n/it/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
@@ -13,10 +13,10 @@ Ci sono diversi modi per contribuire a SideStore, quindi se non sei uno sviluppa
- [Scrivere la documentazione](https://github.com/SideStore/SideStore-Docs)
- [Inviare bug report dettagliati e consigliare nuove funzionalità](https://github.com/SideStore/SideStore/issues/new/choose)
- Aiutarci col supporto:
- - [Discord](https://discord.gg/sidestore-949183273383395328)
+ - [Discord](https://dis.sidestore.io/)
- [GitHub Discussions](https://github.com/SideStore/SideStore/discussions)
-In ogni caso, questa guida si concentrerà sulla parte dello sviluppo. Per ora qui troverai solo le info per il setup, ma puoi [unirti al nostro Discord](https://discord.gg/sidestore-949183273383395328) se hai bisogno di più aiuto.
+In ogni caso, questa guida si concentrerà sulla parte dello sviluppo. Per ora qui troverai solo le info per il setup, ma puoi [unirti al nostro Discord](https://dis.sidestore.io/) se hai bisogno di più aiuto.
## Requisiti
@@ -38,7 +38,7 @@ Questa guida assume che tu:
cd SideStore
```
- Se stai usando GitHub Desktop, guarda [questa guida](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop).
+ Se stai usando GitHub Desktop, guarda [questa guida](https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop).
3. **Copia `CodeSigning.xcconfig.sample` in `CodeSigning.xcconfig`** e inserisci i valori.
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/it/docusaurus-plugin-content-docs/current/faq.mdx
index eb0f945e..a6a353e1 100644
--- a/i18n/it/docusaurus-plugin-content-docs/current/faq.mdx
+++ b/i18n/it/docusaurus-plugin-content-docs/current/faq.mdx
@@ -10,12 +10,16 @@ Questa è una lista di domande frequenti su SideStore. Contiene una serie di dom
## Cos'è SideStore?
-SideStore è un'app di iOS che ti permette di eseguire il sideload delle app sul tuo dispositivo iOS utilizzando solo il tuo Apple ID. SideStore rifirma le app con il tuo certificato sviluppatore personale, poi usa una [VPN realizzata ad-hoc](https://github.com/jkcoxson/em_proxy) per ingannare iOS e installare le app. SideStore eseguirà il "refresh" periodico delle app in background, affinché non scadano ogni 7 giorni.
+SideStore è un'app di iOS che ti permette di eseguire il sideload delle app sul tuo dispositivo iOS utilizzando solo il tuo Apple ID. SideStore rifirma le app con il tuo certificato sviluppatore personale, poi usa una [VPN realizzata ad-hoc](https://apps.apple.com/us/app/stosvpn/id6744003051) per ingannare iOS e installare le app. SideStore eseguirà il "refresh" periodico delle app in background, affinché non scadano ogni 7 giorni.
L'obbiettivo di SideStore è quello di fornire un'esperienza di sideload untethered. È un fork di [AltStore](https://github.com/rileytestut/AltStore) guidato dalla community e ha già implementato diverse feature molto richieste. Ti servirà un computer solo durante l'installazione.
(I contributi sono ben accetti! 🙂)
+### Che limitazioni ha SideStore?
+
+Se stai usando un Account Apple gratuito, SideStore può installare solo 3 app (incluso se stesso) alla volta. Inoltre, possono essere installate solo 10 app diverse alla settimana.
+
### Posso attivare JIT?
Gli utenti che utilizzano iOS/iPadOS 16 o inferiori possono attivare JIT direttamente dalla pagina 'Le mie app' di SideStore tenendo premuto l'app e selezionando 'Abilita JIT'.
@@ -52,9 +56,9 @@ Normalmente no, in quanto è una limitazione di iOS e dell'account sviluppatore.
Per rimuovere questa restrizione (e avere una scadenza di 365 giorni), puoi pagare €99/anno per un account Apple Sviluppatore.
-In alternativa, sulle versioni di iOS 18 db5/18.0.1 e inferiori, puoi utilizzare l'exploit di SparseRestore per bypassare il limite di 3 app.
+In alternativa, puoi usare LiveContainer, oppure sulle versioni di iOS 18 db5/18.0.1 e inferiori, puoi utilizzare l'exploit di SparseRestore per bypassare il limite di 3 app (non bypassa il limite di 10 app-id).
-Puoi trovare la guida [qui](advanced/sparserestore).
+Puoi trovare la guida [qui](/docs/advanced/alternative).
### Ho un problema o un bug o una richiesta per una funzionalità
@@ -62,13 +66,13 @@ Apri una issue sulla nostra pagina GitHub per reportare un bug o richiedere una
### Sono uno sviluppatore, in che modo mi riguarda?
-Non ti riguarda direttamente, se non forse per un aggiornamento di AltKit quando/se faremo le nostre aggiunte.
+Le tue app non dovrebbero necessitare di modifiche per funzionare con SideStore!
### Devo installare AltStore per installare SideStore?
-No, puoi eseguire il sideload di SideStore direttamente seguendo le nostre guide per [Windows](/docs/installation/windows), [macOS](/docs/installation/mac) e [Linux](/docs/installation/linux) dato che funziona come AltStore nel processo di firma.
+No, puoi eseguire il sideload di SideStore seguendo le nostre guide!
-### Come utente, sto avendo problemi a fare il login su SideStore. Ho un errore
+### Come utente, sto avendo problemi a fare il login su SideStore. Ho un errore.
Ci sono diverse motivazioni, la più comune è un downtime temporaneo del server Anisette. Puoi cambiare il server Anisette nelle impostazioni di SideStore in "URL Anisette".
@@ -84,7 +88,7 @@ Questo era un aggiornamento di test per vedere se ci fossero problemi tra versio
### Perché le mie app JIT non attivano automaticamente JIT?
-Non abbiamo al momento un metodo di attivazione automatico del JIT, e se lo avessimo sarebbe necessario avere attiva StosVPN.
+Non abbiamo al momento un metodo di attivazione automatico del JIT, e se lo avessimo sarebbe necessario avere attiva StosVPN. In alternativa puoi usare StikDebug.
### SideStore ha un UI per iPadOS?
@@ -98,10 +102,6 @@ Questi Mac non sono veri, sono generati automaticamente dal server Anisette per
I vecchi server Anisette che vengono usati da tanti utenti sono soliti causare il blocco degli Apple ID. Usa uno dei server Anisette ufficiali, o hosta tu stesso un [anisette-v3-server](advanced/anisette).
-### Perché ho l'errore -36607?
-
-È un problema di login con il server Anisette. Non c'è molto da fare se non provare a cambiare server Anisette o continuare a provare ad accedere finché funziona.
-
### Posso trasferire le mie app di AltStore/Sideloadly?
Sì, semplicemente non cancellare l'app dal tuo dispositivo. Vai su SideStore e esegui il sideload dello stesso IPA o di quello aggiornato e dovrebbe venire aggiunto alla tua lista di app di SideStore con tutti i dati intatti.
@@ -118,25 +118,20 @@ Certo! Clicca sul bottone "Aggiorna" quando compare!
Puoi fare il sideload di una versione nightly di SideStore tramite SideStore o AltServer e i dati dovrebbero rimanere, o abilita gli aggiornamenti beta e seleziona "nightly" nelle Impostazioni. Non possiamo garantirti che i dati rimangano quando provi una versione non ufficiale o nightly.
-### Le mie app sono scomparse e non so cosa fare
+### Le mie app sono scomparse da SideStore e non so cosa fare!
Non andare nel panico! Ri-esegui il sideload delle app senza rimuoverle dal dispositivo e i dati dovrebbero essere salvi. Sfortunatamente è possibile che le app vadano perse, ma per esserne certo fai il refresh di SideStore per vedere se ricompaiono.
-### Non riesco a selezionare il pairing file con qualsiasi estensione
-
-Assicurati che l'estensione del file di pairing sia `.mobiledevicepairing` o `.plist`. Se non dovesse essere così, controlla se hai zippato il pairing file prima di averlo mandato sul tuo dispositivo. Altrimenti potrebbe essere che venga corrotto durante il trasferimento. Inoltre quando firmi SideStore con un certificato, non sarai in grado di selezionare il file di pairing dall'app. Puoi provare a spostare il file di pairing nella cartella di SideStore nell'app File e cambiare il nome in `ALTPairingFile.mobiledevicepairing`. Se non vedi la cartella SideStore nell'app File, connetti il dispositivo al computer e trascina il file di pairing nei file dell'app SideStore. Assicurati di cambiare il nome come scritto sopra. Nota che è case sensitive.
-
### Impossibile eseguire DebugServer
Ci sono delle volte in cui DebugServer non funziona. Ci sono delle possibili soluzioni:
**Creare un nuovo file di pairing**
-Per iniziare il processo di utilizzo di un nuovo pairing file, vai nelle impostazioni e clicca "Resetta file di pairing", poi premi accetta. Successivamente segui le [Istruzioni del Pairing File](installation/pairing-file).
+[Reimporta il tuo pairing file utilizzando iloader](advanced/pairing-file).
### Problemi noti
Se stai avendo problemi e vuoi sapere se ne siamo già al corrente, controlla la nostra pagina GitHub nella sezione issue che ha una lista di problemi noti ed eventuali soluzioni. Alcuni dei problemi presenti in questo elenco potrebbero essere noti, ma non sono riportati qui, bensì nella sezione dedicata alle issue su GitHub. https://github.com/SideStore/SideStore/issues/490
-Se hai problemi che non sono in questa lista, apri una issue su GitHub o [entra nel nostro Discord](https://discord.gg/sidestore-949183273383395328).
-
+Se hai problemi che non sono in questa lista, apri una issue su GitHub o [entra nel nostro Discord](https://dis.sidestore.io/).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/it/docusaurus-plugin-content-docs/current/installation/install.mdx
new file mode 100644
index 00000000..81616cee
--- /dev/null
+++ b/i18n/it/docusaurus-plugin-content-docs/current/installation/install.mdx
@@ -0,0 +1,33 @@
+---
+title: Installazione
+description: Installare SideStore sul tuo iDevice
+sidebar_position: 2
+---
+## Installare SideStore
+1. Collega il tuo iDevice al computer via cavo. Se te lo chiede, autorizza il computer e inserisci il codice.
+2. Apri iloader.
+3. Accedi al tuo Account Apple (non è necessario che sia lo stesso del tuo dispositivo)
+4. Seleziona il tuo iDevice
+5. Seleziona "Install SideStore".
+
+### Sul tuo iDevice
+Esegui i seguenti passaggi:
+1. Apri l'app Impostazioni
+2. Vai a 'Generali', poi 'VPN e Gestione Dispositivo.
+3. Autorizza l'"App Sviluppatore" sotto alla mail dell'Account Apple.
+4. Vai in 'Privacy e Sicurezza'.
+5. Scorri in fondo e abilita la 'Modalità Sviluppo'. Il tuo dispositivo si riavvierà.
+6. Apri StosVPN e seleziona 'Connect'.
+7. Apri SideStore.
+8. Accedi con l'Account Apple che hai usato in iloader.
+9. Vai in "My Apps".
+10. Tocca sul bottone "x DAYS" alla destra di SideStore (x è il numero di giorni rimanenti alla scadenza dell'app).
+11. Dovrebbe apparire un prompt chiedendoti di creare un nuovo certificato, tocca "Refresh Now".
+
+Se tutto funziona correttamente, SideStore dovrebbe portarti alla home screen e mostrare una notifica, per poi essere di nuovo disponibile dopo qualche secondo.
+
+Attento, se aggiorni o formatti il tuo iDevice, il tuo pairing file scadrà e dovrai reimportarlo seguendo [questa guida](../advanced/pairing-file). Questo potrebbe accadere anche a random a causa di Apple.
+
+Se reinstalli SideStore usando iloader, il tuo certificato scadrà e dovrai refreshare di nuovo manualmente.
+
+Se vuoi installare SideStore su un altro device con lo stesso Apple Account, segui [questi step](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/installation/linux.mdx b/i18n/it/docusaurus-plugin-content-docs/current/installation/linux.mdx
deleted file mode 100644
index b93dafe2..00000000
--- a/i18n/it/docusaurus-plugin-content-docs/current/installation/linux.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Istruzioni per Linux
-description: Istruzioni per installare SideStore utilizzando Linux
-sidebar_position: 4
----
-
-Prima di iniziare, assicurati di aver completato tutti gli step nella sezione [prerequisiti](prerequisites)!
-
-1. Assicurati di avere usbmuxd installato e aggiornato eseguendo nel terminale `sudo apt install -y usbmuxd`.
-2. Install Docker o Podman sul tuo PC.
-2. Connetti il tuo iDevice. Se vedi un pop-up, seleziona "Autorizza" e inserisci il tuo codice.
-
-3. Ora, esegui Altcon con Docker o Podman usando il seguente comando (potrebbe richiedere `sudo`):
-
-Docker setup:
-```bash
-docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
-```
-Podman setup:
-```bash
-podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
-```
-5. Altcon si abbinerà al tuo dispositivo. Quando ricevi un altro pop-up, seleziona "Autorizza" e inserisci di nuovo il tuo codice
-6. Sul tuo iDevice, esegui i seguenti passaggi:
- * Autorizza le "App Sviluppatore" sotto la tua email (puoi farlo in "Impostazioni", "Generali", "VPN e Gestione Dispositivo").
- * Apri l'app Impostazioni
- * Vai in "Privacy e Sicurezza"
- * Abilita la "Modalità Sviluppo" in fondo.
-
-Ora procedi alla creazione del [file di pairing](pairing-file).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/installation/mac.mdx b/i18n/it/docusaurus-plugin-content-docs/current/installation/mac.mdx
deleted file mode 100644
index 55e59b19..00000000
--- a/i18n/it/docusaurus-plugin-content-docs/current/installation/mac.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Istruzioni per macOS
-description: Istruzioni per installare SideStore utilizzando macOS
-sidebar_position: 2
----
-
-Prima di iniziare, assicurati di aver completato tutti gli step nella sezione [prerequisiti](prerequisites)!
-
-1. Scarica AltServer dal [sito di AltStore](https://cdn.altstore.io/file/altstore/altserver.zip). Copia AltServer.app nella cartella `Applicazioni`, poi aprilo (tramite Finder, Launchpad o Spotlight). Dovrebbe apparire come icona nella barra dei menu.
-2. Scarica l'IPA di SideStore che puoi trovare [qui](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Tieni premuto option e clicca sull'icona di AltServer. Clicca "Sideload .ipa", poi seleziona il file IPA di SideStore.
-4. Sul tuo iDevice, esegui i seguenti passaggi:
- * Autorizza le "App Sviluppatore" sotto la tua email (puoi farlo in "Impostazioni", "Generali", "VPN e Gestione Dispositivo").
- * Apri l'app Impostazioni
- * Vai in "Privacy e Sicurezza"
- * Abilita la "Modalità Sviluppo" in fondo.
-
-Ora procedi alla creazione del [file di pairing](pairing-file).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx b/i18n/it/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
deleted file mode 100644
index 23b7ec83..00000000
--- a/i18n/it/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: File di Pairing
-description: I file di Pairing sono essenziali per far funzionare SideStore.
-sidebar_position: 5
----
-
-idevice_pair è un programma che crea un file di pairing che permette ad app come SideStore di eseguire azioni sul tuo device da remoto. È necessario per il funzionamento di SideStore, altrimenti non funzionerebbe.
-:::warning
-Attenzione, se aggiorni o ripristini il tuo iDevice, il pairing file scadrà e dovrai crearne un altro. Questo succede anche randomicamente a causa di Apple, non c'è niente che possiamo fare per prevenirlo.
-:::
-
-### Istruzioni di Installazione
-
-#### macOS
-1. Scarica [idevice_pair per macOS](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg).
-2. Apri la Disk Image e trascina `idevice_pair` in `Applicazioni`.
-
-#### Windows
-1. Scarica [iTunes](https://apple.com/itunes/download/win64) dal sito di Apple
-2. Scarica [idevice_pair per Windows](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe) e spostalo in un posto dove lo puoi eseguire.
-
-#### Linux
-1. Installa usbmuxd:
- ```bash
- sudo apt install -y usbmuxd
- ```
-2. Scarica idevice_pair per la tua architettura e salvalo in una cartella dove puoi eseguirlo:
- - [x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage)
- - [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage)
-3. Rendi eseguibile il file scaricato
-
-### Istruzioni di Pairing
-
-1. **Collega il tuo dispositivo** al computer tramite cavo USB
- - Se te lo chiede, tocca `Autorizza` e inserisci il codice
-2. **Apri idevice_pair** e seleziona il tuo dispositivo dalla lista
-3. **Carica il pairing file**:
- - Assicurati che il tuo dispositivo sia sbloccato e nella home
- - Clicca `Load`
- - Se te lo chiede, tocca `Autorizza` e inserisci il codice
-4. **Installalo su SideStore**:
- - Tieni il tuo dispositivo sbloccato e nella home
- - Scorri e clicca `Install` sotto "SideStore"
- - Dovresti veder apparire `Success` in verde
-
-## Step successivi
-Ora segui le [istruzioni post-installazione](post-install).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/installation/post-install.mdx b/i18n/it/docusaurus-plugin-content-docs/current/installation/post-install.mdx
deleted file mode 100644
index d6e50b6f..00000000
--- a/i18n/it/docusaurus-plugin-content-docs/current/installation/post-install.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Istruzioni Post-Installazione
-description: Quasi finito, solo un altro paio di step!
-sidebar_position: 6
----
-L'ultimo step per installare SideStore è refreshare SideStore stesso.
-
-Per farlo, avrai bisogno di:
-
-1. Connetterti a StosVPN.
-2. Aprire SideStore.
-3. Se non l'hai già fatto, importare/selezionare il pairing file.
-4. Fare il login col tuo Apple ID.
-5. Andare in "Le mie app".
-6. Toccare il bottone "x Giorni" sulla destra di SideStore (x è il numero di giorni rimanenti prima della scadenza dell'app).
-7. Un prompt ti chiederà di creare un nuovo certificato, tocca "Aggiorna ora".
-8. Se un prompt ti chiede se vuoi revocare un certificato di AltStore, tocca "Sì".
-
-Se questo processo va a buon fine, SideStore ti porterà alla schermata home, poi comparirà una notifica.
-
-Se SideStore non viene refreshato subito, un bug causerà la sua scadenza prematura e dovrai reinstallare SideStore con AltServer. Per ora questo è un processo che va eseguito manualmente.
-
-Se reinstalli SideStore con AltServer, il certificato verrà revocato e dovrai refreshare di nuovo manualmente.
-
-Se vuoi installare SideStore su un altro device con lo stesso Apple ID, segui [questi step](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/it/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
index 976baaa6..f0f5b2ce 100644
--- a/i18n/it/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
+++ b/i18n/it/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
@@ -10,14 +10,15 @@ Il processo di installazione di SideStore potrebbe sembrare complesso, ma con l'
Per installare SideStore ti serviranno:
-- Un iPhone o iPad [con un codice](https://support.apple.com/it-it/119586) con iOS/iPadOS 14 o superiori
-- Un dispositivo [Mac](/docs/installation/mac), [Windows](/docs/installation/windows), o [Linux (il supporto è sperimentale)](/docs/installation/linux)
-- Un Apple ID
-- L'app StosVPN (vedi sotto)
+- Un iPhone/iPad [con un codice](https://support.apple.com/it-it/119586) con iOS/iPadOS 14 o superiori
+- Un computer (una volta sola)
+- Un Account Apple
- Una connessione Wi-Fi
- Un po' di tempo (È un processo rapido, ma potresti aver bisogno di [tempo per la risoluzione di problemi](/docs/troubleshooting/))
-## StosVPN
+## Preparare il tuo Dispositivo
+
+### Sul tuo iPhone/iPad
SideStore utilizza una VPN on-device che permette a SideStore di comunicare con dei servizi interni
@@ -26,9 +27,20 @@ SideStore utilizza una VPN on-device che permette a SideStore di comunicare con
La VPN servirà accesa tutte le volte in cui vorrai installare, aggiornare o refreshare le app in SideStore.
+### Sul tuo Mac
+1. Scarica e installa iloader per Mac ([M-Series](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg) o [Intel](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg)).
+2. Apri il Terminale, esegui `sudo xattr -c ./Applications/iloader.app` e inserisci la password se richiesta.
+
+### Sul tuo PC Windows
+1. Scarica e installa [iTunes](https://apple.co/ms).
+2. Scarica l'installer di iloader ([exe](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe) o [msi](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)).
+3. Esegui l'installer.
+
+### Sulla tua Macchina Linux
+1. Scarica e installa `usbmuxd` (potrebbe essere preinstallata sulla tua distro, altrimenti installalo con il tuo package manager).
+2. Scarica e installa iloader per la tua distro ([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [altre](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)).
+
## Step Successivi
-Ora, segui le istruzioni di installazione per il tuo sistema operativo!
-- [macOS](mac)
-- [Windows](windows)
-- [Linux (sperimentale)](linux)
+Ora, segui le istruzioni di installazione per installare SideStore!
+- [Installazione](install)
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/installation/windows.mdx b/i18n/it/docusaurus-plugin-content-docs/current/installation/windows.mdx
deleted file mode 100644
index ba4bbb37..00000000
--- a/i18n/it/docusaurus-plugin-content-docs/current/installation/windows.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Istruzioni per Windows
-description: Istruzioni per installare SideStore utilizzando Windows
-sidebar_position: 3
----
-
-Prima di iniziare, assicurati di aver completato tutti gli step nella sezione [prerequisiti](prerequisites)!
-
-Sul PC, disinstalla qualsiasi versione di iCloud e iTunes che potresti aver installato dal Microsoft Store, poi installa le versioni giuste di iTunes ([64-bit](https://apple.com/itunes/download/win64) o [32-bit](https://apple.com/itunes/download/win32)) e [iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe). Le versioni non-MicrosoftStore di iCloud sono state tolte dal sito Apple a metà settembre 2022, il link sopra si riferisce a una vecchia versione di iCloud ancora compatibile con AltServer, scaricabile direttamente dai server Apple (sicuro).
-
-1. Scarica `altinstaller.zip` dal [sito di AltStore](https://cdn.altstore.io/file/altstore/altinstaller.zip). Estrai `altinstaller.zip` ed esegui `setup.exe`. Nella taskbar di Windows digita "AltServer" e clicca "Esegui come amministratore". Assicurati di abilitare l'accesso alle reti private. AltStore comparirà nel system tray (dove vengono mostrati Internet, Wi-Fi, Batteria, ecc...).
-2. Scarica l'IPA di SideStore che puoi trovare [qui](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Tieni premuto shift e clicca sull'icona di AltServer. Clicca "Sideload .ipa", poi seleziona il file `sidestore.ipa` che hai scaricato prima.
-4. Sul tuo iDevice, esegui i seguenti passaggi:
- * Autorizza le "App Sviluppatore" sotto la tua email (puoi farlo in "Impostazioni", "Generali", "VPN e Gestione Dispositivo").
- * Apri l'app Impostazioni
- * Vai in "Privacy e Sicurezza"
- * Abilita la "Modalità Sviluppo" in fondo.
-
-Ora procedi alla creazione del [file di pairing](pairing-file).
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
index 5f01ba98..0609ec94 100644
--- a/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
+++ b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
@@ -1,34 +1,39 @@
---
title: Problemi Comuni
-description: Problemi comuni di SideStore.
+description: Problemi comuni di SideStore non associati a codici di errore.
---
:::warning
-Questa pagina è in costruzione. Le informazioni dovrebbero essere accurate, ma affidati al nostro [Server Discord](https://discord.gg/sidestore-949183273383395328) per assistenza.
+Questa pagina è in costruzione. Le informazioni dovrebbero essere accurate, ma affidati al nostro [Server Discord](https://dis.sidestore.io/) per assistenza.
:::
## Problemi comuni di SideStore
+### Mi esce l'errore con il codice "X"
+#### Soluzione
+
+Controlla la nostra [lista di codici di errore](error-codes)!
+
### AFC Connection Failure
#### Causa
Problemi di connessione o file di pairing non valido.
#### Soluzione
-1. Prova a riconnetterti
-2. Crea e importa un nuovo pairing file utilizzando idevice pair. Vedi le nostre [istruzioni pairing file](/docs/installation/pairing-file) per più dettagli
+1. Prova a riconnetterti. Assicurati che il Wi-Fi e StosVPN siano connessi.
+2. Carica e importa un nuovo pairing file usando iloader.
### No Wi-Fi o Connessione VPN
#### Causa
Problema di connessione con il servizio minimuxer.
#### Soluzione
1. Se stai usando WireGuard, passa a StosVPN
-2. Spegni ogni eventuale server DNS-blocking
-2. Riprova (spammare il bottone a volte aiuta)
-3. Riavvia SideStore
-4. Riavvia StosVPN
-5. Ricrea e importa un nuovo pairing file utilizzando idevice pair. Vedi le nostre [istruzioni pairing file](/docs/installation/pairing-file) per più dettagli
+2. Spegni ogni eventuale DNS-blocker
+3. Riprova (spammare il bottone a volte aiuta)
+4. Riavvia SideStore
+5. Riavvia StosVPN
+6. Carica e importa un nuovo pairing file usando iloader.
### SideStore si blocca a metà durante l'installazione
#### Causa
@@ -40,13 +45,13 @@ Problemi di cache o protocollo.
4. In server- resetta adi.pb, poi esegui il logout da SideStore e rifai il login
5. Riavvia il dispositivo
6. Ricrea il pairing file
-7. Reinstalla SideStore con AltServer
+7. Reinstalla SideStore con iloader
### Impossibile eseguire SideStore
#### Causa
Diverse cause possibili.
#### Soluzione
-1. Assicurati di aver installato SideStore tramite AltServer
+1. Assicurati di aver installato SideStore tramite iloader
2. Reinstalla SideStore
Se continua a non funzionare, procedi come segue:
@@ -57,6 +62,3 @@ Se continua a non funzionare, procedi come segue:
4. Installa `sidestore.ipa` sul tuo device
5. Importa il file `sidestore.ipa` in SideStore come se stessi installando un qualsiasi IPA
6. Questo permette a SideStore di fare un avvio pulito, sperando risolva il problema
-
-
-
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
index 30c2d3d3..b6cf58fd 100644
--- a/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
+++ b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
@@ -5,7 +5,7 @@ description: Codici di errore presenti in SideStore.
:::warning
-Questa pagina non è completamente accurata in base a come funziona SideStore, è basata sugli errori di AltStore. Qualche info è comunque corretta, ma non riporci troppa fiducia. Assicurati di chiedere nel nostro [Server Discord](https://discord.gg/sidestore-949183273383395328) se hai bisogno di aiuto.
+Questa pagina non è completamente accurata in base a come funziona SideStore, è basata sugli errori di AltStore. Qualche info è comunque corretta, ma non riporci troppa fiducia. Assicurati di chiedere nel nostro [Server Discord](https://dis.sidestore.io/) se hai bisogno di aiuto.
:::
@@ -51,7 +51,7 @@ Significa che SideStore non è riuscito a trovare il file da scaricare o install
`SideStore.OperationError 1006`
-Significa che SideStore non è riuscito a leggere l'UDID del dispositivo da AltServer mentre installava SideStore. Assicurati che hai installato SideStore con l'ultima versione di AltServer e non con altri metodi.
+Significa che il tuo pairing file è corrotto. [Importalo di nuovo con iloader](../advanced/pairing-file).
#### (1007) This app is in an invalid format.
@@ -105,7 +105,7 @@ Il tuo device non è stato in grado di ricevere info da un server anisette V3. R
`SideStore.OperationError 1414`
-Sembra che tu non sia connesso al Wi-Fi o a StosVPN. SideStore non può refreshare o installare app senza Wi-Fi e StosVPN, assicurati che entrambe siano abilitate. Se non funziona, prova a ricreare il pairing file.
+Sembra che tu non sia connesso al Wi-Fi o a StosVPN. SideStore non può refreshare o installare app senza Wi-Fi e StosVPN, assicurati che entrambe siano connesse. Se non funziona, [reimporta il pairing file con iloader](../advanced/pairing-file).
## Minimuxer Errors
@@ -119,148 +119,7 @@ Sembra che tu stia provando ad abilitare JIT su una versione iOS non supportata.
`minimuxer.MinimuxerError 27`
-Significa che hai un pairing file invalido. Segui gli step in questa documentazione per crearlo di nuovo.
-
-Altre novità in arrivo, aperto a contributi...
-
-## AltServer / SideServer Errors
-
-#### (0) Exception Error
-
-`AltServer.ExceptionError`
-
-Questo errore può presentarsi per varie ragioni, sotto puoi trovarne alcune (non tutte).
-
-"vector too long"
-
-Significa che Windows Defender sta bloccando la tua richiesta. Potresti dover disattivare la Protezione in tempo reale su Windows per installare SideStore correttamente.
-
-#### (1999) Underlying Error
-
-`AltServer.ServerError`
-
-Significa che AltServer ha incontrato un errore sconosciuto. È consigliato scriverci tramite i nostri canali di supporto se il problema persiste.
-
-#### (2000) Unknown Error
-
-`AltServer.ServerError`
-
-Significa che AltServer ha incontrato un errore sconosciuto. È consigliato scriverci tramite i nostri canali di supporto se il problema persiste.
-
-#### (2001) Could not connect to AltServer. / There was an error connecting to the device.
-
-`AltServer.ServerError`
-
-Significa che AltServer non riesce a connetterti al tuo dispositivo iOS. Prova a collegare direttamente il tuo dispositivo se non lo è già.
-
-Se hai ancora problemi, visita la [Guida per la risoluzione di problemi](./).
-
-#### (2002) Lost Connection to AltServer.
-
-`AltServer.ServerError`
-
-Significa che la connessione tra AltServer e il tuo dispositivo si è interrotta. Assicurati che il dispositivo e il pc siano sotto la stessa rete Wi-Fi e riprova.
-
-Se hai ancora problemi, visita la [Guida per la risoluzione di problemi](./).
-
-#### (2003) AltServer could not find this device.
-
-`AltServer.ServerError`
-
-Significa che AltServer non è riuscito a trovare il tuo device iOS tramite USB o Wi-Fi. Assicurati che il dispositivo e il computer siano sotto la stessa rete Wi-Fi e che il dispositivo sia autorizzato e riprova.
-
-Se hai ancora problemi, visita la [Guida per la risoluzione di problemi](./).
-
-#### (2004) Failed to write app data to device.
-
-`AltServer.ServerError`
-
-Significa che AltServer ha tentato di scrivere un file sul tuo device e non è riuscito. Assicurati che il dispositivo e il computer siano sotto la stessa rete Wi-Fi e che il dispositivo sia autorizzato e riprova.
-
-Se hai ancora problemi, visita la [Guida per la risoluzione di problemi](./).
-
-#### (2005) AltServer received an invalid request.
-
-`AltServer.ServerError`
-
-Significa che AltServer ha ricevuto una richiesta che non ha capito. Potrebbe essere causato da una versione vecchia di AltServer, quindi assicurati di aggiornarla all'ultima versione.
-
-#### (2006) AltServer sent an invalid response.
-
-`AltServer.ServerError`
-Significa che SideStore ha ricevuto una richiesta che non ha capito. Potrebbe essere causato da una versione vecchia di SideStore, quindi assicurati di aggiornarla all'ultima versione.
-
-#### (2007) The app is invalid.
-
-`AltServer.ServerError`
-
-Significa che l'app che stavi provando ad installare è in un formato sbagliato. Se continui ad avere problemi, prova a scaricarla da un'altra sorgente.
-
-#### (2008) An error occurred while installing the app.
-
-`AltServer.ServerError`
-
-Significa che iOS ha rifiutato l'app che stavi provando ad installare. Assicurati di usare una versione compatibile con la tua versione di iOS.
-
-#### (2009) Cannot activate more than 3 apps with a non-developer Apple ID.
-
-`AltServer.ServerError`
-
-Significa che hai raggiunto il massimo numero di app in sideload che puoi installare con un Account Sviluppatore Gratuito. Apple limita il numero di app in sideload che puoi avere con un account gratuito, per rimuovere questo limite devi acquistare un Account Sviluppatore a Pagamento su [developer.apple.com](https://developer.apple.com).
-
-#### (2010) Your device must be running iOS 12.2 or later to install AltStore.
-
-`AltServer.ServerError`
-
-Significa che devi aggiornare il tuo device alla versione iOS minima richiesta prima di usare AltStore.
-
-#### (2011) AltServer does not support this request.
-
-`AltServer.ServerError`
-
-Significa che AltServer ha ricevuto una richiesta che non ha riconosciuto. Potresti star eseguendo una versione vecchia di AltServer, aggiornala.
-
-#### (2012) Received an unknown response from AltServer.
-
-`AltServer.ServerError`
-
-Significa che AltStore ha ricevuto una risposta da AltServer che non ha riconosciuto. Potresti star eseguendo una versione vecchia di AltStore, aggiornala.
-
-#### (2013) The provided anisette data is invalid.
-
-`AltServer.ServerError`
-
-Significa che le info dell'Apple ID usato per accedere non sono valide a causa di un errore sconosciuto. Assicurati di star eseguendo l'ultima versione di iCloud se sei su Windows e che la data e l'ora siano corrette.
-
-#### (2014) AltServer could not connect to Mail plug-in. (macOS)
-
-`AltServer.ServerError`
-
-Significa che AltServer non ha trovato il plugin Mail o perché non è attivo o perché l'app Mail non è aperta sul Mac. Assicurati che l'app Mail sia aperta e che il plugin sia abilitato.
-
-#### (2015) Could not find provisioning profile.
-
-`AltServer.ServerError`
-
-Significa che il profilo provisioning necessario per installare quest'app non è stato trovato. Questo è un errore dovuto ad AltStore stesso, quindi contatta il supporto.
-
-#### (2016) An error occurred while removing the app.
-
-`AltServer.ServerError`
-
-Significa che c'è stato un problema durante la rimozione dell'app. Ci sono diverse cause possibili quindi assicurati di controllare i log di errore per avere più info sul problema.
-
-#### (2100) The Requested app is not currently running on the device.
-
-`AltServer.ServerError`
-
-Significa che hai provato ad attivare JIT senza che l'app richiesta fosse in esecuzione in foreground. Assicurati di eseguire l'app e di aprirla prima di attivare JIT.
-
-#### (2101) The disk is incompatible with \[iOS version].
-
-`AltServer.ServerError`
-
-Significa che la developer disk richiesta per abilitare JIT non è compatibile con la versione del tuo dispositivo. Assicurati di star eseguendo l'ultima versione di AltStore e AltServer e riprova.
+Assicurati che Wi-Fi e StosVPN siano connesse. Se l'errore persiste, [reimporta il pairing file con iloader](../advanced/pairing-file).
## Apple Developer Errors
@@ -418,60 +277,6 @@ Potresti dover accettare i Termini e le Condizioni di Apple su [developer.apple.
Solitamente significa che l'username o la password dell'Apple ID usato per autenticarsi sono scaduti o invalidi. Assicurati di inserirli correttamente e che la data e l'ora del tuo computer siano corrette.
-#### Connection Errors
-
-#### (0) Error Unknown.
-
-`AltServer.ConnectionError`
-
-Significa che AltServer ha incontrato un errore sconosciuto. Ti consigliamo di scriverci tramite i nostri canali di supporto se il problema persiste.
-
-#### (1) Device Locked.
-
-`AltServer.ConnectionError`
-
-Significa che devi sbloccare il tuo device prima che AltServer possa connettersi.
-
-#### (2) Invalid Request.
-
-`AltServer.ConnectionError`
-
-Info aggiornate in arrivo.
-
-#### (3) Invalid Response.
-
-`AltServer.ConnectionError`
-
-Info aggiornate in arrivo.
-
-#### (4) Usbmuxd.
-
-`AltServer.ConnectionError`
-
-Info aggiornate in arrivo.
-
-#### (5) SSL Error.
-
-`AltServer.ConnectionError`
-
-Info aggiornate in arrivo.
-
-#### (6) Timed Out.
-
-`AltServer.ConnectionError`
-
-Info aggiornate in arrivo.
-
-## Windows Errors
-
-#### (1100) Your session has expired. Please log in.
-
-`NSURLErrorDomain`
-1. Assicurati che iTunes sia chiuso.
-2. Vai in Program Data -> Apple Computer -> iTunes -> ADI -> cancella i file
-3. Avvia iTunes
-4. Ritenta l'installazione di SideStore
-
## Altri Errori
#### (512) Failed to write to disk
diff --git a/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
index 87bd5989..9d892153 100644
--- a/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
+++ b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
@@ -17,13 +17,7 @@ description: Una guida per la risoluzione di problemi in situazioni senza codice
1. **Autorizza il dispositivo**: Dopo aver collegato il tuo dispositivo iOS al PC, assicurati di aver premuto "Autorizza" sia sul PC che sul dispositivo iOS. Puoi verificarlo in questo modo:
- Aprendo iTunes e controllando se appare una finestra sul tuo dispositivo che chiede l'autorizzazione.
-2. **Esegui AltServer come Amministratore**: Clicca col tasto destro su AltServer e seleziona "Esegui come Amministratore" per avere i permessi necessari.
-3. **Usa un altro Apple ID**: Prova ad utilizzare un altro Apple ID. Se necessario, puoi [creare un nuovo Apple ID](https://appleid.apple.com/account#!\&page=create) solo per SideStore gratuitamente.
-4. **Versioni iTunes e iCloud non del Microsoft Store**:
- - Se hai installato iTunes o iCloud dal Microsoft Store, devi disinstallarle.
- - Scarica e installa le versioni non-Microsoft Store di iTunes e iCloud tramite i link seguenti:
- - [Download iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe)
- - [Download iTunes](https://www.apple.com/itunes/download/win64/)
+2. **Usa un altro Apple ID**: Prova ad utilizzare un altro Apple ID. Se necessario, puoi [creare un nuovo Apple ID](https://appleid.apple.com/account#!\&page=create) solo per SideStore gratuitamente.
## Problemi di Login
@@ -71,33 +65,8 @@ Un altro problema comune durante il login è non ricevere il codice di verifica
1. Attiva la modalità aereo e connettiti a un Wi-Fi stabile.
2. Assicurati che i domini Apple e il dominio del tuo server anisette non siano bloccati.
- - Disattiva qualsiasi server DNS blocking
- - Disattiva tutti i server DNS che bloccano domini come `oscp.apple.com`.
+ - Disattiva qualsiasi server DNS che blocchi domini come `ocsp.apple.com`.
- Disconnettiti dal Wi-Fi di scuola/lavoro, prova a connetterti ad una rete senza restrizioni.
3. Verifica che la VPN sia connessa in StosVPN.
4. Spegni e riaccendi StosVPN, poi aspetta qualche secondo in SideStore prima di riprovare il refresh.
-5. Ricrea il pairing file.
- - Se non ha funzionato nulla, è molto probabile che il file di pairing sia corrotto. Puoi guardare la documentazione su come creare un nuovo pairing file [qui](/docs/installation/pairing-file).
-
-
-## Non riesco a selezionare il file di pairing
-
-### Se non riesci a selezionare il file di pairing su SideStore, segui questi step:
-
-1. **Reimporta il file di pairing**: Usa idevice pair per ricreare e importare il pairing file sul tuo device. Se idevice pair non funziona, prova jitterbugpair e segui gli ste qui sotto.
-2. **Controlla l'estensione del file**: Assicurati che il tuo pairing file finisca con `.mobiledevicepairing` o `.plist`. Se così non fosse, zippa il pairing file prima di inviarlo al tuo dispositivo. Se non lo fai potrebbe corrompersi durante il trasferimento.
-3. **Sposta il pairing file**: Se non riesci a selezionare il pairing file dall'app, rinomina il file a `ALTPairingFile.mobiledevicepairing` e prova a spostarlo nella cartella di SideStore dell'app File su "Il mio iPhone/iPad".
-4. **Firma con certificato**: Quando firmi SideStore con un certificato non sarai in grado di scegliere il pairing file dall'app. Puoi provare lo step qui sopra. Se non vedi la cartella di SideStore nell'app File, connetti il telefono al computer e trascina il pairing file nei file dell'app SideStore. Assicurati di cambiare il nome come sopra.
-
-## AltServer
-
-### Cosa faccio se mi serve la versione di iCloud del Microsoft Store?
-
-AltServer richiede che tu installi iCloud direttamente da Apple per autenticarti correttamente. Se hai bisogno della versione del Microsoft Store puoi seguire le istruzioni prese da [questo post Reddit](https://www.reddit.com/r/jailbreak/comments/rp5buz/tutorial_how_to_use_altserver_if_you_have_to_use/) e aggiornate:
-
-1. Scarica e installa [iTunes](https://www.apple.com/itunes/) dal sito Apple qui ([64-bit](https://secure-appldnld.apple.com/itunes12/001-80053-20210422-E8A3B28C-A3B2-11EB-BE07-CE1B67FC6302/iTunes64Setup.exe) o [32-bit](https://secure-appldnld.apple.com/itunes12/001-80042-20210422-E8A351F2-A3B2-11EB-9A8F-CF1B67FC6302/iTunesSetup.exe)).
-2. Scarica e installa iCloud dal sito Apple ufficiale [qui](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe).
-3. Vai nella cartella "C:\Program Files (x86)\Common Files\Apple". Copia le cartelle "Apple Application Support" e "Internet Services", poi crea una nuova cartella facilmente raggiungibile, chiamala come vuoi e incolla qui le due cartelle.
-4. Rimuovi iCloud dal PC. **NON** cancellare iTunes! (inoltre, **MAI** rimuovere "Apple Mobile Device Support" o "Apple Application Support", installati insieme ad iTunes e iCloud.)
-5. Installa [iCloud](https://www.microsoft.com/store/productId/9PKTQ5699M62) dal Windows Store.
-6. Scarica e installa [AltServer](https://cdn.altstore.io/file/altstore/altinstaller.zip). Quando lo apri per la prima volta (con i permessi di admin), clicca su "Choose Folder..." e seleziona la cartella creata nel terzo step.
+5. [Reimporta il pairing file con iloader](../advanced/pairing-file).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/alternative.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
new file mode 100644
index 00000000..3dae95e6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
@@ -0,0 +1,179 @@
+---
+title: 대안/구버전 안내
+description: "SideStore 설정에 대한 대체/구버전 안내를 모아둔 곳이에요. 주의: 여기 있는 절차는 최신 iOS나 SideStore 버전과 호환되지 않을 수도 있어요."
+---
+
+## 설치
+### AltServer
+#### macOS
+[이 안내](https://faq.altstore.io/altstore-classic/how-to-install-altstore-macos)의 1~3단계를 따라 AltServer를 설정해 주세요.
+#### Windows
+[이 안내](https://faq.altstore.io/altstore-classic/how-to-install-altstore-windows)의 1~3단계를 따라 AltServer를 설정해 주세요.
+#### Linux (Altcon)
+시작하기 전에 usbmuxd가 설치돼 있는지 확인해 주세요.
+
+1. Linux 터미널에서 `sudo apt install -y usbmuxd`를 실행해 usbmuxd가 설치돼 있고 최신인지 확인해 주세요.
+2. 기기에 Docker나 Podman 중 하나를 설치해 주세요.
+2. 보조 iDevice를 연결해 주세요. 프롬프트가 나오면 “신뢰”를 선택하고 암호를 입력해 주세요.
+3. 아래 명령으로 Docker나 Podman에서 Altcon을 실행해 주세요(상황에 따라 `sudo`가 필요할 수 있어요).
+
+Docker 설정:
+```bash
+docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+```
+Podman 설정:
+```bash
+podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+```
+5. Altcon이 기기와 페어링할 거예요. 다시 프롬프트가 나오면 “신뢰”를 선택하고 암호를 한 번 더 입력해 주세요.
+
+#### AltServer를 사용하여 동일 계정 내 여러 기기에서 SideStore 설정하기
+순서는 이래요:
+1. 위 안내대로 macOS나 Windows에서 AltServer를 설정해 주세요.
+2. AltServer로 기기 하나에 AltStore를 설치해 주세요(AltStore 외 앱에는 AltServer가 머신 식별자를 넣지 않는 것 같아서 한 번은 AltStore가 필요해요).
+3. AltStore에서 Apple ID로 로그인해 주세요.
+4. 인증서를 내보내 주세요.
+5. AltStore를 삭제해 주세요.
+
+그다음 각 기기마다 아래 단계를 반복해 주세요.
+1. AltServer에서 같은 Apple ID로 SideStore를 설치해 주세요(AltServer -> Install IPA를 클릭할 때 [Mac은 Option, Windows는 Shift]를 누른 채로 SideStore.ipa를 선택해 주세요).
+2. 인증서를 가져와 주세요.
+3. SideStore에서 Apple ID로 로그인해 주세요(인증서를 가져오기 전에 로그인하려 하면 AltStore 인증서를 해지하기 전에는 로그인할 수 없어요).
+4. 사이드로드해 주세요.
+
+예전 인증서가 만료되면:
+1. SideStore가 특정 기기에서 재설치를 요청할 거예요.
+2. 재설치가 끝나면 인증서를 내보내 주세요.
+
+그다음 다른 각 기기에서:
+1. 새 인증서를 가져와 주세요.
+2. SideStore 안에서 SideStore ipa를 사이드로드해 주세요.
+
+## 페어링
+### idevice_pair
+#### 설치 안내
+
+##### macOS
+
+1. [macOS용 idevice_pair](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg)를 다운로드해 주세요.
+2. 디스크 이미지를 연 뒤 `idevice pair`를 `Applications` 폴더로 드래그해 주세요.
+
+##### Windows
+
+1. Apple 웹사이트에서 iTunes를 설치해 주세요([64비트](https://apple.com/itunes/download/win64) 또는 [32비트](https://apple.com/itunes/download/win32)). AltServer 설정 과정에서 이미 설치했을 수도 있어요.
+2. [Windows용 idevice_pair](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe)를 다운로드해 기억하기 쉬운 위치로 옮겨 주세요.
+
+##### Linux
+
+1. Linux 터미널에서 `sudo apt install -y usbmuxd`를 실행해 usbmuxd가 설치돼 있는지 확인해 주세요.
+2. PC 아키텍처에 맞는 Linux용 idevice_pair([x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage) 또는 [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage))를 다운로드해 기억하기 쉬운 위치로 옮긴 뒤 실행 권한을 부여해 주세요.
+
+#### 페어링 안내
+
+1. 보조 기기를 케이블로 컴퓨터에 연결해 주세요. 프롬프트가 나오면 `신뢰`를 선택하고 암호를 입력해 주세요.
+2. 기기 잠금을 해제한 뒤 `idevice pair`를 열어 드롭다운에서 기기를 선택해 주세요.
+3. 기기가 잠금 해제돼 홈 화면인지 확인한 뒤 `load`를 선택해 주세요. 기기에 프롬프트가 나오면 `신뢰`를 탭해 주세요. 페어링 파일이 표시될 거예요.
+4. 기기가 여전히 홈 화면인지 확인한 뒤 아래로 스크롤해 "SideStore" 아래의 `install`을 눌러 주세요. 초록색 `Success` 메시지가 보일 거예요.
+
+### JitterbugPair
+JitterbugPair(모바일 앱인 Jitterbug와는 달라요)는 SideStore 같은 프로그램이 기기와 원격 통신할 수 있도록 페어링 파일을 만들어 줘요. SideStore를 쓰려면 반드시 필요하고, 없으면 작동하지 않아요.
+
+운영체제에 맞는 JitterbugPair를 다운로드해 주세요: [Windows (64비트)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip), [macOS](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-macos.zip), [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip).
+
+#### 페어링 안내
+
+:::tip
+
+.mobiledevicepairing 파일을 옮기는 과정에서 확장자가 바뀔 수도 있어요(보통 .txt로 바뀌거나 “ing”이 잘려요). 전송 전에 페어링 파일을 zip으로 압축하는 걸 항상 추천해요. SideStore는 .mobiledevicepairing 파일만 받으며, 구버전에서는 .plist도 가능했어요.
+:::
+
+##### Windows
+
+1. `jitterbugpair-win64.zip`을 **압축 해제**해 주세요.
+2. 아직 안 했다면 기기 **잠금 암호를 설정**해 주세요. 기기를 잠금 해제하고 컴퓨터에 연결한 뒤 프롬프트가 나오면 “신뢰”를 선택하고 암호를 입력해 주세요.
+3. 기기를 홈 화면에 둬 주세요.
+4. 파일 탐색기에서 `jitterbugpair.exe`를 찾아 더블 클릭하거나 마우스 오른쪽 버튼으로 “열기”를 선택해 실행해 주세요. 도구를 처음 실행하면 보조 기기에 암호 입력 프롬프트가 뜰 거예요. 암호를 입력하고 화면을 켠 채 잠금 해제 상태로 다시 실행해 주세요.
+5. JitterbugPair가 같은 폴더에 `.mobiledevicepairing` 확장자의 **페어링 파일**을 만들어 줘요.
+6. 최상의 결과를 위해 파일을 zip으로 압축한 뒤 One/iCloud/Google Drive, 이메일 등 원하는 방법으로 **페어링 파일을 iOS 기기로 전송**해 주세요.
+
+Windows에서는 `.exe`를 더블 클릭해도 실행되지 않을 수 있어서 명령 프롬프트나 PowerShell에서 실행해야 할 수도 있어요.
+
+7. 파일 탐색기에서 jitterbugpair가 있는 폴더로 이동해 주세요.
+8. 주소 표시줄의 빈 공간을 클릭하고 `powershell`을 입력해 주세요. PowerShell 창이 열릴 거예요.
+9. 기기가 연결된 상태에서 `./jitterbugpair.exe`를 입력하고 Enter를 눌러 주세요.
+
+##### macOS
+
+1. `jitterbugpair-macos.zip`을 **압축 해제**해 주세요.
+2. 아직 안 했다면 기기 **잠금 암호를 설정**해 주세요. 기기를 잠금 해제하고 컴퓨터에 연결한 뒤 프롬프트가 나오면 “신뢰”를 선택하고 암호를 입력해 주세요.
+3. 기기를 홈 화면에 둬 주세요.
+4. 추출한 `jitterbugpair` 파일(검은색과 초록색 아이콘)을 찾아 더블 클릭하거나 마우스 오른쪽 버튼으로 “열기”를 선택해 실행해 주세요. 도구를 처음 실행하면 보조 기기에 암호 입력 프롬프트가 뜰 거예요. 암호를 입력하고 화면을 켠 채 잠금 해제 상태로 다시 실행해 주세요.
+5. “macOS에서 이 앱이 악성 코드로부터 안전한지 확인할 수 없어요”라는 메시지가 뜨면 이렇게 해 주세요.
+ - 설정 > 개인정보 보호 및 보안으로 이동해 주세요.
+ - 해당 앱 메시지가 보일 때까지 스크롤해 주세요.
+ - “그래도 열기”를 클릭해 주세요. 자동으로 실행되지 않으면 다시 실행해 주세요.
+6. JitterbugPair가 사용자 홈 폴더에 `.mobiledevicepairing` 확장자의 **페어링 파일**을 만들어 줘요.
+7. 페어링 파일을 못 찾겠다면:
+ - 생성된 파일 이름을 복사해 주세요.
+ - Finder에 붙여 넣어 검색해 주세요.
+ - 도구를 여러 번 실행했다면 이름이 같아서 해당 기기의 페어링 파일이 모두 표시될 거예요.
+8. 최상의 결과를 위해 파일을 zip으로 압축한 뒤 AirDrop, iCloud/One/Google Drive, 이메일 등 원하는 방법으로 **iOS 기기로 전송**해 주세요.
+
+##### Linux
+
+이 안내는 Linux 명령줄에 익숙하다고 가정해요.
+
+1. `jitterbugpair-linux.zip`을 **압축 해제**해 주세요.
+2. 추출한 디렉터리에서 터미널을 열어 주세요.
+3. 프로그램 실행 권한을 주세요.
+ ```bash
+ chmod +x ./jitterbugpair
+ ```
+4. 아직 안 했다면 기기 **잠금 암호를 설정**해 주세요. 기기를 잠금 해제하고 컴퓨터에 연결한 뒤 프롬프트가 나오면 “신뢰”를 선택하고 암호를 입력해 주세요.
+5. 기기를 홈 화면에 둬 주세요.
+6. 프로그램을 실행해 주세요.
+ ```bash
+ ./jitterbugpair
+ ```
+7. 도구를 처음 실행하면 보조 기기에 암호 입력 프롬프트가 뜰 거예요. 암호를 입력하고 화면을 켠 채 잠금 해제 상태로 다시 실행해 주세요.
+8. JitterbugPair가 `.mobiledevicepairing` 확장자의 **페어링 파일**을 만들어 줘요.
+9. 최상의 결과를 위해 파일을 zip으로 압축한 뒤 이메일, 클라우드 저장소 등 원하는 방법으로 **iOS 기기로 전송**해 주세요.
+
+## SideStore 익스플로잇
+### SparseRestore (앱 3개 제한)
+:::note
+
+SparseRestore “앱 3개 제한 우회” 익스플로잇은 **iOS/iPadOS 17.0~18.1 beta 4(17.7.1 제외)**에서만 작동해요. 해당 버전에 있지 않은데 동작하지 않는다고 해서 **지원 요청은 삼가 주세요.**
+
+:::
+
+#### 준비물
+* 위 버전을 실행 중인 iDevice
+* 최소 1개의 빈 앱 슬롯
+* SideStore 0.5.9 이상 버전(최신 버전은 [여기](https://github.com/SideStore/SideStore/releases)에서 확인해 주세요)
+* 절차를 진행하는 동안 **반드시** 기기에서 나의 찾기(Find My)를 꺼 둬야 해요. 그렇지 않으면 작동하지 않아요. 끄는 방법은 다음과 같아요.
+ - 설정 앱을 열어 주세요.
+ - 상단의 본인 이름을 탭해 주세요.
+ - “나의 찾기”를 탭해 주세요.
+ - “나의 iPhone/iPad 찾기”를 탭해 주세요.
+ - “나의 iPhone/iPad 찾기”를 꺼 주세요.
+ - 확인을 위해 Apple ID 암호를 입력해야 할 수도 있어요.
+
+ > **참고:** 도난 방지 보호 기능이 켜져 있으면 Find My를 끌 수 없을 수도 있어요. Find My를 끄기 전에 도난 방지 보호 기능을 꺼 주세요.
+
+#### 단계
+1. SparseBox를 설치해 주세요. 다양한 방법이 있지만 여기서는 SideStore로 설치한다고 가정해요. 최신 버전은 [여기](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip)에서 받을 수 있어요(artifact.zip을 풀면 .ipa가 있어요).
+2. SideStore에서 “Disable App Limit”을 켜고 SideStore가 **완전히 종료**돼 있는지(백그라운드에 없어요) 확인한 뒤 SparseBox를 열어 주세요.
+3. StosVPN을 켜고 페어링 파일을 선택한 뒤 “Bypass 3-app limit”을 탭해 주세요. 로그가 표시될 거예요. `idevicebackup2 exited with code -18` 또는 `idevicebackup2 exited with code 2`가 나올 때까지 기다렸다가 앱을 닫아 주세요. Apply를 누를 필요는 없어요.
+4. SideStore를 다시 열고 설정에서 아래로 스크롤해 “clear cache”를 눌러 주세요. 그래야 SideStore가 익스플로잇 상태를 감지해요.
+5. 익스플로잇이 성공했는지 테스트해 주세요(빈 슬롯 수에 따라 앱을 여러 개 설치해야 할 수도 있어요). 제한 관련 오류가 나오면 SideStore를 다시 열거나 익스플로잇을 다시 시도해 주세요. 설치가 되면 성공이에요! 이제 한 번에 3개 이상 앱을 설치할 수 있어요.
+
+#### 참고
+제한 때문에 앱 3개를 추가로 사이드로드할 때마다 이 익스플로잇을 다시 해야 해요.
+
+다른 이유로 Find My가 필요하다면 이제 다시 켜도 돼요. 다만 앱을 더 설치하거나 갱신하려면 다시 꺼야 해요.
+
+### MacDirtyCow (앱 3개 제한)
+[MDC 호환 IPA](https://cdn.discordapp.com/attachments/949183273827983370/1074037820328521829/SideStore_MDC_14.ipa)
+
+위 SideStore MDC 버전(앱 3개 제한 우회)은 iOS 15.0~16.1.2에서만 호환되고 상당히 오래돼서 문제가 발생할 수 있어요. 이 기능이 필요하면 Discord에 참여해서 [sidestore-downloads](https://discord.com/channels/949183273383395328/1126118099930861638) 채널에서 MDC 호환 SideStore 빌드를 받아 주세요. 그다음 [SideStore로 WDBRemoveThreeAppLimit를 따로 설치](https://github.com/zhuowei/WDBRemoveThreeAppLimit/releases/tag/v1.0)해서 패치를 적용해 주세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/anisette.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
index 4887e73d..caf03c4d 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
@@ -105,11 +105,3 @@ SideStore 앱에서 새로 생성한 서버 목록을 사용하려면 다음을
## 완료!
이제 SideStore가 새 커스텀 anisette 서버를 사용합니다.
-
-
-## 링크:
-[
](https://uptime.sidestore.io/status/all)
-[모든 공식 Anisette 서버 가동 시간](https://uptime.sidestore.io/status/all)
-
-[
](https://uptime.sidestore.io/status/ss)
-[우리 공식 Anisette 서버의 가동 시간](https://uptime.sidestore.io/status/ss)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
index 752169d5..80256cb8 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
@@ -1,13 +1,15 @@
---
title: App Sources
-description: 커스텀 앱 소스 가이드입니다.
+description: 커스텀 앱 소스 가이드에요.
---
# 소스 만들기
-SideStore는 AltSources와 완벽하게 호환됩니다. 공식 AltStore [소스 문서](https://faq.altstore.io/developers/make-a-source)에서 AltSource를 만드는 데 필요한 모든 세부 정보를 제공합니다. AltSources를 사용하면 사용자들이 AltStore와 SideStore 모두에서 쉽게 앱을 보고, 설치하고, 업데이트할 수 있습니다.
+SideStore는 AltSources와 완벽하게 호환됩니다. 공식 AltSource [문서](https://faq.altstore.io/developers/make-a-source)에서 AltSource를 만드는 데 필요한 모든 세부 정보를 제공해줍니다. AltSources를 사용하면 사용자들이 AltStore와 SideStore 모두에서 쉽게 앱을 보고, 설치하고, 업데이트할 수 있습니다.
-소스를 편집할 때는 [AltSource Browser](https://altsource.by.lao.sb/browse)를 사용하여 변경사항의 초안을 만들고 확인하는 것을 강력히 추천합니다. 이렇게 하면 소스의 시각적 표시를 보고 최종 변경사항을 게시하기 전에 오류를 수정할 수 있습니다.
+AltSources를 생성하고 확인하는 데 도움이 될 수 있는 권장되는 제3자 도구 몇 가지를 소개해 드릴게요:
+- 커뮤니티에서 개발한 [AltStudio](https://altstudio.app/) (개발 중)를 사용하면 IPA를 통해 자동으로 AltSource를 생성할 수 있습니다! (주의: AltStudio로 소스를 생성한 후에는 기본적으로 자동 생성된 marketplaceID 및 Build 필드를 반드시 제거해야 해요. 그렇지 않으면 SideStore가 해당 소스를 공증된 소스로 인식하여 추가가 차단될수 있어요)
+- 커뮤니티에서 제작한 [AltSource 브라우저](https://altsource.by.lao.sb/browse/)를 사용하면 변경 사항을 최종 확정하기 전에 AltSource 초안에 대한 업데이트 내용을 시각적으로 확인할 수 있어, 게시 전에 오류를 수정할 수 있어요!
# 소스 배포하기
@@ -19,4 +21,4 @@ sidestore://source?url=[source url]
## 끝!
-다음은 좋은 기존 AltSources의 예시입니다: The [공식 SideStore 커뮤니티 소스](https://github.com/SideStore/Community-Source), [공식 AltStore 소스](https://apps.altstore.io), the [LiveContainer 소스](https://raw.githubusercontent.com/LiveContainer/LiveContainer/refs/heads/main/apps.json), 그리고 [DolphiniOS 소스](https://altstore.oatmealdome.me).
\ No newline at end of file
+다음은 좋은 기존 AltSources의 예시에요: The [공식 SideStore 커뮤니티 소스](https://github.com/SideStore/Community-Source), [공식 AltStore 소스](https://apps.altstore.io), [LiveContainer 소스](https://raw.githubusercontent.com/LiveContainer/LiveContainer/refs/heads/main/apps.json), 그리고 [DolphiniOS 소스](https://altstore.oatmealdome.me).
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/jit.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/jit.mdx
index 52af2b24..e15066f1 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/jit.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/jit.mdx
@@ -1,24 +1,31 @@
---
title: JIT 활성화하기
-description: Just-in-Time (JIT) 컴파일이 필요한 앱을 위한 JIT 활성화 튜토리얼입니다.
+description: Just-in-Time (JIT) 컴파일이 필요한 앱을 위한 JIT 활성화 가이드이에요.
---
:::note
+iOS 26에서 JIT가 작동하지 않게 되었어요. StikDebug에 수정 사항이 포함된 업데이트가 출시되었으나 지원 범위는 제한적이에요. 작성 시점(11월 10일) 기준으로 지원되는 앱은 다음과 같아요:
+* UTM
+* Amethyst
+* MeloNX
+* maciOS
+* DolphiniOS (베타)
+* Geode
-iOS 26에서 JIT가 작동하지 않게 되었습니다. iPhone 17 출시 후 StikDebug에 대한 수정 패치가 제공될 예정입니다.
+추가 업데이트를 위해 저희 디스코드 서버의 공지 채널과 [idevice 서버](https://discord.gg/mACqxMxP3X)의 공지 및 호환성 채널을 확인해 주세요.
-JIT를 활성화하는 방법은 AltJIT, SideJITServer 등 여러 가지가 있습니다. 이 튜토리얼에서는 현재 추천하는 방법인 StikDebug(이전 명칭: StikJIT)의 사용 방법을 다룰 것입니다. 자세한 내용은 [공식 StikDebug 페어링 가이드](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)를 참고하세요.
+JIT를 활성화하는 방법은 AltJIT, SideJITServer 등 여러 가지가 있어요. 이 가이드에서는 현재 추천하는 방법인 StikDebug(이전 명칭: StikJIT)의 사용 방법을 다룰 거에요. 자세한 내용은 [공식 StikDebug 페어링 가이드](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)를 참고헤 주세요.
대안으로, SideStore 0.6.2에는 minimuxer에 대한 업데이트가 포함되어 있어 StikDebug와 유사한 내장형 JIT 기능을 사용할 수 있습니다. 이를 사용하려면 Wi-Fi 연결 또는 비행기 모드가 활성화된 상태로 StosVPN에 연결된 후 “내 앱”으로 이동하여 JIT를 활성화하려는 앱을 길게 눌러 “JIT 활성화”를 터치하시면 됩니다.
:::
## 사전 요구사항
-* iOS/iPadOS 17.4-18.6를 실행하는 iDevice(18.4b1 제외). 17.0-17.3 버전을 사용 중인 경우 [SideJITServer](https://github.com/nythepegasus/SideJITServer)와 같은 대안을 사용해야 합니다. 위에서 언급된 대로, 18.6보다 새로운 버전은 현재 지원되지 않습니다.
+* iOS/iPadOS 17.4-18.6를 실행하는 iDevice(18.4b1 제외). 17.0-모든 iOS 18 버전을 사용 중인 경우 (18.4b1 제외) [SideJITServer](https://github.com/nythepegasus/SideJITServer)와 같은 대안을 사용해야 해요. SideStore의 JIT 활성화 기능은 기기가 약 4년 이상 된(TXM 미지원) 기기에서만 iOS 26에서 작동해요.
## Apple 앱 스토어를 통한 StikDebug 설치
1. **StikDebug 설치**
- StikDebug를 [Apple App Store](https://apps.apple.com/us/app/stikdebug/id6744045754)에서 설치하세요.
+ StikDebug를 [Apple App Store](https://apps.apple.com/ko/app/stikdebug/id6744045754)에서 설치해 주세요.
:::note
좋은 점 - StikDebug에 포함된 VPN은 SideStore에서 사용되는 것과 유사합니다. 즉, SideStore에서 앱을 설치하고 업데이트하는 데도 사용할 수 있으며, StosVPN과 유사한 방식입니다.
:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
new file mode 100644
index 00000000..e948d727
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
@@ -0,0 +1,13 @@
+---
+title: 페어링 파일
+description: 페어링 파일을 수동으로 다시 가져오는 방법을 안내할게요.
+---
+:::warning
+iDevice를 업데이트하거나 초기화하면 페어링 파일이 만료되어 다시 가져와야 해요. 이는 가끔 무작위로 발생하기도 해요. 이는 단순히 Apple 소프트웨어의 작동 방식 때문이며, 현재로서는 이를 해결할 방법이 없어요. 본 가이드에서 iloader를 사용하여 페어링 파일을 수동으로 교체하는 방법을 안내할게요.
+:::
+
+## 페어링 파일 교체하기
+1. iloader 및 SideStore 설치하고 설정하려면, [설치 가이드](../installation/prerequisites)의 있는 단계들을 제대로 따랐는지 확인해 주세요.
+2. 최상의 결과를 위해 iDevice를 USB 케이블로 컴퓨터에 연결해 주세요. 하지만 기기가 무선으로만 표시된다면 그것도 괜찮아요.
+3. "Manage Pairing File"를 클릭해 주세요.
+4. "SideStore" 및 원하는 다른 앱 오른쪽에 있는 "Place"를 클릭해 주세요. "Pairing file placed successfully! 라고 초록색 메시지가 표시되어야 해요.
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
deleted file mode 100644
index 84582b11..00000000
--- a/i18n/ko/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: 3개 앱 제한 우회
-description: SparseRestore 익스플로잇을 사용하여 SideStore로 3개 이상의 앱을 설치하는 방법에 대한 튜토리얼.
----
-
-:::note
-
-SparseRestore "3개 앱 제한 우회" 익스플로잇은 **iOS/iPadOS 17.0부터 18.1 베타 4(17.7.1 제외) 사이의 버전에서만 작동합니다**. 해당 버전이 아닌 경우 작동하지 않으며, **이에 대한 지원을 요청하지 마세요**.
-
-:::
-
-## 사전 요구사항
-* SparseRestore 익스플로잇이 지원하는 버전의 iOS 기기 (위 참고사항 참조).
-* 최소 1개의 빈 앱 슬롯.
-* SideStore 버전 0.5.9 이상. 최신 버전은 [여기](https://github.com/SideStore/SideStore/releases)에서 찾을 수 있습니다.
-* 이 익스플로잇을 수행하려면 반드시 **나의 찾기** 기능을 끄고 있어야 합니다. 그렇지 않으면 작동하지 않습니다. 끄는 방법은 다음과 같습니다:
- - 설정 앱을 엽니다.
- - 상단의 이름을 탭합니다.
- - 나의 찾기를 탭합니다.
- - 나의 찾기 iPhone/iPad를 탭합니다.
- - 나의 찾기 iPhone/iPad를 끕니다.
- - Apple ID 비밀번호를 입력해야 할 수 있습니다.
-
- > **참고:** 도난 방지 보호 기능이 켜져 있으면 나의 찾기를 끌 수 없을 수 있습니다. 나의 찾기를 끄기 전에 도난 방지 보호 기능을 먼저 끄세요.
-
-## 단계
-1. SparseBox를 설치합니다. 여러 방법으로 설치할 수 있지만, 이 가이드에서는 SideStore로 설치합니다. 최신 버전은 [여기](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip)에서 찾을 수 있습니다 (artifact.zip을 압축 해제하여 .ipa 파일을 얻으세요).
-
-2. SideStore에서 "앱 제한 비활성화"를 체크하고, SideStore가 **완전히 종료**되어 있는지 확인한 후(백그라운드가 아님) SparseBox를 엽니다.
-
-3. StosVPN을 활성화하고, 페어링 파일을 선택한 후 '3개 앱 제한 우회'를 탭합니다. 로그 출력이 표시될 것입니다. `idevicebackup2 exited with code -18` 또는 `idevicebackup2 exited with code 2`가 표시될 때까지 기다린 후 앱을 닫습니다. 적용 버튼을 누를 필요는 없습니다.
-
-4. SideStore를 다시 열고, SideStore 설정에서 아래로 스크롤합니다. "캐시 지우기"를 누르면 익스플로잇이 SideStore에서 인식됩니다.
-
-5. 익스플로잇이 작동하는지 테스트합니다 (테스트하려면 사용 가능한 슬롯 수에 따라 여러 앱을 설치해야 할 수 있습니다). 제한 관련 오류가 발생하면 SideStore를 다시 열거나 익스플로잇을 다시 시도하세요. 앱이 설치되면 축하합니다! 이제 한 번에 3개 이상의 앱을 설치할 수 있습니다.
-
-## 참고사항
-특정 제한으로 인해, 3개의 추가 앱을 사이드로드할 때마다 이 익스플로잇을 다시 수행해야 합니다.
-
-다른 목적으로 나의 찾기가 필요하다면 지금 다시 켤 수 있습니다. 하지만 더 많은 앱을 설치하거나 새로고침하려면 다시 끄야 합니다.
-
-## 대안
-익스플로잇이 작동하지 않거나 지원되지 않는 버전의 기기를 사용하는 경우, 한 번에 3개 이상의 앱을 사용할 수 있는 대안이 있습니다. SparseBox를 만든 Duy Tran Khanh([khanhduytran0](https://github.com/khanhduytran0))이 개발한 [LiveContainer](https://livecontainer.github.io/)를 사용하면 iOS 앱을 별도로 설치하지 않고 인앱에서 컨테이너로 실행할 수 있습니다. 경우에 따라서는 SparseRestore보다 더 쉽게 사용할 수도 있습니다. GitHub 페이지는 [여기](https://github.com/khanhduytran0/LiveContainer)에서 확인할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
new file mode 100644
index 00000000..f3a5718c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
@@ -0,0 +1,794 @@
+---
+sidebar_position: 3
+---
+
+# 고급 포매팅 가이드라인
+
+이 문서는 SideStore 프로젝트에서 다루게 될 고급 포매팅 상황, 아키텍처 패턴, 복잡한 Swift/Objective-C 기능을 정리해요.
+
+## 고급 Swift 패턴
+
+### 프로토콜 지향 프로그래밍
+
+#### 프로토콜 정의
+- 프로토콜은 집중도와 응집도를 유지해 주세요.
+- 제네릭 프로토콜에는 연관 타입을 활용해 주세요.
+- 필요하다면 익스텐션에서 기본 구현을 제공해 주세요.
+
+```swift
+// ✅ 좋습니다
+protocol AppInstalling {
+ associatedtype AppType: App
+
+ func install(_ app: AppType) async throws
+ func uninstall(_ app: AppType) async throws
+}
+
+extension AppInstalling {
+ func validateApp(_ app: AppType) -> Bool {
+ return !app.identifier.isEmpty && app.version.isValid
+ }
+}
+
+// ❌ 나빠요
+protocol AppManager {
+ func install(_ app: Any) -> Bool
+ func uninstall(_ app: Any) -> Bool
+ func update(_ app: Any) -> Bool
+ func backup(_ app: Any) -> Bool
+ func restore(_ app: Any) -> Bool
+ // Too many responsibilities
+}
+```
+
+#### 프로토콜 합성
+- 요구 사항이 복잡하면 프로토콜 합성을 활용해 주세요.
+- 개별 프로토콜은 작고 집중되게 유지해 주세요.
+
+```swift
+// ✅ 좋습니다다
+protocol Downloadable {
+ var downloadURL: URL { get }
+ func download() async throws -> Data
+}
+
+protocol Installable {
+ var installationRequirements: InstallationRequirements { get }
+ func install() async throws
+}
+
+typealias DeployableApp = App & Downloadable & Installable
+
+class AppDeployer {
+ func deploy(_ app: T) async throws {
+ let data = try await app.download()
+ try await app.install()
+ }
+}
+```
+
+### 제네릭과 타입 제약
+
+#### 제네릭 타입 정의
+- 의미 있는 제약 이름을 사용해 주세요.
+- 클래스 제약보다 프로토콜 제약을 선호해 주세요.
+- 복잡한 제약은 `where` 절로 표현해 주세요.
+
+```swift
+// ✅ 좋습니다
+struct Repository {
+ private var entities: [Entity.ID: Entity] = [:]
+
+ func save(_ entity: T) where T == Entity {
+ entities[entity.id] = entity
+ }
+
+ func find(byId id: ID) -> Entity? where ID == Entity.ID {
+ return entities[id]
+ }
+}
+
+// ❌ 나빠요
+struct Repository {
+ private var items: [String: T] = [:]
+ // No type safety
+}
+```
+
+#### 고급 제네릭 제약
+- 조건부 채택을 적절히 사용해 주세요.
+- 필요하다면 팬텀 타입으로 타입 안전성을 높여 주세요.
+
+```swift
+// ✅ 좋습니다
+extension Array: AppCollection where Element: App {
+ var installedApps: [Element] {
+ return filter { $0.isInstalled }
+ }
+
+ func sortedByInstallDate() -> [Element] {
+ return sorted { $0.installDate < $1.installDate }
+ }
+}
+
+// Phantom types for type safety
+struct AppState {
+ let app: App
+}
+
+enum Downloaded {}
+enum Installed {}
+
+typealias DownloadedApp = AppState
+typealias InstalledApp = AppState
+```
+
+### Async/Await 패턴
+
+#### 비동기 함수 설계
+- async/await를 일관되게 사용해 주세요.
+- 동시 작업의 구조를 명확히 해 주세요.
+- 취소 흐름을 적절히 처리해 주세요.
+
+```swift
+// ✅ 좋습니다
+actor AppInstallationManager {
+ private var activeInstallations: [String: Task] = [:]
+
+ func installApp(_ app: App) async throws {
+ // Prevent duplicate installations
+ if activeInstallations[app.identifier] != nil {
+ throw InstallationError.alreadyInstalling
+ }
+
+ let task = Task {
+ try await performInstallation(app)
+ }
+
+ activeInstallations[app.identifier] = task
+
+ defer {
+ activeInstallations.removeValue(forKey: app.identifier)
+ }
+
+ try await task.value
+ }
+
+ private func performInstallation(_ app: App) async throws {
+ // Check for cancellation at key points
+ try Task.checkCancellation()
+
+ let data = try await downloadApp(app)
+
+ try Task.checkCancellation()
+
+ try await installData(data, for: app)
+ }
+}
+
+// ❌ 나빠요
+func installApp(_ app: App, completion: @escaping (Error?) -> Void) {
+ DispatchQueue.global().async {
+ // Mixing old completion handler style with new async code
+ let result = await self.downloadApp(app)
+ DispatchQueue.main.async {
+ completion(nil)
+ }
+ }
+}
+```
+
+#### 구조화된 동시성
+- 관련 작업에는 태스크 그룹을 사용해 주세요.
+- 비구조화된 태스크보다 구조화된 동시성을 선호해 주세요.
+
+```swift
+// ✅ 좋습니다
+func installMultipleApps(_ apps: [App]) async throws {
+ try await withThrowingTaskGroup(of: Void.self) { group in
+ for app in apps {
+ group.addTask {
+ try await self.installApp(app)
+ }
+ }
+
+ // Wait for all installations to complete
+ try await group.waitForAll()
+ }
+}
+
+// For independent results
+func downloadMultipleApps(_ apps: [App]) async throws -> [App: Data] {
+ try await withThrowingTaskGroup(of: (App, Data).self) { group in
+ for app in apps {
+ group.addTask {
+ let data = try await self.downloadApp(app)
+ return (app, data)
+ }
+ }
+
+ var results: [App: Data] = [:]
+ for try await (app, data) in group {
+ results[app] = data
+ }
+ return results
+ }
+}
+```
+
+### 리절트 빌더와 DSL
+
+#### 커스텀 리절트 빌더
+- 단일 목적에 집중한 리절트 빌더를 만들어 주세요.
+- 도메인 특화 작업에 명확한 문법을 제공해 주세요.
+
+```swift
+// ✅ 좋아요
+@resultBuilder
+struct AppConfigurationBuilder {
+ static func buildBlock(_ components: AppConfigurationComponent...) -> AppConfiguration {
+ return AppConfiguration(components: components)
+ }
+
+ static func buildOptional(_ component: AppConfigurationComponent?) -> AppConfigurationComponent? {
+ return component
+ }
+
+ static func buildEither(first component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+
+ static func buildEither(second component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+}
+
+// Usage
+func configureApp(@AppConfigurationBuilder builder: () -> AppConfiguration) -> App {
+ let config = builder()
+ return App(configuration: config)
+}
+
+let app = configureApp {
+ AppName("SideStore")
+ AppVersion("1.0.0")
+ if debugMode {
+ DebugSettings()
+ }
+ Permissions {
+ NetworkAccess()
+ FileSystemAccess()
+ }
+}
+```
+
+## 고급 Objective-C 패턴
+
+### 카테고리 구성
+- 관련 기능을 묶을 때 카테고리를 활용해 주세요.
+- 카테고리 이름은 구체적으로 지어 주세요.
+
+```objc
+// ✅ 좋아요
+@interface NSString (SSValidation)
+- (BOOL)ss_isValidAppIdentifier;
+- (BOOL)ss_isValidVersion;
+@end
+
+@interface UIViewController (SSAppInstallation)
+- (void)ss_presentAppInstallationViewController:(SSApp *)app;
+- (void)ss_showInstallationProgress:(SSInstallationProgress *)progress;
+@end
+
+// ❌ 나빠요
+@interface NSString (Helpers)
+- (BOOL)isValid; // Too generic
+- (NSString *)cleanup; // Unclear purpose
+@end
+```
+
+### 고급 메모리 관리
+- 델리게이트 관계에는 적절한 패턴을 사용해 주세요.
+- 복잡한 오브젝트 그래프를 올바르게 처리해 주세요.
+
+```objc
+// ✅ 좋아요
+@interface SSAppInstaller : NSObject
+@property (nonatomic, weak) id delegate;
+@property (nonatomic, strong) NSOperationQueue *installationQueue;
+@end
+
+@implementation SSAppInstaller
+
+- (instancetype)init {
+ self = [super init];
+ if (self) {
+ _installationQueue = [[NSOperationQueue alloc] init];
+ _installationQueue.maxConcurrentOperationCount = 3;
+ _installationQueue.name = @"com.sidestore.installation";
+ }
+ return self;
+}
+
+- (void)installApp:(SSApp *)app completion:(void (^)(NSError *))completion {
+ __weak typeof(self) weakSelf = self;
+ NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ NSError *error = nil;
+ [strongSelf performInstallationForApp:app error:&error];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(error);
+ });
+ }];
+
+ [self.installationQueue addOperation:operation];
+}
+
+@end
+```
+
+### 블록 사용 패턴
+- 비동기 작업에는 알맞은 블록 패턴을 사용해 주세요.
+- 블록 안에서도 메모리 관리를 정확히 해 주세요.
+
+```objc
+// ✅ 좋아요
+typedef void (^SSInstallationProgressBlock)(float progress);
+typedef void (^SSInstallationCompletionBlock)(SSApp *app, NSError *error);
+
+@interface SSAppDownloader : NSObject
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion;
+@end
+
+@implementation SSAppDownloader
+
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion {
+
+ NSURLRequest *request = [NSURLRequest requestWithURL:app.downloadURL];
+
+ __weak typeof(self) weakSelf = self;
+ NSURLSessionDownloadTask *task = [[NSURLSession sharedSession]
+ downloadTaskWithRequest:request
+ completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ if (error) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(nil, error);
+ });
+ return;
+ }
+
+ // Process downloaded file
+ [strongSelf processDownloadedFile:location
+ forApp:app
+ completion:completion];
+ }];
+
+ [task resume];
+ return task;
+}
+
+@end
+```
+
+## 아키텍처 패턴
+
+### MVVM 구현
+- 모델, 뷰, 뷰모델의 역할을 명확히 분리해 주세요.
+- 올바른 데이터 바인딩 패턴을 사용해 주세요.
+
+```swift
+// ✅ 나빠요
+// Model
+struct App {
+ let identifier: String
+ let name: String
+ let version: String
+ let isInstalled: Bool
+}
+
+// ViewModel
+@MainActor
+class AppListViewModel: ObservableObject {
+ @Published var apps: [App] = []
+ @Published var isLoading = false
+ @Published var errorMessage: String?
+
+ private let appService: AppService
+
+ init(appService: AppService) {
+ self.appService = appService
+ }
+
+ func loadApps() async {
+ isLoading = true
+ errorMessage = nil
+
+ do {
+ apps = try await appService.fetchAvailableApps()
+ } catch {
+ errorMessage = error.localizedDescription
+ }
+
+ isLoading = false
+ }
+
+ func installApp(_ app: App) async {
+ do {
+ try await appService.installApp(app)
+ await loadApps() // Refresh the list
+ } catch {
+ errorMessage = "Failed to install \(app.name): \(error.localizedDescription)"
+ }
+ }
+}
+
+// View
+struct AppListView: View {
+ @StateObject private var viewModel: AppListViewModel
+
+ init(appService: AppService) {
+ _viewModel = StateObject(wrappedValue: AppListViewModel(appService: appService))
+ }
+
+ var body: some View {
+ NavigationView {
+ List(viewModel.apps, id: \.identifier) { app in
+ AppRowView(app: app) {
+ Task {
+ await viewModel.installApp(app)
+ }
+ }
+ }
+ .navigationTitle("Available Apps")
+ .overlay {
+ if viewModel.isLoading {
+ ProgressView()
+ }
+ }
+ .alert("Error", isPresented: .constant(viewModel.errorMessage != nil)) {
+ Button("OK") {
+ viewModel.errorMessage = nil
+ }
+ } message: {
+ Text(viewModel.errorMessage ?? "")
+ }
+ }
+ .task {
+ await viewModel.loadApps()
+ }
+ }
+}
+```
+
+### 의존성 주입
+- 테스트 가능성과 유연성을 위해 의존성 주입을 사용해 주세요.
+- 규모가 크면 DI 컨테이너를 도입해 주세요.
+
+```swift
+// ✅ 좋습니다
+protocol AppService {
+ func fetchAvailableApps() async throws -> [App]
+ func installApp(_ app: App) async throws
+}
+
+protocol NetworkService {
+ func downloadData(from url: URL) async throws -> Data
+}
+
+class DefaultAppService: AppService {
+ private let networkService: NetworkService
+ private let deviceService: DeviceService
+
+ init(networkService: NetworkService, deviceService: DeviceService) {
+ self.networkService = networkService
+ self.deviceService = deviceService
+ }
+
+ func fetchAvailableApps() async throws -> [App] {
+ let data = try await networkService.downloadData(from: appsURL)
+ return try JSONDecoder().decode([App].self, from: data)
+ }
+
+ func installApp(_ app: App) async throws {
+ guard deviceService.hasSpace(for: app) else {
+ throw InstallationError.insufficientStorage
+ }
+
+ let appData = try await networkService.downloadData(from: app.downloadURL)
+ try await deviceService.installApp(data: appData)
+ }
+}
+
+// DI Container
+class ServiceContainer {
+ static let shared = ServiceContainer()
+
+ private init() {}
+
+ lazy var networkService: NetworkService = DefaultNetworkService()
+ lazy var deviceService: DeviceService = DefaultDeviceService()
+ lazy var appService: AppService = DefaultAppService(
+ networkService: networkService,
+ deviceService: deviceService
+ )
+}
+```
+
+### 오류 처리 아키텍처
+- 포괄적인 오류 처리 전략을 세워 주세요.
+- 타입이 있는 오류를 사용해서 처리를 명확히 해 주세요.
+
+```swift
+// ✅ 좋아요
+enum SideStoreError: Error {
+ case network(NetworkError)
+ case installation(InstallationError)
+ case device(DeviceError)
+ case validation(ValidationError)
+}
+
+enum NetworkError: Error {
+ case noConnection
+ case timeout
+ case serverError(Int)
+ case invalidResponse
+}
+
+enum InstallationError: Error {
+ case insufficientStorage
+ case incompatibleDevice
+ case corruptedFile
+ case alreadyInstalled
+}
+
+extension SideStoreError: LocalizedError {
+ var errorDescription: String? {
+ switch self {
+ case .network(let networkError):
+ return "Network error: \(networkError.localizedDescription)"
+ case .installation(let installError):
+ return "Installation error: \(installError.localizedDescription)"
+ case .device(let deviceError):
+ return "Device error: \(deviceError.localizedDescription)"
+ case .validation(let validationError):
+ return "Validation error: \(validationError.localizedDescription)"
+ }
+ }
+}
+
+// Error handling in services
+class AppService {
+ func installApp(_ app: App) async throws {
+ do {
+ try validateApp(app)
+ } catch {
+ throw SideStoreError.validation(error as! ValidationError)
+ }
+
+ do {
+ try await performInstallation(app)
+ } catch let error as NetworkError {
+ throw SideStoreError.network(error)
+ } catch let error as InstallationError {
+ throw SideStoreError.installation(error)
+ }
+ }
+}
+```
+
+## 성능 고려 사항
+
+### 메모리 최적화
+- 비용이 큰 리소스에는 지연 로딩을 사용해 주세요.
+- 적절한 캐싱 전략을 구현해 주세요.
+
+```swift
+// ✅ 좋아요
+class AppImageCache {
+ private let cache = NSCache()
+ private let downloadQueue = DispatchQueue(label: "image-download", qos: .utility)
+
+ init() {
+ cache.countLimit = 50
+ cache.totalCostLimit = 50 * 1024 * 1024 // 50MB
+ }
+
+ func image(for app: App) async -> UIImage? {
+ let key = app.identifier as NSString
+
+ // Check cache first
+ if let cachedImage = cache.object(forKey: key) {
+ return cachedImage
+ }
+
+ // Download if not cached
+ return await withCheckedContinuation { continuation in
+ downloadQueue.async { [weak self] in
+ guard let self = self else {
+ continuation.resume(returning: nil)
+ return
+ }
+
+ do {
+ let data = try Data(contentsOf: app.iconURL)
+ let image = UIImage(data: data)
+
+ if let image = image {
+ self.cache.setObject(image, forKey: key)
+ }
+
+ continuation.resume(returning: image)
+ } catch {
+ continuation.resume(returning: nil)
+ }
+ }
+ }
+ }
+}
+```
+
+### 스레딩 모범 사례
+- 알맞은 큐 우선순위를 사용해 주세요.
+- 컨텍스트 스위칭을 최소화해 주세요.
+
+```swift
+// ✅ 좋아요
+actor BackgroundProcessor {
+ private let processingQueue = DispatchQueue(
+ label: "background-processing",
+ qos: .utility,
+ attributes: .concurrent
+ )
+
+ func processLargeDataSet(_ data: [LargeDataItem]) async -> [ProcessedItem] {
+ return await withTaskGroup(of: ProcessedItem?.self, returning: [ProcessedItem].self) { group in
+ let chunkSize = max(data.count / ProcessInfo.processInfo.activeProcessorCount, 1)
+
+ for chunk in data.chunked(into: chunkSize) {
+ group.addTask {
+ return await self.processChunk(chunk)
+ }
+ }
+
+ var results: [ProcessedItem] = []
+ for await result in group {
+ if let processed = result {
+ results.append(processed)
+ }
+ }
+
+ return results
+ }
+ }
+
+ private func processChunk(_ chunk: [LargeDataItem]) async -> ProcessedItem? {
+ // CPU-intensive processing
+ return await withCheckedContinuation { continuation in
+ processingQueue.async {
+ let result = chunk.map { self.expensiveOperation($0) }
+ continuation.resume(returning: ProcessedItem(results: result))
+ }
+ }
+ }
+}
+```
+
+## 테스트 패턴
+
+### 프로토콜 기반 테스트
+- 테스트에서도 의존성 주입을 위해 프로토콜을 사용해 주세요.
+- 목적에 맞는 테스트 더블을 만들어 주세요.
+
+```swift
+// ✅ 좋아요
+class MockAppService: AppService {
+ var shouldFailInstallation = false
+ var installedApps: [App] = []
+
+ func fetchAvailableApps() async throws -> [App] {
+ return [
+ App(identifier: "test.app1", name: "Test App 1", version: "1.0.0"),
+ App(identifier: "test.app2", name: "Test App 2", version: "2.0.0")
+ ]
+ }
+
+ func installApp(_ app: App) async throws {
+ if shouldFailInstallation {
+ throw InstallationError.insufficientStorage
+ }
+ installedApps.append(app)
+ }
+}
+
+class AppListViewModelTests: XCTestCase {
+ private var mockAppService: MockAppService!
+ private var viewModel: AppListViewModel!
+
+ override func setUp() {
+ super.setUp()
+ mockAppService = MockAppService()
+ viewModel = AppListViewModel(appService: mockAppService)
+ }
+
+ @MainActor
+ func testLoadAppsSuccess() async {
+ await viewModel.loadApps()
+
+ XCTAssertEqual(viewModel.apps.count, 2)
+ XCTAssertFalse(viewModel.isLoading)
+ XCTAssertNil(viewModel.errorMessage)
+ }
+
+ @MainActor
+ func testInstallAppFailure() async {
+ mockAppService.shouldFailInstallation = true
+
+ let testApp = App(identifier: "test", name: "Test", version: "1.0")
+ await viewModel.installApp(testApp)
+
+ XCTAssertNotNil(viewModel.errorMessage)
+ XCTAssertTrue(viewModel.errorMessage!.contains("insufficient storage"))
+ }
+}
+```
+
+## 문서화 기준
+
+### 복잡한 API 문서
+- 복잡한 동작과 엣지 케이스를 문서화해 주세요.
+- 비자명한 API에는 사용 예시를 제공해 주세요.
+
+```swift
+/**
+ * A thread-safe manager for handling app installations with automatic retry logic.
+ *
+ * This class manages the installation process for iOS applications, handling
+ * network downloads, signature verification, and device communication.
+ * It provides automatic retry functionality for transient failures and
+ * comprehensive error reporting.
+ *
+ * ## Usage Example
+ * ```swift
+ * let installer = AppInstallationManager()
+ *
+ * do {
+ * let result = try await installer.installApp(
+ * from: app.sourceURL,
+ * identifier: app.bundleID,
+ * maxRetries: 3
+ * )
+ * print("Installation completed: \(result.installedPath)")
+ * } catch InstallationError.insufficientStorage {
+ * // Handle storage error
+ * } catch {
+ * // Handle other errors
+ * }
+ * ```
+ *
+ * ## Thread Safety
+ * This class is thread-safe and can be called from any queue. All completion
+ * handlers are called on the main queue unless otherwise specified.
+ *
+ * ## Error Handling
+ * Installation failures are categorized into recoverable and non-recoverable
+ * errors. Recoverable errors (network timeouts, temporary device issues) will
+ * be automatically retried up to the specified limit. Non-recoverable errors
+ * (invalid signatures, incompatible devices) will fail immediately.
+ */
+@MainActor
+class AppInstallationManager {
+ // Implementation
+}
+```
+
+기억해 주세요. 이런 고급 패턴은 신중하게 사용해야 해요. 똑똑해 보이는 구현보다 코드의 명확성과 유지 보수성을 우선해 주세요. 확신이 서지 않으면 요구 사항을 충족하는 가장 단순한 접근을 선택해 주세요.
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/contributing/contributing.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
new file mode 100644
index 00000000..d230bb57
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
@@ -0,0 +1,239 @@
+---
+sidebar_position: 1
+---
+
+# SideStore에 기여하기
+
+SideStore에 기여하려는 관심에 감사드려요. SideStore는 커뮤니티가 이끄는 프로젝트이고, 여러분 같은 분들 덕분에 가능해요.
+
+이 프로젝트(SideStore)에 기여하면 [CERTIFICATE-OF-ORIGIN.md](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md)에 있는 개발자 기원 증명서(DCO)에 동의하는 거예요. DCO 도입 이후의 모든 기여는 해당 정책을 따르게 돼요.
+
+SideStore에 기여하는 방법은 아주 많아요. 개발자가 아니더라도 도울 수 있는 방법이 있어요.
+
+- [문서 작성하기](https://github.com/SideStore/SideStore-Docs)
+- [자세한 버그 리포트 제출하기와 새 기능 제안하기](https://github.com/SideStore/SideStore/issues/new/choose)
+- 지원 활동 돕기
+ - [Discord](https://dis.sidestore.io/)
+ - [GitHub Discussions](https://github.com/SideStore/SideStore/discussions)
+
+하지만 이 가이드는 개발 측면에 집중해요. 지금은 설정 정보만 정리돼 있고, 설정 이후 도움이 필요하면 [Discord](https://discord.gg/sidestore-949183273383395328)에 참여해 주세요.
+
+## 요구 사항
+
+이 가이드는 다음을 전제로 하고 있어요.
+
+- macOS를 사용하고 있어요.
+- Xcode가 설치돼 있어요.
+- 기본 명령줄 지식을 가지고 있어요(명령 실행과 `cd` 사용이 가능해요).
+- 기본 Git 지식을 가지고 있어요. 초보자라면 [GitHub Desktop](https://desktop.github.com/)을 쓰셔도 좋아요.
+- 기본적인 Swift/iOS 개발 지식을 가지고 있어요.
+
+## 준비
+
+1. **GitHub에서 SideStore 저장소를 포크해 주세요.**
+
+2. **포크한 저장소를 클론해 주세요.**
+ ```bash
+ git clone https://github.com/<당신의-깃허브-사용자이름>/SideStore.git --recurse
+ cd SideStore
+ ```
+
+ GitHub Desktop을 사용 중이면 [이 가이드](https://docs.github.com/ko/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop)를 참고해 주세요.
+
+3. **`CodeSigning.xcconfig.sample`을 `CodeSigning.xcconfig`로 복사한 뒤 값을 채워 주세요.**
+
+4. **(개발 전용)** Info.plist 안 `ALTDeviceID` 값을 본인 기기의 UDID로 바꿔 주세요. 일반적으로 SideServer가 설치 중에 SideStore의 Info.plist에 기기 UDID를 넣어 줘요. Xcode에서 직접 실행하면 앱이 올바른 기기용으로 서명되지 않으니 값을 직접 설정해 주세요.
+
+5. **마지막으로 Xcode에서 `AltStore.xcworkspace`를 열어 주세요.**
+
+이제 변경 사항을 만들고 테스트해 주세요. 그런 다음 git으로 커밋하고 푸시한 뒤 Pull Request를 열어 주세요.
+
+## 사전 빌드 바이너리 정보
+
+minimuxer와 em_proxy는 GitHub Actions가 빌드한 사전 빌드 정적 라이브러리를 사용해요. 덕분에 빌드가 빨라지고 SideStore 작업 시 Rust를 설치할 필요가 없어요. [`SideStore/fetch-prebuilt.sh`](https://github.com/SideStore/SideStore/blob/develop/SideStore/fetch-prebuilt.sh)는 Xcode가 매 빌드 전에 실행하고, 6시간마다 바이너리가 최신인지 확인해 줘요. 강제로 새 바이너리를 확인하고 싶으면 `bash ./SideStore/fetch-prebuilt.sh force`를 실행해 주세요.
+
+## Xcode로 빌드하기
+
+필요하면 `brew install cocoapods`로 cocoapods를 설치해 주세요.
+저장소 루트에서 `pod install`을 실행해서 의존성을 설치해 주세요.
+그다음에는 Xcode에서 일반 빌드를 진행해도 돼요.
+
+## 배포용 IPA 빌드하기
+
+필요하면 `brew install cocoapods`로 cocoapods를 설치해 주세요.
+저장소 루트에서 `pod install`을 실행해 주세요.
+
+그다음 루트 디렉터리에서 `make build fakesign ipa`를 실행해 주세요.
+기본 빌드 설정은 `Release`예요.
+디버그 빌드는 `export BUILD_CONFIG=Debug;make build fakesign ipa`예요.
+알파/베타 빌드는 빌드 명령 전에 `export IS_ALPHA=1;` 또는 `export IS_BETA=1;`을 설정해 주세요.
+이렇게 하면 `SideStore.ipa`가 생성돼요.
+
+```sh
+예시예요.
+
+ # cocoapods
+ brew install cocoapods
+ # pod 설치
+ pod install
+
+ # alpha release build
+ export IS_ALPHA=1;make build fakesign ipa
+ # alpha debug build
+ export IS_ALPHA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # beta release build
+ export IS_BETA=1;make build fakesign ipa
+ # beta debug build
+ export IS_BETA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # stable release build
+ make build fakesign ipa
+ # stable debug build
+ export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+SideStore는 기본적으로 `com.SideStore.SideStore` 번들 ID로 빌드돼요. 명령줄 빌드에서 사용자 지정 번들 ID가 필요하면 `BUNDLE_ID_SUFFIX` 환경 변수를 설정해 주세요.
+
+```sh
+ # stable release build
+ export BUNDLE_ID_SUFFIX=XYZ0123456;make build fakesign ipa
+ # stable debug build
+ export BUNDLE_ID_SUFFIX=XYZ0123456;export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+**주의**: Xcode에서 빌드할 때 `BUNDLE_ID_SUFFIX`는 기본적으로 `DEVELOPMENT_TEAM` 값으로 설정돼요.
+
+CodeSigning.xcconfig.sample에서 만든 파일을 수정해서 `BUNDLE_ID_SUFFIX`를 설정하거나 제거할 수 있어요.
+
+:::warning
+생성된 바이너리에는 Xcode DerivedData 경로가 포함되고, 로컬에서 minimuxer를 빌드했다면 `$HOME/.cargo` 경로도 들어가요. 즉 사용자 이름이 드러날 수 있어요. 사용자 이름을 공개하고 싶지 않다면 GitHub Actions로 IPA를 빌드해 주세요.
+:::
+
+## SideStore와 함께 minimuxer 개발하기
+
+개발 안내는 [minimuxer README](https://github.com/SideStore/minimuxer)를 참고해 주세요.
+
+## Pull Request 절차
+
+### 제출 전에
+
+1. **코딩 표준을 따라 주세요.** 코드가 [포매팅 가이드](./formatting.mdx)를 따르도록 해 주세요.
+
+2. **변경 사항을 테스트해 주세요.**
+ - 가능하면 다양한 iOS 버전에서 테스트해 주세요.
+ - 기존 기능이 깨지지 않았는지 확인해 주세요.
+ - 새 기능에는 필요한 테스트를 추가해 주세요.
+
+3. **문서를 업데이트해 주세요.** 사용자에게 영향을 주는 변경이라면 관련 문서를 갱신해 주세요.
+
+### PR 제출하기
+
+1. **기능 브랜치를 만들어 주세요.**
+ ```bash
+ git checkout -b feature/your-feature-name
+ ```
+
+2. **변경 작업을 진행해 주세요.** 가이드라인과 모범 사례를 따라 주세요.
+
+3. **서명 옵션을 포함해 커밋해 주세요.**
+ ```bash
+ git add .
+ git commit -s -m "Add descriptive commit message"
+ ```
+
+ **중요해요.** 모든 커밋은 DCO에 따라 서명해야 해요. `-s` 플래그가 자동으로 `Signed-off-by` 줄을 추가해 줘요.
+
+4. **포크 저장소에 푸시해 주세요.**
+ ```bash
+ git push origin feature/your-feature-name
+ ```
+
+5. **Pull Request를 만들어 주세요.** 메인 SideStore 저장소에 가서 브랜치에서 PR을 생성해 주세요.
+
+:::caution
+명백하게 AI가 생성했거나 “감으로 짠” 것처럼 보이는 PR은 받지 않아요. 예를 들어 불필요한 주석이 많거나, 일반적인 코드처럼 보여서 프로젝트 이해도가 없다고 느껴지거나, SideStore를 위한 고민이 담기지 않은 코드가 그렇죠. 기여가 오리지널이고 코드베이스와 목표를 명확히 이해했다는 점을 보여 주세요.
+:::
+
+### PR 가이드라인
+
+- **명확한 제목**: 변경 내용을 요약하는 제목을 사용해 주세요.
+- **상세한 설명**: 무엇을 왜 바꿨는지 설명해 주세요.
+- **관련 이슈 링크**: 관련 GitHub 이슈를 연결해 주세요.
+- **스크린샷**: UI 변경이 있다면 스크린샷을 포함해 주세요.
+- **테스트 메모**: 어떻게 테스트했는지 적어 주세요.
+
+## 개발자 기원 증명서(DCO)
+
+SideStore는 모든 기여자가 DCO로 커밋을 서명해 주길 요구해요. 이는 우리 프로젝트의 기여자 행동 강령 역할을 하고, 제공하는 코드가 직접 작성됐거나 제출 권한이 있다는 사실을 확인하는 간단한 방법이에요.
+
+### DCO는 무엇인가요?
+
+커밋에 서명하면 다음 내용을 확인하는 거예요.
+
+- **(a)** 기여는 전부 혹은 일부가 본인이 만든 것이고, 파일에 명시된 오픈소스 라이선스 아래 제출할 권리가 있어요.
+- **(b)** 기여가 이전 작업을 기반으로 하고, 해당 라이선스 하에서 수정한 작업을 제출할 권리가 있다는 걸 알고 있어요.
+- **(c)** 다른 사람이 (a), (b) 또는 (c)를 확인하고 직접 제공한 기여이며, 본인은 수정하지 않았어요.
+- **(d)** 이 프로젝트와 기여가 공개되고, 기여 기록이 영구히 보존된다는 사실을 이해하고 동의해요.
+
+### 서명하는 방법
+
+커밋할 때 `-s` 플래그만 추가하면 돼요.
+
+```bash
+git commit -s -m "Your commit message"
+```
+
+그러면 커밋 메시지에 자동으로 `Signed-off-by` 줄이 추가돼요.
+
+```
+Your commit message
+
+Signed-off-by: SternXD
+```
+
+### 중요한 참고 사항
+
+- **모든 커밋에 서명해 주세요.** 가능하면 항상 서명하는 걸 선호해요.
+- **올바른 이메일을 사용해 주세요.** GitHub 계정 이메일과 맞춰 주세요.
+- **사후 서명도 가능해요.** 서명을 깜박했다면 `git commit --amend -s`로 마지막 커밋을 고쳐 주세요.
+
+자세한 내용은 [Certificate of Origin](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md) 문서를 참고해 주세요.
+
+## 코드 리뷰 절차
+
+1. **초기 리뷰**: 유지 관리자가 며칠 내 PR을 살펴봐요.
+2. **피드백**: 요청된 변경이나 질문에 답변해 주세요.
+3. **최종 승인**: 승인되면 유지 관리자가 PR을 머지해요.
+
+## 좋은 기여를 위한 가이드라인
+
+### 코드 품질
+- 깔끔하고 읽기 쉬운 코드를 작성해 주세요.
+- Swift와 Objective-C 모범 사례를 따라 주세요.
+- 의미 있는 변수와 함수 이름을 사용해 주세요.
+- 복잡한 코드에는 주석을 남겨 주세요.
+
+### 테스트
+- 가능하면 실제 기기에서 테스트해 주세요.
+- 엣지 케이스와 오류 상황을 테스트해 주세요.
+- 역호환성을 확인해 주세요.
+
+### 문서화
+- 코드 주석을 업데이트해 주세요.
+- 사용자 문서를 업데이트해 주세요.
+- 공개 API에는 인라인 문서를 포함해 주세요.
+
+## 도움 받기
+
+도움이 필요하거나 질문이 있으면 이렇게 해 주세요.
+
+- **GitHub Discussions**: 일반 질문은 여기로 올려 주세요.
+- **GitHub Issues**: 버그나 기능 요청은 이슈로 등록해 주세요.
+- **Discord**: SideStore Discord 커뮤니티에 참여해 주세요.
+
+## 감사와 인정
+
+의미 있는 기여를 해 주신 분들은 프로젝트 크레딧과 변경 로그에서 소개돼요.
+
+SideStore에 기여해 주셔서 감사해요!
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/contributing/formatting.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
new file mode 100644
index 00000000..8e4447e9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
@@ -0,0 +1,491 @@
+---
+sidebar_position: 2
+---
+
+# 코드 포매팅 가이드라인
+
+이 문서는 SideStore 프로젝트에서 Swift와 Objective-C 코드를 포맷팅하는 기준을 정리했어요. 일관된 포맷팅은 코드베이스를 더 읽기 쉽고 관리하기 편하게 만들어 줘요.
+
+## 일반 원칙
+
+- **일관성**: 프로젝트에서 이미 사용 중인 스타일을 따라 주세요.
+- **가독성**: 코드는 쉽게 읽히고 이해돼야 해요.
+- **단순함**: 복잡한 해결책보다 단순하고 명확한 방식을 선호해 주세요.
+- **Apple 관례**: 가능하면 Apple이 권장하는 Swift/Objective-C 관례를 따라 주세요.
+
+## Swift 포매팅
+
+### 네이밍 규칙
+
+#### 변수와 함수
+- 변수, 함수, 메서드에는 **camelCase**를 사용해 주세요.
+- 목적이 명확히 드러나도록 설명적인 이름을 붙여 주세요.
+
+```swift
+// ✅ 좋아요
+let downloadProgress: Float
+func validateUserCredentials() -> Bool
+var isAppInstalling: Bool
+
+// ❌ 나빠요
+let dp: Float
+func validate() -> Bool
+var installing: Bool
+```
+
+#### 클래스, 구조체, 열거형, 프로토콜
+- 타입 이름에는 **PascalCase**를 사용해 주세요.
+- 명사 기반의 설명적인 이름을 붙여 주세요.
+
+```swift
+// ✅ 좋아요
+class AppInstaller
+struct InstallationProgress
+enum AppState
+protocol AppManaging
+
+// ❌ 나빠요
+class installer
+struct progress
+enum state
+protocol managing
+```
+
+#### 상수
+- 상수에도 **camelCase**를 사용해 주세요.
+- 전역 상수라면 **SCREAMING_SNAKE_CASE**를 고려해 주세요.
+
+```swift
+// ✅ 좋아요
+let maxRetryAttempts = 3
+private let defaultTimeout: TimeInterval = 30.0
+
+// Global constants
+let MAX_CONCURRENT_DOWNLOADS = 5
+
+// ❌ 나빠요
+let MaxRetryAttempts = 3
+let max_retry_attempts = 3
+```
+
+### 들여쓰기와 공백
+
+#### 들여쓰기
+- 들여쓰기는 **스페이스 4개**예요. 탭은 사용하지 말아 주세요.
+- 줄바꿈한 인자는 여는 구분자와 맞춰 주세요.
+
+```swift
+// ✅ 좋아요
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) {
+ // Implementation
+}
+
+// ❌ 나빠요
+func installApp(withIdentifier identifier: String,
+sourceURL: URL,
+completion: @escaping (Result) -> Void) {
+// Implementation
+}
+```
+
+#### 줄 길이
+- 가능한 한 줄 길이를 **120자 이하**로 유지해 주세요.
+- 길어지면 의미 단위에서 줄바꿈해 주세요.
+
+```swift
+// ✅ 좋아요
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(
+ parameter1: value1,
+ parameter2: value2
+)
+
+// ❌ 나빠요
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(parameter1: value1, parameter2: value2, parameter3: value3)
+```
+
+#### 공백
+- 연산자 주변에는 공백 한 칸을 넣어 주세요.
+- 줄 끝 공백은 남기지 말아 주세요.
+- 함수나 큰 코드 블록 사이에는 빈 줄 한 줄을 넣어 주세요.
+
+```swift
+// ✅ 좋아요
+let result = value1 + value2
+if condition && anotherCondition {
+ // Code
+}
+
+func firstFunction() {
+ // Implementation
+}
+
+func secondFunction() {
+ // Implementation
+}
+
+// ❌ 나빠요
+let result=value1+value2
+if condition&&anotherCondition{
+ // Code
+}
+func firstFunction(){
+ // Implementation
+}
+func secondFunction(){
+ // Implementation
+}
+```
+
+### 중괄호와 제어 흐름
+
+#### 중괄호 스타일
+- 여는 중괄호는 구문과 같은 줄에 둬 주세요.
+- 닫는 중괄호는 별도 줄에 두고 구문과 맞춰 주세요.
+
+```swift
+// ✅ 좋아요
+if condition {
+ doSomething()
+} else {
+ doSomethingElse()
+}
+
+class MyClass {
+ func myMethod() {
+ // Implementation
+ }
+}
+
+// ❌ 나빠요
+if condition
+{
+ doSomething()
+}
+else
+{
+ doSomethingElse()
+}
+```
+
+#### Guard 구문
+- 조기 반환이 필요하면 guard를 사용해 주세요.
+- 조건은 간결하고 읽기 쉽게 유지해 주세요.
+
+```swift
+// ✅ 좋아요
+guard let url = URL(string: urlString) else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+
+guard !apps.isEmpty else {
+ return
+}
+
+// ❌ 나빠요
+if let url = URL(string: urlString) {
+ // Long nested code block
+} else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+```
+
+### 타입 표기와 추론
+
+#### 타입 표기 사용 시점
+- 타입이 명확하지 않을 때는 타입을 명시해 주세요.
+- Swift가 분명히 추론할 수 있을 때는 생략해 주세요.
+
+```swift
+// ✅ 좋아요
+let name = "SideStore" // Type is obvious
+let timeout: TimeInterval = 30 // Type clarifies intent
+var apps: [App] = [] // Empty array needs type annotation
+
+// ❌ 나빠요
+let name: String = "SideStore" // Redundant type annotation
+let timeout = 30 // Unclear if Int or TimeInterval
+```
+
+### 함수 선언
+
+#### 파라미터 라벨
+- 설명적인 라벨을 사용해 주세요.
+- 문장이 자연스럽게 읽힌다면 첫 번째 라벨을 생략해 주세요.
+
+```swift
+// ✅ 좋아요
+func install(_ app: App, to device: Device)
+func download(from url: URL, completion: @escaping (Data?) -> Void)
+
+// ❌ 나빠요
+func install(app: App, device: Device)
+func download(url: URL, completion: @escaping (Data?) -> Void)
+```
+
+#### 반환 타입
+- 가능하면 반환 타입을 같은 줄에 둬 주세요.
+- 시그니처가 길다면 새 줄에서 정리해 주세요.
+
+```swift
+// ✅ 좋아요
+func processData() -> Result
+
+func complexFunction(withManyParameters param1: String,
+ param2: Int,
+ param3: Bool)
+ -> Result {
+ // Implementation
+}
+```
+
+## Objective-C 포매팅
+
+### 네이밍 규칙
+
+#### 메서드
+- 파라미터 라벨이 명확한 설명형 이름을 사용해 주세요.
+- 소문자로 시작하고 camelCase를 사용해 주세요.
+
+```objc
+// ✅ 좋습니다
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+
+// ❌ 나빠요
+- (void)install:(NSString *)id url:(NSURL *)url completion:(void (^)(NSError *))completion;
+```
+
+#### 변수와 프로퍼티
+- camelCase를 사용해 주세요.
+- 설명적인 이름을 붙여 주세요.
+- 인스턴스 변수에는 밑줄을 접두사로 붙여 주세요.
+
+```objc
+// ✅ 좋아요
+@interface AppManager : NSObject
+@property (nonatomic, strong) NSArray *installedApps;
+@property (nonatomic, assign) BOOL isInstalling;
+@end
+
+@implementation AppManager {
+ NSURLSession *_networkSession;
+ dispatch_queue_t _processingQueue;
+}
+```
+
+#### 클래스와 프로토콜
+- PascalCase를 사용해 주세요.
+- 공개 클래스라면 `SS` 같은 접두사를 붙이는 걸 고려해 주세요.
+
+```objc
+// ✅ 좋아요
+@interface SSAppInstaller : NSObject
+@protocol SSAppManaging
+
+// ❌ 나빠요
+@interface appInstaller : NSObject
+@protocol appManaging
+```
+
+### 공백과 포매팅
+
+#### 메서드 선언
+- 파라미터를 세로로 정렬해 주세요.
+- 일관된 공백을 유지해 주세요.
+
+```objc
+// ✅ 좋아요
+- (instancetype)initWithIdentifier:(NSString *)identifier
+ title:(NSString *)title
+ version:(NSString *)version;
+
+// ❌ 싫어요
+- (instancetype)initWithIdentifier:(NSString *)identifier title:(NSString *)title version:(NSString *)version;
+```
+
+#### 중괄호
+- 여는 중괄호를 같은 줄에 둬 주세요.
+- 닫는 중괄호는 별도 줄에 둬 주세요.
+
+```objc
+// ✅ 좋아요요
+if (condition) {
+ [self doSomething];
+} else {
+ [self doSomethingElse];
+}
+
+// ❌ 나빠요
+if (condition)
+{
+ [self doSomething];
+}
+else
+{
+ [self doSomethingElse];
+}
+```
+
+## 주석과 문서화
+
+### Swift 문서 주석
+- 문서 주석에는 `///`를 사용해 주세요.
+- 공개 API라면 파라미터와 반환 값을 설명해 주세요.
+
+```swift
+/// Downloads and installs an app from the specified URL
+/// - Parameters:
+/// - identifier: The unique identifier for the app
+/// - sourceURL: The URL to download the app from
+/// - completion: Called when installation completes or fails
+/// - Returns: A cancellable operation
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) -> Operation {
+ // Implementation
+}
+```
+
+### Objective-C 문서 주석
+- `/** */`를 사용해 주세요.
+- HeaderDoc이나 Doxygen 관례를 따라 주세요.
+
+```objc
+/**
+ * Downloads and installs an app from the specified URL
+ * @param identifier The unique identifier for the app
+ * @param sourceURL The URL to download the app from
+ * @param completion Block called when installation completes or fails
+ */
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+```
+
+### 인라인 주석
+- 한 줄 주석에는 `//`를 사용해 주세요.
+- 간결하고 필요한 내용만 적어 주세요.
+- 무엇인지보다는 왜 그런지 설명해 주세요.
+
+```swift
+// ✅ 좋아요
+// Retry failed downloads up to 3 times to handle temporary network issues
+let maxRetryAttempts = 3
+
+// ❌ 나빠요
+// Set maxRetryAttempts to 3
+let maxRetryAttempts = 3
+```
+
+## 오류 처리
+
+### Swift 오류 처리
+- Swift의 `throws`와 `Result`를 활용해 주세요.
+- 의미 있는 오류 타입을 만들어 주세요.
+
+```swift
+enum InstallationError: Error {
+ case invalidURL
+ case networkFailure(Error)
+ case insufficientStorage
+ case deviceNotSupported
+}
+
+func installApp() throws -> App {
+ guard let url = URL(string: urlString) else {
+ throw InstallationError.invalidURL
+ }
+ // Implementation
+}
+```
+
+### Objective-C 오류 처리
+- `NSError **` 패턴을 사용해 주세요.
+- 값을 설정하기 전에 포인터가 nil이 아닌지 확인해 주세요.
+
+```objc
+- (BOOL)installAppWithError:(NSError **)error {
+ if (someCondition) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSErrorDomain
+ code:SSErrorCodeInvalidInput
+ userInfo:nil];
+ }
+ return NO;
+ }
+ return YES;
+}
+```
+
+## 모범 사례
+
+### 메모리 관리
+- Swift와 Objective-C 모두 ARC를 올바르게 활용해 주세요.
+- 순환 참조에 주의하고 `weak`, `unowned`를 적절히 사용해 주세요.
+
+```swift
+// ✅ 좋습니다
+class AppInstaller {
+ weak var delegate: AppInstallerDelegate?
+
+ private lazy var networkManager: NetworkManager = {
+ let manager = NetworkManager()
+ manager.delegate = self // Self is strong reference, but manager doesn't retain self
+ return manager
+ }()
+}
+```
+
+### 스레딩
+- UI 업데이트는 항상 메인 큐에서 해 주세요.
+- 백그라운드 작업에는 알맞은 큐를 사용해 주세요.
+
+```swift
+// ✅ 좋아요
+DispatchQueue.global(qos: .userInitiated).async {
+ let result = self.processData()
+ DispatchQueue.main.async {
+ self.updateUI(with: result)
+ }
+}
+```
+
+### 옵셔널 처리
+- 안전한 언래핑 기법을 사용해 주세요.
+- 조기 반환이 필요하면 guard를 선호해 주세요.
+
+```swift
+// ✅ 좋아요
+guard let data = response.data,
+ let apps = try? JSONDecoder().decode([App].self, from: data) else {
+ completion(.failure(ParsingError.invalidResponse))
+ return
+}
+```
+
+## 도구와 자동화
+
+### SwiftLint
+SwiftLint를 사용하면 많은 포매팅 규칙을 자동으로 강제할 수 있어요.
+
+```yaml
+# .swiftlint.yml
+line_length: 120
+function_body_length: 60
+file_length: 400
+type_body_length: 300
+
+disabled_rules:
+ - trailing_whitespace
+
+opt_in_rules:
+ - empty_count
+ - force_unwrapping
+```
+
+기억해 주세요. 이 가이드는 코드의 가독성과 유지 보수성을 높이기 위한 거예요. 헷갈릴 때는 명확성과 기존 코드베이스와의 일관성을 최우선으로 해 주세요.
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/faq.mdx
index 0e28e5d7..c903c047 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/faq.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/faq.mdx
@@ -54,9 +54,9 @@ Wi-Fi와 WireGuard 설정에 대체 DNS가 설정되어 있지 않은지 확인
이 제한을 제거하고(365일 만료 기간도 얻으려면) 연간 $99의 Apple Developer 계정을 구매할 수 있습니다.
-또는 현재 [여기](https://github.com/SideStore/SideStore/releases/tag/nightly)에서 제공되는 nightly 빌드(작성 시점 기준 버전 0.5.9-nightly.2024.10.23.1+1e969a0)가 있으며, 이는 SparseRestore 익스플로잇을 사용하여 3개 앱 제한을 우회합니다. 현재 이는 iOS 18 개발자 베타 5 미만과 18.0.1 버전에서만 확실하게 작동합니다.
+또는 현재 LiveContainer를 사용할수 있으며, iOS 18 개발자 베타 5 미만과 18.0.1 버전에서는 SparseRestore 익스플로잇을 사용하여 3개 앱 제한을 우회할수 있습니다.
-이 기능 사용에 대한 튜토리얼은 [여기](advanced/sparserestore)에서 찾을 수 있습니다.
+이 기능 사용에 대한 튜토리얼은 [여기](advanced/alternative)에서 찾을 수 있습니다.
### 문제나 버그가 있거나 기능이나 사용성 개선을 요청하고 싶습니다
@@ -100,10 +100,6 @@ AltKit이 업데이트될 때 우리의 추가 사항이 포함된다면 그때
많은 사용자가 사용하는 오래된 Anisette 서버는 Apple ID 잠금을 유발하는 것으로 알려져 있습니다. 공식 Anisette 서버 중 하나를 사용하거나 자체 [anisette-v3-server](advanced/anisette)를 호스팅하세요.
-### 오류 -36607이 발생하는 이유는 무엇인가요?
-
-이는 Anisette 서버의 로그인 문제입니다. Anisette 서버를 변경하면 도움이 되는 경우가 있거나, 로그인이 성공할 때까지 계속 시도해볼 수 있습니다.
-
### AltStore/Sideloady 앱을 전송할 수 있나요?
네, 기기에서 원본 앱을 제거하지 마세요. SideStore로 들어가서 동일하거나 업데이트된 IPA를 사이드로드하면 데이터가 그대로 유지된 채로 SideStore의 앱 목록에 추가됩니다.
@@ -120,22 +116,6 @@ AltKit이 업데이트될 때 우리의 추가 사항이 포함된다면 그때
SideStore를 통해 사이드로드하면 데이터가 동일하게 유지될 것입니다. 다른 버전으로 전환하는 등록 토글이 없습니다. 또한 비공식 또는 nightly 빌드를 테스트할 때 데이터 전송을 보장할 수 없습니다.
-### 앱이 사라졌는데 어떻게 해야 할지 모르겠습니다
-
-당황하지 마세요! 기기에서 앱을 제거하지 않고 다시 사이드로드하면 데이터는 괜찮을 것입니다. 불행히도 비활성화된 앱은 사라졌을 수 있지만, SideStore를 새로고침하여 돌아오는지 확인해보세요.
-
-### 어떤 파일 형식으로도 페어링 파일을 선택할 수 없습니다
-
-페어링 파일의 확장자가 `.mobiledevicepairing` 또는 `.plist`로 끝나는지 확인하세요. 그렇지 않다면, 페어링 파일을 전송하기 전에 압축했는지 다시 확인하세요. 그렇지 않으면 전송 중에 파일이 손상될 수 있습니다. 또한 인증서로 SideStore에 서명할 때는 앱 내에서 페어링 파일을 선택할 수 없습니다. 페어링 파일을 "내 iPhone/iPad"의 파일 앱에서 SideStore 폴더의 루트 디렉토리로 이동하고 `ALTPairingFile.mobiledevicepairing`으로 이름을 변경해볼 수 있습니다. 파일 앱에서 SideStore 폴더가 보이지 않는다면, 전화를 컴퓨터에 연결하고 페어링 파일을 SideStore 앱의 파일로 드래그 앤 드롭할 수 있습니다. 위에서 언급한 이름으로 변경하세요. 대소문자를 구분한다는 점에 주의하세요.
-
-### DebugServer를 시작할 수 없습니다
-
-가끔 DebugServer가 작동하지 않을 때가 있습니다. 하지만 시도해볼 수 있는 해결책이 있습니다.
-
-**새로운 페어링 파일 만들기**
-
-새로운 페어링 파일을 사용하기 위한 과정을 시작하려면 설정 탭으로 이동하여 페어링 파일 재설정을 클릭하고 프롬프트를 수락하세요. 그런 다음 [페어링 파일 지침](installation/pairing-file)을 따르세요.
-
### 현재 알려진 문제점들
현재 문제가 발생하고 있고 우리가 이미 알고 있는지 확인하고 싶다면, GitHub 이슈 페이지를 확인하세요. 여기에는 알려진 문제점들과 일부 문제를 완화하는 방법이 나열되어 있습니다. 이 목록에 없는 일부 문제는 GitHub 이슈 섹션에 있을 수 있습니다. https://github.com/SideStore/SideStore/issues/490
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/installation/install.mdx
new file mode 100644
index 00000000..8f2e0990
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/installation/install.mdx
@@ -0,0 +1,34 @@
+---
+title: 설치
+description: 당신의 iDevice에 SideStore을 설치하기
+sidebar_position: 2
+---
+## SideStore 설치하기
+1. 당신의 iDevice를 케이블을 통해 컴퓨터에 연결해 주세요. 만약 신뢰 여부를 묻는 창이 뜬다면, 신뢰 버튼을 누르고 기기 비밀번호를 입력해 주세요.
+2. iloader를 열어주세요.
+3. 애플 계정으로 로그인을 해주세요. (연결된 당신의 기기와 계정이 똑같을 필요는 없어요)
+4. 당신의 iDevice를 선택해 주세요.
+5. "Install SideStore"를 선택해 주세요.
+
+### 당신의 iDevice에서
+따라오세요:
+1. 설정 앱에 들어가세요
+2. '일반'에 들어간 다음, 'VPN 및 기기 관리'에 들어가세요.
+3. 애플 계정 이메일 아래에 있는 "개발자 앱"을 승인해 주세요.
+4. '개인정보 보호 및 보안' 탭으로 이동해 주세요.
+5. 아래로 내린 다음, '개발자 모드'를 활성화해 주세요. 당신의 기기는 재시작 될거에요.
+6. StosVPN에 들어간 다음 'Connect' 버튼을 눌러 주세요.
+7. SideStore에 들어가 주세요.
+9. iloader에 사용했던 애플 계정으로 로그인해 주세요.
+10. "My Apps"로 이동해 주세요.
+11. SideStore 오른쪽에 있는 "n DAYS" 버튼을 눌러주세요. (n은 앱이 만료되기까지 남은 일수예요)
+12. 서명 인증서를 취소하거나 새로 생성하라는 메시지가 표시되면 "Yes" 또는 "Refresh Now"를 눌러주세요.
+
+이 과정이 성공하면, SideStore가 당신의 기기를 홈 화면으로 보내주고 알림도 뜰 겁니다. 몇 초 안에 SideStore를 다시 사용할 수 있어요.
+
+주의: iDevice를 업데이트하거나 초기화하면 페어링 파일이 만료돼서, 다시 가져와야 해요. 이 방법은 [이 가이드](../advanced/pairing-file)를 보면 됩니다. 이건 애플 소프트웨어 때문에 가끔 무작위로 만료될 수 있어요.
+
+iloader로 SideStore를 다시 설치하면, 인증서가 취소될 수도 있어서 다시 수동으로 갱신해야 해요.
+
+만약 같은 애플 계정으로 다른 기기에 SideStore를 설치 하고 싶으시다면 [이 단계](../advanced/alternative#altserver를-사용하여-동일-계정-내-여러-기기에서-sidestore-설정하기)를 따라가면 돼요.
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/installation/linux.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/installation/linux.mdx
deleted file mode 100644
index f869bc9d..00000000
--- a/i18n/ko/docusaurus-plugin-content-docs/current/installation/linux.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Linux에서 설치
-description: Linux를 사용하여 SideStore를 설치하는 방법
-sidebar_position: 5
----
-
-Linux에 SideStore(또는 다른 IPA)를 설치하려면, Docker가 설치되어 있는지 확인하세요. 시작하기 전에 StosVPN 및 기타 [필수 요구 사항](/docs/installation/prerequisites)이 완료되었는지 확인하세요!
-
-1. 컴퓨터에 usbmuxd와 Docker 또는 Podman이 설치되어 있는지 확인하세요.
-2. iDevice를 연결하세요. 경고 메시지가 표시되면 “신뢰”를 선택하고 비밀번호를 입력하세요.
-
-3. 다음 명령어를 사용하여 Docker 또는 Podman으로 Altcon을 실행하세요:
-Docker:
-```bash
-docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd ghcr.io/sidestore/altcon
-```
-Podman:
-```bash
-docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd ghcr.io/sidestore/altcon
-```
-3. Altcon이 장치와 페어링됩니다. 다른 메시지가 표시되면 '신뢰'를 선택하고 비밀번호를 다시 입력합니다.
-4. 기기에서 다음을 수행합니다:
- * Apple ID의 이메일로 "개발자 앱"을 승인합니다(설정의 "일반", "VPN 및 장치 관리"에서 찾을 수 있습니다).
- * 설정 앱을 엽니다.
- * '개인정보 보호 및 보안' 섹션으로 이동합니다.
- * 하단의 '개발자 모드'를 켭니다.
-5. SideStore를 열고 SideStore가 페어링 파일을 요청할 때까지 메시지가 표시되면 "허용"을 선택합니다. 이제 앱을 종료합니다.
-
-완료되면 [설치 후 지침](/docs/installation/post-install)을 따르세요.
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/installation/mac.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/installation/mac.mdx
deleted file mode 100644
index 067ab367..00000000
--- a/i18n/ko/docusaurus-plugin-content-docs/current/installation/mac.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: macOS에서 설치
-description: macOS를 사용하여 SideStore를 설치하는 방법
-sidebar_position: 4
----
-
-시작하기 전에 [필수 요구 사항](/docs/installation/prerequisites)에 있는 모든 단계를 완료하고 [페어링 파일](/docs/installation/pairing-file)을 준비했는지 확인하세요!
-
-1. [AltStore의 웹사이트](https://cdn.altstore.io/file/altstore/altserver.zip)에서 AltServer를 다운로드하세요. AltServer.app을 `Applications` 폴더로 복사한 후 실행하세요. 메뉴 막대에 아이콘으로 표시됩니다.
-2. [여기](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa)에서 SideStore IPA를 다운로드하세요.
-3. Option 키를 누른 상태로 AltServer 메뉴 막대 아이콘을 클릭하세요. "Sideload .ipa"를 클릭하고 SideStore IPA 파일을 선택하세요.
-4. 기기에서 다음을 수행합니다:
- * Apple ID의 이메일로 "개발자 앱"을 승인합니다(설정의 "일반", "VPN 및 장치 관리"에서 찾을 수 있습니다).
- * 설정 앱을 엽니다.
- * '개인정보 보호 및 보안' 섹션으로 이동합니다.
- * 하단의 '개발자 모드'를 켭니다.
-5. SideStore를 열고 SideStore가 페어링 파일을 요청할 때까지 메시지가 표시되면 "허용"을 선택합니다. 이제 앱을 종료합니다.
-
-완료되면 [설치 후 지침](/docs/installation/post-install)을 따르세요.
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
deleted file mode 100644
index 87b401b1..00000000
--- a/i18n/ko/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: 페어링 파일
-description: 페어링 파일은 SideStore의 기능에 필수적입니다.
-sidebar_position: 2
----
-
-idevice pair는 jitterbug pairing 파일을 생성하여 SideStore와 같은 프로그램이 내 장치와 원격으로 통신할 수 있도록 하는 프로그램입니다. 이 프로그램은 SideStore를 사용하는 데 필요하며, 그렇지 않으면 작동하지 않습니다.
-:::warning
-주의: iDevice를 업데이트하거나 초기화하면 페어링 파일이 만료되므로 새 파일을 생성해야 합니다. 이 또한 무작위로 발생하며 현재로서는 이 문제를 해결하기 위해 할 수 있는 조치가 없습니다.
-:::
-
-iDevice 페어링을 다운로드하세요:
-- [macOS](https://github.com/jkcoxson/idevice_pair/releases/latest/download/iDevicePair--macos-universal.dmg)
-- [Windows](https://github.com/jkcoxson/idevice_pair/releases/latest/download/iDevicePair--windows-x86_64.exe)
-- Linux ([x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/iDevicePair--linux-x86_64.AppImage) 또는 [Arch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/iDevicePair--linux-aarch64.AppImage))
-
-## 페어링 방법
-
-### macOS
-
-1. `iDevicePair--macos-universal.dmg`를 다운로드하세요. 파일을 열고 `iDevicePair` 를 `Applications` 폴더로 드래그하세요.
-2. 케이블로 기기를 컴퓨터에 연결하세요. 프롬프트가 나타나면 "신뢰"를 탭하고 비밀번호를 입력하세요.
-3. 기기를 잠금 해제하고 `iDevice Pair`를 열어 드롭다운 메뉴에서 기기를 선택하세요.
-4. 기기가 잠금 해제되어 있고 홈 화면이 열려있는지 확인한 후 "generate"을 선택하세요. 기기에 프롬프트가 나타나면 "신뢰"를 탭하세요. 페어링 파일이 생성됩니다.
-5. 기기가 여전히 홈 화면에 있는지 확인한 후 SideStore 섹션으로 스크롤하여 "install"를 선택하세요. "success"이라는 단어가 녹색으로 표시되어야 합니다.
-
-### Windows (64-bit)
-
-1. Apple 웹사이트에서 iTunes를 설치하세요 ([64비트](https://apple.com/itunes/download/win64) 또는 [32비트](https://apple.com/itunes/download/win32)).
-2. `iDevicePair--windows-x86_64.exe`를 다운로드하세요 (잃어버리지 않을 곳으로 이동하세요).
-3. 케이블로 기기를 컴퓨터에 연결하세요. 프롬프트가 나타나면 "신뢰"를 탭하고 비밀번호를 입력하세요.
-4. 기기를 잠금 해제하고 `iDevice Pair`를 열어 드롭다운 메뉴에서 기기를 선택하세요.
-5. 기기가 잠금 해제되어 있고 홈 화면이 열려있는지 확인한 후 "generate"을 선택하세요. 기기에 프롬프트가 나타나면 "신뢰"를 탭하세요. 페어링 파일이 생성됩니다.
-6. 기기가 여전히 홈 화면에 있는지 확인한 후 SideStore 섹션으로 스크롤하여 "install"를 선택하세요. "success"이라는 단어가 녹색으로 표시되어야 합니다.
-
-### Linux
-
-1. 컴퓨터에 usbmuxd가 설치되어 있는지 확인하십시오.
-2. 사용 중인 PC의 아키텍처에 맞는 버전의 iDevice pair를 다운로드하여 실행합니다.
-3. 케이블로 기기를 컴퓨터에 연결하세요. 프롬프트가 나타나면 "신뢰"를 탭하고 비밀번호를 입력하세요.
-4. 기기를 잠금 해제하고 `iDevice Pair`를 열어 드롭다운 메뉴에서 기기를 선택하세요.
-5. 기기가 잠금 해제되어 있고 홈 화면이 열려있는지 확인한 후 "generate"을 선택하세요. 기기에 프롬프트가 나타나면 "신뢰"를 탭하세요. 페어링 파일이 생성됩니다.
-6. 기기가 여전히 홈 화면에 있는지 확인한 후 SideStore 섹션으로 스크롤하여 "install"를 선택하세요. "success"이라는 단어가 녹색으로 표시되어야 합니다.
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/installation/post-install.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/installation/post-install.mdx
deleted file mode 100644
index e400327e..00000000
--- a/i18n/ko/docusaurus-plugin-content-docs/current/installation/post-install.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: 설치 후 지침
-description: 거의 다 왔어요. 몇 단계만 더 가면 됩니다!
-sidebar_position: 6
----
-SideStore를 설치하는 마지막 단계는 SideStore 자체에서 새로고침하는 것입니다.
-
-이렇게 하려면 다음을 수행해야 합니다:
-
-1. StosVPN에 연결하세요.
-2. SideStore를 엽니다.
-3. 아직 페어링하지 않았다면, 페어링 파일을 선택하세요.
-4. "My Apps"로 이동하세요.
-5. "x DAYS" 버튼을 선택하세요. (x는 만료까지 남은 일수입니다.) 서명 인증서에 대한 프롬프트가 나타나면 "Refresh Now"를 탭하세요. AltStore의 인증서를 취소하라는 프롬프트가 나타나면 "yes"를 탭하세요.
- * 성공하면 빈 Safari 탭이 열리거나 홈 화면으로 이동합니다. 이 작업을 수행하고 있다는 알림도 표시됩니다.
-
-만약 SideStore를 새로고침하지 않으면 만료를 유발하는 버그로 인해 SideStore를 다시 설치해야 합니다. 이 작업을 자동으로 수행하도록 할 계획이 있지만 현재는 수동으로 수행해야 합니다.
-
-만약 같은 Apple ID로 AltServer를 사용하여 SideStore를 재설치하거나 다른 기기에 설치하면 인증서가 취소되며, 위에서 설명한 대로 수동으로 다시 새로고침해야 합니다 (해당되는 경우 두 기기 모두에서).
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
index 347b509f..5820c744 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
@@ -4,36 +4,45 @@ description: '설치의 첫 단계입니다.'
sidebar_position: 1
---
-SideStore의 설치 과정은 다소 까다로워 보일 수 있지만, ***단 한 번만*** 컴퓨터를 이용하면 얼마 지나지 않아 당신의 기기에 SideStore가 설치되어 있을 것입니다.
+SideStore의 설치 과정은 다소 까다로워 보일 수 있지만, ***단 한 번만*** 컴퓨터를 이용하면 얼마 지나지 않아 당신의 기기에 SideStore가 설치되어 있을 것이에요!
-## 필수 요구 사항
+## 요구 사항
+
+SideStore를 설치하기 위해서는 아래의 요구사항을 충족해야 해요:
-SideStore를 설치하기 위해서는 아래의 요구사항을 충족해야 합니다:
- [비밀번호가 설정된](https://support.apple.com/ko-kr/119586) iOS 또는 iPadOS 14 이상을 사용하는 iPhone 또는 iPad
-- [Windows](installation/windows.mdx), [macOS](installation/mac.mdx), 또는 [Linux (Linux 지원은 실험적입니다)](installation/linux.mdx) 컴퓨터
-- Apple ID
-- StosVPN 앱
-- 시간 (이 과정은 빠르게 진행되지만, [문제 해결](/docs/troubleshooting/)을 위해 시간을 남겨두어야 합니다.)
+- 컴퓨터 (한번만)
+- Apple 계정
+- Wi-Fi
+- 시간 (이 과정은 빠르게 진행되지만, [문제 해결](/docs/troubleshooting/)을 위해 시간을 남겨두어야 해요.)
+
+## 기기 준비하기
+
+### 당신의 iPhone/iPad:
+
+SideStore는 기기 내 VPN을 활용하여 내부 서비스와 통신해요.
+
+1. StosVPN을 [공식 App Store](https://apps.apple.com/kr/app/stosvpn/id6744003051)에서 다운로드해 주세요.
+2. VPN을 활성화해 주세요.
-iOS/iPadOS 16 이상을 사용하는 기기는 *반드시* 개발자 모드가 활성화되어 있어야 합니다. 다음을 수행하세요:
-1. 설정 앱을 실행하세요.
-2. '개인정보 보호 및 보안' 항목으로 이동하세요.
-3. 하단의 개발자 모드를 활성화하세요.
+StosVPN은 SideStore에서 앱을 설치하거나 업데이트 또는 서명을 갱신 할 때마다 활성화되어 있어야 해요.
-> **주의:** SideStore를 성공적으로 설치한 후에만 '개발자 모드' 옵션이 표시됩니다.
+## 당신의 Mac에서
+1. iloader를 다운로드 하고 설치해 주세요. ([M시리즈](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg) 또는 [Intel](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg)).
+2. 터미널을 연 후, `sudo xattr -c ./Applications/iloader.app`를 입력해 주세요. 그리고 만약 비밀번호를 물어보는 창이 나타나면 비밀번호를 입력해 주세요.
-## StosVPN
-SideStore는 기기 내 VPN을 사용하여 SideStore가 내부 서비스와 통신할 수 있도록 도와줍니다.
+## 당신의 Windows PC에서
+1. [iTunes](https://apple.co/ms)를 다운로드하고 설치해 주세요.
+2. iloader 인스톨러를 다운로드해 주세요. ([exe](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe) 또는 [msi](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)).
+3. 인스톨러를 실행해 주세요.
-1. StosVPN을 [공식 App Store](https://apps.apple.com/kr/app/stosvpn/id6744003051)에서 다운로드하세요.
-2. VPN을 활성화하세요.
+## 당신의 Linux 머신에서
+1. `usbmuxd`를 다운로드 하고 설치해 주세요. (당신이 쓰는 Linux 배포판에는 기본으로 깔려 있을 수도 있어요. 아니면 패키지 관리자로 설치하면 돼요.)
+2. 당신의 Linux 배포판에 맞는 iloader를 다운로드하고 설치해 주세요. ([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [기타](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)).
-StosVPN은 SideStore에서 앱을 설치하거나 업데이트할 때마다 활성화되어 있어야 합니다.
## 다음 단계
-다음으로, 운영 체제에 맞는 설치 방법을 따라 진행하세요.
-- [macOS](mac)
-- [Windows (64-bit)](windows)
-- [Linux (실험적 지원)](linux)
+다음으로 SideStore을 설치하기 위해 다음 가이드를 따라가 주세요!
+- [설치](install)
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/installation/windows.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/installation/windows.mdx
deleted file mode 100644
index c64c0930..00000000
--- a/i18n/ko/docusaurus-plugin-content-docs/current/installation/windows.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Windows에서 설치
-description: Windows를 사용하여 SideStore를 설치하는 방법
-sidebar_position: 3
----
-
-Microsoft 스토어에서 설치되지 않은 [iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe) 및 iTunes ([64비트](https://apple.com/itunes.download/win64) 또는 [32비트](https://apple.com/itunes.download/win32))가 설치되어 있는지 확인하세요. (iTunes는 페어링 가이드 섹션에서 이미 설치되어 있어야 합니다.) 시작하기 전에 [필수 요구 사항](/docs/installation/prerequisites)에 있는 모든 단계를 완료하고 [페어링 파일](/docs/installation/pairing-file)을 준비했는지 확인하세요!
-Microsoft 스토어가 아닌 버전의 iCloud는 2022년 9월 중순에 Apple 웹사이트에서 삭제되었습니다. 위의 링크는 여전히 AltServer와 호환되며 Apple 서버에서 직접 사용할 수 있는 이전 버전의 iCloud로 연결됩니다.
-
-1. [AltStore의 웹사이트](https://cdn.altstore.io/file/altstore/altinstaller.zip)에서 `altinstaller.zip`을 다운로드하세요. `altinstaller.zip`을 압축 해제하고 `setup.exe`를 실행하세요. Windows 작업 표시줄에서 "AltServer"를 검색하고 "관리자 권한으로 실행"을 클릭하세요. 프라이빗 네트워크 접근 권한을 요청하면 허용하세요. AltStore는 트레이에 아이콘으로 표시됩니다.
-2. [여기](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa)에서 SideStore IPA를 다운로드하세요.
-3. Shift를 누른 상태로 AltServer 트레이 아이콘을 클릭하세요. "Sideload .ipa"를 클릭하고 `sidestore.ipa`를 선택하세요.
-4. 기기에서 다음을 수행합니다:
- * Apple ID의 이메일로 "개발자 앱"을 승인합니다(설정의 "일반", "VPN 및 장치 관리"에서 찾을 수 있습니다).
- * 설정 앱을 엽니다.
- * '개인정보 보호 및 보안' 섹션으로 이동합니다.
- * 하단의 '개발자 모드'를 켭니다.
-5. SideStore를 열고 SideStore가 페어링 파일을 요청할 때까지 메시지가 표시되면 "허용"을 선택합니다. 이제 앱을 종료합니다.
-
-완료되면 [설치 후 지침](/docs/installation/post-install)을 따르세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/release-notes.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/release-notes.mdx
index 89a6c9fc..219ee9da 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/release-notes.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/release-notes.mdx
@@ -6,6 +6,46 @@ sidebar_position: 2
# Stable 버전 노트
+## 0.6.2
+
+### 변경사항
+- WireGuard 지원을 중단하고 완전히 StosVPN으로 전환했어요.
+- AltStore 2.0의 변경사항을 더 많이 병합했어요.
+- 여러 기기에서 사용할 수 있도록 Apple ID 인증서를 가져오기/내보내기 기능을 추가했어요. 사용 방법은 관련 PR에 적혀 있어요.
+- URL 스킴을 추가하고 인증서 내보내기를 지원하도록 했어요 (LiveContainer용).
+- 앱 설치가 75% 근처에서 멈추던 문제를 고쳤어요.
+- 확장 기능에서 메인 App ID 프로필을 재사용할 수 있는 옵션을 추가했어요. (앱당 하나의 App ID만 사용)
+- 여러 타입 관련 문제를 수정하고 UI도 업데이트했어요.
+
+### 변경된 내용:
+- AltStore 2.0 WIP 브랜치를 리베이스했어요. (#794)
+- [Refresh] 설치 관련 기능을 제거하고, 프로비저닝 프로필 갱신만 남겼어요. (#846)
+- iOS 환경에서 DisableAppLimit 스위치가 자동으로 꺼지던 문제를 고쳤어요. (#850)
+- trustedapps.json을 업데이트했어요. (#853)
+- 설치 중 업데이트 로직에서 override 키워드 누락 문제를 고쳤어요. (#857)
+- 저장소 앱 미리보기가 제대로 표시되지 않던 문제를 수정했어요. (#871)
+- 여러 소스를 한 번에 추가하고 저장 전에 스테이징할 수 있는 기능을 추가했어요. (#888)
+- CoreData 마이그레이션 관련 문제(xcdatamodel, xcmappingmodels)를 고쳤어요. (#894)
+- 앱 내 업데이트 설명을 전체 마크다운으로 렌더링하도록 했어요. (#897)
+- hasUpdate 비교 부분의 오타를 고쳤어요. (#900)
+- SettingsViewController.swift를 업데이트했어요. (#915)
+- 0.5.9 → 0.6.0 마이그레이션 중 발생하는 문제들을 수정 중이에요. (#920)
+- "levaraging" 오타를 "leveraging"으로 고쳤어요. (#926)
+- EM Proxy 부분에 StosVPN을 추가했어요. (#940)
+- StosVPN 통합: em_proxy와 EmotionalDamage 모듈을 제거하고 StosVPN으로 대체했어요. (#945)
+- StosVPN이 셀룰러에서도 동작할 수 있도록, NO WIFI/VPN 오류를 띄우던 minimuxer 체크를 비활성화했어요. (#935)
+- iOS 17.4+에서 JIT과 마운팅을 추가했어요. (#953)
+- 인증서 내보내기 기능을 추가했어요. (#959)
+- Pairing File Export URL 콜백을 추가하고 WireGuard를 StosVPN으로 대체했어요. (#962)
+- AltStore 관련 전면 문구들을 변경했어요. (#987)
+- idevice_pair 관련 OperationError.swift를 업데이트했어요. (#995)
+- 인증서 가져오기/내보내기 기능을 추가했어요. (#1008)
+- 페어링 파일 문서 링크를 수정했어요. (#1011)
+- 앱 확장 기능에서 메인 번들의 프로필을 사용할 수 있도록 옵션을 추가했고 AltSign 및 libmd를 업데이트했어요. (#1012)
+- 새로고침 시 메인 프로필을 사용하도록 했어요. (#1013)
+
+
+
## 0.6.1
### 변경사항
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
index 443b0201..7ff72729 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
@@ -16,7 +16,7 @@ description: SideStore에서 발견되는 일반적인 문제.
연결 문제 또는 페어링 파일이 잘못되었습니다.
#### 해결 방법
1. 재연결 시도
-2. idevice pair 를 사용하여 새 페어링 파일을 생성하고 설정 메뉴를 통해 가져옵니다. 자세한 내용은 [페어링 파일 지침](/docs/installation/pairing-file)을 참조하세요.
+2. idevice pair 를 사용하여 새 페어링 파일을 생성하고 설정 메뉴를 통해 가져옵니다. 자세한 내용은 [페어링 파일 지침](/docs/advanced/pairing-file)을 참조하세요.
### No WiFi or VPN Connection
#### 발생 원인
@@ -27,7 +27,7 @@ description: SideStore에서 발견되는 일반적인 문제.
3. 다시 시도하세요 (보통 버튼을 연타하면 도움이 됩니다.)
4. SideStore를 다시 시작하세요.
5. StosVPN 재시작
-6. idevice pair 를 사용하여 새 페어링 파일을 생성하고 설정 메뉴를 통해 가져옵니다. 자세한 내용은 [페어링 파일 지침](/docs/installation/pairing-file)을 참조하세요.
+6. idevice pair 를 사용하여 새 페어링 파일을 생성하고 설정 메뉴를 통해 가져옵니다. 자세한 내용은 [페어링 파일 지침](/docs/advanced/pairing-file)을 참조하세요.
### 설치 중 중간에 SideStore가 멈춤
#### 발생 원인
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
index f2d1206e..b7906d72 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
@@ -75,7 +75,7 @@ SideStore에 로그인하는 동안 멈추거나 오류 코드가 발생하는
3. StosVPN에서 VPN이 연결되었는지 확인하세요.
4. StosVPN을 껐다가 다시 켜고 SideStore에서 몇 초간 기다린 후 새로고침을 시도하세요.
5. 새로운 페어링 파일을 생성합니다.
- - 위의 방법 중 어느 것도 효과가 없다면 페어링 파일이 손상되었을 가능성이 높습니다. 새 페어링 파일을 만드는 방법에 대한 설명서를 참조할 수 있습니다[여기](/docs/installation/pairing-file).
+ - 위의 방법 중 어느 것도 효과가 없다면 페어링 파일이 손상되었을 가능성이 높습니다. 새 페어링 파일을 만드는 방법에 대한 설명서를 참조할 수 있습니다[여기](/docs/advanced/pairing-file).
- 새 페어링 파일을 생성한 후 SideStore 설정으로 이동하여 "Reset Pairing File"을 누른 다음, 생성한 새 페어링 파일을 선택합니다.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/alternative.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
new file mode 100644
index 00000000..81f4a251
--- /dev/null
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
@@ -0,0 +1,43 @@
+---
+title: Bypass av 3-appsgränsen
+description: En guide för att installera fler än tre appar i SideStore med SparseRestore-exploiten.
+---
+
+:::note
+
+SparseRestore-exploiten "Bypass 3 app limit" **fungerar bara på iOS/iPadOS-versioner mellan 17.0 och 18.1 beta 4 (exklusive 17.7.1)**. Om du inte kör någon av dessa versioner och det inte fungerar, **be inte om support för det**.
+
+:::
+
+## Förkrav
+* En iDevice som kör en version som stöds av SparseRestore-exploiten (se notisen ovan).
+* Minst en ledig app-plats.
+* SideStore version 0.5.9 eller senare. Senaste versionerna finns [här](https://github.com/SideStore/SideStore/releases).
+* För att köra exploiten måste **Hitta min** vara avstängt på iDevice under hela processen. Annars fungerar det inte. Så här stänger du av funktionen:
+ - Öppna Inställningar.
+ - Tryck på ditt namn överst.
+ - Tryck på Hitta min.
+ - Tryck på Hitta min iPhone/iPad.
+ - Stäng av Hitta min iPhone/iPad.
+ - Du kan behöva ange ditt Apple-ID-lösenord för att bekräfta.
+
+ > **Obs:** Det kan ändå vara omöjligt att stänga av Hitta min om Stolen Device Protection är aktiv. Stäng av Stolen Device Protection innan du försöker stänga av Hitta min.
+
+## Steg
+1. Installera SparseBox. Det kan göras på flera sätt men i denna guide använder vi SideStore. Senaste versionen finns [här](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip) (packa upp artifact.zip för att få .ipa-filen).
+
+2. Markera "Disable App Limit" i SideStore och stäng SideStore helt (inte bara i bakgrunden), öppna sedan SparseBox.
+
+3. Slå på StosVPN, välj din pairing-fil och tryck på "Bypass 3-app limit". En logg visas. Vänta tills den säger `idevicebackup2 exited with code -18` eller `idevicebackup2 exited with code 2` och stäng appen. Du behöver inte trycka Apply.
+
+4. Öppna SideStore igen och scrolla ner i inställningarna. Tryck på "clear cache" så att SideStore kan upptäcka exploiten.
+
+5. Testa att exploiten fungerar (du kan behöva installera fler än en app beroende på hur många lediga platser du hade). Om du får ett fel om gränsen, öppna SideStore igen eller kör exploiten på nytt. Om installationen fungerar kan du nu ha fler än tre appar installerade samtidigt.
+
+## Övrigt
+På grund av vissa begränsningar måste du köra exploiten varje gång du vill lägga till tre extra appar.
+
+Om du behöver Hitta min för andra syften kan du slå på den igen nu. Men om du vill installera eller uppdatera fler appar måste du stänga av funktionen igen.
+
+## Alternativ
+Om exploiten inte fungerar eller om din iDevice kör en version som inte stöds finns ett alternativ för att använda fler än tre appar: [LiveContainer](https://livecontainer.github.io/), utvecklat av Duy Tran Khanh ([khanhduytran0](https://github.com/khanhduytran0)) som även gjort SparseBox. LiveContainer kör iOS-appar i containers i appen i stället för att installera dem separat och kan i vissa fall vara enklare än SparseRestore. GitHub-sidan finns [här](https://github.com/khanhduytran0/LiveContainer).
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/anisette.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
index be905ee6..b04c1240 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
@@ -4,86 +4,84 @@ description: En guide om anisette-servrar.
---
:::note
-Att använda någon SideStore-version efter 0.4.0 gör det osannolikt att ditt konto låses, eftersom stöd för v3-anisette-servrar lades till då.
+Om du använder en SideStore-version senare än 0.4.0 är det osannolikt att ditt konto låses, eftersom stöd för anisette-servrar av v3 lades till då.
-Därför rekommenderas det **starkt** att använda en v3-server för normal användning av SideStore, om din version stödjer det.
+Vi **rekommenderar starkt** att du använder en v3-server för normal SideStore-användning om din version stödjer det.
:::
-Anisette-data är information som används i app-signeringsprocessen och som behöver genereras varje gång du installerar eller uppdaterar appar. SideStore hämtar denna information från en server som efterliknar en Mac och skickar tillbaka anisette-data åt dig. Ingen kontoinformation skickas någonsin till servern i denna process.
+Anisette-data används i signeringsprocessen och måste genereras varje gång du installerar eller uppfräschade appar. SideStore hämtar informationen från en server som låtsas vara en Mac och skickar tillbaka anisette-datan. Kontoinformation skickas aldrig till servern.
-När många använder samma Anisette-server (specifikt en v1-server) triggar det Apples säkerhet, och låser de konton som använde den maskinen. Detta är anledningen till att vi rekommenderar att använda ett separat engångs-Apple-ID istället för ditt huvudkonto.
+När många använder samma anisette-server (framför allt en v1-server) triggar det Apples säkerhet och låser kontona som använde maskinen. Därför rekommenderade vi förr att du använder ett separat "burner"-Apple-ID i stället för ditt huvudkonto.
-Vårt team har arbetat fram bättre metoder för att undvika låsta konton (i form av _anisette-v3_). Men om du använder en äldre version av SideStore är det ett utmärkt sätt att undvika låsta konton att hosta din egen anisette-server. Detta görs otroligt enkelt eftersom vår nuvarande server är öppen källkod och anpassad för Docker-miljöer. Det innebär att vi kan driftsätta en server med enbart GitHub-länken.
+Teamet har tagit fram bättre sätt att undvika låsta konton (i form av _anisette-v3_). Om du ändå kör en äldre SideStore-version är det ett bra alternativ att hosta en egen anisette-server. Det är enkelt eftersom vår server är open source och byggd för Docker-miljöer, så det räcker att ha GitHub-länken för att köra upp servern.
## Distribuera på Render
-[Render](https://render.com/) är en tjänst för att enkelt skapa servrar. Den stödjer att ladda serverkällor från GitHub. Gratisnivån är ganska begränsad vad gäller resurser, men servern kan köras utan problem.
-
-På grund av att för många använder samma GitHub-URL behöver du först forka Git-repositoriet själv.
-
-1. [Registrera dig](https://github.com/signup) för ett GitHub-konto om du inte redan har ett.
-2. [Öppna](https://github.com/Dadoum/anisette-v3-server) Git-repositoriet.
-3. Klicka på "Fork" uppe till höger och forka repositoriet till ditt konto.
-4. När det forkade repositoriet har skapats, klicka på den gröna "Code"-rullgardinsmenyn uppe till höger och kopiera .git-URL:en.
-
-* Spara denna för senare.
-
-När detta är gjort kan du skapa Render-servern.
-
-1. [Registrera dig](https://dashboard.render.com/register/) för ett konto.
-2. Skapa en [ny webbservice](https://dashboard.render.com/select-repo?type=web).
-3. Scrolla ned till **Public Git repository** och klistra in URL:en du kopierade tidigare.
-4. Klicka på "Continue" och fyll i formuläret:
- * **Name** – spelar ingen roll
- * **Region** – närmast dig
- * **Branch** – main (standard)
- * **Root Directory** – tomt (standard)
- * **Environment** – Docker (standard)
- * **Instance Type** – Free
-5. Vänta på att servern byggs. Du kommer att se följande när det är klart:
-
- ```
- Machine requires provisioning... done !
- Your service is live 🎉
- ```
-
- *Om byggnationen misslyckas av någon anledning, klicka på **Manual Deploy**, sedan **Deploy latest commit**.*
-6. Hitta länken till din nya server högst upp på sidan:
-
- ```
- https://[your-server-name].onrender.com
- ```
-
-## Skapa en anpassad anisette-serverlista
-
-Sedan version 0.5.8 släpptes använder SideStore ett system med anisette-serverlistor så att officiellt godkända anisette-servrar kan läggas till enklare. Detta innebär att det krävs lite extra arbete för att använda din egen server utan att behöva be om att få den tillagd i den officiella listan.
-
-Om du vill behålla alternativet att använda de inkluderade servrarna, gör så här:
-1. Gå [hit](https://servers.sidestore.io/servers.json) för att hämta den aktuella serverlistan.
-2. Gå till en filhostingstjänst du väljer för att hosta filen på internet. Vi rekommenderar att använda GitHub Pages eftersom det är enklare att redigera i framtiden, och det är den tjänst som används som exempel i denna guide. Om du har ett eget sätt att hosta, anpassa följande efter din setup.
-3. Om du redan har en GitHub Pages-sajt konfigurerad, hoppa till det sjätte delsteget. Annars gör du följande:
- * Skapa ett nytt GitHub-repositorium via plusknappen (+) uppe till höger på skrivbordsversionen, via profilikonen > Create new på mobil, eller via [denna sida](https://github.com/new).
- * Sätt namnet till `[ditt GitHub-användarnamn].github.io`, bocka i 'Initialize this repository with a README', och ställ in övriga inställningar som du önskar.
- * När det är skapat, gå till fliken Settings och navigera till Pages-sektionen under Code and automation.
- * Ställ in Build and deployment under Source till 'Deploy from branch'.
- * Om det inte är automatiskt valt, välj Branch 'main'.
- * Återvänd till fliken Code och klicka på 'Add files', sedan 'Upload files', och välj filen `servers.json` som du laddade ner tidigare.
- * När den är uppladdad, klicka på filen och tryck på Edit-knappen.
- * Scrolla ner till den sista servern i listan och lägg till ett kommatecken efter den sista serverns avslutande måsvingeparentes (`}`), och lägg sedan till din egen server enligt följande format:
-
- ```json
- {
- "name": "[något identifierbart som ett användarnamn]", // spelar egentligen ingen roll om du inte delar denna serverlista med någon annan
- "address": "[din servers URL]"
- }
- ```
- * Commit:a (bekräfta) ändringarna och navigera sedan till
- `https://[ditt GitHub-användarnamn].github.io/[där du placerade filen]/servers.json`.
- Om filen laddas är du redo att gå vidare till nästa avsnitt. Annars kan du behöva vänta upp till 10 minuter för att din sajt ska bli korrekt uppsatt innan du försöker igen.
-
-Om du enbart vill använda din egen server, följ stegen ovan, men istället för att hämta den officiella `server.json`, skapa din egen med detta format:
-
-```json
+[Render](https://render.com/) är en tjänst för att skapa servrar enkelt. Den kan hämta källkod direkt från GitHub. Gratisnivån har begränsade resurser, men servern körs utan problem där. (Du måste uppge ett kredit-/betalkort för identifikation, men tjänsten är gratis.)
+
+Eftersom för många använder samma GitHub-URL måste du forka GitHub-repot själv.
+
+1. [Registrera](https://github.com/signup) ett GitHub-konto om du saknar ett.
+2. [Öppna](https://github.com/Dadoum/anisette-v3-server) GitHub-repot.
+3. Klicka på "Fork" uppe till höger och forka repot till ditt konto.
+4. När forken skapats klickar du på gröna "Code" uppe till höger och kopierar .git-URL:en.
+
+*Spara den här adressen till senare.*
+
+När det är klart kan du skapa servern på Render.
+
+1. [Registrera](https://dashboard.render.com/register/) ett konto.
+2. Skapa en [New Web Service](https://dashboard.render.com/select-repo?type=web).
+3. Scrolla till **Public Git repository** och klistra in URL:en du kopierade.
+4. Klicka på "Continue" och fyll i formuläret:
+ * **Name** - valfritt
+ * **Region** - det som är närmast dig
+ * **Branch** - main (förvalt)
+ * **Root Directory** - lämna tomt (förvalt)
+ * **Environment** - Docker (förvalt)
+ * **Instance Type** - Free
+
+5. Vänta tills servern har byggts. När den är klar ser du:
+
+```
+Machine requires provisioning... done !
+Your service is live 🎉
+```
+
+*Om bygget misslyckas, klicka på **Manual Deploy** och sedan **Deploy latest commit**.*
+
+6. Länken till din server finns längst upp på sidan:
+
+```
+https://[ditt-server-namn].onrender.com
+```
+
+## Skapa en egen anisette-serverlista
+
+Sedan version 0.5.8 använder SideStore ett system med anisette-serverlistor så att godkända servrar kan läggas in enklare. Det innebär att du behöver göra lite extra om du vill använda din egen server utan att be oss att lägga till den officiellt.
+
+Vill du behålla möjligheten att använda de inbyggda servrarna följer du stegen nedan:
+1. Hämta den aktuella listan [här](https://servers.sidestore.io/servers.json).
+2. Använd en filhostingtjänst efter eget val för att lägga upp filen. Vi rekommenderar GitHub Pages eftersom det är enkelt att uppdatera senare, och det är den tjänst vi använder i guiden. Har du en annan lösning kan du anpassa stegen därefter.
+3. Om du redan har en GitHub Pages-sida går du vidare till steg sex, annars gör du så här:
+* Skapa ett nytt GitHub-repo via plusknappen (+) uppe till höger på dator, profilikonen > Create new i mobilappen eller via [denna sida](https://github.com/new).
+* Döp repot till [ditt GitHub-användarnamn].github.io, markera "Initialize this repository with a README" och ställ in övriga alternativ som du vill.
+* Gå till fliken Settings och sedan Pages under Code and automation.
+* Ställ in Build and deployment under Source på "Deploy from branch".
+* Välj Branch "main" om det inte sker automatiskt.
+* Tillbaka på Code-fliken väljer du "Add files", sedan "Upload files" och laddar upp filen "servers.json" du hämtade tidigare.
+* När den är uppladdad klickar du på filen och trycker Edit.
+* Scrolla ner till sista servern i listan, lägg till ett kommatecken efter den sista klammern ('}') och lägg sedan till din egen server i formatet:
+```
+{
+ "name": "[något identifierbart som ett användarnamn]", // spelar bara roll om du delar listan
+ "address": "[adress till din server]"
+}
+```
+* Commita ändringarna och gå till https://[ditt GitHub-användarnamn].github.io/[sökväg till filen]/servers.json. Laddas filen in kan du fortsätta, annars kan du behöva vänta upp till 10 minuter på att sajten aktiveras.
+
+Vill du bara använda din egen server följer du samma steg men skapar en egen servers.json i stället för att kopiera den officiella. Använd formatet:
+```
{
"servers": [
{
@@ -92,23 +90,18 @@ Om du enbart vill använda din egen server, följ stegen ovan, men istället fö
}
]
}
-````
+```
+och fortsätt sedan som vanligt.
+
+## Använd servern i SideStore
-## Använd din server med SideStore
+För att använda din nya serverlista i SideStore gör du så här:
1. Öppna fliken Settings i SideStore.
-2. Scrolla ner till botten och tryck på 'Anisette Servers'.
-3. Tryck på list-URL\:en och ersätt den med URL\:en till din serverlista.
-4. Tryck på 'Refresh Servers' och välj din egen server från den uppdaterade listan.
+2. Scrolla längst ner och tryck på "Anisette Servers".
+3. Tryck på listans URL och ersätt den med URL:en till din lista.
+4. Tryck på "Refresh Servers" och välj din server i den uppdaterade listan.
## Klart!
-SideStore kommer nu att använda din nya anpassade anisette-server.
-
-## Länkar:
-
-[
](https://uptime.sidestore.io/status/all)
-[Alla officiella anisette-servrars drifttid](https://uptime.sidestore.io/status/all)
-
-[
](https://uptime.sidestore.io/status/ss)
-[Vår officiella anisette-servers drifttid](https://uptime.sidestore.io/status/ss)
\ No newline at end of file
+SideStore använder nu din anpassade anisette-server.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
index 9a5668f7..aa7cd40c 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
@@ -5,21 +5,20 @@ description: En guide om anpassade appkällor.
# Skapa en källa
-SideStore är helt kompatibelt med AltSources. Den officiella AltStore [källdokumentationen](https://faq.altstore.io/developers/make-a-source) ger alla detaljer du behöver för att skapa din egen AltSource. AltSources låter din publik bläddra bland, installera och uppdatera alla dina tillgängliga appar enkelt både i AltStore och SideStore.
+SideStore är fullt kompatibel med AltStore Sources (AltSources). Den officiella AltSource-[dokumentationen](https://faq.altstore.io/developers/make-a-source) innehåller allt du behöver för att skapa en egen AltSource. AltSources gör det lätt för din publik att se, installera och uppdatera alla appar du tillhandahåller.
-När du redigerar din källa rekommenderas det starkt att skapa och granska ett utkast av dina ändringar med hjälp av [AltSource Browser](https://altsource.by.lao.sb/browse) för att se en visuell förhandsvisning av din källa och rätta eventuella fel innan du slutför och publicerar ändringarna.
+Här är några rekommenderade tredjepartsverktyg som hjälper dig att skapa eller granska AltSources:
+- Du kan använda communityverktyget [AltStudio](https://altstudio.app/) (pågår) för att automatiskt generera en AltSource från en IPA. (Obs! Efter att du skapat källan måste du ta bort fälten marketplaceID och Build som genereras som standard, annars tror SideStore att källan är notariserad och hindrar den från att läggas till.)
+- Du kan använda communityverktyget [AltSource Browser](https://altsource.by.lao.sb/browse/) för att förhandsgranska ändringar i en AltSource innan du publicerar dem, vilket gör det enklare att rätta fel i tid.
# Distribuera din källa
-Du kan skapa en länk som automatiskt lägger till din AltSource genom att använda denna mall:
+Du kan skapa en länk som automatiskt lägger till din AltSource med den här mallen:
```
-
-sidestore://source?url=\[source url]
-
+sidestore://source?url=[source url]
```
-För mer information, se [URL-schema](/docs/advanced/url-schema). Det är ofta hjälpsamt att skapa länken till din AltSource i detta format och sedan använda en tjänst som `tinyurl.com` för förkortning. Observera dock att om en användare försöker öppna en sidestore://-länk utan att ha SideStore installerat så kommer appen att krascha, så lite dokumentation kan vara hjälpsamt.
+Mer information finns under [URL-schema](/docs/advanced/url-schema). Det är ofta praktiskt att skapa länken till din AltSource i det här formatet och sedan korta den via exempelvis `tinyurl.com`. Observera att om en användare försöker öppna en `sidestore://`-länk utan att SideStore är installerat kraschar appen, så komplettera gärna med dokumentation.
## Klart!
-Här är några bra befintliga AltSources: [officiella AltStore](https://apps.altstore.io), [SideStore Community](https://github.com/SideStore/Community-Source), [StikJIT](https://raw.githubusercontent.com/StephenDev0/StikJIT/refs/heads/main/repo.json) och [DolphiniOS](https://altstore.oatmealdome.me).
-```
+Här är några bra befintliga AltSources att klistra in i SideStore: [SideStore Community Source](https://github.com/SideStore/Community-Source), [officiella AltStore Source](https://apps.altstore.io), [LiveContainer Source](https://raw.githubusercontent.com/LiveContainer/LiveContainer/refs/heads/main/apps.json) och [DolphiniOS Source](https://altstore.oatmealdome.me).
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/jit.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/jit.mdx
index 85861466..f3b473bf 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/jit.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/jit.mdx
@@ -1,52 +1,50 @@
---
title: Aktivera JIT
-description: En handledning om hur man aktiverar Just-in-Time (JIT) kompilering för appar som kräver det.
+description: En guide för att slå på Just-in-Time-kompilering (JIT) för appar som kräver det.
---
:::note
+iOS 26 har återigen brutit JIT. En uppdatering av StikDebug med en fix är släppt men stödet är begränsat. Vid skrivande stund (10 nov) stöds bara:
+* UTM
+* Amethyst
+* MeloNX
+* maciOS
+* DolphiniOS
+* Geode
-Det finns många metoder för att aktivera JIT, såsom AltJIT, SideJITServer med flera. Den här handledningen täcker användningen av StikJIT/StikDebug, eftersom det är den metod vi för närvarande rekommenderar. Som ett alternativ inkluderar SideStore 0.6.2-nightly.2025.04.15 även uppdateringar till minimuxer, vilket ger inbyggd JIT-funktionalitet liknande StikDebug. För att använda detta, se bara till att du är ansluten till StosVPN och Wi-Fi, eller med mobildata och Wi-Fi avstängt.
-:::
-
-## Förutsättningar
-* En iDevice med iOS/iPadOS 17.4 eller senare, exklusive 18.4b1. Om du är på 17.0–17.3 måste du använda ett alternativ som [SideJITServer](https://github.com/nythepegasus/SideJITServer)
-* Minst en ledig app-slot för StikJIT
-
-## Installera StikJIT med SideStore
+Håll koll på våra announcements-kanaler i Discord och på [idevice-serverns](https://discord.gg/mACqxMxP3X) announcements- och compatibility-kanaler för uppdateringar.
-1. **Hämta StikJIT:**
- Lägg till StikJIT AltSource i SideStore [här](sidestore://source?url=https://raw.githubusercontent.com/StephenDev0/StikJIT/refs/heads/main/repo.json) (du måste ha SideStore installerat, annars fungerar inte länken).
+Det finns flera sätt att aktivera JIT beroende på iOS-version. Den här guiden täcker StikDebug (tidigare StikJIT), som är metoden vi rekommenderar just nu. Mer information finns i [StikDebugs officiella pairing-guide](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
-2. **Installera:**
- Använd SideStore för att installera StikJIT.
+Som alternativ innehåller SideStore 0.6.2 uppdateringar i minimuxer som ger inbyggd JIT-funktionalitet liknande StikDebug. För att använda den behöver du bara ansluta till StosVPN med Wi-Fi aktiverat eller i flygplansläge, gå till "My Apps", långtrycka på appen du vill aktivera JIT för och trycka på "Enable JIT".
+:::
-3. **Installationsprocedurer:**
- Följ standardprocedurerna i användarguiden nedan.
+## Förkrav
+* En iDevice med iOS/iPadOS 17.4-alla iOS 18-versioner, med undantag för 18.4b1. Om du kör 17.0-17.3 måste du använda ett alternativ som [SideJITServer](https://github.com/nythepegasus/SideJITServer). SideStores JIT-funktion fungerar bara på iOS 26 om din enhet är ungefär fyra år eller äldre (utan TXM-stöd).
-## Installera StikDebug via App Store (kräver ingen app-slot)
+## Installera StikDebug via App Store
1. **Installera StikDebug**
- Installera StikDebug från App Store [här](https://apps.apple.com/us/app/stikdebug/id6744045754). En fördel är att VPN:en i StikDebug liknar den som används i SideStore, vilket innebär att du även kan använda den för att installera och uppdatera appar.
+ Installera StikDebug från [Apple App Store](https://apps.apple.com/us/app/stikdebug/id6744045754).
+:::note Kul bonus: VPN:t i StikDebug liknar det i SideStore, så du kan använda det för att installera och uppdatera appar i SideStore på samma sätt som med StosVPN.
+:::
-2. **Installationsprocedurer:**
- Följ standardprocedurerna i användarguiden nedan.
+2. **Installationsprocedur:**
+ Följ standardproceduren i användarguiden nedan.
-### Standardinstallationsprocedurer:
-1. **Aktivera VPN:**
- Börja med att aktivera StosVPN för StikJIT eller den inbyggda VPN:en i StikDebug.
+### Standardprocedur
-2. **Ladda upp parningsfilen:**
- När du uppmanas, importera samma **uppackade parningsfil** som du hämtade via JitterbugPair och använder för SideStore. För mer information om hur du hämtar denna parningsfil, se [här](/docs/installation/pairing-file).
+1. **Ladda upp pairing-filen:**
+ Öppna och stäng StikDebug för att skapa appens katalog i Filer, importera sedan samma **pairing-fil** som du använder för SideStore via idevice pair. Mer info finns [här](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
-## För att aktivera JIT:
+2. **Montera DDI:**
+ Öppna StikDebug med Wi-Fi och VPN anslutna och pairing-filen importerad, stäng sedan appen och öppna den igen. Det monterar DDI och måste göras varje gång du startar om din iDevice.
-1. **Aktivera VPN:**
- Börja med att aktivera StosVPN för StikJIT eller den inbyggda VPN:en i StikDebug.
+## Så aktiverar du JIT
+1. **Slå på VPN:**
+ Starta StikDebug med Wi-Fi eller mobildata för att aktivera det inbyggda VPN:t. Om du använder mobildata, slå på flygplansläge och öppna appen igen medan VPN:t fortfarande är aktivt.
+
2. **Aktivera JIT:**
- Klicka på knappen “Enable JIT” och välj en app från listan för att aktivera JIT-funktionen.
-
-### Offlineaktivering av JIT
-För att aktivera JIT offline, aktivera StosVPN eller StikDebug. Stäng sedan både Wi-Fi och mobildata när du startar StikJIT (använd flygplansläge). Du kan sedan aktivera JIT som vanligt.
-```
\ No newline at end of file
+ Välj knappen "Connect by App" och välj en app i listan (den måste vara sideloadad med korrekta entitlements för att synas) för att koppla en debugger och slå på JIT-funktionalitet.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
new file mode 100644
index 00000000..91fa5d10
--- /dev/null
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
@@ -0,0 +1,13 @@
+---
+title: Pairing-fil
+description: En guide för att manuellt importera pairing-filen igen.
+---
+:::warning
+Var uppmärksam på att pairing-filen löper ut om du uppdaterar eller nollställer din iDevice, och du måste importera den igen. Det kan även hända slumpmässigt. Det beror på hur Apples mjukvara fungerar och vi kan tyvärr inte göra något åt det. Den här guiden visar hur du importerar pairing-filen i SideStore via iloader.
+:::
+
+## Importera pairing-filen på nytt
+1. Säkerställ att du följt stegen i [installationsguiden](../installation/prerequisites) för att installera och konfigurera iloader och SideStore.
+2. För bästa resultat: anslut din iDevice till datorn med USB-kabel, men om den visas trådlöst går det också bra.
+3. Klicka på "Manage Pairing File".
+4. Till höger om "SideStore" (och andra appar du vill) klickar du på "Place Pairing File". Texten "Pairing file placed successfully!" visas då i grönt.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
deleted file mode 100644
index f64019d7..00000000
--- a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: Omgå 3-appsgräns
-description: En handledning om hur du installerar fler än 3 appar via SideStore med SparseRestore-exploit.
----
-
-:::note
-
-SparseRestore-exploit:et "Bypass 3 app limit" **fungerar endast på iOS/iPadOS version 17.0–18.1 beta 4 (exklusive 17.7.1)**. Om du inte använder någon av dessa versioner och det inte fungerar, **vänligen be inte om support för detta**.
-
-:::
-
-## Förutsättningar
-* En iDevice med en iOS/iPadOS-version som stöds av SparseRestore-exploit:et (se noten ovan).
-* Minst 1 ledig app-plats.
-* SideStore version 0.5.9 eller senare. De senaste versionerna hittar du [här](https://github.com/SideStore/SideStore/releases).
-* För att utföra detta exploit MÅSTE du ha **Hitta min iPhone/iPad** avstängt på din enhet under hela processen. Det fungerar inte annars. Så här stänger du av det:
- 1. Öppna Inställningar.
- 2. Tryck på ditt namn högst upp.
- 3. Tryck på **Hitta**.
- 4. Tryck på **Hitta min iPhone/iPad**.
- 5. Stäng av **Hitta min iPhone/iPad**.
- 6. Du kan behöva ange ditt Apple ID-lösenord för att bekräfta.
-
- > **Obs:** Om du ändå inte kan stänga av Hitta min kan det bero på att Stöldskydd är aktiverat. Stäng av Stöldskydd innan du försöker stänga av Hitta min.
-
-## Steg
-1. **Installera SparseBox.**
- Du kan installera SparseBox på flera sätt, men här använder vi SideStore. Hämta den senaste versionen [här](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip) och packa upp `artifact.zip` för att få `.ipa`-filen.
-
-2. **Aktivera “Disable App Limit” i SideStore**, se till att SideStore är **helt stängd** (inte bara i bakgrunden), och öppna sedan SparseBox.
-
-3. **Kör exploit:et.**
- - Aktivera StosVPN.
- - Välj din parningsfil och tryck på “Bypass 3-app limit”.
- - Vänta tills du ser `idevicebackup2 exited with code -18` eller `idevicebackup2 exited with code 2` i loggen, och stäng sedan appen (ingen “Apply” krävs).
-
-4. **Rensa cache i SideStore.**
- - Öppna SideStore igen.
- - I Inställningar scrollar du ned och trycker på “Clear Cache”. Då upptäcker SideStore exploit:et.
-
-5. **Testa att det fungerar.**
- - Försök installera en (eller flera) appar till.
- - Om du får ett felmeddelande om gränsen, öppna SideStore på nytt eller kör exploit:et igen.
- - Om installationen lyckas – grattis! Du kan nu ha fler än 3 appar installerade samtidigt.
-
-## Noteringar
-* På grund av vissa begränsningar måste du köra exploit:et varje gång du installerar 3 ytterligare appar.
-* Om du behöver Hitta min för andra ändamål kan du slå på det igen när du är klar. För att installera eller uppdatera fler appar måste du dock stänga av det igen.
-
-## Alternativ
-Om exploit:et inte fungerar för dig, eller om din iDevice kör en ej stödd version, finns ett alternativ för att använda fler än 3 appar samtidigt. **LiveContainer**, utvecklat av Duy Tran Khanh ([khanhduytran0](https://github.com/khanhduytran0)), låter dig köra iOS-appar i behållare inuti en app istället för att installera dem separat. Detta kan i vissa fall vara enklare än SparseRestore. Se GitHub-sidan [här](https://github.com/khanhduytran0/LiveContainer).
\ No newline at end of file
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx
index deab88b9..3c4f1e93 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx
@@ -1,22 +1,22 @@
---
-title: URL Schema
-description: A guide on url schema.
+title: URL-schema
+description: En guide om URL-scheman.
---
-# URL Schema
+# URL-schema
-The following is the list of different URL Schemes that can be used to interact with SideStore. These are incredibly useful because they allow developers to simply put a one-click link on their social media or website, and iOS will open the link directly in SideStore, performing the action(s) specified.
+Nedan listas de URL-scheman som kan användas för att interagera med SideStore. De är användbara eftersom utvecklare kan lägga en ettklickslänk på sociala medier eller sin webbplats så öppnar iOS länken direkt i SideStore och utför angiven åtgärd.
-The current list of things you can do using URL Schemes is limited to installing apps and sources, but it will be expanded upon in the future to take multiple inputs and perform a variety of other tasks.
+Listan över åtgärder som stöds via URL-schema är i nuläget begränsad till att installera appar och källor, men kommer att byggas ut för att ta emot fler parametrar och åtgärder framöver.
-## Install a remotely hosted app
+## Installera en app via fjärrhämtning
```
sidestore://install?url=[download url]
```
-## Add an AltSource
+## Lägg till en AltSource
```
sidestore://source?url=[source url]
-```
\ No newline at end of file
+```
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
new file mode 100644
index 00000000..e163b281
--- /dev/null
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
@@ -0,0 +1,798 @@
+---
+sidebar_position: 3
+---
+
+# Advanced Formatting Guidelines
+
+:::danger
+Den här sidan är avsiktligt kvar på engelska så att de avancerade riktlinjerna förblir exakta. Använd den engelska texten tills en granskad svensk översättning finns.
+:::
+
+We will go through advanced formatting situations, architectural patterns, and complex Swift/Objective-C features for the SideStore project.
+
+## Advanced Swift Patterns
+
+### Protocol-Oriented Programming
+
+#### Protocol Definitions
+- Keep protocols focused and cohesive
+- Use associated types for generic protocols
+- Provide default implementations in extensions when appropriate
+
+```swift
+// ✅ Good
+protocol AppInstalling {
+ associatedtype AppType: App
+
+ func install(_ app: AppType) async throws
+ func uninstall(_ app: AppType) async throws
+}
+
+extension AppInstalling {
+ func validateApp(_ app: AppType) -> Bool {
+ return !app.identifier.isEmpty && app.version.isValid
+ }
+}
+
+// ❌ Bad
+protocol AppManager {
+ func install(_ app: Any) -> Bool
+ func uninstall(_ app: Any) -> Bool
+ func update(_ app: Any) -> Bool
+ func backup(_ app: Any) -> Bool
+ func restore(_ app: Any) -> Bool
+ // Too many responsibilities
+}
+```
+
+#### Protocol Composition
+- Use protocol composition for complex requirements
+- Keep individual protocols small and focused
+
+```swift
+// ✅ Good
+protocol Downloadable {
+ var downloadURL: URL { get }
+ func download() async throws -> Data
+}
+
+protocol Installable {
+ var installationRequirements: InstallationRequirements { get }
+ func install() async throws
+}
+
+typealias DeployableApp = App & Downloadable & Installable
+
+class AppDeployer {
+ func deploy(_ app: T) async throws {
+ let data = try await app.download()
+ try await app.install()
+ }
+}
+```
+
+### Generics and Type Constraints
+
+#### Generic Type Definitions
+- Use meaningful constraint names
+- Prefer protocol constraints over class constraints
+- Use `where` clauses for complex constraints
+
+```swift
+// ✅ Good
+struct Repository {
+ private var entities: [Entity.ID: Entity] = [:]
+
+ func save(_ entity: T) where T == Entity {
+ entities[entity.id] = entity
+ }
+
+ func find(byId id: ID) -> Entity? where ID == Entity.ID {
+ return entities[id]
+ }
+}
+
+// ❌ Bad
+struct Repository {
+ private var items: [String: T] = [:]
+ // No type safety
+}
+```
+
+#### Advanced Generic Constraints
+- Use conditional conformance appropriately
+- Leverage phantom types when needed
+
+```swift
+// ✅ Good
+extension Array: AppCollection where Element: App {
+ var installedApps: [Element] {
+ return filter { $0.isInstalled }
+ }
+
+ func sortedByInstallDate() -> [Element] {
+ return sorted { $0.installDate < $1.installDate }
+ }
+}
+
+// Phantom types for type safety
+struct AppState {
+ let app: App
+}
+
+enum Downloaded {}
+enum Installed {}
+
+typealias DownloadedApp = AppState
+typealias InstalledApp = AppState
+```
+
+### Async/Await Patterns
+
+#### Async Function Design
+- Use async/await consistently
+- Structure concurrent operations clearly
+- Handle cancellation appropriately
+
+```swift
+// ✅ Good
+actor AppInstallationManager {
+ private var activeInstallations: [String: Task] = [:]
+
+ func installApp(_ app: App) async throws {
+ // Prevent duplicate installations
+ if activeInstallations[app.identifier] != nil {
+ throw InstallationError.alreadyInstalling
+ }
+
+ let task = Task {
+ try await performInstallation(app)
+ }
+
+ activeInstallations[app.identifier] = task
+
+ defer {
+ activeInstallations.removeValue(forKey: app.identifier)
+ }
+
+ try await task.value
+ }
+
+ private func performInstallation(_ app: App) async throws {
+ // Check for cancellation at key points
+ try Task.checkCancellation()
+
+ let data = try await downloadApp(app)
+
+ try Task.checkCancellation()
+
+ try await installData(data, for: app)
+ }
+}
+
+// ❌ Bad
+func installApp(_ app: App, completion: @escaping (Error?) -> Void) {
+ DispatchQueue.global().async {
+ // Mixing old completion handler style with new async code
+ let result = await self.downloadApp(app)
+ DispatchQueue.main.async {
+ completion(nil)
+ }
+ }
+}
+```
+
+#### Structured Concurrency
+- Use task groups for related concurrent operations
+- Prefer structured concurrency over unstructured tasks
+
+```swift
+// ✅ Good
+func installMultipleApps(_ apps: [App]) async throws {
+ try await withThrowingTaskGroup(of: Void.self) { group in
+ for app in apps {
+ group.addTask {
+ try await self.installApp(app)
+ }
+ }
+
+ // Wait for all installations to complete
+ try await group.waitForAll()
+ }
+}
+
+// For independent results
+func downloadMultipleApps(_ apps: [App]) async throws -> [App: Data] {
+ try await withThrowingTaskGroup(of: (App, Data).self) { group in
+ for app in apps {
+ group.addTask {
+ let data = try await self.downloadApp(app)
+ return (app, data)
+ }
+ }
+
+ var results: [App: Data] = [:]
+ for try await (app, data) in group {
+ results[app] = data
+ }
+ return results
+ }
+}
+```
+
+### Result Builders and DSLs
+
+#### Custom Result Builders
+- Create focused, single-purpose result builders
+- Provide clear syntax for domain-specific operations
+
+```swift
+// ✅ Good
+@resultBuilder
+struct AppConfigurationBuilder {
+ static func buildBlock(_ components: AppConfigurationComponent...) -> AppConfiguration {
+ return AppConfiguration(components: components)
+ }
+
+ static func buildOptional(_ component: AppConfigurationComponent?) -> AppConfigurationComponent? {
+ return component
+ }
+
+ static func buildEither(first component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+
+ static func buildEither(second component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+}
+
+// Usage
+func configureApp(@AppConfigurationBuilder builder: () -> AppConfiguration) -> App {
+ let config = builder()
+ return App(configuration: config)
+}
+
+let app = configureApp {
+ AppName("SideStore")
+ AppVersion("1.0.0")
+ if debugMode {
+ DebugSettings()
+ }
+ Permissions {
+ NetworkAccess()
+ FileSystemAccess()
+ }
+}
+```
+
+## Advanced Objective-C Patterns
+
+### Category Organization
+- Use categories to organize related functionality
+- Keep category names descriptive and specific
+
+```objc
+// ✅ Good
+@interface NSString (SSValidation)
+- (BOOL)ss_isValidAppIdentifier;
+- (BOOL)ss_isValidVersion;
+@end
+
+@interface UIViewController (SSAppInstallation)
+- (void)ss_presentAppInstallationViewController:(SSApp *)app;
+- (void)ss_showInstallationProgress:(SSInstallationProgress *)progress;
+@end
+
+// ❌ Bad
+@interface NSString (Helpers)
+- (BOOL)isValid; // Too generic
+- (NSString *)cleanup; // Unclear purpose
+@end
+```
+
+### Advanced Memory Management
+- Use proper patterns for delegate relationships
+- Handle complex object graphs correctly
+
+```objc
+// ✅ Good
+@interface SSAppInstaller : NSObject
+@property (nonatomic, weak) id delegate;
+@property (nonatomic, strong) NSOperationQueue *installationQueue;
+@end
+
+@implementation SSAppInstaller
+
+- (instancetype)init {
+ self = [super init];
+ if (self) {
+ _installationQueue = [[NSOperationQueue alloc] init];
+ _installationQueue.maxConcurrentOperationCount = 3;
+ _installationQueue.name = @"com.sidestore.installation";
+ }
+ return self;
+}
+
+- (void)installApp:(SSApp *)app completion:(void (^)(NSError *))completion {
+ __weak typeof(self) weakSelf = self;
+ NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ NSError *error = nil;
+ [strongSelf performInstallationForApp:app error:&error];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(error);
+ });
+ }];
+
+ [self.installationQueue addOperation:operation];
+}
+
+@end
+```
+
+### Block Usage Patterns
+- Use proper block patterns for asynchronous operations
+- Handle memory management in blocks correctly
+
+```objc
+// ✅ Good
+typedef void (^SSInstallationProgressBlock)(float progress);
+typedef void (^SSInstallationCompletionBlock)(SSApp *app, NSError *error);
+
+@interface SSAppDownloader : NSObject
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion;
+@end
+
+@implementation SSAppDownloader
+
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion {
+
+ NSURLRequest *request = [NSURLRequest requestWithURL:app.downloadURL];
+
+ __weak typeof(self) weakSelf = self;
+ NSURLSessionDownloadTask *task = [[NSURLSession sharedSession]
+ downloadTaskWithRequest:request
+ completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ if (error) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(nil, error);
+ });
+ return;
+ }
+
+ // Process downloaded file
+ [strongSelf processDownloadedFile:location
+ forApp:app
+ completion:completion];
+ }];
+
+ [task resume];
+ return task;
+}
+
+@end
+```
+
+## Architectural Patterns
+
+### MVVM Implementation
+- Separate concerns clearly between Model, View, and ViewModel
+- Use proper data binding patterns
+
+```swift
+// ✅ Good
+// Model
+struct App {
+ let identifier: String
+ let name: String
+ let version: String
+ let isInstalled: Bool
+}
+
+// ViewModel
+@MainActor
+class AppListViewModel: ObservableObject {
+ @Published var apps: [App] = []
+ @Published var isLoading = false
+ @Published var errorMessage: String?
+
+ private let appService: AppService
+
+ init(appService: AppService) {
+ self.appService = appService
+ }
+
+ func loadApps() async {
+ isLoading = true
+ errorMessage = nil
+
+ do {
+ apps = try await appService.fetchAvailableApps()
+ } catch {
+ errorMessage = error.localizedDescription
+ }
+
+ isLoading = false
+ }
+
+ func installApp(_ app: App) async {
+ do {
+ try await appService.installApp(app)
+ await loadApps() // Refresh the list
+ } catch {
+ errorMessage = "Failed to install \(app.name): \(error.localizedDescription)"
+ }
+ }
+}
+
+// View
+struct AppListView: View {
+ @StateObject private var viewModel: AppListViewModel
+
+ init(appService: AppService) {
+ _viewModel = StateObject(wrappedValue: AppListViewModel(appService: appService))
+ }
+
+ var body: some View {
+ NavigationView {
+ List(viewModel.apps, id: \.identifier) { app in
+ AppRowView(app: app) {
+ Task {
+ await viewModel.installApp(app)
+ }
+ }
+ }
+ .navigationTitle("Available Apps")
+ .overlay {
+ if viewModel.isLoading {
+ ProgressView()
+ }
+ }
+ .alert("Error", isPresented: .constant(viewModel.errorMessage != nil)) {
+ Button("OK") {
+ viewModel.errorMessage = nil
+ }
+ } message: {
+ Text(viewModel.errorMessage ?? "")
+ }
+ }
+ .task {
+ await viewModel.loadApps()
+ }
+ }
+}
+```
+
+### Dependency Injection
+- Use dependency injection for testability and flexibility
+- Consider using a DI container for complex applications
+
+```swift
+// ✅ Good
+protocol AppService {
+ func fetchAvailableApps() async throws -> [App]
+ func installApp(_ app: App) async throws
+}
+
+protocol NetworkService {
+ func downloadData(from url: URL) async throws -> Data
+}
+
+class DefaultAppService: AppService {
+ private let networkService: NetworkService
+ private let deviceService: DeviceService
+
+ init(networkService: NetworkService, deviceService: DeviceService) {
+ self.networkService = networkService
+ self.deviceService = deviceService
+ }
+
+ func fetchAvailableApps() async throws -> [App] {
+ let data = try await networkService.downloadData(from: appsURL)
+ return try JSONDecoder().decode([App].self, from: data)
+ }
+
+ func installApp(_ app: App) async throws {
+ guard deviceService.hasSpace(for: app) else {
+ throw InstallationError.insufficientStorage
+ }
+
+ let appData = try await networkService.downloadData(from: app.downloadURL)
+ try await deviceService.installApp(data: appData)
+ }
+}
+
+// DI Container
+class ServiceContainer {
+ static let shared = ServiceContainer()
+
+ private init() {}
+
+ lazy var networkService: NetworkService = DefaultNetworkService()
+ lazy var deviceService: DeviceService = DefaultDeviceService()
+ lazy var appService: AppService = DefaultAppService(
+ networkService: networkService,
+ deviceService: deviceService
+ )
+}
+```
+
+### Error Handling Architecture
+- Create comprehensive error handling strategies
+- Use typed errors for better error handling
+
+```swift
+// ✅ Good
+enum SideStoreError: Error {
+ case network(NetworkError)
+ case installation(InstallationError)
+ case device(DeviceError)
+ case validation(ValidationError)
+}
+
+enum NetworkError: Error {
+ case noConnection
+ case timeout
+ case serverError(Int)
+ case invalidResponse
+}
+
+enum InstallationError: Error {
+ case insufficientStorage
+ case incompatibleDevice
+ case corruptedFile
+ case alreadyInstalled
+}
+
+extension SideStoreError: LocalizedError {
+ var errorDescription: String? {
+ switch self {
+ case .network(let networkError):
+ return "Network error: \(networkError.localizedDescription)"
+ case .installation(let installError):
+ return "Installation error: \(installError.localizedDescription)"
+ case .device(let deviceError):
+ return "Device error: \(deviceError.localizedDescription)"
+ case .validation(let validationError):
+ return "Validation error: \(validationError.localizedDescription)"
+ }
+ }
+}
+
+// Error handling in services
+class AppService {
+ func installApp(_ app: App) async throws {
+ do {
+ try validateApp(app)
+ } catch {
+ throw SideStoreError.validation(error as! ValidationError)
+ }
+
+ do {
+ try await performInstallation(app)
+ } catch let error as NetworkError {
+ throw SideStoreError.network(error)
+ } catch let error as InstallationError {
+ throw SideStoreError.installation(error)
+ }
+ }
+}
+```
+
+## Performance Considerations
+
+### Memory Optimization
+- Use lazy loading for expensive resources
+- Implement proper caching strategies
+
+```swift
+// ✅ Good
+class AppImageCache {
+ private let cache = NSCache()
+ private let downloadQueue = DispatchQueue(label: "image-download", qos: .utility)
+
+ init() {
+ cache.countLimit = 50
+ cache.totalCostLimit = 50 * 1024 * 1024 // 50MB
+ }
+
+ func image(for app: App) async -> UIImage? {
+ let key = app.identifier as NSString
+
+ // Check cache first
+ if let cachedImage = cache.object(forKey: key) {
+ return cachedImage
+ }
+
+ // Download if not cached
+ return await withCheckedContinuation { continuation in
+ downloadQueue.async { [weak self] in
+ guard let self = self else {
+ continuation.resume(returning: nil)
+ return
+ }
+
+ do {
+ let data = try Data(contentsOf: app.iconURL)
+ let image = UIImage(data: data)
+
+ if let image = image {
+ self.cache.setObject(image, forKey: key)
+ }
+
+ continuation.resume(returning: image)
+ } catch {
+ continuation.resume(returning: nil)
+ }
+ }
+ }
+ }
+}
+```
+
+### Threading Best Practices
+- Use appropriate queue priorities
+- Minimize context switching
+
+```swift
+// ✅ Good
+actor BackgroundProcessor {
+ private let processingQueue = DispatchQueue(
+ label: "background-processing",
+ qos: .utility,
+ attributes: .concurrent
+ )
+
+ func processLargeDataSet(_ data: [LargeDataItem]) async -> [ProcessedItem] {
+ return await withTaskGroup(of: ProcessedItem?.self, returning: [ProcessedItem].self) { group in
+ let chunkSize = max(data.count / ProcessInfo.processInfo.activeProcessorCount, 1)
+
+ for chunk in data.chunked(into: chunkSize) {
+ group.addTask {
+ return await self.processChunk(chunk)
+ }
+ }
+
+ var results: [ProcessedItem] = []
+ for await result in group {
+ if let processed = result {
+ results.append(processed)
+ }
+ }
+
+ return results
+ }
+ }
+
+ private func processChunk(_ chunk: [LargeDataItem]) async -> ProcessedItem? {
+ // CPU-intensive processing
+ return await withCheckedContinuation { continuation in
+ processingQueue.async {
+ let result = chunk.map { self.expensiveOperation($0) }
+ continuation.resume(returning: ProcessedItem(results: result))
+ }
+ }
+ }
+}
+```
+
+## Testing Patterns
+
+### Protocol-Based Testing
+- Use protocols for dependency injection in tests
+- Create focused test doubles
+
+```swift
+// ✅ Good
+class MockAppService: AppService {
+ var shouldFailInstallation = false
+ var installedApps: [App] = []
+
+ func fetchAvailableApps() async throws -> [App] {
+ return [
+ App(identifier: "test.app1", name: "Test App 1", version: "1.0.0"),
+ App(identifier: "test.app2", name: "Test App 2", version: "2.0.0")
+ ]
+ }
+
+ func installApp(_ app: App) async throws {
+ if shouldFailInstallation {
+ throw InstallationError.insufficientStorage
+ }
+ installedApps.append(app)
+ }
+}
+
+class AppListViewModelTests: XCTestCase {
+ private var mockAppService: MockAppService!
+ private var viewModel: AppListViewModel!
+
+ override func setUp() {
+ super.setUp()
+ mockAppService = MockAppService()
+ viewModel = AppListViewModel(appService: mockAppService)
+ }
+
+ @MainActor
+ func testLoadAppsSuccess() async {
+ await viewModel.loadApps()
+
+ XCTAssertEqual(viewModel.apps.count, 2)
+ XCTAssertFalse(viewModel.isLoading)
+ XCTAssertNil(viewModel.errorMessage)
+ }
+
+ @MainActor
+ func testInstallAppFailure() async {
+ mockAppService.shouldFailInstallation = true
+
+ let testApp = App(identifier: "test", name: "Test", version: "1.0")
+ await viewModel.installApp(testApp)
+
+ XCTAssertNotNil(viewModel.errorMessage)
+ XCTAssertTrue(viewModel.errorMessage!.contains("insufficient storage"))
+ }
+}
+```
+
+## Documentation Standards
+
+### Complex API Documentation
+- Document complex behaviors and edge cases
+- Provide usage examples for non-trivial APIs
+
+```swift
+/**
+ * A thread-safe manager for handling app installations with automatic retry logic.
+ *
+ * This class manages the installation process for iOS applications, handling
+ * network downloads, signature verification, and device communication.
+ * It provides automatic retry functionality for transient failures and
+ * comprehensive error reporting.
+ *
+ * ## Usage Example
+ * ```swift
+ * let installer = AppInstallationManager()
+ *
+ * do {
+ * let result = try await installer.installApp(
+ * from: app.sourceURL,
+ * identifier: app.bundleID,
+ * maxRetries: 3
+ * )
+ * print("Installation completed: \(result.installedPath)")
+ * } catch InstallationError.insufficientStorage {
+ * // Handle storage error
+ * } catch {
+ * // Handle other errors
+ * }
+ * ```
+ *
+ * ## Thread Safety
+ * This class is thread-safe and can be called from any queue. All completion
+ * handlers are called on the main queue unless otherwise specified.
+ *
+ * ## Error Handling
+ * Installation failures are categorized into recoverable and non-recoverable
+ * errors. Recoverable errors (network timeouts, temporary device issues) will
+ * be automatically retried up to the specified limit. Non-recoverable errors
+ * (invalid signatures, incompatible devices) will fail immediately.
+ */
+@MainActor
+class AppInstallationManager {
+ // Implementation
+}
+```
+
+Remember: These advanced patterns should be used judiciously. Always prioritize code clarity and maintainability over clever implementations. When in doubt, choose the simpler approach that still meets the requirements.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/contributing/contributing.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
new file mode 100644
index 00000000..f86bb764
--- /dev/null
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
@@ -0,0 +1,243 @@
+---
+sidebar_position: 1
+---
+
+# Contributing to SideStore
+
+:::danger
+Den här sidan är avsiktligt kvar på engelska så att informationen förblir exakt. Använd den engelska texten tills en granskad svensk översättning finns.
+:::
+
+Thank you for your interest in contributing to SideStore! SideStore is a community driven project, and it's made possible by people like you.
+
+By contributing to this Project (SideStore), you agree to the Developer's Certificate of Origin found in [CERTIFICATE-OF-ORIGIN.md](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md). Any contributions to this project after the addition of the Developer's Certificate of Origin are subject to its policy.
+
+There are many ways to contribute to SideStore, so if you aren't a developer, there are still many other ways you can help out:
+
+- [Writing documentation](https://github.com/SideStore/SideStore-Docs)
+- [Submitting detailed bug reports and suggesting new features](https://github.com/SideStore/SideStore/issues/new/choose)
+- Helping out with support:
+ - [Discord](https://discord.gg/sidestore-949183273383395328)
+ - [GitHub Discussions](https://github.com/SideStore/SideStore/discussions)
+
+However, this guide will focus on the development side of things. For now, we will only have setup information here, but you can [join our Discord](https://discord.gg/sidestore-949183273383395328) if you need help after setup.
+
+## Requirements
+
+This guide assumes you:
+
+- are on a Mac
+- have Xcode installed
+- have basic command line knowledge (know how to run commands, cd into a directory)
+- have basic Git knowledge ([GitHub Desktop](https://desktop.github.com/) is a great tool for beginners, and greatly simplifies working with Git)
+- have basic Swift/iOS development knowledge
+
+## Setup
+
+1. **Fork the SideStore repo on GitHub**.
+
+2. **Clone the fork**:
+ ```bash
+ git clone https://github.com//SideStore.git --recurse
+ cd SideStore
+ ```
+
+ If you are using GitHub Desktop, refer to [this guide](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop).
+
+3. **Copy `CodeSigning.xcconfig.sample` to `CodeSigning.xcconfig`** and fill in the values.
+
+4. **(Development only)** Change the value for `ALTDeviceID` in the Info.plist to your device's UDID. Normally, SideServer embeds the device's UDID in SideStore's Info.plist during installation. When running through Xcode you'll need to set the value yourself or else SideStore won't resign (or even install) apps for the proper device.
+
+5. **Finally, open `AltStore.xcworkspace` in Xcode**.
+
+Next, make and test your changes. Then, commit and push your changes using git and make a pull request.
+
+## Prebuilt Binary Information
+
+minimuxer and em_proxy use prebuilt static library binaries built by GitHub Actions to speed up builds and remove the need for Rust to be installed when working on SideStore. [`SideStore/fetch-prebuilt.sh`](https://github.com/SideStore/SideStore/blob/develop/SideStore/fetch-prebuilt.sh) will be run before each build by Xcode, and it will check if the downloaded binaries are up-to-date once every 6 hours. If you want to force it to check for new binaries, run `bash ./SideStore/fetch-prebuilt.sh force`.
+
+## Building with Xcode
+
+Install cocoapods if required using: `brew install cocoapods`
+Now using commandline on the repository workspace root, perform Pod-Install using: `pod install` command to install the cocoapod dependencies.
+After this you can do regular builds within Xcode.
+
+## Building an IPA for Distribution
+
+Install cocoapods if required using: `brew install cocoapods`
+Now using commandline on the repository workspace root, perform Pod-Install using: `pod install` command to install the cocoapod dependencies.
+
+You can then use the Makefile command: `make build fakesign ipa` in the root directory.
+By default the config for build is: `Release`
+For debug builds: `export BUILD_CONFIG=Debug;make build fakesign ipa` in the root directory.
+For alpha/beta builds: `export IS_ALPHA=1;` or `export IS_BETA=1;` before invoking the build command.
+This will create SideStore.ipa.
+
+```sh
+Examples:
+
+ # cocoapods
+ brew install cocoapods
+ # perform installation of the pods
+ pod install
+
+ # alpha release build
+ export IS_ALPHA=1;make build fakesign ipa
+ # alpha debug build
+ export IS_ALPHA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # beta release build
+ export IS_BETA=1;make build fakesign ipa
+ # beta debug build
+ export IS_BETA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # stable release build
+ make build fakesign ipa
+ # stable debug build
+ export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+By default SideStore will build for its default bundleIdentifier `com.SideStore.SideStore` but if you need to set a custom bundleID for commandline builds, once can do so by exporting `BUNDLE_ID_SUFFIX` env var:
+
+```sh
+ # stable release build
+ export BUNDLE_ID_SUFFIX=XYZ0123456;make build fakesign ipa
+ # stable debug build
+ export BUNDLE_ID_SUFFIX=XYZ0123456;export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+**NOTE**: When building from XCode, the `BUNDLE_ID_SUFFIX` is set by default with the value of `DEVELOPMENT_TEAM`
+
+This can be customized by setting/removing the BUNDLE_ID_SUFFIX in overriding CodeSigning.xcconfig created from CodeSigning.xcconfig.sample
+
+:::warning
+The binary created will contain paths to Xcode's DerivedData, and if you built minimuxer on your machine, paths to $HOME/.cargo. This will include your username. If you want to keep your user's username private, you might want to get GitHub Actions to build the IPA instead.
+:::
+
+## Developing minimuxer alongside SideStore
+
+Please see [minimuxer's README](https://github.com/SideStore/minimuxer) for development instructions.
+
+## Pull Request Process
+
+### Before Submitting
+
+1. **Follow coding standards**: Ensure your code follows our [formatting guidelines](./formatting.mdx).
+
+2. **Test your changes**:
+ - Test on different iOS versions when possible
+ - Ensure existing functionality isn't broken
+ - Add tests for new features when applicable
+
+3. **Update documentation**: Update relevant documentation if your changes affect user-facing features.
+
+### Submitting Your PR
+
+1. **Create a feature branch**:
+ ```bash
+ git checkout -b feature/your-feature-name
+ ```
+
+2. **Make your changes**: Follow the coding guidelines and best practices.
+
+3. **Commit your changes with sign-off**:
+ ```bash
+ git add .
+ git commit -s -m "Add descriptive commit message"
+ ```
+
+ **Important**: All commits should be signed off with the Developer Certificate of Origin (DCO). The `-s` flag automatically adds the required `Signed-off-by` line to your commit message.
+
+4. **Push to your fork**:
+ ```bash
+ git push origin feature/your-feature-name
+ ```
+
+5. **Create a Pull Request**: Go to the main SideStore repository and create a pull request from your branch.
+
+:::caution
+We do **not** accept pull requests that are obviously AI-generated or "vibe-coded" (e.g., too many obvious comments, code that looks generic, lacks understanding of the project, or is not thoughtfully made for SideStore). Please make sure your contributions are original, and show clear understanding of the codebase and its goals.
+:::
+
+### PR Guidelines
+
+- **Clear title**: Use a descriptive title that summarizes the change
+- **Detailed description**: Explain what changes you made and why
+- **Link related issues**: Reference any related GitHub issues
+- **Screenshots**: Include screenshots for UI changes
+- **Testing notes**: Describe how you tested your changes
+
+## Developer Certificate of Origin (DCO)
+
+SideStore requires all contributors to sign off on their commits using the Developer Certificate of Origin (DCO). This serves as our Contributor Code of Conduct and is a simple way to certify that you wrote or have the right to submit the code you are contributing.
+
+### What is the DCO?
+
+By signing off on your commits, you certify that:
+
+- **(a)** The contribution was created in whole or in part by you and you have the right to submit it under the open source license indicated in the file; or
+- **(b)** The contribution is based upon previous work that, to the best of your knowledge, is covered under an appropriate open source license and you have the right under that license to submit that work with modifications; or
+- **(c)** The contribution was provided directly to you by some other person who certified (a), (b) or (c) and you have not modified it.
+- **(d)** You understand and agree that this project and the contribution are public and that a record of the contribution is maintained indefinitely.
+
+### How to Sign Off
+
+To sign off on your commits, simply add the `-s` flag when committing:
+
+```bash
+git commit -s -m "Your commit message"
+```
+
+This will automatically add a `Signed-off-by` line to your commit message:
+
+```
+Your commit message
+
+Signed-off-by: SternXD
+```
+
+### Important Notes
+
+- **All commits should be signed off** - We usually prefer that you sign your commits.
+- **Use the correct email** - The email should match your GitHub account
+- **Retroactive sign-off** - If you forget to sign off, you can amend your last commit with `git commit --amend -s`
+
+For more details, see the full [Certificate of Origin](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md) document.
+
+## Code Review Process
+
+1. **Initial review**: A maintainer will review your PR within a few days
+2. **Feedback**: Address any requested changes or questions
+3. **Final approval**: Once approved, a maintainer will merge your PR
+
+## Guidelines for Good Contributions
+
+### Code Quality
+- Write clean, readable code
+- Follow Swift and Objective-C best practices
+- Use meaningful variable and function names
+- Add comments for code that's complex
+
+### Testing
+- Test on physical devices when possible
+- Test edge cases and error conditions
+- Verify backward compatibility
+
+### Documentation
+- Update code comments
+- Update user-facing documentation
+- Include inline documentation for public APIs
+
+## Getting Help
+
+If you need help or have questions:
+
+- **GitHub Discussions**: Use GitHub Discussions for general questions
+- **GitHub Issues**: Create an issue for bugs or feature requests
+- **Discord**: Join the SideStore Discord community
+
+## Recognition
+
+Contributors who make significant contributions will be recognized in the project's credits and changelog.
+
+Thank you for contributing to SideStore!
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/contributing/formatting.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
new file mode 100644
index 00000000..299a8e9f
--- /dev/null
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
@@ -0,0 +1,496 @@
+---
+sidebar_position: 2
+---
+
+# Code Formatting Guidelines
+
+:::danger
+Den här sidan är avsiktligt kvar på engelska så att riktlinjerna förblir exakta. Använd den engelska texten tills en granskad svensk översättning finns.
+:::
+
+This document outlines the code formatting standards for Swift and Objective-C code in the SideStore project. Consistent formatting makes the codebase more readable and maintainable.
+
+## General Principles
+
+- **Consistency**: Follow the existing code style in the project
+- **Readability**: Code should be easy to read and understand
+- **Simplicity**: Prefer simple, clear solutions over clever ones
+- **Apple conventions**: Follow Apple's official Swift and Objective-C conventions where possible
+
+## Swift Formatting
+
+### Naming Conventions
+
+#### Variables and Functions
+- Use **camelCase** for variables, functions, and methods
+- Use descriptive names that clearly indicate purpose
+
+```swift
+// ✅ Good
+let downloadProgress: Float
+func validateUserCredentials() -> Bool
+var isAppInstalling: Bool
+
+// ❌ Bad
+let dp: Float
+func validate() -> Bool
+var installing: Bool
+```
+
+#### Classes, Structs, Enums, and Protocols
+- Use **PascalCase** for types
+- Use descriptive, noun-based names
+
+```swift
+// ✅ Good
+class AppInstaller
+struct InstallationProgress
+enum AppState
+protocol AppManaging
+
+// ❌ Bad
+class installer
+struct progress
+enum state
+protocol managing
+```
+
+#### Constants
+- Use **camelCase** for constants
+- Consider using **SCREAMING_SNAKE_CASE** for global constants
+
+```swift
+// ✅ Good
+let maxRetryAttempts = 3
+private let defaultTimeout: TimeInterval = 30.0
+
+// Global constants
+let MAX_CONCURRENT_DOWNLOADS = 5
+
+// ❌ Bad
+let MaxRetryAttempts = 3
+let max_retry_attempts = 3
+```
+
+### Indentation and Spacing
+
+#### Indentation
+- Use **4 spaces** for indentation (not tabs)
+- Align continuation lines with the opening delimiter
+
+```swift
+// ✅ Good
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) {
+ // Implementation
+}
+
+// ❌ Bad
+func installApp(withIdentifier identifier: String,
+sourceURL: URL,
+completion: @escaping (Result) -> Void) {
+// Implementation
+}
+```
+
+#### Line Length
+- Keep lines under **120 characters** when possible
+- Break long lines at logical points
+
+```swift
+// ✅ Good
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(
+ parameter1: value1,
+ parameter2: value2
+)
+
+// ❌ Bad
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(parameter1: value1, parameter2: value2, parameter3: value3)
+```
+
+#### Spacing
+- Use single spaces around operators
+- No trailing whitespace
+- Single empty line between functions and major code sections
+
+```swift
+// ✅ Good
+let result = value1 + value2
+if condition && anotherCondition {
+ // Code
+}
+
+func firstFunction() {
+ // Implementation
+}
+
+func secondFunction() {
+ // Implementation
+}
+
+// ❌ Bad
+let result=value1+value2
+if condition&&anotherCondition{
+ // Code
+}
+func firstFunction(){
+ // Implementation
+}
+func secondFunction(){
+ // Implementation
+}
+```
+
+### Braces and Control Flow
+
+#### Brace Style
+- Opening brace on the same line as the statement
+- Closing brace on its own line, aligned with the opening statement
+
+```swift
+// ✅ Good
+if condition {
+ doSomething()
+} else {
+ doSomethingElse()
+}
+
+class MyClass {
+ func myMethod() {
+ // Implementation
+ }
+}
+
+// ❌ Bad
+if condition
+{
+ doSomething()
+}
+else
+{
+ doSomethingElse()
+}
+```
+
+#### Guard Statements
+- Use guard statements for early returns
+- Keep guard conditions simple and readable
+
+```swift
+// ✅ Good
+guard let url = URL(string: urlString) else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+
+guard !apps.isEmpty else {
+ return
+}
+
+// ❌ Bad
+if let url = URL(string: urlString) {
+ // Long nested code block
+} else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+```
+
+### Type Annotations and Inference
+
+#### When to Use Type Annotations
+- Use type annotations when the type isn't obvious
+- Omit type annotations when Swift can clearly infer the type
+
+```swift
+// ✅ Good
+let name = "SideStore" // Type is obvious
+let timeout: TimeInterval = 30 // Type clarifies intent
+var apps: [App] = [] // Empty array needs type annotation
+
+// ❌ Bad
+let name: String = "SideStore" // Redundant type annotation
+let timeout = 30 // Unclear if Int or TimeInterval
+```
+
+### Function Declarations
+
+#### Parameter Labels
+- Use descriptive parameter labels
+- Omit first parameter label when it reads naturally
+
+```swift
+// ✅ Good
+func install(_ app: App, to device: Device)
+func download(from url: URL, completion: @escaping (Data?) -> Void)
+
+// ❌ Bad
+func install(app: App, device: Device)
+func download(url: URL, completion: @escaping (Data?) -> Void)
+```
+
+#### Return Types
+- Put return type on the same line when possible
+- Break to new line for very long signatures
+
+```swift
+// ✅ Good
+func processData() -> Result
+
+func complexFunction(withManyParameters param1: String,
+ param2: Int,
+ param3: Bool)
+ -> Result {
+ // Implementation
+}
+```
+
+## Objective-C Formatting
+
+### Naming Conventions
+
+#### Methods
+- Use descriptive method names with clear parameter labels
+- Start with lowercase letter
+- Use camelCase
+
+```objc
+// ✅ Good
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+
+// ❌ Bad
+- (void)install:(NSString *)id url:(NSURL *)url completion:(void (^)(NSError *))completion;
+```
+
+#### Variables and Properties
+- Use camelCase
+- Use descriptive names
+- Prefix instance variables with underscore
+
+```objc
+// ✅ Good
+@interface AppManager : NSObject
+@property (nonatomic, strong) NSArray *installedApps;
+@property (nonatomic, assign) BOOL isInstalling;
+@end
+
+@implementation AppManager {
+ NSURLSession *_networkSession;
+ dispatch_queue_t _processingQueue;
+}
+```
+
+#### Classes and Protocols
+- Use PascalCase
+- Consider using prefixes for public classes (e.g., SS for SideStore)
+
+```objc
+// ✅ Good
+@interface SSAppInstaller : NSObject
+@protocol SSAppManaging
+
+// ❌ Bad
+@interface appInstaller : NSObject
+@protocol appManaging
+```
+
+### Spacing and Formatting
+
+#### Method Declarations
+- Align parameters vertically
+- Use consistent spacing
+
+```objc
+// ✅ Good
+- (instancetype)initWithIdentifier:(NSString *)identifier
+ title:(NSString *)title
+ version:(NSString *)version;
+
+// ❌ Bad
+- (instancetype)initWithIdentifier:(NSString *)identifier title:(NSString *)title version:(NSString *)version;
+```
+
+#### Braces
+- Opening brace on the same line
+- Closing brace on its own line
+
+```objc
+// ✅ Good
+if (condition) {
+ [self doSomething];
+} else {
+ [self doSomethingElse];
+}
+
+// ❌ Bad
+if (condition)
+{
+ [self doSomething];
+}
+else
+{
+ [self doSomethingElse];
+}
+```
+
+## Comments and Documentation
+
+### Swift Documentation
+- Use `///` for documentation comments
+- Include parameter and return value descriptions for public APIs
+
+```swift
+/// Downloads and installs an app from the specified URL
+/// - Parameters:
+/// - identifier: The unique identifier for the app
+/// - sourceURL: The URL to download the app from
+/// - completion: Called when installation completes or fails
+/// - Returns: A cancellable operation
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) -> Operation {
+ // Implementation
+}
+```
+
+### Objective-C Documentation
+- Use `/** */` for documentation comments
+- Follow HeaderDoc or Doxygen conventions
+
+```objc
+/**
+ * Downloads and installs an app from the specified URL
+ * @param identifier The unique identifier for the app
+ * @param sourceURL The URL to download the app from
+ * @param completion Block called when installation completes or fails
+ */
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+```
+
+### Inline Comments
+- Use `//` for single-line comments
+- Keep comments concise and relevant
+- Explain **why**, not **what**
+
+```swift
+// ✅ Good
+// Retry failed downloads up to 3 times to handle temporary network issues
+let maxRetryAttempts = 3
+
+// ❌ Bad
+// Set maxRetryAttempts to 3
+let maxRetryAttempts = 3
+```
+
+## Error Handling
+
+### Swift Error Handling
+- Use Swift's native error handling with `throws` and `Result` types
+- Create meaningful error types
+
+```swift
+enum InstallationError: Error {
+ case invalidURL
+ case networkFailure(Error)
+ case insufficientStorage
+ case deviceNotSupported
+}
+
+func installApp() throws -> App {
+ guard let url = URL(string: urlString) else {
+ throw InstallationError.invalidURL
+ }
+ // Implementation
+}
+```
+
+### Objective-C Error Handling
+- Use `NSError **` parameter pattern
+- Always check if error parameter is non-nil before setting
+
+```objc
+- (BOOL)installAppWithError:(NSError **)error {
+ if (someCondition) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSErrorDomain
+ code:SSErrorCodeInvalidInput
+ userInfo:nil];
+ }
+ return NO;
+ }
+ return YES;
+}
+```
+
+## Best Practices
+
+### Memory Management
+- Use ARC properly in both Swift and Objective-C
+- Be careful with retain cycles; use `weak` and `unowned` references appropriately
+
+```swift
+// ✅ Good
+class AppInstaller {
+ weak var delegate: AppInstallerDelegate?
+
+ private lazy var networkManager: NetworkManager = {
+ let manager = NetworkManager()
+ manager.delegate = self // Self is strong reference, but manager doesn't retain self
+ return manager
+ }()
+}
+```
+
+### Threading
+- Always update UI on the main queue
+- Use appropriate queues for background work
+
+```swift
+// ✅ Good
+DispatchQueue.global(qos: .userInitiated).async {
+ let result = self.processData()
+ DispatchQueue.main.async {
+ self.updateUI(with: result)
+ }
+}
+```
+
+### Optional Handling
+- Use safe unwrapping techniques
+- Prefer guard statements for early returns
+
+```swift
+// ✅ Good
+guard let data = response.data,
+ let apps = try? JSONDecoder().decode([App].self, from: data) else {
+ completion(.failure(ParsingError.invalidResponse))
+ return
+}
+```
+
+## Tools and Automation
+
+### SwiftLint
+Consider using SwiftLint to automatically enforce many of these formatting rules:
+
+```yaml
+# .swiftlint.yml
+line_length: 120
+function_body_length: 60
+file_length: 400
+type_body_length: 300
+
+disabled_rules:
+ - trailing_whitespace
+
+opt_in_rules:
+ - empty_count
+ - force_unwrapping
+```
+
+Remember: These guidelines should help code readability and maintainability. When in doubt, you should prioritize clarity and consistency with the existing codebase.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/faq.mdx
index 37126143..bf8cc32b 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/faq.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/faq.mdx
@@ -1,143 +1,137 @@
---
title: Vanliga frågor
-description: En sektion om de vanligast förekommande frågorna för SideStore.
+description: En sektion med de vanligaste frågorna om SideStore.
sidebar_position: 3
---
# Vanliga frågor
-Detta är en lista över vanliga frågor som vi får kring utvecklingen av SideStore, samt frågor som kan vara relevanta för olika typer av användare eller för dem som har problem.
+Det här är en lista över vanliga frågor om SideStore. Den täcker återkommande frågor vi får under utvecklingen av SideStore, men också sådant som olika typer av användare ofta undrar över eller problem de stöter på.
## Vad är SideStore?
-SideStore är en iOS-applikation som låter dig sideloada appar på din iOS-enhet med bara ditt Apple-ID. SideStore skriver om appar med ditt personliga utvecklarcertifikat och använder sedan en specialdesignad VPN för att lura iOS att installera dem. SideStore kommer periodiskt att "uppdatera" dina appar i bakgrunden för att hindra den normala 7-dagars period för utvecklare från att löpa ut. Målet med SideStore är att erbjuda en fristående sideloading-upplevelse. Det är en gemenskapsdriven fork av AltStore och har redan implementerat några av de mest efterfrågade funktionerna från communityn. Du behöver bara en dator en gång under installationen.
+SideStore är en iOS-app som låter dig sideloada appar till din iOS-enhet med enbart ditt Apple-ID. SideStore signer om apparna med ditt personliga utvecklingscertifikat och använder sedan ett [specialbyggt VPN](https://apps.apple.com/us/app/stosvpn/id6744003051) för att få iOS att installera dem. SideStore "uppdaterar" dina appar i bakgrunden med jämna mellanrum så att deras vanliga 7-dagarsperiod inte hinner löpa ut.
-(Contributions are welcome! 🙂)
+SideStores mål är att erbjuda en helt trådlös sideloading-upplevelse. Projektet är en communitydriven fork av [AltStore](https://github.com/rileytestut/AltStore) och innehåller redan flera av de mest efterfrågade community-funktionerna. Du behöver bara en dator vid installationen.
-### Kan jag aktivera JIT?
+(Bidrag är varmt välkomna! 🙂)
-För användare som kör iOS/iPadOS 16 eller lägre kan du aktivera JIT direkt från SideStore-sidan "Mina appar" genom att hålla ned på din app och välja "Aktivera JIT".
+### Vilka begränsningar har SideStore?
-Användare på iOS eller iPadOS 17.4 eller senare behöver använda en lösning såsom StikJIT/StikDebug eller SideStore nightly. Se guiden i avsnittet [Avancerat](advanced/jit).
+Om du använder ett gratis Apple-konto kan SideStore bara installera tre appar (inklusive sig själv) åt gången. Dessutom får högst tio olika appar installeras under en vecka (App IDs).
-### När kommer SideStore att släppas?
+### Kan jag aktivera JIT?
-SideStore har för närvarande inget officiellt releasedatum, utan befinner sig i ett publikt betastadium.
+På iOS/iPadOS 16 eller tidigare kan du aktivera JIT direkt från sidan "My Apps" i SideStore genom att hålla ned på appen och välja "Enable JIT".
-### Kan man sideloada appar just nu?
+Användare på iOS eller iPadOS 17.4 eller senare kan använda en lösning som SideStore 0.6.2 eller StikDebug (tidigare StikJIT). Se handledningen i avsnittet [Advanced](advanced/jit).
-Ja, precis som med AltStore!
+### När släpps SideStore?
-### Har detta AltStore-beta-funktioner?
+SideStore har inget lanseringsdatum just nu utan ligger i öppen betaversion.
-Vi har AltStore-beta-funktioner, men det är inte alltid den senaste versionen. Vi försöker hålla oss uppdaterade eller implementera dem på vårt eget sätt om det behövs.
+### Går det att sideloada appar just nu?
-### Kommer VPN-anslutningen att tömma batteriet?
+Ja, precis som i AltStore!
-Nej, eftersom den endast ansluter till din egen enhet. Inga fjärrservrar används, vilket innebär inga externa anslutningar och därmed ingen extra batteriförbrukning.
+### Har SideStore AltStore-funktioner (beta)?
-### Kommer VPN att spåra mig?
+Vi implementerar AltStore-funktioner från betan, men de är inte alltid de allra senaste. Vi försöker ligga i fas eller bygga egna versioner när det behövs.
-Nej, eftersom ingen fjärrserver används.
+### Drar VPN:et batteri om det är påslaget?
-### Jag kan inte ansluta till internet när VPN är på
+Nej. Det ansluter bara till din egen enhet, inga fjärrservrar används och inga externa uppkopplingar görs, så inget extra batterislitage.
-Se till att du inte har en alternativ DNS inställd i din Wi-Fi- eller WireGuard-konfiguration. Om du vet att DNS-IP-adressen fungerar, prova att ta bort den från din Wi-Fi-konfiguration och lägga till den i WireGuard-inställningarna under DNS.
+### Spårar VPN:et mig?
+
+Nej, eftersom ingen fjärrserver används.
### Uppdatering av SideStore fastnar mot slutet
-Gå till hemskärmen så slutförs uppdateringen. Vi vet inte varför detta händer, men det kan bero på att en VPN används för att dirigera `installd` till att uppdatera SideStore (sig självt).
+Gå till hemskärmen så slutförs processen. Vi vet inte exakt varför det händer, men det kan hänga ihop med att VPN:t styr `installd` för att uppdatera SideStore (sig själv).
-### Kan jag signera fler än 3 appar som aktiva?
+### Kan jag signera fler än tre appar samtidigt?
-Normalt sett nej, eftersom det är en begränsning i iOS och för utvecklarkonton. Apple tillåter endast 3 appar att installeras med ett kostnadsfritt Apple Developer-konto.
+Normalt sett nej, eftersom det är en begränsning hos iOS och gratisutvecklarkonton. Apple tillåter bara tre appar med ett kostnadsfritt Apple Developer-konto.
-För att ta bort denna begränsning (och också få 365 dagars giltighet) kan du betala för ett Apple Developer-konto för 99 USD/år.
+För att ta bort begränsningen (och få 365 dagars giltighet) kan du köpa ett Apple Developer-konto för 99 USD/år.
-Alternativt finns det för närvarande en nightly-build tillgänglig [här](https://github.com/SideStore/SideStore/releases/tag/nightly) (version 0.5.9-nightly.2024.10.23.1+1e969a0 vid skrivande stund) som använder SparseRestore-exploit för att kringgå 3-appgränsen. För närvarande fungerar detta bara på iOS-versioner under 18 dev beta 5 plus 18.0.1 definitivt.
+Alternativt kan du använda LiveContainer, eller på iOS-versioner 18 db5/18.0.1 och tidigare nyttja SparseRestore-exploiten för att runda 3-appsgränsen (den kringgår inte begränsningen på 10 App-ID:n).
-En guide för hur du använder detta finns [här](advanced/sparserestore).
+En guide finns [här](advanced/alternative).
-### Jag har ett problem, bugg eller en förfrågan om ny funktion eller förbättrad användarvänlighet
+### Jag har ett problem, en bugg eller önskar en förbättring
-Vänligen skapa en GitHub-issue på vår GitHub-sida för att rapportera en bugg eller föreslå en funktion (med lämpliga etiketter)!
+Skapa gärna ett GitHub-ärende på vår GitHub-sida för att rapportera buggar eller föreslå funktioner (med rätt etiketter)!
-### Jag är utvecklare, hur påverkar detta mig?
+### Jag är utvecklare, hur påverkar det här mig?
-Det påverkar dig inte direkt, förutom möjligen en uppdatering av AltKit när/om vi lägger till våra tillägg.
+Dina appar behöver inga ändringar för att fungera med SideStore!
-### Behöver jag uppdatera min app för att stödja detta?
+### Måste jag installera AltStore för att installera SideStore?
-Nej, eftersom det för närvarande agerar som AltStore vid signering.
+Nej, du kan sideloada SideStore direkt genom vår guide!
-### Som användare har jag problem att logga in på SideStore. Jag får ett felmeddelande
+### Jag får fel när jag försöker logga in i SideStore
-Det finns många orsaker till att detta kan hända, men det vanligaste problemet är tillfälliga driftstörningar på Anisette-servern. Du kan för närvarande ändra Anisette-servern i din enhets Inställningar-app under SideStore under “Anisette URL”.
+Det kan bero på flera saker, men det vanligaste är att anisette-servern är nere tillfälligt. Du kan byta anisette-server i appen Inställningar på din enhet, under "Anisette URL" i SideStore.
-### Kommer SideStore att ha en Storefront?
+### Kommer SideStore att ha en butiksvy?
-Vi har för närvarande en Community Source! Source URL: https://community-apps.sidestore.io/sidecommunity.json
+Vi har redan en Community Source! Source URL: https://community-apps.sidestore.io/sidecommunity.json
-Vi har också en tjänst som heter [SideStore Connect](https://connect.sidestore.io) som låter utvecklare publicera sina egna appar.
+Vi erbjuder också tjänsten [SideStore Connect](https://connect.sidestore.io) som låter utvecklare publicera egna appar.
### Varför har min app en uppdatering som heter "pacer test"?
-Detta var en testuppdatering för att se om det uppstod problem mellan större versioner, och bör inte synas vid normal användning. Om du ser detta problem efter release, installera om SideStore eller rapportera det som en bugg.
+Det var en testuppdatering för att se om problem uppstod mellan större versioner och ska inte dyka upp vid normal användning. Om du ser den efter en release, installera om SideStore eller rapportera det som en bugg.
-### Varför aktiveras inte JIT automatiskt för mina JIT-baserade appar?
+### Varför aktiveras inte JIT automatiskt för mina JIT-appar?
-Vi har för närvarande ingen automatisk JIT-aktiveringsmetod, och om vi får det skulle du behöva ha SideStore-VPN på.
+Vi har ingen automatisk metod för JIT just nu, och om vi hade det skulle StosVPN behöva vara på. Som alternativ kan du använda StikDebug.
### Har SideStore ett iPadOS-gränssnitt?
-Det har vi absolut!
-
-### Jag såg att en iMac eller MacBook Pro lagts till på mitt konto. Är det säkert, och är det en riktig Mac?
-
-Dessa Macar är inte riktiga, utan genereras automatiskt av Anisette-servern för att hjälpa vid inloggning. Ingen privat data skickas heller till Anisette-servern, eftersom den data som servern tillhandahåller endast används i SideStore.
-
-### Varför blir mitt konto låst när jag använder SideStore?
-
-Äldre Anisette-servrar som används av många användare är kända för att orsaka att Apple-ID:n låses. Vänligen använd en av de officiella Anisette-servrarna eller hosta din egen [anisette-v3-server](advanced/anisette).
+Jajamän!
-### Varför får jag fel -36607?
+### Jag såg att en iMac eller MacBook Pro lades till på mitt konto. Är det säkert och är det en riktig Mac?
-Detta är ett inloggningsproblem med Anisette-servern. Det finns egentligen inte mycket information om det, men att byta Anisette-server ibland hjälper, eller så kan du fortsätta försöka logga in tills det fungerar.
+Det är inte riktiga Macs. De genereras automatiskt av anisette-servern för att hjälpa till vid inloggningen. Ingen privat data skickas till anisette-servern; allt används bara i SideStore.
-### Kan jag överföra mina AltStore/Sideloady-appar?
+### Varför låses mitt konto när jag använder SideStore?
-Ja, ta bara inte bort den ursprungliga appen på din enhet. Gå in i SideStore och sideloada samma eller uppdaterade IPA, så bör den läggas till i din lista över appar i SideStore med dina data intakta.
+Äldre anisette-servrar som delas av många användare kan låsa Apple-ID:n. Använd en officiell anisette-server eller kör en egen [anisette-v3-server](advanced/anisette).
-### Varför behöver jag uppdatera SideStore direkt efter inloggning?
+### Kan jag överföra mina AltStore-/Sideloadly-appar?
-Detta beror på att AltServer eller andra program sideloada SideStore med sin egen app-groupID, medan vi använder vår egen. Att uppdatera SideStore ändrar det till vårt, vilket gör att appar försvinner eftersom deras groupID inte uppdateras. Det är bäst att inte sideloada något innan du uppdaterat SideStore vid en ren installation.
+Ja, ta bara inte bort originalappen på din enhet. Öppna SideStore och sideloada samma eller en uppdaterad IPA av appen så läggs den till i listan över appar i SideStore och dina data finns kvar.
-### Kan jag göra OTA-uppdateringar?
+### Varför måste jag uppdatera SideStore direkt efter inloggning?
-Ja! Klicka bara på uppdateringsknappen!
+AltServer och andra program sideloadar SideStore med sitt eget app groupID medan vi använder vårt. När du uppdaterar SideStore byts det till vårt, vilket gör att apparna försvinner eftersom deras groupID:n inte uppdateras. Sideloda ingenting innan du uppdaterar SideStore på en ren installation.
-### Jag vill testa en SideStore-version, och vill behålla mina data när jag byter till en testversion. Ska jag ta bort appen eller sideloada testversionen via SideStore?
+### Stöder SideStore OTA-uppdateringar?
-Du kan sideloada via SideStore och dina data bör vara desamma. Vi har ingen registreringstoggle för att byta till andra versioner. Vi kan inte heller garantera att dina data överförs när du testar en inofficiell eller nightly-build.
+Japp! Tryck bara på uppdateringsknappen när den visas!
-### Mina appar försvann och jag vet inte vad jag ska göra
+### Jag vill testa en SideStore-version och behålla mina data. Ska jag ta bort appen eller sideloada testversionen via SideStore?
-Få inte Panik! Sideloada apparna igen utan att ta bort dem från din enhet, så bör dina data vara desamma. Tyvärr kan det hända att dina inaktiverade appar är borta, men för att kontrollera det uppdaterar du bara SideStore för att se om de återkommer.
+Du kan sideloada en nightly-version av SideStore via SideStore eller AltServer så ska dina data vara kvar, eller aktivera betauppdateringar och välj "nightly" i Settings. Vi kan inte garantera datasäkerhet om du testar en inofficiell eller nightly-build.
-### Jag kan inte välja min pairing-fil med någon filtyp
+### Mina appar försvann från SideStore och jag vet inte vad jag ska göra!
-Se till att din pairing-fils filändelse slutar med `.mobiledevicepairing` eller `.plist`. Om den inte gör det, kontrollera om du har zippat din pairing-fil innan du skickade den till din telefon. Om du missar detta kan filen bli korrupt under överföring. Dessutom, när du signerar SideStore med ett certifikat kommer du inte att kunna välja pairing-filen inifrån appen. Du kan prova att flytta pairing-filen till rotkatalogen i SideStore-mappen i appen Filer under "På min iPhone/iPad" och namnge den `ALTPairingFile.mobiledevicepairing`. Om du inte ser SideStore-mappen i appen Filer, anslut din telefon till datorn och dra och släpp pairing-filen till SideStore-appen. Se till att ändra namnet till det nämnda. Observera att det är skiftlägeskänsligt.
+Ingen panik! Sideloada om apparna som vanligt utan att ta bort dem från enheten så ska dina data vara oförändrade. Tyvärr kan deaktiverade appar vara borta, men för att bekräfta det kan du uppdatera SideStore och se om de dyker upp igen.
-### Kan inte starta DebugServer
+### Går inte att starta DebugServer
-Det finns tillfällen då DebugServer inte fungerar. Du kan dock prova en lösning.
+Ibland fungerar inte DebugServer. Du kan prova följande:
**Skapa en ny pairing-fil**
-För att börja använda en ny pairing-fil går du till fliken Inställningar och klickar på Återställ pairing-fil, och accepterar dialogen. Följ sedan instruktionerna för [pairing-fil](installation/pairing-file).
+Importera pairing-filen igen med iloader.
-### För närvarande kända problem
+### Aktuellt kända problem
-Om du för närvarande har problem och vill veta om vi redan känner till dem, ta en titt på vår GitHub-issue-sida som har en lista över kända problem och sätt att mildra några av de problem du kan ha. Vissa problem i den här listan kan vara kända men inte där, utan finns i GitHub-issues. https://github.com/SideStore/SideStore/issues/490
+Om du har problem och vill se om vi redan känner till dem kan du kolla vår GitHub-issuesida, som listar kända problem och sätt att mildra dem. Det kan finnas fler kända problem i GitHub-issuesektionen än vad som står i listan. https://github.com/SideStore/SideStore/issues/490
-Om du har några problem som inte finns i denna lista, skapa en GitHub-issue eller [gå med i vår Discord.](https://discord.gg/sidestore-949183273383395328)
+Om du har ett problem som inte finns med här, skapa ett GitHub-ärende eller [gå med i vår Discord](https://discord.gg/sidestore-949183273383395328).
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/installation/install.mdx
new file mode 100644
index 00000000..95096ab4
--- /dev/null
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/installation/install.mdx
@@ -0,0 +1,33 @@
+---
+title: Installera
+description: Installera SideStore på din iDevice
+sidebar_position: 2
+---
+## Installera SideStore
+1. Anslut din iDevice till datorn med kabel. Om du uppmanas, lita på datorn och ange din lösenkod.
+2. Öppna iloader.
+3. Logga in med ett Apple-konto (det behöver inte matcha enheten).
+4. Välj din iDevice.
+5. Välj "Install SideStore".
+
+### På din iDevice
+Gör följande:
+1. Öppna appen Inställningar.
+2. Gå till "Allmänt" och sedan "VPN och enhetshantering".
+3. Godkänn "Developer App" under Apple-kontots e-postadress.
+4. Gå till "Integritet och säkerhet".
+5. Scrolla längst ner och slå på "Utvecklarläge". Telefonen startas om.
+6. Öppna StosVPN och tryck på "Connect".
+7. Öppna SideStore.
+8. Logga in med Apple-kontot du använde i iloader.
+9. Gå till "My Apps".
+10. Tryck på knappen "x DAYS" till höger om SideStore (x är antalet dagar tills appen går ut).
+11. En prompt om att skapa ett nytt signeringscertifikat visas, tryck på "Refresh Now".
+
+Om processen lyckas öppnas din enhet till hemskärmen, du får en notifiering och SideStore är tillgängligt igen inom några sekunder.
+
+Observera att om du uppdaterar eller nollställer din iDevice löper pairing-filen ut och du måste importera den igen via [den här guiden](../advanced/pairing-file). Det kan även hända sporadiskt på grund av Apples mjukvara.
+
+Om du installerar om SideStore via iloader kan certifikatet återkallas, vilket kräver att du uppdaterar det manuellt igen.
+
+Om du vill installera SideStore på en annan enhet med samma Apple-konto följer du [de här stegen](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291).
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/installation/linux.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/installation/linux.mdx
deleted file mode 100644
index f693cc43..00000000
--- a/i18n/sv/docusaurus-plugin-content-docs/current/installation/linux.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: Linux-instruktioner
-description: Instruktioner för att installera SideStore med Linux
-sidebar_position: 5
----
-
-För att installera SideStore (eller någon annan IPA) på Linux, se till att du har Docker installerat. Innan du börjar, säkerställ att du har installerat StosVPN och alla andra [förutsättningar](prerequisites)!
-
-1. Kör altcon med Docker
- ```bash
- docker run --rm -it -e ALTSERVER_ANISETTE_SERVER="https://ani.sidestore.io/" -v ${PWD}/:/mnt/ -v /var/run:/var/run ghcr.io/sidestore/altcon
-````
-
-Du kan också köra altcon med Podman
-
-```bash
-podman run --privileged --rm -it -e ALTSERVER_ANISETTE_SERVER="https://ani.sidestore.io/" -v ${PWD}/:/mnt/ -v /var/run:/var/run ghcr.io/sidestore/altcon
-```
-
-Altcon börjar nu para ihop sig med din enhet—anslut den om du inte redan gjort det. Tryck på “trust” och ange din lösenkod.
-
-När du är klar, följ [post-installationsinstruktionerna](post-install).
\ No newline at end of file
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/installation/mac.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/installation/mac.mdx
deleted file mode 100644
index 7a1a9816..00000000
--- a/i18n/sv/docusaurus-plugin-content-docs/current/installation/mac.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: macOS-instruktioner
-description: Instruktioner för att installera SideStore på macOS
-sidebar_position: 4
----
-
-Innan du börjar, se till att du har genomfört alla steg som finns i [Förutsättningar](prerequisites) och att du har en [parningsfil](pairing-file)!
-
-1. Ladda ner och kör AltServer från [AltStore-webbplatsen](https://AltStore.io).
-2. Ladda ner SideStore-IPA:n, som du hittar [här](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Håll ner **option/alt** och klicka på AltServer-ikonen i menyraden. Klicka på **Sideload .ipa** och välj SideStore-IPA-filen.
-4. Godkänn **Developer App** med din Apple ID-e-postadress.
- * Du hittar detta i Inställningar, under **Allmänt** och sedan **VPN och enhetshantering**.
-5. Öppna SideStore, välj din parningsfil och logga in med ditt Apple ID.
-
-När du är klar, följ [post-installationsinstruktionerna](post-install).
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
deleted file mode 100644
index 102ff601..00000000
--- a/i18n/sv/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: Paringsfil
-description: Paringsfiler är avgörande för SideStores funktionalitet.
-sidebar_position: 2
----
-
-Att använda JitterbugPair (*inte* Jitterbug-appen) gör att vi kan skapa en paringsfil för program som SideStore att kommunicera med din enhet. Detta krävs för att SideStore ska fungera.
-
-Ladda ner JitterbugPair för [Windows (64-bit)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip), [macOS](https://github.com/SideStore/SideStore-Docs/releases/download/need-a-place-to-put-jittterbug/jitterbugpair) eller [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip).
-
-## Paringsinstruktioner
-
-:::tip
-
-När du använder molnlagring kan filändelsen ändras (vanligtvis till .txt). Det rekommenderas alltid att zippa din paringsfil innan överföring. SideStore accepterar endast `.mobiledevicepairing`-filer.
-:::
-
-### Windows
-
-1. Extrahera JitterbugPair-zip-filen.
-2. Anslut din enhet till datorn och lås upp den till hemskärmen. Kör sedan programmet.
- * Din enhet kan be dig att “lita på” datorn. Acceptera detta för att parningen ska fungera.
-3. När processen är klar får du en fil som slutar på `.mobiledevicepairing`.
-4. Överför filen till din enhet via iTunes eller valfri metod. Att zippa filen innan överföring är det säkraste sättet för att undvika korruption.
- * Molnlagring kan ändra filändelsen (oftast till .txt), så var försiktig. Du kan även byta till `.plist` för äldre SideStore-versioner (t.ex. 0.1.1).
-
-På Windows kan det hända att du behöver köra programmet via Kommandoprompt eller PowerShell om dubbelklick inte fungerar:
-
-5. Öppna Utforskaren och gå till mappen där `jitterbugpair.exe` finns.
-6. Klicka i adressfältet, skriv `powershell` och tryck Enter för att öppna PowerShell.
-7. Kör `./jitterbugpair.exe` medan din enhet är ansluten.
-
-### macOS
-
-1. **Extrahera** `jitterbugpair-macos.zip`.
-2. **Sätt en lösenkod** på din enhet om du inte redan har en. Lås upp enheten och anslut den med kabel. Vid prompt: tryck “Trust”.
-3. Öppna enheten till hemskärmen.
-4. Leta upp den extraherade `jitterbugpair`-filen (svart/grön ikon).
-5. Öppna Terminal (under Program > Verktyg eller Launchpad).
-6. Dra `jitterbugpair`-filen in i Terminal och tryck Return.
-7. Får du meddelandet “macOS cannot verify that this app is free from malware”?
- - Gå till Systeminställningar > Integritet & säkerhet
- - Scrolla ner till meddelandet om appen
- - Klicka “Öppna ändå”
- - Kör programmet igen
-8. JitterbugPair genererar en **paringsfil** med ändelsen `.mobiledevicepairing`.
-9. Hittar du inte filen?
- - Kopiera namnet på filen som genererades
- - Klistra in det i Finder-sökfältet
- - Om du kört programmet flera gånger visas alla paringsfiler med samma namn
-10. **Överför paringsfilen** till din iOS-enhet via AirDrop, iCloud/OneDrive/Google Drive, e-post eller annan metod. För bästa resultat, komprimera den till en .zip först.
-
-### Linux
-
-Dessa instruktioner förutsätter att du är bekväm med Linux-terminalen.
-
-1. Extrahera Jitterbug-paketet och öppna en terminal i den extraherade mappen.
-2. Kör `chmod +x ./jitterbugpair` för att göra skriptet körbart.
-3. Anslut din enhet till datorn, lås upp till hemskärmen och kör `./jitterbugpair` i terminalen.
- * Acceptera “Trust”-prompten på din enhet om den visas; du kan behöva köra om kommandot.
-4. Efter avslutad process får du en fil som slutar på `.mobiledevicepairing` i den aktuella mappen.
-5. Överför filen till din enhet med valfri metod. Zippa gärna först för att undvika ändrade filändelser.
- * Molnlagring kan ändra ändelsen (oftast till .txt); var uppmärksam. För äldre SideStore-versioner kan du byta till `.plist` vid behov.
-
-Det kan fungera att bara göra `chmod +x` och köra `jitterbugpair` direkt från en filhanterare, men terminalen är oftast enklast.
\ No newline at end of file
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/installation/post-install.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/installation/post-install.mdx
deleted file mode 100644
index 65edad4b..00000000
--- a/i18n/sv/docusaurus-plugin-content-docs/current/installation/post-install.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Efterinstallationsinstruktioner
-description: Snart klart, bara några steg till!
-sidebar_position: 6
----
-
-Det sista steget för att installera SideStore är att uppdatera appen inifrån.
-
-För att göra detta behöver du:
-
-1. Anslut till StosVPN.
-2. Öppna SideStore.
-3. Om du inte redan gjort det, välj parningsfilen.
-4. Gå till _Mina appar_.
-5. Välj knappen _x DAGAR_, där x är antalet dagar kvar tills utgång.
- * Om det lyckas öppnas en tom Safari-flik eller så återgår du till hemskärmen. Du får även en notis som påminner dig om detta.
-
-Om SideStore inte uppdateras kommer en bugg som orsakar för tidig utgång att tvinga dig att installera om appen. Planen är att detta ska ske automatiskt i framtiden, men just nu måste det göras manuellt.
\ No newline at end of file
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
index 9dc0baa8..bccd47e2 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
@@ -1,36 +1,48 @@
---
-title: Förutsättningar
+title: Förberedelser
description: 'De första stegen i installationen.'
sidebar_position: 1
---
-SideStores installationsprocess kan verka knepig, men med en ***engångsanvändning*** av en dator och lite tid kommer du att ha SideStore på din enhet!
+SideStores installationsprocess kan verka knepig, men med ***engångs***hjälp av en dator och lite tid har du SideStore på din enhet!
## Krav
För att installera SideStore behöver du:
-- En iOS- eller iPadOS-enhet med iOS eller iPadOS 14 eller senare.
-- En Windows-, macOS- eller Linux-dator (Linux-stöd är experimentellt).
-- Ett Apple-ID.
-- Appen StosVPN.
-- Lite tid (processen är snabb, men se till att ha tid för felsökning).
-Användare av iOS/iPadOS 16 eller senare *måste* ha Utvecklarläge (Developer Mode) aktiverat. Gör så här:
-1. Öppna Inställningar.
-2. Gå till **Integritet och säkerhet**.
-3. Aktivera **Utvecklarläge** längst ned.
+- En iPhone/iPad [med lösenkod](https://support.apple.com/en-us/119586) som kör iOS/iPadOS 14 eller senare
+- En dator (engångsbruk)
+- Ett Apple-konto
+- En Wi-Fi-anslutning
+- Lite tid (processen går snabbt, men [avsätt tid för felsökning](/docs/troubleshooting/))
-> **Obs:** Du ser endast alternativet **Utvecklarläge** efter att du har installerat SideStore.
+## Förbered dina enheter
-## StosVPN
+### På din iPhone/iPad
-SideStore använder en inbyggd VPN för att kommunicera med interna tjänster.
+SideStore använder ett VPN på enheten som gör att SideStore kan prata med interna tjänster.
-1. Ladda ner appen StosVPN från [App Store](https://apps.apple.com/us/app/stosvpn/id6744003051).
-2. Aktivera VPN-anslutningen.
+1. Ladda ner appen StosVPN från [Apple App Store](https://apps.apple.com/us/app/stosvpn/id6744003051).
+2. Aktivera VPN:t.
-Denna VPN måste vara aktiv när du vill installera eller uppdatera appar i SideStore.
+VPN:t måste vara på varje gång du vill installera, uppdatera eller uppfräscha appar i SideStore.
-## Nästa steg
+### På din Mac
+1. Ladda ner och installera iloader för Mac ([M-Series](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg) eller [Intel](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg)).
+2. Öppna Terminal, kör `sudo xattr -c ./Applications/iloader.app` och ange ditt lösenord om du blir ombedd.
-Gå nu till nästa sida för att skapa din parningsfil!
\ No newline at end of file
+
+## På din Windows-dator
+1. Ladda ner och installera [iTunes](https://apple.co/ms).
+2. Ladda ner iloader-installationsprogrammet ([exe](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe) eller [msi](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)).
+3. Kör installationsprogrammet.
+
+## På din Linux-dator
+1. Ladda ner och installera `usbmuxd` (kan redan vara installerat i din distribution, annars installerar du via pakethanteraren).
+2. Ladda ner och installera iloader för din distribution ([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [övriga](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)).
+
+
+## Nästa steg
+
+Följ sedan installationsinstruktionerna för att lägga in SideStore!
+- [Installera](install)
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/installation/windows.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/installation/windows.mdx
deleted file mode 100644
index 5b4e1916..00000000
--- a/i18n/sv/docusaurus-plugin-content-docs/current/installation/windows.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Windows-installation
-description: Instruktioner för att installera SideStore på Windows
-sidebar_position: 3
----
-
-Se till att du har de icke-Microsoft Store-versionerna av [iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe) och [iTunes](https://support.apple.com/en-us/HT210384) installerade om du kör Windows. Innan du börjar, se till att du har slutfört alla steg under [Förutsättningar](prerequisites) och att du har en [paringsfil](pairing-file)!
-
-Den icke-Microsoft Store-versionen av iCloud togs bort från Apples webbplats i mitten av september 2022. Länken ovan leder till en äldre version som fortfarande är kompatibel och tillgänglig direkt från Apples servrar.
-
-1. Ladda ner och kör AltServer från [AltStore-webbplatsen](https://altstore.io/).
-2. Ladda ner SideStore-IPA:n som du hittar [här](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa).
-3. Håll ner **Shift** och klicka på AltServer-ikonen i systemfältet. Klicka på **Sideload .ipa** och välj SideStore-IPA-filen.
-4. Godkänn **Developer App** med din Apple-ID-e-postadress.
- * Du hittar detta i Inställningar > **Allmänt** > **VPN och enhetshantering**.
-5. Öppna SideStore, välj din paringsfil och logga in med ditt Apple ID.
-
-När du är klar, följ [efterinstallationsinstruktionerna](post-install).
\ No newline at end of file
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/intro.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/intro.mdx
index 9ef0c788..a4953f47 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/intro.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/intro.mdx
@@ -2,16 +2,18 @@
sidebar_position: 1
---
-# SideStore Intro
+# Introduktion till SideStore
:::danger
-This documentation may currently not completely translated into your language.
-Denna dokumentation kanske för närvarande inte är helt översatt till ditt språk.
+These docs might be outdated in this language. Please refer to the English version or help us update the translation.
+
+Den här dokumentationen kan vara inaktuell på svenska. Kontrollera gärna den engelska versionen eller hjälp oss uppdatera översättningen.
+
:::
Välkommen till SideStore!
-SideStore gör det enkelt att sideloada applikationer på iOS/iPadOS 14+ enheter.
+SideStore gör det enkelt att sideloada appar på iOS- och iPadOS-enheter med version 14 eller senare.
-För att komma igång, gå till [Förutsättningar](installation/prerequisites.mdx) och följ instruktionerna.
+För att komma igång går du till sidan [Förberedelser](installation/prerequisites.mdx) och följer instruktionerna.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/release-notes.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/release-notes.mdx
index b5b33fac..6c7d5e40 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/release-notes.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/release-notes.mdx
@@ -1,42 +1,50 @@
---
-title: Utgivningsanteckningar
-description: En samling av SideStore-utgivningsanteckningar.
-sidebar_position: 2
+title: Release Notes
+description: A collection of SideStore release notes.
+sidebar_position: 6
---
-# Stabil
-
-## 0.6.1
-
-### Förändringslogg
-Är det redan vår? Här kommer en ny uppdatering som åtgärdar migrationsproblem från 0.5.9/0.5.10 och en utgångsbugg. Glad sideloading!
-
-### Vad som ändrats:
-- fix: stavfel i hasUpdate-jämförelse av @l2dy i [#900](https://github.com/SideStore/SideStore/pull/900)
-- Uppdatera SettingsViewController.swift av @neoarz i [#915](https://github.com/SideStore/SideStore/pull/915)
-- Fixar migrationsproblem vid uppgradering från 0.5.9 till 0.6.0 av @mahee96 i [#920](https://github.com/SideStore/SideStore/pull/920)
-- Fix: stavfel "levaraging" → "leveraging" av @lafrenierejm i [#926](https://github.com/SideStore/SideStore/pull/926)
-- Lade till StosVPN i EM Proxy-delen av @Br0des i [#940](https://github.com/SideStore/SideStore/pull/940)
+# Stable Notes
-## 0.6.0
+## 0.6.2
-### Förändringslogg
-Det är mars och vi har stora förändringar. Vi har äntligen inkluderat AltStore 2.0-ändringar i SideStore. Så du får alla fördelar av det plus några egna buggfixar. Njut!
+### Changelog
+- Deprecation of WireGuard, complete transition to [StosVPN](https://apps.apple.com/us/app/stosvpn/id6744003051)
+- jitterbugpair is being superseded by [idevice pair](https://github.com/jkcoxson/idevice_pair)
+- Merge more of AltStore 2.0 upstream
+- Added support for importing/exporting your Apple ID's certificate for use with multiple devices, instructions to utilize this [here](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291)
+- Adds url scheme/allow exporting certificate (to LiveContainer)
+- Fix issue where installing apps would get stuck around 75%
+- Add option to reuse the main App ID profile for extensions instead of removing/registering them (only one app id/app)
+- General type fixes and visual updates
-### Vad som ändrats:
-- AltStore 2.0-ändringar i [#794](https://github.com/SideStore/SideStore/pull/794)
-- [Refresh]: Ta bort installationsdelar från uppdatering – uppdateringen ska bara förnya provisioningprofiler av @mahee96 i [#846](https://github.com/SideStore/SideStore/pull/846)
-- [Settings]: Fix: DisableAppLimit-omkopplaren återställdes till av-läge även på iOS där sparseRestore inte är patchet än av @mahee96 i [#850](https://github.com/SideStore/SideStore/pull/850)
-- [Backup]: Fix: uppdateringslogik under installation saknades eftersom override-nyckelordet saknades av @mahee96 i [#857](https://github.com/SideStore/SideStore/pull/857)
-- Feature: Massläggning av källor på källskärmen med möjlighet att förhandsgranska innan de sparas i databasen av @mahee96 i [#888](https://github.com/SideStore/SideStore/pull/888)
-- Feature: Rendera beskrivning av in-app-uppdatering som (full) markdown av @mahee96 i [#897](https://github.com/SideStore/SideStore/pull/897)
-=======
-title: Release Notes
-description: A collection of SideStore release notes.
-sidebar_position: 2
----
+### What's Changed:
+- Rebase 2.0 wip by @nythepegasus in [#794](https://github.com/SideStore/SideStore/pull/794)
+- [Refresh]: Remove install stuffs from refresh since in refresh should only renew provisioning profiles by @mahee96 in [#846](https://github.com/SideStore/SideStore/pull/846)
+- [Settings]: Fix: DisableAppLimit switch reverting back to off state even if on iOS where sparseRestore is not patched yet by @mahee96 in [#850](https://github.com/SideStore/SideStore/pull/850)
+- Update trustedapps.json by @neoarz in [#853](https://github.com/SideStore/SideStore/pull/853)
+- [Backup]: Fix: update logic during install missed since override keyword was missing by @mahee96 in [#857](https://github.com/SideStore/SideStore/pull/857)
+- Fix Repository App Previews by @neoarz in [#871](https://github.com/SideStore/SideStore/pull/871)
+- Feature: Bulk sources-add in sources screen with capability to stage them before persisting into database by @mahee96 in [#888](https://github.com/SideStore/SideStore/pull/888)
+- Version 0.6.0: CoreData Migrations fix including xcdatamodels and xcmappingmodels by @mahee96 in #894
+- Feature: Render in-app update description as (full) markdown by @mahee96 in #897
+- fix: typo in hasUpdate comparison by @l2dy in [#900](https://github.com/SideStore/SideStore/pull/900)
+- Update SettingsViewController.swift by @neoarz in [#915](https://github.com/SideStore/SideStore/pull/915)
+- WIP: Fixes for migration issues when migrating from 0.5.9 to 0.6.0 by @mahee96 in #920
+- Fix typo "levaraging" -> "leveraging" by @lafrenierejm in [#926](https://github.com/SideStore/SideStore/pull/926)
+- Added StosVPN to the EM Proxy part. by @Br0des in [#940](https://github.com/SideStore/SideStore/pull/940)
+- StosVPN-integration: Removed em_proxy and EmotionalDamage module in favour of stosVPN by @mahee96 in [#945](https://github.com/SideStore/SideStore/pull/945)
+- Disable minimuxer ready check which shows NO WIFI/VPN error since stosVPN can work on cellular too by @mahee96 in [#935](https://github.com/SideStore/SideStore/pull/935)
+- Add iOS 17.4+ JIT and mounting by @jkcoxson in [#953](https://github.com/SideStore/SideStore/pull/953)
+- Add export certificate feature by @hugeBlack in [#959](https://github.com/SideStore/SideStore/pull/959)
+- Feat: Add Pairing File Export URL callback and replace Wireguard with StosVPN by @stossy11 in [#962](https://github.com/SideStore/SideStore/pull/962)
+- Change front-facing references to AltStore by @owoellen in [#987](https://github.com/SideStore/SideStore/pull/987)
+- Update OperationError.swift for idevice_pair by @CelloSerenity in [#995](https://github.com/SideStore/SideStore/pull/995)
+- Add import/export certificate feature by @hugeBlack in [#1008](https://github.com/SideStore/SideStore/pull/1008)
+- Fix pairing file doc link by @CelloSerenity in [#1011](https://github.com/SideStore/SideStore/pull/1011)
+- Add option for using main bundle's profile for app extensions, update AltSign & libmd by @hugeBlack in [#1012](https://github.com/SideStore/SideStore/pull/1012)
+- Use main profile when refreshing by @hugeBlack in [#1013](https://github.com/SideStore/SideStore/pull/1013)
-# Stable Notes
## 0.6.1
@@ -51,7 +59,7 @@ It's spring already? Here's a new update that should fix migration issues from 0
- Added StosVPN to the EM Proxy part. by @Br0des in [#940](https://github.com/SideStore/SideStore/pull/940)
-## 0.6.0
+## 0.6.0 - DO NOT use this build, use either 0.6.1 or 0.5.10 instead
### Changelog
It's March and we have some big changes. We've finally included AltStore 2.0 changes into SideStore. So you will get all the benefits of that and also some fixes in SideStore. Enjoy!
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
index 23dbb992..78b6cedb 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
@@ -1,59 +1,58 @@
---
title: Vanliga problem
-description: Vanliga problem som kan uppstå i SideStore.
+description: Vanliga SideStore-problem utan felkoder.
---
:::warning
-Den här sidan är för närvarande under arbete. Informationen bör vara korrekt, men om du behöver hjälp, vänligen besök vår [Discord-server](https://discord.com/invite/sidestore).
+Den här sidan är under arbete. Informationen ska stämma, men kontakta gärna vår [Discord-server](https://discord.gg/sidestore-949183273383395328) om du behöver hjälp.
:::
-## Vanliga problem med SideStore
+## Vanliga SideStore-problem
-### AFC-anslutning misslyckades
+### AFC Connection Failure
#### Orsak
-Anslutningsproblem eller ogiltig parningsfil.
+Anslutningsproblem eller ogiltig pairing-fil.
#### Åtgärd
-1. Försök att ansluta igen
-2. Generera en ny parningsfil med JitterbugPair och importera den via inställningsmenyn. Se våra [instruktioner för parningsfil](/docs/installation/pairing-file) för mer information.
+1. Försök ansluta igen. Kontrollera att Wi-Fi och StosVPN är aktiva.
+2. Ladda in och importera en ny pairing-fil via iloader.
-### Ingen Wi-Fi eller VPN-anslutning
+### No Wi-Fi or VPN Connection
#### Orsak
-Anslutningsproblem med minimuxer-tjänsten.
+Anslutningsproblem mot minimuxer.
#### Åtgärd
-1. Om du använder WireGuard, byt till StosVPN
-2. Försök igen (att trycka flera gånger på knappen hjälper ofta)
-3. Starta om SideStore
-4. Starta om StosVPN
-5. Generera en ny parningsfil med JitterbugPair och importera den via inställningsmenyn. Se våra [instruktioner för parningsfil](/docs/installation/pairing-file) för mer information.
-
-### SideStore hänger sig halvvägs vid installation
+1. Om du använder WireGuard, byt till StosVPN.
+2. Stäng av eventuella DNS-blockerare.
+3. Försök igen (upprepade försök kan hjälpa).
+4. Starta om SideStore.
+5. Starta om StosVPN.
+6. Ladda in och importera en ny pairing-fil via iloader.
+
+### SideStore fastnar mitt i installationen
#### Orsak
-Cache-problem.
+Cache- eller protokollproblem.
#### Åtgärd
-1. Starta om SideStore
-2. Rensa cache
-3. Byt anisette-server
-4. Återställ `adi.pb`
-5. Logga ut från SideStore och logga in igen
-6. Använd WireGuard
-7. Starta om enheten
-8. Generera en ny parningsfil
-9. Installera om SideStore
-
-### Kan inte starta SideStore
+1. Uppdatera SideStore om möjligt, annars starta om.
+2. Töm cache.
+3. Byt anisette-server.
+4. I Settings > Servers: återställ adi.pb, logga ut och in igen i SideStore.
+5. Starta om enheten.
+6. Skapa pairing-filen på nytt.
+7. Installera SideStore igen via AltServer.
+
+### Går inte att starta SideStore
#### Orsak
-Flera möjliga orsaker.
+Flera möjliga orsaker.
#### Åtgärd
-1. Kontrollera att du installerade SideStore via AltServer.
+1. Kontrollera att du installerat via iloader.
2. Installera om SideStore.
-Om ovanstående inte fungerar, gör så här:
+Om det inte hjälper, gör så här:
-1. Radera SideStore och alla appar som installerats via SideStore.
-2. Installera om SideStore.
-3. Välj parningsfil och logga in (du får en uppmaning om att uppdatera SideStore – välj nej).
-4. Installera `SideStore.ipa` till din enhet.
-5. Importera `SideStore.ipa` i SideStore som du gör med vilken annan app som helst.
-6. Detta ger SideStore en ren uppdatering och förhoppningsvis löser problemet.
+1. Ta bort SideStore och alla appar du installerat via SideStore.
+2. Installera SideStore igen.
+3. Importera pairing-filen och logga in (när du får frågan om att uppdatera SideStore väljer du nej).
+4. Installera `sidestore.ipa` på enheten.
+5. Importera `sidestore.ipa` i SideStore som vilken IPA som helst.
+6. Detta gör en ren uppdatering och bör lösa problemet.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
index 61185b91..eecb4f54 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
@@ -1,11 +1,11 @@
---
title: Felkoder
-description: Felkoder som förekommer i SideStore.
+description: Felkoder som kan visas i SideStore.
---
:::warning
-Denna sida är för närvarande inte helt korrekt återgivande av hur SideStore fungerar, eftersom den är baserad på AltStores felkoder. Viss information är fortfarande korrekt, men förlita dig inte ordagrant på detta. Be om hjälp i vår [Discord-server](https://discord.com/invite/sidestore) om du behöver det.
+Den här sidan är inte helt uppdaterad i förhållande till hur SideStore fungerar, eftersom den bygger på AltStores sida om felkoder. Mycket stämmer fortfarande, men lita inte blint på den. Be gärna om hjälp i vår [Discord-server](https://discord.gg/sidestore-949183273383395328) vid behov.
:::
@@ -13,101 +13,114 @@ Denna sida är för närvarande inte helt korrekt återgivande av hur SideStore
#### (1000) An unknown error occurred.
-`AltStore.OperationError`
+`SideStore.OperationError 1000`
-Detta betyder att SideStore stötte på ett oväntat fel. Kontrollera vår [felsökningsguide](./) och kontakta oss om problemet kvarstår.
+SideStore stötte på ett oväntat fel. Kontrollera vår [felsökningsguide](./) och kontakta oss om problemet kvarstår.
#### (1001) The operation returned an unknown result.
-`AltStore.OperationError`
+`SideStore.OperationError 1001`
-Detta betyder att SideStore stötte på ett oväntat fel. Kontrollera vår [felsökningsguide](./) och kontakta oss om problemet kvarstår.
+Åtgärden gav ett oväntat resultat. Se [felsökningsguiden](./) och hör av dig om det fortsätter.
#### (1002) The operation was cancelled.
-`AltStore.OperationError`
+`SideStore.OperationError 1002`
-Detta betyder att den utförda åtgärden avbröts. Försök igen.
+Åtgärden stoppades. Försök igen.
#### (1003) The operation timed out.
-`AltStore.OperationError`
+`SideStore.OperationError 1003`
-Detta betyder att SideStore hade problem att slutföra den begärda åtgärden. Försök igen och se vår [felsökningsguide](./) för mer hjälp.
+SideStore fick inte slutföra begäran i tid. Försök igen och se [felsökningen](./) om du behöver mer hjälp.
#### (1004) You are not signed in.
-`AltStore.OperationError`
+`SideStore.OperationError 1004`
-Detta betyder att du måste ange dina Apple ID-uppgifter i inställningarna för att utföra åtgärden.
+Du måste logga in med ditt Apple-ID i inställningsfliken för att köra åtgärden.
#### (1005) The app could not be found.
-`AltStore.OperationError`
+`SideStore.OperationError 1005`
-Detta betyder att SideStore inte kunde hitta filen för nedladdning eller installation, troligtvis eftersom URL:en är felaktig.
+SideStore kunde inte hitta filen att ladda ner eller installera, troligen för att den inte finns på URL:en.
-#### (1006) AltStore could not determine this device’s UDID.
+#### (1006) SideStore could not determine this device's UDID.
-`AltStore.OperationError`
+`SideStore.OperationError 1006`
-Detta betyder att SideStore inte kunde läsa UDID som AltServer lade in vid installation. Se till att du använder senaste AltServer.
+Din pairing-fil är korrupt. [Importera den igen med iloader](../advanced/pairing-file).
#### (1007) This app is in an invalid format.
-`AltStore.OperationError`
+`SideStore.OperationError 1007`
-Detta betyder att appen inte är en giltig .ipa. Försök ladda ner från en annan källa.
+Appen du försöker installera är inte en standard-IPA. Ladda ner från annan källa.
#### (1008) Invalid parameters.
-`AltStore.OperationError`
+`SideStore.OperationError 1008`
-Detta betyder att ett internt fel uppstod och att SideStore inte kunde hämta nödvändig information. Försök igen.
+Ett internt fel gjorde att SideStore saknade data för att utföra åtgärden. Försök igen och se [felsökningen](./) eller kontakta oss vid behov.
#### (1009) You cannot register more than 10 App IDs within a 7-day period.
-`AltStore.OperationError`
+`SideStore.OperationError 1009`
-Detta betyder att du nått gränsen för App IDs. Kolla fliken _Mina appar_ för utgångsdatum.
+Du har nått maxantalet App ID:n. De kan inte tas bort manuellt. App-ID:n förnyas om appen finns kvar 7 dagar efter installation/uppdatering och försvinner om appen tas bort. Kontrollera utgångsdatum i fliken My Apps.
#### (1010) There are no AltStore sources.
-`AltStore.OperationError`
+`SideStore.OperationError 1010`
-Detta betyder att SideStore inte kan hämta uppdateringar för några källor. Försök igen.
+Ett internt fel gjorde att SideStore inte kunde hämta data för dina AltSources. Försök igen och se [felsökningen](./) eller kontakta oss.
-#### (1011) AltStore was denied permission to launch the app.
+#### (1011) SideStore was denied permission to launch the app.
-`AltStore.OperationError`
+`SideStore.OperationError 1011`
-Detta betyder att du avbröt varningen “AltStore wants to open [app]” eller att du behöver lita på ditt Apple ID i Inställningar.
+SideStore kunde inte starta appen eftersom du valde "Avbryt" på dialogen "SideStore vill öppna [app]", eller för att du måste lita på ditt Apple-ID i Inställningar.
-#### (1012) AltStore’s shared app group could not be accessed.
+#### (1012) SideStore's shared app group could not be accessed.
-`AltStore.OperationError`
+`SideStore.OperationError 1012`
-Detta betyder att SideStore inte kan nå katalogen där säkerhetskopior lagras. Se till att du använder senaste AltServer.
+SideStore kunde inte komma åt mappen för app-backuper. Se till att du installerar SideStore med senaste AltServer-versionen och inte via andra metoder.
-#### (1200) AltServer could not be found.
+#### (1403) Unable to connect to SideJITServer.
-`AltStore.OperationError`
+`SideStore.OperationError 1403`
-Detta betyder att SideStore inte hittar AltServer i nätverket. Kontrollera Wi-Fi eller USB-anslutning.
+Kontrollera att du är på samma Wi-Fi som datorn med SideJITServer och att brandväggen släpper igenom. Alternativt kan du använda inbyggda "Enable JIT" på iOS 17.4-18.6 med StosVPN och Wi-Fi eller flygplansläge.
-#### (1201) A connection to AltServer could not be established.
+#### (1412) Unable to connect to a V3 anisette server.
-`AltStore.OperationError`
+`SideStore.OperationError 1412`
-Detta betyder att SideStore inte kan ansluta till AltServer. Kontrollera Wi-Fi-synkronisering eller prova USB.
+Enheten kunde inte ta emot data från anisette-server v3. Försök igen eller byt server.
-#### (1202) The connection to AltServer was dropped.
+#### (1414) No Wi-Fi/StosVPN.
-`AltStore.OperationError`
+`SideStore.OperationError 1414`
-Detta betyder att SideStore tappade anslutningen till AltServer. Kontrollera nätverket.
+Du verkar inte vara ansluten till Wi-Fi och/eller StosVPN. SideStore kan inte installera eller uppdatera appar utan det. Om det inte hjälper, [importera pairing-filen igen](../advanced/pairing-file).
+
+## Minimuxer-fel
+
+#### (4) AFC was unable to manage files on the device.
+
+`minimuxer.MinimuxerError 4`
+
+Du försöker aktivera JIT på en iOS-version som inte stöds. SideStore stöder JIT mellan iOS 17.4 och 18.6.
+
+#### (27) AFC was unable to manage files on the device.
+
+`minimuxer.MinimuxerError 27`
+
+Säkerställ att både Wi-Fi och StosVPN är på. Om felet kvarstår, [importera pairing-filen på nytt](../advanced/pairing-file).
----
## AltServer / SideServer-fel
@@ -115,129 +128,131 @@ Detta betyder att SideStore tappade anslutningen till AltServer. Kontrollera nä
`AltServer.ExceptionError`
-Detta fel kan ha flera orsaker, t.ex. “vector too long” vilket indikerar att Windows Defender blockerar. Inaktivera Real-Time Protection om det behövs.
+Felet kan ha flera orsaker, t.ex. meddelandet "vector too long".
+
+"vector too long"
+
+Windows Defender blockerar begäran. Stäng av realtidsskyddet temporärt för att låta SideStore fungera.
#### (1999) Underlying Error
`AltServer.ServerError`
-Detta betyder att AltServer stötte på ett okänt fel. Kontakta support om det kvarstår.
+AltServer stötte på ett okänt fel. Kontakta support om det fortsätter.
#### (2000) Unknown Error
`AltServer.ServerError`
-Detta betyder att AltServer stötte på ett okänt fel. Kontakta support om det kvarstår.
+Ett okänt fel i AltServer. Kontakta oss om det kvarstår.
-#### (2001) Could not connect to AltServer. / There was an error connecting to the device.
+#### (2001) Could not connect to AltServer. / There was an error connecting to the device.
`AltServer.ServerError`
-Detta betyder att AltServer har problem att ansluta till din enhet. Prova USB.
+AltServer kan inte ansluta till din iOS-enhet. Anslut enheten direkt via USB om möjligt.
#### (2002) Lost Connection to AltServer.
`AltServer.ServerError`
-Detta betyder att anslutningen mellan AltServer och enheten tappades. Kontrollera nätverket.
+Anslutningen mellan AltServer och enheten bröts. Kontrollera att båda är på samma Wi-Fi och försök igen.
#### (2003) AltServer could not find this device.
`AltServer.ServerError`
-Detta betyder att AltServer inte hittar din enhet över USB eller Wi-Fi. Kontrollera anslutningen och att du litar på datorn.
+AltServer hittar inte enheten via USB eller Wi-Fi. Kontrollera nätverk, att enheten är betrodd, och försök igen.
#### (2004) Failed to write app data to device.
`AltServer.ServerError`
-Detta betyder att AltServer inte kunde skriva filer till enheten. Kontrollera anslutningen.
+AltServer kunde inte skriva filen. Se till att enhet och dator är på samma nätverk, att enheten är betrodd och försök igen.
#### (2005) AltServer received an invalid request.
`AltServer.ServerError`
-Detta betyder att AltServer fick en okänd förfrågan. Uppdatera till senaste versionen.
+AltServer fick en okänd begäran. Du kör troligen en äldre AltServer-version, uppdatera den.
#### (2006) AltServer sent an invalid response.
`AltServer.ServerError`
-Detta betyder att SideStore fick ett svar den inte förstod. Uppdatera till senaste versionen.
+SideStore fick ett svar som inte kunde tolkas. Uppdatera SideStore till senaste version.
#### (2007) The app is invalid.
`AltServer.ServerError`
-Detta betyder att appen är i ett felaktigt format. Ladda ner en kompatibel version.
+Appen du försökte installera hade ogiltigt format. Prova att ladda ner från annan källa.
#### (2008) An error occurred while installing the app.
`AltServer.ServerError`
-Detta betyder att iOS avvisade installationen. Använd en version som stöds av din iOS.
+iOS avvisade appen. Se till att använda en version som stöder din iOS-version.
#### (2009) Cannot activate more than 3 apps with a non-developer Apple ID.
`AltServer.ServerError`
-Detta betyder att du nått gränsen för sideloadade appar med ett gratis-konto. Skaffa ett betalt utvecklarkonto för att ta bort gränsen.
+Du har nått gränsen för sideloadade appar med gratisutvecklarkonto. För att ta bort gränsen behöver du ett betalt konto på [developer.apple.com](https://developer.apple.com).
#### (2010) Your device must be running iOS 12.2 or later to install AltStore.
`AltServer.ServerError`
-Detta betyder att du måste uppgradera din iOS-version före installation.
+Uppdatera enheten till minst iOS 12.2 för att kunna använda AltStore.
#### (2011) AltServer does not support this request.
`AltServer.ServerError`
-Detta betyder att AltServer inte förstår förfrågan. Uppdatera till senaste versionen.
+AltServer kände inte igen begäran. Uppdatera till senaste versionen.
#### (2012) Received an unknown response from AltServer.
`AltServer.ServerError`
-Detta betyder att SideStore fick ett svar den inte känner igen. Uppdatera till senaste versionen.
+AltStore fick ett svar den inte kände igen. Uppdatera AltStore.
#### (2013) The provided anisette data is invalid.
`AltServer.ServerError`
-Detta betyder att anisette-datan som användes var ogiltig. Kontrollera iCloud och systemets datum/tid.
+Datos uppgifterna från Apple ID:t var ogiltiga. Om du använder Windows, se till att du har senaste iCloud och att datum/tid stämmer.
#### (2014) AltServer could not connect to Mail plug-in. (macOS)
`AltServer.ServerError`
-Detta betyder att Mail-plugin:en inte är aktiverad eller att Mail inte körs. Aktivera plugin:en i Mail.
+AltServer hittade inte Mail-pluginen eftersom den inte är aktiverad eller för att Mail inte körs. Starta Mail på din Mac och aktivera pluginen.
#### (2015) Could not find provisioning profile.
`AltServer.ServerError`
-Detta betyder att den nödvändiga provisioning-profilen saknas. Kontakta support.
+Provisioningprofilen saknas. Det är troligen ett problem i AltStore, kontakta support eller Patreon-inboxen.
#### (2016) An error occurred while removing the app.
`AltServer.ServerError`
-Detta betyder att ett fel uppstod vid borttagning av en app. Kontrollera loggarna för mer detaljer.
+Ett fel uppstod när appen skulle tas bort. Se loggen för mer detaljer.
#### (2100) The Requested app is not currently running on the device.
`AltServer.ServerError`
-Detta betyder att du försökte aktivera JIT utan att appen kördes. Starta appen först.
+Du försökte aktivera JIT utan att appen körs i förgrunden. Starta appen först.
#### (2101) The disk is incompatible with [iOS version].
`AltServer.ServerError`
-Detta betyder att utvecklardisken inte stödjer din iOS-version. Uppdatera AltStore/AltServer och försök senare.
-
----
+Developer-disken som krävs för JIT matchar inte din iOS-version. Uppdatera AltStore/AltServer och försök senare.
## Apple Developer-fel
@@ -245,157 +260,153 @@ Detta betyder att utvecklardisken inte stödjer din iOS-version. Uppdatera AltSt
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3001) The provided parameters are invalid.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3002) Incorrect Apple ID or password.
`AltStore.AppleDeveloperError`
-Detta betyder att inloggningsuppgifterna är ogiltiga. Kontrollera användarnamn/lösenord eller skapa ett nytt Apple ID.
+Fel användarnamn eller lösenord. Kontrollera uppgifterna. Du kan också skapa ett nytt Apple-ID särskilt för SideStore.
#### (3003) An app-specific password is required. You can create one at appleid.apple.com.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3004) You are not a member of any development teams.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
-#### (3005) This device’s UDID is invalid.
+#### (3005) This device's UDID is invalid.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3006) This device is already registered with another ID.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3007) The certificate request is invalid.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3008) There is no certificate with the requested serial number for this team.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3009) The name for this app is invalid.
`AltStore.AppleDeveloperError`
-SideStore kunde inte registrera App ID eftersom namnet innehåller icke-ASCII-tecken. Ladda ner från annan källa.
+App-namnet innehåller tecken utanför ASCII så SideStore kan inte registrera App ID:t. Ladda ner från annan källa.
#### (3010) The bundle identifier for this app is invalid.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3011) The bundle identifier for this app has already been registered.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3012) There is no App ID with the requested identifier on this team.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3013) You may only register 10 App IDs every 7 days.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3014) The provided app group is invalid.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3015) App group does not exist.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3016) The identifier for the requested provisioning profile is invalid.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3017) There is no provisioning profile with the requested identifier on this team.
`AltStore.AppleDeveloperError`
-Om du ser detta fel kan det bero på en serverändring hos Apple. Se: [Twitter-annons](https://twitter.com/altstoreio/status/1638599316762664974?s=20)
+Felet kan bero på en serverändring från Apple. Se detta meddelande för mer info: [https://twitter.com/altstoreio/status/1638599316762664974?s=20](https://twitter.com/altstoreio/status/1638599316762664974?s=20)
#### (3018) This account requires signing in with two-factor authentication.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3019) Incorrect verification code.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3020) Failed to perform authentication handshake with server.
`AltStore.AppleDeveloperError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3021) The provided anisette data is invalid.
`AltStore.AppleDeveloperError`
-Detta fel betyder att anisette-datan har gått ut eller är ogiltig. Kontrollera datum/tid och att iCloud/iTunes är installerat.
+Apple-ID:t kunde inte autentiseras eftersom anisette-datan var ogiltig eller för gammal. Säkerställ att datorns datum/tid stämmer och att du installerat iTunes och iCloud från Apple.
----
-
-## Apple API-fel
+#### Apple API Error
#### (1100) Your session has expired.
`Apple.APIError`
-Detta fel betyder att autentiseringsinformationen för ditt Apple ID är utgången eller ogiltig. Kontrollera datum och tid på datorn och försök igen.
+Apple-ID-uppgifterna är utgångna. Kontrollera datorns datum/tid och försök igen.
#### (1102) Apple ID cannot be used for development.
`Apple.APIError`
-Du kan behöva acceptera Apples användarvillkor på [developer.apple.com](https://developer.apple.com). Alternativt skapa ett nytt “engångs”-Apple ID.
+Du kan behöva godkänna Apples villkor på [developer.apple.com](https://developer.apple.com). Annars kan du skapa ett separat Apple-ID för sideloading.
#### (-20101) Your account information was entered incorrectly.
`Apple.APIError`
-Detta fel betyder att användarnamn eller lösenord är ogiltiga eller utgångna. Kontrollera uppgifterna och datorns datum/tid.
-
----
+Fel användarnamn eller lösenord. Kontrollera uppgifterna och att datorns datum/tid stämmer.
## Anslutningsfel
@@ -403,45 +414,43 @@ Detta fel betyder att användarnamn eller lösenord är ogiltiga eller utgångna
`AltServer.ConnectionError`
-Detta betyder att AltServer stötte på ett okänt fel. Kontakta support.
+AltServer fick ett okänt fel. Kontakta support om det fortsätter.
#### (1) Device Locked.
`AltServer.ConnectionError`
-Detta betyder att du måste låsa upp din enhet innan AltServer kan ansluta.
+Lås upp enheten för att AltServer ska kunna ansluta.
#### (2) Invalid Request.
`AltServer.ConnectionError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (3) Invalid Response.
`AltServer.ConnectionError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (4) Usbmuxd.
`AltServer.ConnectionError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (5) SSL Error.
`AltServer.ConnectionError`
-Uppdaterad information kommer snart.
+Information uppdateras senare.
#### (6) Timed Out.
`AltServer.ConnectionError`
-Uppdaterad information kommer snart.
-
----
+Information uppdateras senare.
## Windows-fel
@@ -449,24 +458,15 @@ Uppdaterad information kommer snart.
`NSURLErrorDomain`
-1. Se till att iTunes är stängt.
-2. Gå till `ProgramData → Apple Computer → iTunes → ADI` och ta bort filerna.
-3. Starta om iTunes.
+1. Säkerställ att iTunes är stängt.
+2. Gå till ProgramData -> Apple Computer -> iTunes -> ADI -> radera filerna.
+3. Starta iTunes.
4. Försök installera SideStore igen.
----
-
-## Andra fel
+## Övriga fel
#### (512) Failed to write to disk
`NSCocoaErrorDomain`
-Detta betyder att skrivning till disk misslyckades. Kontrollera diskutrymme på både telefon och dator.
-
-#### (1) AltJIT failed with error code 1 (iOS 17)
-
-`AltServer.ProcessError`
-
-Om du försöker aktivera JIT på iOS 17 kan du få detta fel. Kontrollera att alla beroenden är installerade och att enheten är ansluten med appen öppen tills JIT är aktiverat.
-```
+Det gick inte att skriva filerna. Se till att både telefon och dator har gott om lagringsutrymme och försök igen.
diff --git a/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx b/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
index 4019abc7..5de07fdc 100644
--- a/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
+++ b/i18n/sv/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
@@ -1,100 +1,77 @@
---
title: Felsökningsguide
-description: En guide för felsökning av SideStore.
+description: Guide för att felsöka SideStore när ingen felkod visas.
---
## Installation
-#### Jag följde instruktionerna, men jag kan fortfarande inte installera SideStore.
-
-### Instruktioner för macOS
-1. **Trust Device**: Efter att du anslutit din iOS-enhet till din Mac, se till att du har tryckt på “Trust” på både din Mac och din enhet. Du kan verifiera detta genom att:
- - Öppna Finder (macOS 10.15 Catalina eller senare) eller iTunes (macOS 10.14 Mojave och tidigare).
- - Koppla från och återanslut din telefon till din Mac och kontrollera om en dialogruta visas som frågar om du vill lita på enheten.
-2. **Use Another Apple ID**: Prova att använda ett annat Apple ID. Vid behov kan du [skapa ett nytt Apple ID](https://appleid.apple.com/account#!\&page=create) specifikt för SideStore, gratis.
-
-### Instruktioner för Windows
-1. **Trust Device**: Efter att du anslutit din iOS-enhet till din Windows-dator, se till att du har tryckt på “Trust” på både datorn och enheten. Du kan verifiera detta genom att:
- - Öppna iTunes och kontrollera om en dialogruta visas som frågar om du vill lita på enheten.
-2. **Run AltServer as Administrator**: Högerklicka på AltServer och välj “Run as Administrator” för att säkerställa att programmet har nödvändiga rättigheter.
-3. **Use Another Apple ID**: Prova att använda ett annat Apple ID. Vid behov kan du [skapa ett nytt Apple ID](https://appleid.apple.com/account#!\&page=create) specifikt för SideStore, gratis.
-4. **Non-Microsoft Store Version of iTunes and iCloud**:
- - Om du installerade iTunes eller iCloud från Microsoft Store måste du avinstallera dem.
- - Ladda ner och installera de icke-Microsoft Store-versionerna av iTunes och iCloud från följande länkar:
- - [Download iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe)
- - [Download iTunes](https://www.apple.com/itunes/download/win64/)
+### Jag följde instruktionerna men kan ändå inte installera SideStore
-## Inloggningsproblem
+#### På Mac
+1. **Lita på enheten**: Efter att du anslutit iOS-enheten till din Mac måste du välja "Lita på" både på Mac och iOS-enheten. Kontrollera genom att:
+ - Öppna Finder (macOS 10.15+) eller iTunes (macOS 10.14 och äldre).
+ - Koppla från och anslut telefonen igen och se om dialogen "Lita på den här enheten" visas.
+2. **Testa ett annat Apple-ID**: Prova med ett nytt Apple-ID. Du kan [skapa ett konto](https://appleid.apple.com/account#!&page=create) gratis enbart för SideStore.
-#### SideStore fryser eller visar en felkod vid inloggning
+#### På Windows
+1. **Lita på enheten**: När du ansluter iOS-enheten till datorn måste du välja "Lita på" både på datorn och iOS-enheten. Kontrollera genom att:
+ - Öppna iTunes och se om dialogen "Lita på den här enheten" visas.
+2. **Testa ett annat Apple-ID**: Prova med ett annat Apple-ID. Du kan [skapa ett nytt](https://appleid.apple.com/account#!&page=create) gratis för SideStore.
-1. **Change the Anisette Server**
- Öppna SideStore-inställningarna.
- Scrolla ner till “Anisette Server” och välj en annan server från listan.
-2. **Host Your Own Anisette Server**
- Du kan också sätta upp din egen Anisette-server. Se instruktionerna i den officiella dokumentationen: https://docs.sidestore.io/docs/advanced/anisette
-#### Verification Code Not Received When Signing In with Apple ID
+## Inloggningsproblem
-**För iOS-versioner under 18.1:**
+### SideStore fryser eller visar felkod vid inloggning
-1. Öppna appen “Settings”.
-2. Tryck på ditt namn högst upp.
-3. Gå till “Sign-In and Security”.
-4. Välj “Two-Factor Authentication”.
-5. Tryck på “Get Verification Code”.
+Om SideStore fryser eller visar felkod när du loggar in kan du prova följande:
-**För iOS-versioner 18.1 och senare:**
+1. **Byt anisette-server**
+ Det vanligaste är att anisette-servern tillfälligt ligger nere. Gå till SideStore-inställningarna:
+ - Öppna Settings i SideStore.
+ - Scrolla ner till "Anisette Server".
+ - Välj en annan server i listan (du kan behöva testa flera).
-1. Besök [iCloud](https://www.icloud.com) i en webbläsare.
-2. Klicka på “Sign In”.
-3. Välj “Use Different Apple Account”.
-4. Ange ditt Apple ID och lösenord.
-5. Apple skickar en verifieringskod – använd den i SideStore.
+2. **Hosta en egen anisette-server**
+ Vill du vara oberoende kan du sätta upp en egen anisette-server. En detaljerad guide finns [här](https://docs.sidestore.io/docs/advanced/anisette).
-## Kan inte uppdatera eller installera appar
+### Jag får ingen verifieringskod till Apple-ID:t
-#### Åtgärda felmeddelandet “No Wi-Fi or VPN Connection”
+**För iOS-versioner under 18.1**
+1. Öppna "Inställningar".
+2. Tryck på ditt namn.
+3. Öppna "Sign-In and Security".
+4. Välj "Two-Factor Authentication".
+5. Tryck på "Get Verification Code".
-1. Inaktivera mobildata eller anslut till ett stabilt Wi-Fi-nätverk.
-2. Kontrollera att Apple-domäner och din anisette-servers domän inte blockeras.
-3. Se till att StosVPN är anslutet.
-4. Stäng av och på StosVPN och vänta några sekunder innan du försöker uppdatera igen.
-5. Skapa en ny parningsfil med JitterbugPair. I SideStore-inställningarna, tryck på “Reset pairing file” och välj den nya filen.
+**För iOS 18.1 och senare**
+1. Besök [iCloud](https://www.icloud.com) i en webbläsare.
+2. Klicka på "Sign In".
+3. Välj "Use Different Apple Account".
+4. Ange Apple-ID och lösenord (använd inte passkey).
+5. Apple skickar en kod som du anger i SideStore.
-## Kan inte välja parningsfil
-1. **Check File Extension**
- Se till att filändelsen är `.mobiledevicepairing` eller `.plist`.
-2. **Move Pairing File**
- Byt namn på filen till `ALTPairingFile.mobiledevicepairing` och flytta den till rotkatalogen för SideStore i appen Filer på iOS.
-3. **Certificate Signing**
- Vid sideloading med certifikat kan du behöva ansluta enheten till datorn och dra in parningsfilen i SideStore-mappen via iTunes/Finder.
-
-## AltServer
-
-#### AltStore säger “Could not find AltServer” vid sideload eller uppdatering
-
-- AltServer måste vara igång på samma Wi-Fi som din enhet.
-- Vid offentliga nätverk kan du prova att använda datorns hotspot.
-- På Windows: tillåt AltServer i brandväggen och använd icke-Microsoft Store-versioner av iTunes/iCloud.
-- Som sista utväg, anslut enheten via USB.
+## Kan inte uppdatera eller installera appar
-#### Jag kan inte ändra nätverksinställningar (t.ex. på skola/arbetet)
+### Felmeddelande om Wi-Fi eller VPN
-Anslut enheten med USB för att sideloada och uppdatera – automatisk Wi-Fi-uppdatering fungerar då inte.
+1. Slå på flygplansläge och anslut till ett stabilt Wi-Fi.
+2. Kontrollera att inga DNS-tjänster blockerar Apple-domäner eller din anisette-server:
+ - Stäng av DNS-blockering av t.ex. `ocsp.apple.com`.
+ - Koppla från skol-/jobbnätverk och använd ett öppet nät.
+3. Säkerställ att StosVPN är anslutet.
+4. Stäng av och på StosVPN och vänta några sekunder i SideStore innan du försöker igen.
+5. [Importera pairing-filen på nytt](../advanced/pairing-file).
-## AltJIT
+## AltServer
-#### AltServer säger “JIT could not be enabled for [App]”
+### Jag måste använda Microsoft Store-versionen av iCloud
-- Kontrollera att appen körs i förgrunden.
-- Prova hotspot eller annat nätverk.
-- Bekräfta “Trust” på både dator och enhet.
-- På Windows: tillåt AltServer i brandväggen och kör icke-Store-versioner av iTunes/iCloud.
-- Se till att iTunes och iCloud körs på datorn.
-- Som sista utväg, anslut via USB.
+AltServer kräver iCloud från Apples webbplats för att autentisera ditt Apple-ID. Om du även behöver Store-versionen följer du dessa uppdaterade steg (baserade på [det här Reddit-inlägget](https://www.reddit.com/r/jailbreak/comments/rp5buz/tutorial_how_to_use_altserver_if_you_have_to_use/?utm_source=share&utm_medium=ios_app&utm_name=iossmf)):
-:::tip
-Om du inte hittar svaret här kan du mejla [support@altstore.io](mailto:support@altstore.io).
-:::
\ No newline at end of file
+1. Ladda ner och installera [iTunes](https://www.apple.com/itunes/) från Apple (välj [64-bit](https://secure-appldnld.apple.com/itunes12/001-80053-20210422-E8A3B28C-A3B2-11EB-BE07-CE1B67FC6302/iTunes64Setup.exe) eller [32-bit](https://secure-appldnld.apple.com/itunes12/001-80042-20210422-E8A351F2-A3B2-11EB-9A8F-CF1B67FC6302/iTunesSetup.exe)).
+2. Ladda ner och installera iCloud från Apple [här](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe).
+3. Gå till mappen `C:\Program Files (x86)\Common Files\Apple`. Kopiera mapparna "Apple Application Support" och "Internet Services", skapa en ny mapp på en säker plats och klistra in filerna där.
+4. Avinstallera iCloud. **Ta inte bort iTunes!** (Ta heller **aldrig** bort "Apple Mobile Device Support" eller "Apple Application Support" som installerades med iTunes/iCloud.)
+5. Installera [iCloud](https://www.microsoft.com/store/productId/9PKTQ5699M62) från Microsoft Store.
+6. Ladda ner och installera [AltServer](https://cdn.altstore.io/file/altstore/altinstaller.zip). Öppna det första gången som administratör, klicka på "Choose Folder..." och välj mappen du skapade i steg 3.
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
similarity index 84%
rename from i18n/zh/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
rename to i18n/zh/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
index 8c373e50..fbb6613f 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/sparserestore.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
@@ -5,15 +5,15 @@ description: 一个关于如何通过SparseRestore安装多于3个应用的教
:::note
-SparseRestore的"绕过3个应用的限制"**仅在iOS/iPadOS 17.0 和 18.1 beta 4 (不包括 17.7.1)中生效**。如果您没有使用这些版本的话,这些操作是没有用的,**请不要因此寻求帮助**。
+SparseRestore的"绕过3个应用的限制"**仅在iOS/iPadOS 17.0 到 18.1 beta 4 (不包括 17.7.1)中生效**。如果您没有使用这些版本的话,这些操作是没有用的,**请不要因此寻求帮助**。
:::
## 必要准备
-* 一台运行了SparseRestore支持的版本系统的苹果设备(请参考上面的描述).
-* 至少有一个空闲的应用槽位。
+* 一台运行了SparseRestore支持的系统版本的苹果设备(请参考上面的描述).
+* 至少一个空闲的应用槽位。
* SideStore 0.5.9或更高版本。您可以[在此](https://github.com/SideStore/SideStore/releases)找到最新版。
-* 为了执行漏洞利用,您**必须**在流程进行中,在您的苹果设备上关闭**查找网络**。否则执行不会成功。您可以参考以下的流程关闭:
+* 为了执行漏洞,您**必须**在流程进行中,在您的苹果设备上关闭**查找网络**。否则执行不会成功。您可以参考以下的流程关闭:
- 打开“设置”。
- 点击最上面您的名字。
- 点击“查找”。
@@ -21,7 +21,7 @@ SparseRestore的"绕过3个应用的限制"**仅在iOS/iPadOS 17.0 和 18.1 beta
- 关闭查找我的iPhone/iPad.
- 您可能需要输入您的Apple ID密码以继续。
- > **提醒:** 您仍可能无法关闭查找我的设备,因为失窃设备保护可能避免您关闭它。请在在尝试关闭查找设备前关闭失窃设备保护。
+ > **提醒:**您仍可能无法关闭"查找我的设备",因为"失窃设备保护"可能避免您关闭它。请在尝试关闭查找设备前关闭失窃设备保护。
## 步骤
1. 安装SparseBox。有很多种方式可以安装SparseBox,但如果是这种需求的话,请使用SideStore进行安装。您可以[在这里](https://nightly.link/khanhduytran0/SparseBox/workflows/build/main/artifact.zip)找到最新版 (解压artifact.zip以获得.ipa文件)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
index e2214df4..d304d314 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
@@ -4,16 +4,16 @@ description: 关于anisette服务器的指南
---
:::note
-使用任何在0.4.0以后版本的SideStore不太可能导致您的帐户被锁定,因为此时我们添加了对v3 anisette服务器的支持。
+当我们添加了对v3 anisette服务器的支持后,您在使用任何0.4.0以后版本的SideStore时,不太可能出现导致您的帐户被锁定的情况。
-因此,如果您的版本支持,**强烈建议**使用v3服务器以正常使用SideStore。
+因此,如果您的系统版本支持,**强烈建议**使用v3服务器以正常使用SideStore。
:::
Anisette数据是在每次安装或刷新应用程序时,进行应用程序签名过程中所使用到的信息。SideStore从一个模拟的Mac的服务器中获取此信息,并将Anisette数据发回给您。在此过程中,任何的帐户信息都不会发送到服务器。
当很多人使用同一台Anisette服务器(尤其是v1服务器)的时候,它会触发苹果的安全机制,并锁定使用该机器的帐户。这就是为什么我们建议使用单独的临时Apple ID而不是您的主ID。
-我们的团队一直在研究更好的方法来避免帐户的锁定(以_anisette-v3_的形式)。但如果您使用的是旧版本的SideStore,那么部署您自己的Anisette服务器是避免锁定帐户的好方法。得益于我们当前的服务器是开源的,且专为 Docker 环境设计,这使得操作变得异常简单。这意味着我们可以仅通过一个GitHub链接来部署服务器。
+我们的团队一直在研究更好的方法以避免您帐户被锁定(以_anisette-v3_的形式)。但如果您使用的是旧版本的SideStore,那么部署您自己的Anisette服务器是避免锁定帐户的好方法。得益于我们当前的服务器是开源的,且专为 Docker 环境设计,这使得操作变得异常简单。这意味着我们可以仅通过一个GitHub链接来部署服务器。
## 在Render上部署
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx
index c7752375..e017f069 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx
@@ -4,7 +4,15 @@ description: 关于如何为需要即时编译(JIT)的应用程序启用JIT
---
:::note
-iOS 26再次破坏了JIT。在iPhone 17发布后,StikDebug将会发布一个修复程序。
+iOS 26再次破坏了JIT。StikDebug发布了一个新版本尝试解决,但是目前支持仍处于受限阶段。截止本指南编写时(11月10日)支持的应用如下:
+* UTM
+* Amethyst
+* MeloNX
+* maciOS
+* DolphiniOS
+* Geode
+
+请留意我们在Discord服务器的公告频道以及[idevice服务器](https://discord.gg/mACqxMxP3X)的公告和兼容性频道以获取未来的进展。
启用JIT的方法有很多,如AltJIT、SideJITServer等。本教程将介绍StikDebug(旧称StikJIT)的使用,因为它是我们目前推荐的方法。有关更多信息,请参阅[官方StikDebug配对指南](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)。
@@ -12,14 +20,13 @@ iOS 26再次破坏了JIT。在iPhone 17发布后,StikDebug将会发布一个
:::
## 使用前提
-* 一台运行了iOS/iPadOS 17.4-18.6的苹果设备(包含18.4b1)。如果您正在使用iOS/iPadOS17.0-17.3, 您必须使用诸如[SideJITServer](https://github.com/nythepegasus/SideJITServer)之类的替代方案。如上所述,目前不支持高于18.6的版本。
+* 一台运行了iOS/iPadOS 17.4-18.x的苹果设备(包括18.4b1)。如果您正在使用iOS/iPadOS17.0-17.3, 您必须使用诸如[SideJITServer](https://github.com/nythepegasus/SideJITServer)之类的替代方案。如果您的设备已经发布4年以上(且不支持TXM)的话,SideStore的JIT启用工具仅在iOS26可用。
## 使用App Store安装StikDebug
-1. **安装StikDebug**
+1. **安装StikDebug**
从[App Store](https://apps.apple.com/us/app/stikdebug/id6744045754)安装StikDebug。
-:::note
-不错的是,StikDebug中的VPN与SideStore中使用的VPN类似,这意味着您也可以使用它在SideStore中安装和刷新应用程序,类似于StosVPN。
+:::note 不错的是,目前StikDebug中使用的VPN与SideStore中使用的VPN类似,这意味着您也可以使用它在SideStore中安装和刷新应用程序,类似于StosVPN。
:::
2. **安装步骤:**
@@ -28,7 +35,7 @@ iOS 26再次破坏了JIT。在iPhone 17发布后,StikDebug将会发布一个
### 标准安装步骤:
-1. **上传配对文件:**
+1. **上传配对用文件:**
打开并关闭StikDebug以在文件中构建应用程序需求的文件夹,然后导入您使用idevice pair生成的,导入到SideStore的**同一个配对文件**。有关此过程的更多信息,请参阅[此处](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)。
2. **挂载DDI:**
@@ -38,5 +45,6 @@ iOS 26再次破坏了JIT。在iPhone 17发布后,StikDebug将会发布一个
1. **启用VPN:**
首先,在Wi-Fi上打开StikDebug或启用蜂窝数据以激活内置的VPN。现在,如果您正在使用蜂窝数据,请启用飞行模式,并在VPN启用的情况下重新打开应用程序。
+
2. **激活JIT:**
选择“按应用程序连接”按钮,然后从列表中选择一个应用程序(必须带有正确的权限侧载的应用才能显示在列表中)以附加调试器并激活JIT功能。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
new file mode 100644
index 00000000..658402b3
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
@@ -0,0 +1,13 @@
+---
+title: 配对文件
+description: 重新导入配对文件的指南
+---
+:::warning
+注意,如果您更新或重置了您的苹果设备,您的配对文件将过期,您需要生成一个新的配对文件。当然,由于苹果的软件运行方式,这可能会随时发生,目前我们无法修复它。这是一个关于如何使用 iloader重新导入配对文件到您的设备上的指南。
+:::
+
+## 重新导入您的配对文件
+1. 请确保您已经按照[安装指引](../installation/prerequisites)中的步骤安装并配置好iloader和SideStore。
+2. 为获得最佳效果,请用USB数据线将您的苹果设备连接到电脑上,但是如果您的设备通过无线方式连接到了您的电脑上,这同样可行。
+3. 点击"Manage Pairing File"
+4. 在"SideStore"和您需要导入的其他应用的右侧,点击"Place Pairing File",当绿色的"Pairing file placed successfully!"出现的时候,说明导入成功了。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
new file mode 100644
index 00000000..0324378d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
@@ -0,0 +1,787 @@
+---
+sidebar_position: 3
+---
+
+# 高级格式指南
+
+我们将介绍 SideStore 项目中的高级格式化场景、架构模式以及复杂的 Swift/Objective-C 特性。
+
+## 高级 Swift 模式
+
+### 协议导向编程
+
+#### 协议定义
+- 保持协议专注和内聚
+- 为泛型协议使用关联类型
+- 在扩展中提供适当的默认实现
+
+```swift
+// ✅ Good
+protocol AppInstalling {
+ associatedtype AppType: App
+
+ func install(_ app: AppType) async throws
+ func uninstall(_ app: AppType) async throws
+}
+
+extension AppInstalling {
+ func validateApp(_ app: AppType) -> Bool {
+ return !app.identifier.isEmpty && app.version.isValid
+ }
+}
+
+// ❌ Bad
+protocol AppManager {
+ func install(_ app: Any) -> Bool
+ func uninstall(_ app: Any) -> Bool
+ func update(_ app: Any) -> Bool
+ func backup(_ app: Any) -> Bool
+ func restore(_ app: Any) -> Bool
+ // 指责过多
+}
+```
+
+#### 协议组合
+- 为复杂需求使用协议组合
+- 保持单个协议小巧和专注
+
+```swift
+// ✅ Good
+protocol Downloadable {
+ var downloadURL: URL { get }
+ func download() async throws -> Data
+}
+
+protocol Installable {
+ var installationRequirements: InstallationRequirements { get }
+ func install() async throws
+}
+
+typealias DeployableApp = App & Downloadable & Installable
+
+class AppDeployer {
+ func deploy(_ app: T) async throws {
+ let data = try await app.download()
+ try await app.install()
+ }
+}
+```
+
+### 泛型和类型约束
+
+#### 泛型类型定义
+- 使用有意义的约束名称
+- 优先选择协议约束而不是类约束
+- 为复杂约束使用 `where` 子句
+
+```swift
+// ✅ Good
+struct Repository {
+ private var entities: [Entity.ID: Entity] = [:]
+
+ func save(_ entity: T) where T == Entity {
+ entities[entity.id] = entity
+ }
+
+ func find(byId id: ID) -> Entity? where ID == Entity.ID {
+ return entities[id]
+ }
+}
+
+// ❌ Bad
+struct Repository {
+ private var items: [String: T] = [:]
+ // No type safety
+}
+```
+
+#### 高级泛型约束
+- 适当使用条件一致性
+- 在需要时利用幻影类型
+
+```swift
+// ✅ Good
+extension Array: AppCollection where Element: App {
+ var installedApps: [Element] {
+ return filter { $0.isInstalled }
+ }
+
+ func sortedByInstallDate() -> [Element] {
+ return sorted { $0.installDate < $1.installDate }
+ }
+}
+
+// Phantom types for type safety
+struct AppState {
+ let app: App
+}
+
+enum Downloaded {}
+enum Installed {}
+
+typealias DownloadedApp = AppState
+typealias InstalledApp = AppState
+```
+
+### 异步/等待模式
+
+#### 异步函数设计
+- 一致地使用 async/await
+- 清晰地组织并发操作
+- 适当处理取消
+
+```swift
+// ✅ Good
+actor AppInstallationManager {
+ private var activeInstallations: [String: Task] = [:]
+
+ func installApp(_ app: App) async throws {
+ // Prevent duplicate installations
+ if activeInstallations[app.identifier] != nil {
+ throw InstallationError.alreadyInstalling
+ }
+
+ let task = Task {
+ try await performInstallation(app)
+ }
+
+ activeInstallations[app.identifier] = task
+
+ defer {
+ activeInstallations.removeValue(forKey: app.identifier)
+ }
+
+ try await task.value
+ }
+
+ private func performInstallation(_ app: App) async throws {
+ // Check for cancellation at key points
+ try Task.checkCancellation()
+
+ let data = try await downloadApp(app)
+
+ try Task.checkCancellation()
+
+ try await installData(data, for: app)
+ }
+}
+
+// ❌ Bad
+func installApp(_ app: App, completion: @escaping (Error?) -> Void) {
+ DispatchQueue.global().async {
+ // Mixing old completion handler style with new async code
+ let result = await self.downloadApp(app)
+ DispatchQueue.main.async {
+ completion(nil)
+ }
+ }
+}
+```
+
+#### 结构化并发
+- 使用任务组进行相关的并发操作
+- 优先选择结构化并发而不是非结构化任务
+
+```swift
+// ✅ Good
+func installMultipleApps(_ apps: [App]) async throws {
+ try await withThrowingTaskGroup(of: Void.self) { group in
+ for app in apps {
+ group.addTask {
+ try await self.installApp(app)
+ }
+ }
+
+ // Wait for all installations to complete
+ try await group.waitForAll()
+ }
+}
+
+// For independent results
+func downloadMultipleApps(_ apps: [App]) async throws -> [App: Data] {
+ try await withThrowingTaskGroup(of: (App, Data).self) { group in
+ for app in apps {
+ group.addTask {
+ let data = try await self.downloadApp(app)
+ return (app, data)
+ }
+ }
+
+ var results: [App: Data] = [:]
+ for try await (app, data) in group {
+ results[app] = data
+ }
+ return results
+ }
+}
+```
+
+### Result Builders 和 DSL
+
+#### 自定义 Result Builders
+- 创建专注、单一用途的 Result Builders
+- 为领域特定操作提供清晰的语法
+
+```swift
+// ✅ Good
+@resultBuilder
+struct AppConfigurationBuilder {
+ static func buildBlock(_ components: AppConfigurationComponent...) -> AppConfiguration {
+ return AppConfiguration(components: components)
+ }
+
+ static func buildOptional(_ component: AppConfigurationComponent?) -> AppConfigurationComponent? {
+ return component
+ }
+
+ static func buildEither(first component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+
+ static func buildEither(second component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+}
+
+// Usage
+func configureApp(@AppConfigurationBuilder builder: () -> AppConfiguration) -> App {
+ let config = builder()
+ return App(configuration: config)
+}
+
+let app = configureApp {
+ AppName("SideStore")
+ AppVersion("1.0.0")
+ if debugMode {
+ DebugSettings()
+ }
+ Permissions {
+ NetworkAccess()
+ FileSystemAccess()
+ }
+}
+```
+
+## 高级 Objective-C 模式
+
+### 分类组织
+- 使用分类(Categories)来组织相关功能
+- 保持分类名称具有描述性和特异性
+
+```objc
+// ✅ Good
+@interface NSString (SSValidation)
+- (BOOL)ss_isValidAppIdentifier;
+- (BOOL)ss_isValidVersion;
+@end
+
+@interface UIViewController (SSAppInstallation)
+- (void)ss_presentAppInstallationViewController:(SSApp *)app;
+- (void)ss_showInstallationProgress:(SSInstallationProgress *)progress;
+@end
+
+// ❌ Bad
+@interface NSString (Helpers)
+- (BOOL)isValid; // Too generic
+- (NSString *)cleanup; // Unclear purpose
+@end
+```
+
+### 高级内存管理
+- 为委托关系使用正确的模式
+- 正确处理复杂的对象图
+
+```objc
+// ✅ Good
+@interface SSAppInstaller : NSObject
+@property (nonatomic, weak) id delegate;
+@property (nonatomic, strong) NSOperationQueue *installationQueue;
+@end
+
+@implementation SSAppInstaller
+
+- (instancetype)init {
+ self = [super init];
+ if (self) {
+ _installationQueue = [[NSOperationQueue alloc] init];
+ _installationQueue.maxConcurrentOperationCount = 3;
+ _installationQueue.name = @"com.sidestore.installation";
+ }
+ return self;
+}
+
+- (void)installApp:(SSApp *)app completion:(void (^)(NSError *))completion {
+ __weak typeof(self) weakSelf = self;
+ NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ NSError *error = nil;
+ [strongSelf performInstallationForApp:app error:&error];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(error);
+ });
+ }];
+
+ [self.installationQueue addOperation:operation];
+}
+
+@end
+```
+
+### Block 使用模式
+- 为异步操作使用正确的 Block 模式
+- 在 Block 中正确处理内存管理
+
+```objc
+// ✅ Good
+typedef void (^SSInstallationProgressBlock)(float progress);
+typedef void (^SSInstallationCompletionBlock)(SSApp *app, NSError *error);
+
+@interface SSAppDownloader : NSObject
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion;
+@end
+
+@implementation SSAppDownloader
+
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion {
+
+ NSURLRequest *request = [NSURLRequest requestWithURL:app.downloadURL];
+
+ __weak typeof(self) weakSelf = self;
+ NSURLSessionDownloadTask *task = [[NSURLSession sharedSession]
+ downloadTaskWithRequest:request
+ completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ if (error) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(nil, error);
+ });
+ return;
+ }
+
+ // Process downloaded file
+ [strongSelf processDownloadedFile:location
+ forApp:app
+ completion:completion];
+ }];
+
+ [task resume];
+ return task;
+}
+
+@end
+```
+
+## 架构模式
+
+### MVVM 实现
+- 明确分离模型(Model)、视图(View)和视图模型(ViewModel)的职责
+- 使用正确的数据绑定模式
+
+```swift
+// ✅ Good
+// Model
+struct App {
+ let identifier: String
+ let name: String
+ let version: String
+ let isInstalled: Bool
+}
+
+// ViewModel
+@MainActor
+class AppListViewModel: ObservableObject {
+ @Published var apps: [App] = []
+ @Published var isLoading = false
+ @Published var errorMessage: String?
+
+ private let appService: AppService
+
+ init(appService: AppService) {
+ self.appService = appService
+ }
+
+ func loadApps() async {
+ isLoading = true
+ errorMessage = nil
+
+ do {
+ apps = try await appService.fetchAvailableApps()
+ } catch {
+ errorMessage = error.localizedDescription
+ }
+
+ isLoading = false
+ }
+
+ func installApp(_ app: App) async {
+ do {
+ try await appService.installApp(app)
+ await loadApps() // Refresh the list
+ } catch {
+ errorMessage = "Failed to install \(app.name): \(error.localizedDescription)"
+ }
+ }
+}
+
+// View
+struct AppListView: View {
+ @StateObject private var viewModel: AppListViewModel
+
+ init(appService: AppService) {
+ _viewModel = StateObject(wrappedValue: AppListViewModel(appService: appService))
+ }
+
+ var body: some View {
+ NavigationView {
+ List(viewModel.apps, id: \.identifier) { app in
+ AppRowView(app: app) {
+ Task {
+ await viewModel.installApp(app)
+ }
+ }
+ }
+ .navigationTitle("Available Apps")
+ .overlay {
+ if viewModel.isLoading {
+ ProgressView()
+ }
+ }
+ .alert("Error", isPresented: .constant(viewModel.errorMessage != nil)) {
+ Button("OK") {
+ viewModel.errorMessage = nil
+ }
+ } message: {
+ Text(viewModel.errorMessage ?? "")
+ }
+ }
+ .task {
+ await viewModel.loadApps()
+ }
+ }
+}
+```
+
+### 依赖注入
+- 使用依赖注入进行可测试性和灵活性
+- 对于复杂应用程序,考虑使用 DI 容器
+
+```swift
+// ✅ Good
+protocol AppService {
+ func fetchAvailableApps() async throws -> [App]
+ func installApp(_ app: App) async throws
+}
+
+protocol NetworkService {
+ func downloadData(from url: URL) async throws -> Data
+}
+
+class DefaultAppService: AppService {
+ private let networkService: NetworkService
+ private let deviceService: DeviceService
+
+ init(networkService: NetworkService, deviceService: DeviceService) {
+ self.networkService = networkService
+ self.deviceService = deviceService
+ }
+
+ func fetchAvailableApps() async throws -> [App] {
+ let data = try await networkService.downloadData(from: appsURL)
+ return try JSONDecoder().decode([App].self, from: data)
+ }
+
+ func installApp(_ app: App) async throws {
+ guard deviceService.hasSpace(for: app) else {
+ throw InstallationError.insufficientStorage
+ }
+
+ let appData = try await networkService.downloadData(from: app.downloadURL)
+ try await deviceService.installApp(data: appData)
+ }
+}
+
+// DI Container
+class ServiceContainer {
+ static let shared = ServiceContainer()
+
+ private init() {}
+
+ lazy var networkService: NetworkService = DefaultNetworkService()
+ lazy var deviceService: DeviceService = DefaultDeviceService()
+ lazy var appService: AppService = DefaultAppService(
+ networkService: networkService,
+ deviceService: deviceService
+ )
+}
+```
+
+### 错误处理架构
+- 创建全面的错误处理策略
+- 使用类型化错误以更好地处理错误
+
+```swift
+// ✅ Good
+enum SideStoreError: Error {
+ case network(NetworkError)
+ case installation(InstallationError)
+ case device(DeviceError)
+ case validation(ValidationError)
+}
+
+enum NetworkError: Error {
+ case noConnection
+ case timeout
+ case serverError(Int)
+ case invalidResponse
+}
+
+enum InstallationError: Error {
+ case insufficientStorage
+ case incompatibleDevice
+ case corruptedFile
+ case alreadyInstalled
+}
+
+extension SideStoreError: LocalizedError {
+ var errorDescription: String? {
+ switch self {
+ case .network(let networkError):
+ return "Network error: \(networkError.localizedDescription)"
+ case .installation(let installError):
+ return "Installation error: \(installError.localizedDescription)"
+ case .device(let deviceError):
+ return "Device error: \(deviceError.localizedDescription)"
+ case .validation(let validationError):
+ return "Validation error: \(validationError.localizedDescription)"
+ }
+ }
+}
+
+// Error handling in services
+class AppService {
+ func installApp(_ app: App) async throws {
+ do {
+ try validateApp(app)
+ } catch {
+ throw SideStoreError.validation(error as! ValidationError)
+ }
+
+ do {
+ try await performInstallation(app)
+ } catch let error as NetworkError {
+ throw SideStoreError.network(error)
+ } catch let error as InstallationError {
+ throw SideStoreError.installation(error)
+ }
+ }
+}
+```
+
+## 性能考量
+
+### 内存优化
+- 对昂贵的资源使用延迟加载
+- 实施适当的缓存策略
+
+```swift
+// ✅ Good
+class AppImageCache {
+ private let cache = NSCache()
+ private let downloadQueue = DispatchQueue(label: "image-download", qos: .utility)
+
+ init() {
+ cache.countLimit = 50
+ cache.totalCostLimit = 50 * 1024 * 1024 // 50MB
+ }
+
+ func image(for app: App) async -> UIImage? {
+ let key = app.identifier as NSString
+
+ // Check cache first
+ if let cachedImage = cache.object(forKey: key) {
+ return cachedImage
+ }
+
+ // Download if not cached
+ return await withCheckedContinuation { continuation in
+ downloadQueue.async { [weak self] in
+ guard let self = self else {
+ continuation.resume(returning: nil)
+ return
+ }
+
+ do {
+ let data = try Data(contentsOf: app.iconURL)
+ let image = UIImage(data: data)
+
+ if let image = image {
+ self.cache.setObject(image, forKey: key)
+ }
+
+ continuation.resume(returning: image)
+ } catch {
+ continuation.resume(returning: nil)
+ }
+ }
+ }
+ }
+}
+```
+
+### 线程最佳实践
+- 使用适当的队列优先级
+- 最小化上下文切换
+
+```swift
+// ✅ Good
+actor BackgroundProcessor {
+ private let processingQueue = DispatchQueue(
+ label: "background-processing",
+ qos: .utility,
+ attributes: .concurrent
+ )
+
+ func processLargeDataSet(_ data: [LargeDataItem]) async -> [ProcessedItem] {
+ return await withTaskGroup(of: ProcessedItem?.self, returning: [ProcessedItem].self) { group in
+ let chunkSize = max(data.count / ProcessInfo.processInfo.activeProcessorCount, 1)
+
+ for chunk in data.chunked(into: chunkSize) {
+ group.addTask {
+ return await self.processChunk(chunk)
+ }
+ }
+
+ var results: [ProcessedItem] = []
+ for await result in group {
+ if let processed = result {
+ results.append(processed)
+ }
+ }
+
+ return results
+ }
+ }
+
+ private func processChunk(_ chunk: [LargeDataItem]) async -> ProcessedItem? {
+ // CPU-intensive processing
+ return await withCheckedContinuation { continuation in
+ processingQueue.async {
+ let result = chunk.map { self.expensiveOperation($0) }
+ continuation.resume(returning: ProcessedItem(results: result))
+ }
+ }
+ }
+}
+```
+
+## 测试模式
+
+### 基于协议的测试
+- 在测试中使用协议进行依赖注入
+- 创建专注于功能测试的替身(Test Doubles)
+
+```swift
+// ✅ Good
+class MockAppService: AppService {
+ var shouldFailInstallation = false
+ var installedApps: [App] = []
+
+ func fetchAvailableApps() async throws -> [App] {
+ return [
+ App(identifier: "test.app1", name: "Test App 1", version: "1.0.0"),
+ App(identifier: "test.app2", name: "Test App 2", version: "2.0.0")
+ ]
+ }
+
+ func installApp(_ app: App) async throws {
+ if shouldFailInstallation {
+ throw InstallationError.insufficientStorage
+ }
+ installedApps.append(app)
+ }
+}
+
+class AppListViewModelTests: XCTestCase {
+ private var mockAppService: MockAppService!
+ private var viewModel: AppListViewModel!
+
+ override func setUp() {
+ super.setUp()
+ mockAppService = MockAppService()
+ viewModel = AppListViewModel(appService: mockAppService)
+ }
+
+ @MainActor
+ func testLoadAppsSuccess() async {
+ await viewModel.loadApps()
+
+ XCTAssertEqual(viewModel.apps.count, 2)
+ XCTAssertFalse(viewModel.isLoading)
+ XCTAssertNil(viewModel.errorMessage)
+ }
+
+ @MainActor
+ func testInstallAppFailure() async {
+ mockAppService.shouldFailInstallation = true
+
+ let testApp = App(identifier: "test", name: "Test", version: "1.0")
+ await viewModel.installApp(testApp)
+
+ XCTAssertNotNil(viewModel.errorMessage)
+ XCTAssertTrue(viewModel.errorMessage!.contains("insufficient storage"))
+ }
+}
+```
+
+## 文档标准
+
+### 复杂 API 文档
+- 文档复杂行为和边缘情况
+- 为非平凡的 API 提供使用示例
+
+```swift
+/**
+ * 这是一个线程安全的管理器,用于处理具有自动重试逻辑的应用程序安装。
+ * 此类管理 iOS 应用程序的安装过程,处理网络下载、签名验证和设备通信。
+ * 它为瞬时故障提供自动重试功能,并提供全面的错误报告。
+ *
+ * ## Usage Example
+ * ```swift
+ * let installer = AppInstallationManager()
+ *
+ * do {
+ * let result = try await installer.installApp(
+ * from: app.sourceURL,
+ * identifier: app.bundleID,
+ * maxRetries: 3
+ * )
+ * print("Installation completed: \(result.installedPath)")
+ * } catch InstallationError.insufficientStorage {
+ * // Handle storage error
+ * } catch {
+ * // Handle other errors
+ * }
+ * ```
+ *
+ * ## 线程安全
+ * 此类是线程安全的,可以从任何队列调用。除非另有说明,所有完成处理程序都在主队列上调用。
+ * ## 错误处理
+ * 安装失败分为可恢复错误和不可恢复错误。可恢复错误(网络超时、临时设备问题)将自动重试至指定限制。
+ * 不可恢复错误(无效签名、不兼容设备)将立即失败。
+ */
+@MainActor
+class AppInstallationManager {
+ // Implementation
+}
+```
+
+请记住:这些高级模式应谨慎使用。始终优先考虑代码清晰度和可维护性,而不是巧妙的实现。如有疑问,请选择能够满足需求的更简单方法。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/contributing.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
new file mode 100644
index 00000000..3458c76d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
@@ -0,0 +1,239 @@
+---
+sidebar_position: 1
+---
+
+# 为SideStore贡献代码
+
+感谢您对为SideStore提供贡献感兴趣!SideStore是一个由社区驱动的工程,它是由像您一样的人共同努力的结果。
+
+通过为本项目(SideStore)贡献代码,即代表您已同意遵守开发者来源证书,详见[CERTIFICATE-OF-ORIGIN.md](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md)。在开发者来源证书生效后,对本项目的任何贡献均须遵循其政策。
+
+为SideStore贡献有很多种方式,所以如果您不是一个开发者,也有其他您可以提供帮助的方式:
+
+- [撰写文档](https://github.com/SideStore/SideStore-Docs)
+- [提交详细的bug报告,或建议新的功能](https://github.com/SideStore/SideStore/issues/new/choose)
+- 提供支持协助:
+ - [Discord](https://discord.gg/sidestore-949183273383395328)
+ - [GitHub讨论](https://github.com/SideStore/SideStore/discussions)
+
+当然,这个指南将会专注于开发侧相关的内容。从现在开始,这里仅提供设置说明,若设置完成后需要帮助,您可以[加入我们的Discord频道](https://discord.gg/sidestore-949183273383395328)。
+
+## 需求
+
+这个指南已预设您满足以下条件:
+
+- 正在使用一台Mac
+- 安装了Xcode
+- 拥有基础的命令行相关知识(知道如何运行指令,导航至目录)
+- 拥有基础的Git知识,([GitHub Desktop](https://desktop.github.com/)对于初学者来说是一个很好的工具,它极大程度的简化了使用Git工作的体验)
+- 拥有基础的Swift/iOS开发知识
+
+## 安装
+
+1. **在GitHub分叉SideStore的存储库**.
+
+2. **克隆分叉**:
+ ```bash
+ git clone https://github.com//SideStore.git --recurse
+ cd SideStore
+ ```
+
+ 如果您正在使用GitHub Desktop,请参考[这个指南](https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop)。
+
+3. **将`CodeSigning.xcconfig.sample`复制到`CodeSigning.xcconfig`**然后填入数值。
+
+4. **(只有开发者需要)** 修改Info.plist中`ALTDeviceID`的数值为您的设备的UDID。正常来说,SideServer会在安装过程中将设备的UDID嵌入SideStore的Info.plist文件中。通过Xcode运行时,您需要手动设置该值,否则SideStore将无法为正确设备重新签名(甚至安装)应用程序。
+
+5. **最后,在Xcode打开`AltStore.xcworkspace`**。
+
+接下来,您就可以进行属于您的修改并进行测试了。然后,使用Git提交并推送您的修改,不要忘了拉取请求(pr)。
+
+## 关于预构建的二进制文件
+
+minimuxer和em_proxy使用由GitHub Actions预构建的静态库二进制文件以加快编译,这移除了在SideStore上工作的时候安装Rust的需求。[`SideStore/fetch-prebuilt.sh`](https://github.com/SideStore/SideStore/blob/develop/SideStore/fetch-prebuilt.sh)会在每次Xcode编译之前运行,它会每6个小时检查下载的二进制文件是否是最新的。如果您想强制检查是否存在新的二进制文件,运行`bash ./SideStore/fetch-prebuilt.sh force`。
+
+## 使用Xcode进行构建
+
+如果您有需要,您可以使用`brew install cocoapods`安装cocoapods
+现在,在仓库工作区根目录下使用命令行,使用执行Pod-Install指令:`pod install` 以安装cocoapod的相关依赖
+在这之后您可以在Xcode内执行正常的构建
+
+## 编译用于分发的IPA包
+
+如果您有需要,您可以使用`brew install cocoapods`安装cocoapods
+现在,在仓库工作区根目录下使用命令行,使用执行Pod-Install指令:`pod install` 以安装cocoapod的相关依赖
+
+您可以在根目录使用Makefile指令:`make build fakesign ipa`
+默认情况下,构建的配置为:`Release`
+对于调试版本,在根目录下使用:`export BUILD_CONFIG=Debug;make build fakesign ipa`
+对于alpha/beta版本,在调用构建指令前运行:`export IS_ALPHA=1;` or `export IS_BETA=1;`
+这会创建SideStore.ipa
+
+```sh
+示例:
+
+ # cocoapods
+ brew install cocoapods
+ # 执行安装pods
+ pod install
+
+ # alpha 发布构建
+ export IS_ALPHA=1;make build fakesign ipa
+ # alpha 测试构建
+ export IS_ALPHA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # beta 发布构建
+ export IS_BETA=1;make build fakesign ipa
+ # beta 测试构建
+ export IS_BETA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # stable 发布构建
+ make build fakesign ipa
+ # stable 测试构建
+ export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+在默认情况下,SideStore会使用默认的包标识符 `com.SideStore.SideStore` 进行构建,但如果你需要为命令行构建配置自定义的bundleID ,您可以通过导出`BUNDLE_ID_SUFFIX`环境变量来实现:
+
+```sh
+ # stable 发布构建
+ export BUNDLE_ID_SUFFIX=XYZ0123456;make build fakesign ipa
+ # stable 测试构建
+ export BUNDLE_ID_SUFFIX=XYZ0123456;export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+**提示**:当您使用XCode构建的时候,`BUNDLE_ID_SUFFIX`默认配置的值为`DEVELOPMENT_TEAM`
+
+可通过在覆盖生成的 CodeSigning.xcconfig 文件(基于 CodeSigning.xcconfig.sample)中设置/移除 BUNDLE_ID_SUFFIX 进行自定义。
+
+:::warning
+生成的二进制文件将包含指向Xcode派生数据的路径,若您在本地构建了minimuxer,则还包含指向$HOME/.cargo的路径。这些路径将包含您的用户名。若需保护用户名隐私,建议改用GitHub Actions构建IPA文件。
+:::
+
+## 在进行SideStore的开发时同时开发minimuxer
+
+请参考[minimuxer's README](https://github.com/SideStore/minimuxer)获取开发指引
+
+## 拉取请求流程
+
+### 在提交之前
+
+1. **遵循代码标准**:确保您的代码符合我们的[代码格式指南](./formatting.mdx).
+
+2. **测试您做出的修改**:
+ - 尽可能的在不同的iOS版本进行测试
+ - 确保现存的功能不会出现损坏
+ - 根据适用情况为新功能添加测试
+
+3. **更新文档**:如果您的更改影响用户可见的功能,请更新相关文档。
+
+### 提交您的PR
+
+1. **创建一个功能分支**:
+ ```bash
+ git checkout -b feature/your-feature-name
+ ```
+
+2. **进行修改**:遵循编码规范和最佳实践
+
+3. **提交您的更改并签名**:
+ ```bash
+ git add .
+ git commit -s -m "Add descriptive commit message"
+ ```
+
+ **重要提示**:所有提交都应使用开发者来源证书(DCO)签名。`-s` 标志会自动在提交信息中添加必需的 `Signed-off-by` 行。
+
+4. **推送到您的分支**:
+ ```bash
+ git push origin feature/your-feature-name
+ ```
+
+5. **创建一个Pull Request**:前往SideStore的主库并且从您的分支创建一个pull request
+
+:::caution
+我们**不**接受由AI生成或“氛围编码”生成的pull请求(例如:包含过多生硬注释、代码缺乏个性化特征、未能理解项目核心、或未针对SideStore进行精心设计的代码)。请确保您的贡献具有原创性,且充分展现对代码库及其目标的清晰理解。
+:::
+
+### PR指南
+
+- **使用清晰的标题**:使用描述性的标题概括变更的内容
+- **详细的说明**:阐述所作变更及原因
+- **关联相关的问题**:引用相关GitHub问题
+- **截图**:附上界面变更的截图
+- **测试记录**:描述您如何测试您做的变更
+
+## 开发者来源证书 (DCO)
+
+SideStore要求所有贡献者使用开发者来源声明(DCO)签署其提交内容。该声明既作为我们的《贡献者行为准则》,也是确认您编写或拥有提交所贡献代码权限的简易方式。
+
+### DCO是什么?
+
+通过签署您的提交,您确认:
+
+- **(a)** 该贡献全部或部分由您创作,且您有权根据文件中指定的开源许可证提交该贡献;或
+- **(b)** 该贡献基于先前作品,据您所知该作品受适当开源许可证覆盖,且您有权根据该许可证提交修改后的作品;或
+- **(c)** 该贡献由他人直接提供给您,且该人已证明满足(a)、(b)或(c)项要求,而您未对其进行修改。
+- **(d)** 您理解且同意:本项目及贡献内容均属公开性质,且贡献记录将永久保存。
+
+### 如何签名
+
+要签署您的提交,只需在提交时添加 `-s` 标志:
+
+```bash
+git commit -s -m "您的提交信息"
+```
+
+这将自动在您的提交信息中添加一行`Signed-off-by`:
+
+```
+您的提交信息
+
+Signed-off-by: SternXD
+```
+
+### Important Notes
+
+- **所有的提交都应是签名的** - 我们更倾向您为您的提交进行签名
+- **使用正确的邮箱** - 邮箱应和您的GitHub账户保持一致
+- **追溯性签名确认** - 如果您忘记了签名,您可以使用`git commit --amend -s`修改您的最后一次提交
+
+更多详情请参阅完整的[原产地证书](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md)文件。
+
+## 代码审查流程
+
+1. **初步审查**:一位维护者将会在数日内审查您的PR
+2. **反馈**:处理任何请求的变更或问题
+3. **最终通过**:一旦通过,一位维护者将会合并您的PR
+
+## 优质贡献的指南
+
+### 代码质量
+- 编写干净,有阅读性的代码
+- 遵循Swift和Objective-C的最佳实践
+- 使用有意义的变量和函数名
+- 为复杂的代码添加注释
+
+### 测试
+- 尽可能在物理设备上测试
+- 测试边界情况和错误条件
+- 验证向后兼容性
+
+### 文档
+- 更新代码注释
+- 更新面向用户的文档
+- 为公共API添加内联文档
+
+## 获取帮助
+
+如果您需要帮助/有问题需要解决:
+
+- **GitHub讨论**:一般性问题请使用GitHub Discussions
+- **GitHub Issues**:为bug/功能请求提交issue
+- **Discord**:加入SideStore的Discord社区
+
+## 认可
+
+对项目作出重大贡献的贡献者将在项目鸣谢名单和变更日志中予以表彰
+
+感谢您对SideStore的贡献!
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/formatting.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
new file mode 100644
index 00000000..421c6d00
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
@@ -0,0 +1,492 @@
+---
+sidebar_position: 2
+---
+
+# 代码格式指南
+
+本文件概述了SideStore项目中Swift和Objective-C代码的格式规范。统一的格式规范能提升代码库的可读性与可维护性。
+
+## 基本原则
+
+- **一致性**:遵循项目中现有的代码风格
+- **可读性**:代码应易于阅读和理解
+- **简洁性**:优先选择简单明了的解决方案,而非花哨的方案
+- **规范性**:尽可能遵循苹果官方的Swift和Objective-C规范
+
+## Swift格式
+
+### 命名规范
+
+#### 变量和函数
+- 使用**驼峰命名法**为变量,函数,以及方法命名
+- 使用能明确说明用途的描述性名称
+
+```swift
+// ✅ Good
+let downloadProgress: Float
+func validateUserCredentials() -> Bool
+var isAppInstalling: Bool
+
+// ❌ Bad
+let dp: Float
+func validate() -> Bool
+var installing: Bool
+```
+
+#### 类、结构体、枚举和协议
+- 使用 **驼峰式大小写** 表示类型
+- 使用有描述性、名词化的名称
+
+```swift
+// ✅ Good
+class AppInstaller
+struct InstallationProgress
+enum AppState
+protocol AppManaging
+
+// ❌ Bad
+class installer
+struct progress
+enum state
+protocol managing
+```
+
+#### 常量
+- 使用**驼峰式命名法**为常量命名
+- 建议为全局常量使用 **全部大写的蛇形命名法**
+
+```swift
+// ✅ Good
+let maxRetryAttempts = 3
+private let defaultTimeout: TimeInterval = 30.0
+
+// Global constants
+let MAX_CONCURRENT_DOWNLOADS = 5
+
+// ❌ Bad
+let MaxRetryAttempts = 3
+let max_retry_attempts = 3
+```
+
+### 缩进与间距
+
+#### 缩进
+- 使用**4个空格**作为缩进(非tab)
+- 将续行与起始分隔符对齐
+
+```swift
+// ✅ Good
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) {
+ // Implementation
+}
+
+// ❌ Bad
+func installApp(withIdentifier identifier: String,
+sourceURL: URL,
+completion: @escaping (Result) -> Void) {
+// Implementation
+}
+```
+
+#### 行长度
+- 尽可能保持行长度在**120字符**以下
+- 在合乎逻辑的位置拆分过长的行
+
+```swift
+// ✅ Good
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(
+ parameter1: value1,
+ parameter2: value2
+)
+
+// ❌ Bad
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(parameter1: value1, parameter2: value2, parameter3: value3)
+```
+
+#### 间距
+- 运算符两侧使用单个空格
+- 不允许尾随空格
+- 函数与主要代码段之间应留单行空行
+
+```swift
+// ✅ Good
+let result = value1 + value2
+if condition && anotherCondition {
+ // Code
+}
+
+func firstFunction() {
+ // Implementation
+}
+
+func secondFunction() {
+ // Implementation
+}
+
+// ❌ Bad
+let result=value1+value2
+if condition&&anotherCondition{
+ // Code
+}
+func firstFunction(){
+ // Implementation
+}
+func secondFunction(){
+ // Implementation
+}
+```
+
+### 花括号与控制流
+
+#### 花括号式样
+- 在语句同一行上放置左大括号
+- 闭合大括号单独成行,与开头语句对齐
+
+```swift
+// ✅ Good
+if condition {
+ doSomething()
+} else {
+ doSomethingElse()
+}
+
+class MyClass {
+ func myMethod() {
+ // Implementation
+ }
+}
+
+// ❌ Bad
+if condition
+{
+ doSomething()
+}
+else
+{
+ doSomethingElse()
+}
+```
+
+#### 卫语句
+- 使用卫语句实现提前返回
+- 保持卫语句简单易读
+
+```swift
+// ✅ Good
+guard let url = URL(string: urlString) else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+
+guard !apps.isEmpty else {
+ return
+}
+
+// ❌ Bad
+if let url = URL(string: urlString) {
+ // Long nested code block
+} else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+```
+
+### 类型注解与推断
+
+#### 何时使用类型注解
+- 当类型不明确时使用类型注解
+- 当Swift能明确推断类型时省略类型注解
+
+```swift
+// ✅ Good
+let name = "SideStore" // Type is obvious
+let timeout: TimeInterval = 30 // Type clarifies intent
+var apps: [App] = [] // Empty array needs type annotation
+
+// ❌ Bad
+let name: String = "SideStore" // Redundant type annotation
+let timeout = 30 // Unclear if Int or TimeInterval
+```
+
+### 函数声明
+
+#### 参数标签
+- 使用描述性参数标签
+- 当首参数标签符合自然语境时可省略
+
+```swift
+// ✅ Good
+func install(_ app: App, to device: Device)
+func download(from url: URL, completion: @escaping (Data?) -> Void)
+
+// ❌ Bad
+func install(app: App, device: Device)
+func download(url: URL, completion: @escaping (Data?) -> Void)
+```
+
+#### 返回类型
+- 尽可能将返回类型置于同一行
+- 换行处理非常长的签名
+
+```swift
+// ✅ Good
+func processData() -> Result
+
+func complexFunction(withManyParameters param1: String,
+ param2: Int,
+ param3: Bool)
+ -> Result {
+ // Implementation
+}
+```
+
+## Objective-C 格式规范
+
+### 命名规范
+
+#### 方法
+- 使用描述性方法名并明确标注参数
+- 以小写字母开头
+- 使用驼峰式命名法
+
+```objc
+// ✅ Good
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+
+// ❌ Bad
+- (void)install:(NSString *)id url:(NSURL *)url completion:(void (^)(NSError *))completion;
+```
+
+#### 变量与属性
+- 使用驼峰命名法
+- 使用描述性名称
+- 实例变量前添加下划线
+
+```objc
+// ✅ Good
+@interface AppManager : NSObject
+@property (nonatomic, strong) NSArray *installedApps;
+@property (nonatomic, assign) BOOL isInstalling;
+@end
+
+@implementation AppManager {
+ NSURLSession *_networkSession;
+ dispatch_queue_t _processingQueue;
+}
+```
+
+#### 类与协议
+- 使用驼峰命名法
+- 考虑为公共类添加前缀(例如 SS 表示 SideStore)
+
+```objc
+// ✅ Good
+@interface SSAppInstaller : NSObject
+@protocol SSAppManaging
+
+// ❌ Bad
+@interface appInstaller : NSObject
+@protocol appManaging
+```
+
+### 间距与格式
+
+#### 方法声明
+- 参数垂直对齐
+- 使用统一间距
+
+```objc
+// ✅ Good
+- (instancetype)initWithIdentifier:(NSString *)identifier
+ title:(NSString *)title
+ version:(NSString *)version;
+
+// ❌ Bad
+- (instancetype)initWithIdentifier:(NSString *)identifier title:(NSString *)title version:(NSString *)version;
+```
+
+#### 大括号
+- 开括号与内容同行
+- 闭括号单独成行
+
+```objc
+// ✅ Good
+if (condition) {
+ [self doSomething];
+} else {
+ [self doSomethingElse];
+}
+
+// ❌ Bad
+if (condition)
+{
+ [self doSomething];
+}
+else
+{
+ [self doSomethingElse];
+}
+```
+
+## 注释与文档
+
+### Swift 文档规范
+- 使用 `///` 标记文档注释
+- 公开 API 需包含参数与返回值说明
+
+```swift
+/// Downloads and installs an app from the specified URL
+/// - Parameters:
+/// - identifier: The unique identifier for the app
+/// - sourceURL: The URL to download the app from
+/// - completion: Called when installation completes or fails
+/// - Returns: A cancellable operation
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) -> Operation {
+ // Implementation
+}
+```
+
+### Objective-C 文档规范
+- 使用 `/** */` 标记文档注释
+- 遵循 HeaderDoc 或 Doxygen 规范
+
+```objc
+/**
+ * Downloads and installs an app from the specified URL
+ * @param identifier The unique identifier for the app
+ * @param sourceURL The URL to download the app from
+ * @param completion Block called when installation completes or fails
+ */
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+```
+
+### 内联注释
+- 单行注释使用`//`
+- 请保持评论简洁且切题
+- 解释**为什么**,而非**是什么**
+
+```swift
+// ✅ Good
+// Retry failed downloads up to 3 times to handle temporary network issues
+let maxRetryAttempts = 3
+
+// ❌ Bad
+// Set maxRetryAttempts to 3
+let maxRetryAttempts = 3
+```
+
+## 错误处理
+
+### Swift错误处理
+- 使用带有`throws`和`Result`类型的Swift原生错误处理
+- 使用有意义的错误类型
+
+```swift
+enum InstallationError: Error {
+ case invalidURL
+ case networkFailure(Error)
+ case insufficientStorage
+ case deviceNotSupported
+}
+
+func installApp() throws -> App {
+ guard let url = URL(string: urlString) else {
+ throw InstallationError.invalidURL
+ }
+ // Implementation
+}
+```
+
+### Objective-C错误处理
+- 使用`NSError **`参数模式
+- 设置前请务必检查错误参数是否为非空值
+
+```objc
+- (BOOL)installAppWithError:(NSError **)error {
+ if (someCondition) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSErrorDomain
+ code:SSErrorCodeInvalidInput
+ userInfo:nil];
+ }
+ return NO;
+ }
+ return YES;
+}
+```
+
+## 最佳实践
+
+### 内存管理
+- 在 Swift 和 Objective-C 中正确使用 ARC
+- 请注意引用周期问题;请正确使用`weak`和`unowned`引用
+
+```swift
+// ✅ Good
+class AppInstaller {
+ weak var delegate: AppInstallerDelegate?
+
+ private lazy var networkManager: NetworkManager = {
+ let manager = NetworkManager()
+ manager.delegate = self // Self is strong reference, but manager doesn't retain self
+ return manager
+ }()
+}
+```
+
+### 线程处理
+- 始终在主队列上更新用户界面
+- 使用合适的队列处理后台任务
+
+```swift
+// ✅ Good
+DispatchQueue.global(qos: .userInitiated).async {
+ let result = self.processData()
+ DispatchQueue.main.async {
+ self.updateUI(with: result)
+ }
+}
+```
+
+### 可选的处理
+- 使用安全的拆包技术
+- 优先使用guard语句实现提前返回
+
+```swift
+// ✅ Good
+guard let data = response.data,
+ let apps = try? JSONDecoder().decode([App].self, from: data) else {
+ completion(.failure(ParsingError.invalidResponse))
+ return
+}
+```
+
+## Tools and Automation
+
+### SwiftLint
+您可以考虑使用SwiftLint自动执行这些格式化规则:
+
+```yaml
+# .swiftlint.yml
+line_length: 120
+function_body_length: 60
+file_length: 400
+type_body_length: 300
+
+disabled_rules:
+ - trailing_whitespace
+
+opt_in_rules:
+ - empty_count
+ - force_unwrapping
+```
+
+切记: 这些准则应有助于提高代码的可读性和可维护性。如有疑问,应优先考虑清晰度以及与现有代码库的一致性。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx
index 2e00df74..059aeb95 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx
@@ -16,6 +16,10 @@ SideStore的目标是提供不受限制的侧载体验。它是[AltStore](https:
(我们非常欢迎大家的贡献! 🙂)
+### SideStore有什么限制》
+
+如果使用免费的Apple账户的话,SideStore只能同时安装3个应用(包括SideStore本身)。同时一周只能安装10个不同的应用(使用App ID作为参考)。
+
### 我可以启用JIT吗?
对于使用iOS/iPadOS 16及更低版本的用户,您以在SideStore内“我的应用(My Apps)”界面按住您想要选择开启JIT的应用,在弹出的界面中选择“启用JIT(Enable JIT)”来激活JIT。
@@ -30,11 +34,11 @@ SideStore目前并未有明确的正式版发布日期,但我们处于公测
当然可以,就像AltStore一样!
-### 这款工具有AltStore beta的功能吗?
+### 这款工具有AltStore (beta)的功能吗?
-我们确实有AltStore beta的功能,但并不总能保持最新。我们会尽可能保持更新,或者在必要时以自己的方式实现对应的功能。
+我们确实有AltStore (beta)的功能,但并不总能保持是最新的。我们会尽可能保持更新,或者在必要时以自己的方式实现对应的功能。
-### 打开VPN会额外消耗我的电池吗?
+### 持续打开VPN会额外消耗我的电池吗?
并不会,因为它只连接到您自己的设备。并不使用远程服务器,这意味着没有和外部的连接,也意味着没有额外的电池消耗。
@@ -46,15 +50,15 @@ SideStore目前并未有明确的正式版发布日期,但我们处于公测
请返回桌面静候其完成。我们不清楚为什么会出现这样的问题,这可能与使用VPN引导“installd”刷新SideStore本身有关。
-### 我可以签名多于3个应用并使其同时保持启用状态吗?
+### 我可以签名多于3个应用并同时使其保持启用状态吗?
一般来说并不允许,因为这是iOS和开发人员帐户的限制。Apple只允许免费的Apple Developer帐户同时安装3个应用程序。
要取消此限制(并获得365天的软件可用时间),您可以支付99美元/年的费用获得一个付费的Apple Developer帐户。
-或者,在iOS 18 db5/18.0.1及以下版本上,您可以利用SparseRestore漏洞绕过3个应用的限制。
+或者您可以使用LiveContainer,以及在iOS 18 db5/18.0.1及以下版本上,您可以利用SparseRestore漏洞绕过3个应用的限制。
-使用教程可以在[这里](advanced/sparserestore)找到。
+使用教程可以在[这里](advanced/alternative)找到。
### 我有一个问题,或bug,或功能的需求,或能提升生活质量的需求想要提交
@@ -62,11 +66,11 @@ SideStore目前并未有明确的正式版发布日期,但我们处于公测
### 我是一名开发者,这个工具会对我有什么影响?
-它不会直接影响您,除了我们需要因扩充功能而需要对AltKit进行更新的时候。
+您的应用无需任何调整就可以和SideStore搭配使用!
-### 我需要安装AltStore/Sidestore吗?
+### 我需要安装AltStore以使用Sidestore吗?
-并不需要,您可以直接参考我们为(Windows)[windows],(macOS)[mac]和(Linux)[linux]提供的教程直接侧载。因为目前它在签名的时候和AltStore操作是一样的。
+并不需要,您可以直接参考我们提供的教程直接侧载!
### 作为用户,我在登录SideStore的时候遇到了问题。我收到了一个错误提示。
@@ -96,11 +100,7 @@ SideStore目前并未有明确的正式版发布日期,但我们处于公测
### 当我使用SideStore的时候为什么我的账户被锁定了?
-已知,被太多用户使用的,旧的Anisette服务器会导致Apple ID被锁定的问题。请使用官方提供的Anisette服务器之一,或者自部署您自己的[anisette v3服务器](advanced/anisette)。
-
-### 为什么我看到了错误代码-36607?
-
-这说明了Anisette server出现了登陆上的问题。更换Anisette server有时会起作用,或者您可以继续尝试登录,直到登录为止。对于这个问题我们目前了解的关于它的信息并不多。
+旧版的,有太多用户使用的Anisette服务器会导致Apple ID被锁定的问题。请使用官方提供的Anisette服务器之一,或者自部署您自己的[anisette v3服务器](advanced/anisette)。
### 我能转移我在AltStore/Sideloady侧载的应用吗?
@@ -110,29 +110,25 @@ SideStore目前并未有明确的正式版发布日期,但我们处于公测
这是因为AltServer或者其他的应用使用他们自己的groupID来侧载SideStore,但是我们使用我们自己的。刷新SideStore会把软件的groupID换成我们自己的,这会让软件消失。因为他们的groupID没有被更新。在清洁安装的时候,刷新SideStore之前最好不要侧载任何东西。
-### 我可以进行OTA升级吗?
+### SideStore支持OTA升级吗?
-当然! 点击“更新(Update)”按钮就可以啦!
+当然! 出现“更新(Update)”按钮的时候点击就可以啦!
### 我想要测试一个SideStore的版本,并且我想在切换到测试版本的时候保留数据。我需要删除我的应用还是我可以通过SideStore侧载测试版本?
-您可以通过SideStore侧载,并且您的数据应该是保持一致的。我们没有一个可以让您切换到其他版本的注册/登记开关。我们也不能保证在您测试非官方/每夜构建版本时的数据转移。
+您可以通过SideStore或者AltStore侧载每夜构建(nightly)版本,您的数据应该是一致的。或者在设置启用测试版更新,并选择每夜构建版本。我们也不能保证在您测试非官方/每夜构建版本时的数据转移。
### 我的软件消失了,但是我不知道怎么做
不要恐慌!重新侧载,而不是移除您的应用,您的数据应该是没有问题的。但不幸的是,您选择停用的应用程序可能已经消失了,要确认这一点的话,只需刷新SideStore,并看看它们是否会回来。
-### 我不能以任意格式选择配对文件
-
-请确认您的配对文件的文件扩展名是以`.mobiledevicepairing`或者`.plist`结尾的。如果并不是,请在将配对文件发送到手机之前仔细检查是否已将文件进行压缩。如果不这样做,文件可能会在传输过程中被损坏。此外,使用证书对Sidestore进行签名时,您将无法从应用程序中选择配对文件。您可以尝试将配对文件移动到“文件”应用程序中的“我的iPhone/iPad”的SideStore文件夹的根目录中,并将其命名为`ALTPairingFile.mobiledevicepairing`。如果在“文件”应用程序中看不到SideStore文件夹,请将手机连接到电脑上,然后将配对文件拖放到SideStore应用程序的文件夹中。请确保将其更改为上述名称。请注意,它是区分大小写的。
-
### 不能启动DebugServer
确实存在Debugserver不工作的情况。遇到这种问题您可以尝试如下操作:
**创建一个新的配对文件**
-想要开始使用新的配对文件的话,您需要进入“设置(Settings)”标签页并点击“重置配对文件(Reset Pairing file)”,然后点击“删除并重置(Delete and Reset)”。然后您可以跟随[配对文件教程](installation/pairing-file)进行后续操作。
+使用iloader重新导入配对文件
### 关于目前已知的问题
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/install.mdx
new file mode 100644
index 00000000..5af38e64
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/installation/install.mdx
@@ -0,0 +1,34 @@
+---
+title: 安装指引
+description: 将SideStore安装至您的苹果设备上
+sidebar_position: 2
+---
+## 安装SideStore
+1. 使用数据线将您的苹果设备连接到电脑上。如果弹出了是否信任电脑的提示框的话,信任电脑并输入您的锁屏密码
+2. 打开iloader
+3. 登录您的Apple账户
+4. 选择您的苹果设备
+3. 选择"Install SideStore".
+
+### 需要在您的苹果设备上进行的操作
+请参考以下步骤
+1. 打开“设置”
+2. 点击“通用”,“VPN与设备管理”
+3. 在“开发者APP”下找到您Apple账户的邮箱,点击该邮箱,并在接下来的页面点击“验证 App”
+4. 在设置的主界面找到“隐私与安全性”
+5. 划到页面的底部,打开“开发者模式”,此时您的设备应该会重启
+6. 打开StosVPN,点击“Connect”
+7. 打开SideStore
+9. 使用您前面使用的Apple账户登录
+10. 点击"My Apps".
+11. 点击SideStore右侧的"x DAYS"按钮,(x是应用过期的剩余天数)
+12. 此时应该弹出一个提示框询问您创建一个新的签名证书,点击"Refresh Now"
+
+在进行完这一步后,SideStore会退出,返回至您的桌面。同时您会收到一条通知,在几秒后SideStore就可以使用了。
+
+需要注意的是,如果您的设备升级/重置了,您的配对用文件会过期,您需要使用[这条指南](../advanced/pairing-file)重新导入。当然配对用文件也可能因为Apple的应用政策过期。
+
+如果您使用iloader重新安装了SideStore,您原来的证书可能会被吊销,这时需要您再次手动刷新应用。
+
+如果您想使用同一个Apple ID在另一台设备上安装SideStore,请[参考这几个步骤](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291)。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/linux.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/linux.mdx
deleted file mode 100644
index 3e7b62c9..00000000
--- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/linux.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Linux 安装指引
-description: 使用Linux安装Sidestore的操作指引
-sidebar_position: 4
----
-
-在开始之前,请确保您已完成[必要准备](prerequisites)中的所有步骤!
-
-1.确保您的计算机上已安装usbmuxd,并在Linux终端使用`sudo apt install -y usbmuxd`指令进行过更新。
-2.在您的计算机上安装Docker或者Podman。
-2.插入您的苹果设备。如果您收到了弹窗提示,请选择“信任”并输入密码。
-
-3.现在,通过以下指令(可能需要`sudo`)以使用Docker或Podman运行Altcon:
-
-Docker 安装:
-```bash
-docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd ghcr.io/sidestore/altcon
-```
-Podman 安装:
-```bash
-podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd ghcr.io/sidestore/altcon
-```
-4. Altcon将与您的设备配对。当您收到另一个弹窗提示时,选择“信任”并再次输入密码。
-5. 在您的辅助设备上,执行以下操作:
- * 信任您的Apple ID的邮箱的“开发者APP”(您可以在“设置”——“通用”——“VPN和设备管理”下找到)。
- * 打开“设置”应用程序。
- * 导航到“隐私和安全”部分。
- * 打开底部的“开发人员模式”。
-6. 打开SideStore,在SideStore请求配对文件的时候点击“允许”。然后退出应用。
-
-现在,请移步生成您的[配对文件](pairing-file)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/mac.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/mac.mdx
deleted file mode 100644
index 55fc7fec..00000000
--- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/mac.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: macOS 安装指引
-description: 使用macOS安装Sidestore的操作指引
-sidebar_position: 2
----
-
-在开始之前,请确保您已完成[必要准备](prerequisites)中的所有步骤!
-
-1. 从[AltStore的官方网站](https://cdn.altstore.io/file/altstore/altserver.zip)下载AltServer。将`AltServer.app`复制到你的`应用程序`文件夹, 接着打开它(使用Finder, Launchpad, 或者 Spotlight)。它应该以一个图标的形式出现在您的菜单栏中。
-2. 下载SideStore的[IPA文件](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa)。
-3. 按住option按键,并点击 AltServer 在菜单栏内的图标。点击"Sideload .ipa",并选择SideStore的IPA文件。
-4. 在您的第二台设备上,执行以下操作:
- * 信任您的 Apple ID 的邮箱的“开发者APP”(您可以在“设置”-“通用”-“VPN和设备管理”下找到)。
- * 打开“设置”应用程序。
- * 导航到“隐私和安全性”部分。
- * 打开底部的“开发者模式”。
-
-现在,请移步生成您的[配对文件](pairing-file)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
deleted file mode 100644
index 78044e98..00000000
--- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/pairing-file.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: 配对文件
-description: 配对文件对于SideStore的功能实现十分重要
-sidebar_position: 5
----
-
-idevice_pair是一个生成配对文件的程序,配对文件允许SideStore等程序远程对您的设备进行调整。这是运行SideStore所必需的,否则SideStore将无法运行。
-:::warning
-注意,如果您更新或重置了您的苹果设备,您的配对文件将过期,您需要生成一个新的配对文件。当然,由于苹果的政策,这可能会随时发生,目前我们无法修复它。
-:::
-
-## 配对教程
-
-### macOS
-
-1. 下载 [macOS的idevice pair](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg).。 打开文件,并将 `idevice pair`拖拽至 `应用程序`。
-2. 打开镜像并将`idevice pair`拖拽至`应用`目录
-
-### Windows
-
-1. 请确保您已安装[64位](https://apple.com/itunes/download/win64) / [32位](https://apple.com/itunes/download/win32)的iTunes(它应该在设置 AltServer 时就已经安装好了)。
-2. 下载[Windows的idevice pair](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe)并将文件移动到您不会丢失的地方。
-
-### Linux
-
-1. 确保您的计算机已经通过在终端中运行`sudo apt install -y usbmuxd`安装了usbmuxd。
-2. 下载与您的PC架构相对应的idevice pair版本([x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage) 或 [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage)),并确保其可正常运行。
-
-## 下一步
-现在,按照[安装后说明](post-install)进行后续操作。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/post-install.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/post-install.mdx
deleted file mode 100644
index a489e0ec..00000000
--- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/post-install.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: 安装后说明
-description: 即将完成,就差最后几步!
-sidebar_position: 6
----
-安装SideStore的最后一步是在SideStore内刷新SideStore本身。
-
-为此,您需要:
-
-1. 连接到StosVPN。
-2. 打开SideStore。
-3. 如果您没有选择过配对文件的话,请先导入/选择配对文件。
-4. 使用您的Apple ID登录。
-5. 导航到“我的应用(My Apps)”。
-6. 点击SideStore右侧的“x 天(X DAYS)”按钮(x是应用程序到期前的天数)。
-7. 应出现一个要求创建新的签名证书的弹窗提示,点击“立即刷新”。
-8. 如果出现了询问您是否要吊销AltStore的证书的弹窗,请点击“是”。
-
-如果进程成功,SideStore将退出并返回到主界面,同时带有通知。
-
-如果SideStore没有像这样立即刷新,那是由于一个bug导致提前到期的问题,您需要使用AltServer重新安装SideStore。有一个计划是自动完成这项工作,但目前需要手动完成。
-
-如果您使用AltServer重新安装SideStore,您的证书将被吊销,您需要再次手动刷新。
-
-如果您希望使用相同的Apple ID在另一台设备上安装SideStore,请按照[这些步骤](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291)进行操作。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
index f4ae646d..151edc0c 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
@@ -1,6 +1,6 @@
---
-title: 必要准备
-description: '安装的第一步'
+title: 安装前准备
+description: '安装SideStore的第一步'
sidebar_position: 1
---
@@ -9,24 +9,40 @@ SideStore的安装过程可能看起来很棘手,但随着花一些时间***
## 要求
想要安装SideStore,您需要:
-- 一个运行了iOS/iPadOS 14及更高版本,并且[带有密码](https://support.apple.com/en-us/119586)的iOS/iPadOS设备。
-- 一台运行了[macOS](mac),[Windows](windows),或者[Linux](linux)的电脑(Linux支持目前还在试验性测试阶段)。
+
+- 一台运行了iOS/iPadOS 14及更高版本,并且[带有密码](https://support.apple.com/en-us/119586)的iOS/iPadOS设备
+- 一台电脑(只会用一次)
- 一个Apple ID。
-- StosVPN应用。
+- Wi-Fi连接
- 一些时间(流程很快,但是您需要留出一些[处理问题](../troubleshooting)的时间)。
-## StosVPN
+## 需要在您的设备上做的准备
+
+### 在您的iPhone/iPad上
SideStore利用设备上内置的VPN客户端功能以允许SideStore与内部服务通信。
-1. 从[App Store](https://apps.apple.com/us/app/stosvpn/id6744003051)下载StosVPN。
-2. 启用VPN。
+1. 从[App Store](https://apps.apple.com/us/app/stosvpn/id6744003051)下载StosVPN
+2. 启用VPN
该VPN需要在您期望安装/升级/刷新SideStore内安装的任意应用时保持开启。
-## 下一步
+### 在您的Mac上
+1. 下载并安装([M系列芯片](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg)或[Intel芯片](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg))的Mac版iloader
+2. 打开终端,运行`sudo xattr -c ./Applications/iloader.app`,如果弹出提示框请输入您的密码
+
+
+## 在您的Windows电脑上
+1. 下载并安装[iTunes](https://apple.co/ms)
+2. 下载iloader安装器的([exe文件](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe)/[msi文件](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi))
+3. 运行安装器
+
+## 在您的Linux机器上
+1. 下载并安装`usbmuxd`(它可能已预装在您使用的发行版中,否则请使用您的软件包管理器进行安装)
+2. 下载并安装适用于您使用的发行版的iloader(([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [other](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)))
+
+
+## 下一步
-现在,按照您的操作系统的安装指引进行后续操作!
-- [macOS](mac)
-- [Windows](windows)
-- [Linux (开发中)](linux)
\ No newline at end of file
+接下来,按照安装指引来安装SideStore!
+- [安装指引](install)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/windows.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/windows.mdx
deleted file mode 100644
index 958f3cf2..00000000
--- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/windows.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Windows 安装指引
-description: 使用Windows安装SideStore的操作指引
-sidebar_position: 3
----
-
-在开始之前,请确保已完成[必要准备](prerequisites)中的所有步骤!
-
-在您的电脑上卸载从Microsoft store下载的任何版本的iCloud或iTunes,并安装非Microsoft store版本的[iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe)和[64位](https://apple.com/itunes/download/win64)/[32位](https://apple.com/itunes/download/win32)的iTunes。非微软商店版本的iCloud于2022年9月中旬从苹果网站上删除了,但上述链接仍指向与AltServer兼容的旧版本iCloud,并且直接从苹果的服务器上下载(链接是安全的)。
-
-1. 从[AltStore网站](https://cdn.altstore.io/file/altstore/altinstaller.zip)下载`altinstaller.zip`。解压`altinstaller.zip`并运行`setup.exe`。在Windows任务栏中,键入“AltServer”,然后右键单击“以管理员身份运行”。如果系统弹出提示,请确保允许AltStore访问专用网络。接着AltStore的图标将会出现在系统托盘(显示互联网、Wi-Fi、电池等的位置)中。
-2. 点击[此处](https://github.com/sidestore/sidestore/releases/latest/download/sidestore.ipa)下载SideStore的IPA文件.
-3. 按住“Shift”按键并点击AltServer菜单栏图标。点击“Sideload .ipa”,并选择您之前下载的`sidestore.ipa`。
-4. 在您的辅助设备上,执行以下操作:
- * 信任您的Apple ID的邮箱的“开发者APP”(您可以在“设置”中的“通用”选项卡下,然后“VPN和设备管理”下找到)。
- * 打开“设置”应用程序。
- * 导航到“隐私和安全”部分。
- * 打开底部的“开发人员模式”。
-
-现在,请移步生成您的[配对文件](pairing-file)。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx
index 82fcc2a3..58c085db 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx
@@ -15,4 +15,4 @@ sidebar_position: 1
SideStore 让 iOS/iPadOS 14 及更高版本的设备更轻松的侧载应用。
-想要快速开始,访问[安装前提](installation/prerequisites.mdx)并跟随指示进行后续操作。
+想要快速开始,访问[安装前准备](installation/prerequisites.mdx)页面并跟随指示进行后续操作。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
index 487f23c2..63a4ed06 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
@@ -11,29 +11,33 @@ description: 在使用SideStore的过程中出现的常见问题
## SideStore的常见问题
+### 我收到错误代码:"X"
+#### 解决方案
+确认我们提供的[错误代码列表](error-codes)!
+
### AFC连接失败
#### 原因
连接问题或是配对文件不可用。
#### 解决方案
-1. 尝试重新连接
-2. 使用idevice pair生成并导入新的配对文件。详情请参考[配对文件操作指引](../installation/pairing-file)
+1. 尝试重新连接,确保Wi-Fi和StosVPN均已连接
+2. 使用iloader生成并导入新的配对文件
### 没有Wi-Fi或VPN的连接
#### 原因
minimuxer服务的连接出现了问题。
#### 解决方案
1. 如果您正在使用WireGuard,请更换到StosVPN
-2. 关闭任何的DNS阻止服务器
+2. 关闭任何的DNS阻止器
3. 再试一次(多点点总会有用的)
4. 重新启动SideStore
5. 重新启动StosVPN
-6. 使用idevice pair生成并导入新的配对文件。详情请参考[配对文件操作指引](../installation/pairing-file)
+6. 使用iloader生成并导入新的配对文件。
### SideStore在安装过程中挂起
#### 原因
缓存或是协议出了问题。
#### 解决方案
-1. 如果您并未更新SideStore的话,请更新SideStore,否则只需重启。
+1. 如果您并未更新SideStore的话,请进行更新,否则重启
2. 清理缓存
3. 更换Anisette服务器
4. 在设置-Anisette服务器-中重置adi.pb,然后登出,并重新登录SideStore
@@ -44,7 +48,7 @@ minimuxer服务的连接出现了问题。
### 无法启动SideStore
#### 原因
存在多种可能的原因。
-#### Resolution
+#### 解决方案
1. 确保您已通过AltServer安装了SideStore
2. 重新安装SideStore
@@ -56,3 +60,5 @@ minimuxer服务的连接出现了问题。
4. 将`sidestore.ipa`安装到您的设备上
5. 将`sidestore.ipa`文件导入到SideStore,就像您安装其他IPA文件一样
6. 这会允许Sidestore进行一次全新的安装,希望这会解决您的问题
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
index d170bff2..e94c00e2 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
@@ -1,484 +1,304 @@
---
-title: Error Codes
-description: Error codes found in SideStore.
+title: 错误代码
+description: SideStore内的错误代码
---
:::warning
-This page is currently not fully accurate to how SideStore works, as this is based on AltStore's Error Codes page. Some info is still correct, but please don't rely on this word for word. Make sure to ask in our [Discord server](https://discord.gg/sidestore-949183273383395328) for help if you need it.
+本页面目前尚未完全准确反映SideStore的工作原理,因其内容基于AltStore的错误代码页面。部分信息仍属有效,但请勿逐字依赖此处说明。如需帮助,请务必前往我们的[Discord服务器](https://discord.gg/sidestore-949183273383395328)咨询。
:::
-## SideStore Errors
+## SideStore相关错误
#### (1000) An unknown error occurred.
`SideStore.OperationError 1000`
-This means that SideStore ran into an unexpected error. Please check our [Troubleshooting Guide](./), and you can reach out to us directly if the issue persists.
+这意味着SideStore遇到了意外错误。请查阅我们的[故障排除指南](./troubleshooting.mdx),若问题仍未解决,可直接联系我们。
#### (1001) The operation returned an unknown result.
`SideStore.OperationError 1001`
-This means that SideStore ran into an unexpected error. Please check our [Troubleshooting Guide](./), and you can reach out to us directly if the issue persists.
+这意味着SideStore遇到了意外错误。请查阅我们的[故障排除指南](./troubleshooting.mdx),若问题仍未解决,可直接联系我们。
#### (1002) The operation was cancelled.
`SideStore.OperationError 1002`
-This means that the performed action was stopped. Please try again.
+这意味着操作已被中止。请重新尝试。
#### (1003) The operation timed out.
`SideStore.OperationError 1003`
-This means that SideStore ran into problems trying to complete the requested action. Please try again and check our [Troubleshooting Guide](./) for additional help. You can reach out to us directly if the issue persists.
+这意味着SideStore在尝试完成请求操作时遇到了问题。请重新尝试操作,并查阅我们的[故障排除指南](./troubleshooting.mdx)获取更多帮助。若问题持续存在,您可直接联系我们。
#### (1004) You are not signed in.
`SideStore.OperationError 1004`
-This means that you must enter your Apple ID information in the settings tab to do the requested action.
+这意味着您必须在设置选项卡中输入您的Apple ID信息才能执行所请求的操作。
#### (1005) The app could not be found.
`SideStore.OperationError 1005`
-This means that SideStore could not locate the file to download or install, most likely because the file does not exist at the provided URL.
+这意味着SideStore无法找到要下载或安装的文件,很可能是因为该文件在提供的URL地址不存在。
#### (1006) SideStore could not determine this device's UDID.
`SideStore.OperationError 1006`
-This means that SideStore couldn't read the device UDID embedded by AltServer when installing SideStore. Make sure you're installing SideStore with the latest AltServer version and not via another method.
+这意味着您的配对文件已损坏。[请使用 iloader 重新导入](../advanced/pairing-file)。
#### (1007) This app is in an invalid format.
`SideStore.OperationError 1007`
-This means the app you're trying to install is not a standard .ipa. Try downloading the app from another location.
+这意味着您尝试安装的应用程序并非标准的.ipa格式。请尝试从其他位置下载该应用程序。
#### (1008) Invalid parameters.
`SideStore.OperationError 1008`
-This means an internal error occured and SideStore couldn't provide the necessary information to perform the requested task. Please try again and check our [Troubleshooting Guide](./) for additional help. You can reach out to us directly if the issue persists at our Discord server.
+这意味着发生了内部错误,SideStore 无法提供执行请求任务所需的信息。请重新尝试操作,并查阅我们的[故障排除指南](./troubleshooting.mdx)获取更多帮助。若问题持续存在,您可直接通过我们的 Discord 服务器联系我们。
#### (1009) You cannot register more than 10 App IDs within a 7-day period.
`SideStore.OperationError 1009`
-This means that you have reached the maximum amount of App IDs available. Apps IDs are not able to be deleted manually. App IDs renew if the app has exists 7 days after when it was first installed or renewed last, and expire if they have been deleted since. Please check the App IDs in the My Apps tab to see when they will expire.
+这意味着您已达到可用的应用ID数量上限。应用ID无法手动删除。若应用在首次安装或上次更新后仍存在7天,应用ID将自动续期;若在此期间被删除,则会过期。请在“我的应用”标签页中查看应用ID的到期时间。
#### (1010) There are no AltStore sources.
`SideStore.OperationError 1010`
-This means an internal error occured and SideStore is unable to fetch changes for any AltSources you've added. Please try again and check our [Troubleshooting Guide](./) for additional help. You can reach out to us directly at our Discord server if the issue persists.
+这意味着发生了内部错误,SideStore 无法提供执行请求任务所需的信息。请重新尝试操作,并查阅我们的[故障排除指南](./troubleshooting.mdx)获取更多帮助。若问题持续存在,您可直接通过我们的 Discord 服务器联系我们。
#### (1011) SideStore was denied permission to launch the app.
`SideStore.OperationError 1011`
-This means SideStore couldn't launch a sideloaded app because you tapped "Cancel" on the "SideStore wants to open \[app]" alert, or because you still need to trust your Apple ID in Settings.
+这意味着SideStore无法启动侧载应用,因为您在“SideStore想要打开\[应用]”的提示中点击了“取消”,或者您仍需在设置中信任您的Apple ID。
#### (1012) SideStore's shared app group could not be accessed.
`SideStore.OperationError 1012`
-This means SideStore was not able to access the directory where app backups are stored. Make sure you're installing SideStore with the latest AltServer version and not via another method.
+这意味着SideStore无法访问应用备份存储目录。请确保您使用的是最新版AltServer安装SideStore,而非通过其他方式安装。
#### (1403) Unable to connect to SideJITServer.
`SideStore.OperationError 1403`
-Please make sure you are on the same Wi-Fi as your computer running SideJITServer and that your Firewall has been set appropriately. Alternatively, you can use the built in "Enable JIT" option to enable JIT on iOS 17.4-18.6 with StosVPN enabled and Wi-Fi or Airplane Mode.
+请确保您与运行SideJITServer的计算机处于同一Wi-Fi网络,且防火墙已正确配置。或者,您可以在启用StosVPN并处于Wi-Fi或飞行模式时,通过iOS 17.4-18.6系统内置的“启用JIT”选项来启用JIT功能。
#### (1412) Unable to connect to a V3 anisette server.
`SideStore.OperationError 1412`
-Your device was unable to recieve data from a V3 anisette server. Please try again, or switch anisette servers.
+您的设备无法从V3 Anisette服务器接收数据。请重试,或切换Anisette服务器。
#### (1414) No Wi-Fi/StosVPN.
`SideStore.OperationError 1414`
-You do not appear to be connected to Wi-Fi and/or StosVPN. SideStore cannot refresh or install applications without Wi-Fi and StosVPN, ensure both are enabled. If that doesn't work, try regenerating your pairing file.
+您似乎未连接至Wi-Fi和/或StosVPN。SideStore在未连接Wi-Fi和StosVPN的情况下无法刷新或安装应用程序,请确保两者均已连接。若仍无法解决,请[使用iloader重新导入配对文件](../advanced/pairing-file)。
-## Minimuxer Errors
+
+## Minimuxer相关错误
#### (4) AFC was unable to manage files on the device.
`minimuxer.MinimuxerError 4`
-This means you are attempting to enable JIT on an unsupported iOS version. SideStore only supports enabling JIT on iOS 17.4-18.6.
+这意味着您正在尝试在不受支持的iOS版本上启用即时编译(JIT)。SideStore仅支持在iOS 17.4-18.6版本上启用即时编译功能。
#### (27) AFC was unable to manage files on the device.
`minimuxer.MinimuxerError 27`
-This means you have an invalid pairing file. Follow the steps in these docs to regenerate it.
-
-More coming, open to contributions...
-
-## AltServer / SideServer Errors
-
-#### (0) Exception Error
-
-`AltServer.ExceptionError`
-
-This error can appear for many reasons, and below are a few that you might see (this is not an exhaustive list).
-
-"vector too long"
-
-This means that Windows Defender is blocking your request. You may need to first disable Real-Time Protection on Windows in order for SideStore to work as expected.
-
-#### (1999) Underlying Error
-
-`AltServer.ServerError`
-
-This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.
-
-#### (2000) Unknown Error
-
-`AltServer.ServerError`
-
-This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.
-
-#### (2001) Could not connect to AltServer. / There was an error connecting to the device.
-
-`AltServer.ServerError`
-
-This means that AltServer is having trouble connecting to your iOS device. Try plugging your device directly into your computer if it is not already.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2002) Lost Connection to AltServer.
-
-`AltServer.ServerError`
-
-This means that the connection was dropped between AltServer and your iOS device. Make sure your device and computer are connected to the same Wi-Fi network and try again.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2003) AltServer could not find this device.
-
-`AltServer.ServerError`
-
-This means that AltServer had trouble locating your iOS device either over USB or via Wi-Fi. Make sure your device and computer are connected to the same Wi-Fi network and that your device is trusted and try again.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2004) Failed to write app data to device.
-
-`AltServer.ServerError`
-
-This means that AltServer tried to write a file to your device and could not or was interrupted. Make sure your device and computer are connected to the same Wi-Fi network and that your device is trusted and try again.
-
-If you still have issues, please refer to the [Troubleshooting Guide](./).
-
-#### (2005) AltServer received an invalid request.
-
-`AltServer.ServerError`
-
-This means that AltServer received a request it did not understand. This may be because you are running an outdated AltServer version, so please make sure to update to the latest version.
-
-#### (2006) AltServer sent an invalid response.
-
-`AltServer.ServerError`
-
-This means that SideStore received a response from AltServer it did not understand. This may be because you are running an outdated SideStore version, so please make sure to update to the latest version.
-
-#### (2007) The app is invalid.
-
-`AltServer.ServerError`
-
-This means that the app your were attempting to install was found to be in an invalid format. If you continue to have issues, try downloading from alternate source.
-
-#### (2008) An error occurred while installing the app.
-
-`AltServer.ServerError`
-
-This means that iOS rejected the app you were attempting to install. Make sure to use a version compatible your iOS version.
-
-#### (2009) Cannot activate more than 3 apps with a non-developer Apple ID.
-
-`AltServer.ServerError`
-
-This means that you have reached the maximum amount of sideloaded apps you can have with a Free Developer Account. Apple limits the amount of sideloaded apps you can have with a free account, and to remove the limit you need to sign up for a Paid Developer account at [developer.apple.com](https://developer.apple.com).
-
-#### (2010) Your device must be running iOS 12.2 or later to install AltStore.
-
-`AltServer.ServerError`
-
-This means that you will need to update your phone to the minimum iOS version required before you can continue to use AltStore.
+请确保Wi-Fi和StosVPN均已连接。若错误仍未解决,请[使用iloader重新导入配对文件](../advanced/pairing-file)。
-#### (2011) AltServer does not support this request.
-`AltServer.ServerError`
-
-This means that AltServer received a request it did not recognize. You may be running an outdated AltServer version, so be sure to update.
-
-#### (2012) Received an unknown response from AltServer.
-
-`AltServer.ServerError`
-
-This means that AltStore received a response from AltServer it did not recognize. You may be running an outdated AltStore version, so be sure to update.
-
-#### (2013) The provided anisette data is invalid.
-
-`AltServer.ServerError`
-
-This means that the Apple ID information AltStore used to try to sign in was invalid because of an unknown issue. Make sure you are using the latest version of iCloud if you are on Windows and that your date/time are accurate.
-
-#### (2014) AltServer could not connect to Mail plug-in. (macOS)
-
-`AltServer.ServerError`
-
-This means that AltServer could not find the Mail plug-in either because it is not enable or you are not running the Mail app on your Mac. Make sure the Mail app is running on your Mac and that the plug-in is enabled.
-
-#### (2015) Could not find provisioning profile.
-
-`AltServer.ServerError`
-
-This means that the provisioning profile needed to install this app could not be located. This is most likely a problem with AltStore itself, so please message support or to our Patreon inbox.
-
-#### (2016) An error occurred while removing the app.
-
-`AltServer.ServerError`
-
-This means that there was an issue while removing an app. There are a number of different issues so make sure to check your error log for a more specific message on your issue.
-
-#### (2100) The Requested app is not currently running on the device.
-
-`AltServer.ServerError`
-
-This means that you tried to enable JIT without the requested app running in the foreground. Make sure to launch the app and have it running before you enable JIT.
-
-#### (2101) The disk is incompatible with \[iOS version].
-
-`AltServer.ServerError`
-
-This means that the developer disk required to enable JIT is not compatible with your device's OS version. Make sure you're running the latest version of AltStore and AltServer, and try again later.
-
-## Apple Developer Errors
+## Apple开发者相关错误
#### (3000) An unknown error occurred.
`AltStore.AppleDeveloperError`
-Updated information coming soon
+新信息即将发布。
#### (3001) The provided parameters are invalid.
`AltStore.AppleDeveloperError`
-Updated information coming soon
+新信息即将发布。
#### (3002) Incorrect Apple ID or password.
`AltStore.AppleDeveloperError`
-This means that the Apple ID credentials you used were invalid. Make sure the username and password are correct.
+这意味着您使用的Apple ID凭据无效。请确保用户名和密码正确无误。
-If you still have issues, you can also try creating a new Apple ID to use with SideStore.
+若问题仍未解决,您也可尝试创建新的Apple ID用于SideStore。
#### (3003) An app-specific password is required. You can create one at appleid.apple.com.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3004) You are not a member of any development teams.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3005) This device's UDID is invalid.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3006) This device is already registered with another ID.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3007) The certificate request is invalid.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3008) There is no certificate with the requested serial number for this team.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3009) The name for this app is invalid.
`AltStore.AppleDeveloperError`
-SideStore couldn’t register an App ID with Apple because the app name contains non-ASCII characters. You can try downloading from another source.
+SideStore 无法向 Apple 注册应用程序 ID,因为应用名称包含非 ASCII 字符。您可以尝试从其他来源下载。
#### (3010) The bundle identifier for this app is invalid.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3011) The bundle identifier for this app has already been registered.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3012) There is no App ID with the requested identifier on this team.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3013) You may only register 10 App IDs every 7 days.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3014) The provided app group is invalid.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3015) App group does not exist.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3016) The identifier for the requested provisioning profile is invalid.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3017) There is no provisioning profile with the requested identifier on this team.
`AltStore.AppleDeveloperError`
-If you are seeing this error, it's likely due to a recent server-side change made by Apple. Please see the following announcement with more info: [https://twitter.com/altstoreio/status/1638599316762664974?s=20](https://twitter.com/altstoreio/status/1638599316762664974?s=20)
+若您看到此错误提示,很可能是由于苹果公司近期在服务器端进行的变更所致。更多详情请参阅以下公告:[Twitter](https://twitter.com/altstoreio/status/1638599316762664974?s=20)
#### (3018) This account requires signing in with two-factor authentication.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3019) Incorrect verification code.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3020) Failed to perform authentication handshake with server.
`AltStore.AppleDeveloperError`
-Updated information coming soon.
+新信息即将发布。
#### (3021) The provided anisette data is invalid.
`AltStore.AppleDeveloperError`
-This error means that the information used to authenticate your AppleID information either expired or invalid. Make sure your computer date and time are accurate and that you’ve installed iTunes and iCloud from Apple.
+此错误表示用于验证您的AppleID信息的数据已过期或无效。请确保您的计算机日期和时间设置准确无误,并已从Apple官方渠道安装iTunes和iCloud。
-#### Apple API Error
+#### Apple API相关错误
#### (1100) Your session has expired.
`Apple.APIError`
-This error means that the information used to authenticate your Apple ID is either expired or invalid. Make sure your computer's date and time are accurate and try again.
+此错误表示用于验证您的 Apple ID 的信息已过期或无效。请确保计算机的日期和时间设置准确无误,然后重试。
#### (1102) Apple ID cannot be used for development.
`Apple.APIError`
-You may need to agree to Apple’s Terms of Service on [developer.apple.com](https://developer.apple.com). If that doesn’t work, you can create a new “throwaway” Apple ID dedicated to sideloading.
+您可能需要在[developer.apple.com](https://developer.apple.com)上同意苹果的服务条款。如果此方法无效,您可以创建一个专用于侧载的新“一次性”Apple ID。
#### (-20101) Your account information was entered incorrectly.
`Apple.APIError`
-This error means that the username or password used to authenticate your Apple ID is either expired or invalid. Make sure you've entered them both in correctly and that your computer's date and time are accurate.
-
-#### Connection Errors
+此错误表示用于验证 Apple ID 的用户名或密码已过期或无效。请确保您已正确输入两者,并确认计算机的日期和时间设置准确无误。
-#### (0) Error Unknown.
+## 其他错误
-`AltServer.ConnectionError`
-
-This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.
-
-#### (1) Device Locked.
-
-`AltServer.ConnectionError`
-
-This means that you will need to unlock your device before AltServer can connect.
-
-#### (2) Invalid Request.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (3) Invalid Response.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (4) Usbmuxd.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (5) SSL Error.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-#### (6) Timed Out.
-
-`AltServer.ConnectionError`
-
-Updated information coming soon
-
-## Windows Errors
+#### (512) Failed to write to disk
-#### (1100) Your session has expired. Please log in.
+`NSCocoaErrorDomain`
-`NSURLErrorDomain`
+这意味着将文件写入磁盘时发生了错误。请确保您的手机和电脑都有足够的可用磁盘空间,然后重试。
-1. Make sure iTunes is closed.
-2. Go to Program Data -> Apple Computer -> iTunes -> ADI -> delete the files
-3. Start iTunes
-4. Retry installing SideStore
+#### ldid相关错误
-## Other Errors
+`ldid.cpp(X): X`
-#### (512) Failed to write to disk
+请按照以下步骤修复此错误:
-`NSCocoaErrorDomain`
+1. 首先,您需要安装 Feather。
+2. 随后,将存在问题的 IPA 文件导入 Feather 应用,同时导入任意 .mobileprovision 和 .p12 文件(这些文件可以是过期的,因为我们仅利用该应用重新分配 IPA 文件的头部信息)。
+3. 使用导入的证书对 IPA 文件进行签名。
+4. 在文件管理器中打开签名后的应用,重新打包为IPA格式。
+5. 将打包后的IPA安装至AltStore。
-This means that an error occurred while writing files to disk. Make sure your phone and PC both have plenty of available disk space and try again.
+### (-1011) NSURLErrorDomain
+访问 https://developer.apple.com/,登录并接受新的 Apple 开发者服务条款。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
index a025cd13..9631fc7c 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
@@ -1,101 +1,85 @@
---
-title: Troubleshooting Guide
-description: A guide to troubleshooting SideStore in situations without an error code.
+title: 故障排除指南
+description: 一个在没提供错误代码的情况下的故障排除指南
---
-## Installation
+## 安装
-### I followed the instructions, but I still can't install SideStore.
+### 我按照教程进行但是我还是无法安装SideStore。
-#### Mac Instructions
-1. **Trust Device**: After connecting your iOS device to your Mac, ensure you have said “Trust” on both your Mac and iOS device. You can verify this by:
- - Opening Finder (macOS 10.15 Catalina or later) or iTunes (macOS 10.14 Mojave and earlier).
- - Disconnect and reconnect your phone to your mac and check if a dialog box appears asking if you want to trust the device.
-2. **Use Another Apple ID**: Try using another Apple ID. If needed, you can [create a new Apple ID](https://appleid.apple.com/account#!\&page=create) specifically for SideStore use for free.
+#### Mac 操作指南
+1. **信任设备**:将 iOS 设备连接至 Mac 后,请确保在 Mac 和 iOS 设备上均选择“信任”。验证步骤如下:
+ - 打开 Finder(macOS 10.15 Catalina 或更高版本)或 iTunes(macOS 10.14 Mojave 或更早版本)
+ - 断开并重新连接手机与 Mac,检查是否弹出信任设备确认对话框
+2. **使用其他 Apple ID**:尝试使用其他 Apple ID。如有需要,可免费[创建专用于 SideStore 的新 Apple ID](https://appleid.apple.com/account#!\&page=create)
-#### Windows Instructions
-1. **Trust Device**: After connecting your iOS device to your Windows computer, ensure you have slected “Trust” on both your computer and iOS device. You can verify this by:
- - Opening iTunes and checking if a dialog box appears asking if you want to trust the device.
-2. **Run AltServer as Administrator**: Right-click on AltServer and select “Run as Administrator” to ensure proper permissions.
-3. **Use Another Apple ID**: Try using another Apple ID. If needed, you can [create a new Apple ID](https://appleid.apple.com/account#!\&page=create) specifically for SideStore for free.
-4. **Non-Microsoft Store Version of iTunes and iCloud**:
- - If you installed iTunes or iCloud from the Microsoft Store, you’ll need to uninstall them.
- - Download and install the non-Microsoft Store versions of iTunes and iCloud using the following links:
- - [Download iCloud](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe)
- - [Download iTunes](https://www.apple.com/itunes/download/win64/)
+#### Windows 操作指南
+1. **信任设备**:将 iOS 设备连接至 Windows 电脑后,请确保在电脑和 iOS 设备两端均选择“信任”。验证方式如下:
+ - 打开 iTunes 检查是否出现信任设备确认对话框
+2. **使用其他Apple ID**:尝试使用其他Apple ID。如有需要,可免费[创建专用于SideStore的新Apple ID](https://appleid.apple.com/account#!\&page=create)
-## Sign-In Issues
+## 登录问题
-### SideStore Freezing or Displaying an Error Code During Sign-In
+### SideStore 登录时出现卡顿或显示错误代码
-If you encounter freezing or error codes while attempting to sign in to SideStore, there could be several potential causes. Follow these steps to resolve the issue:
+若您在尝试登录 SideStore 时遇到卡顿或错误代码,可能存在多种潜在原因。请按以下步骤解决问题:
-1. **Change the Anisette Server:**
- The most common solution is to switch to a different Anisette server. Anisette servers may occasionally experience downtime. Switching to an alternative server typically resolves the issue. Do this:
- - Open SideStore settings.
- - Scroll down to the "Anisette Server" option.
- - Select a different server from the list.
- - You might need to try a few servers from the list and find which works best for you.
+1. **更换Anisette服务器:**
+ 最常见的解决方案是切换到其他Anisette服务器。Anisette服务器偶尔会出现停机情况,切换到备用服务器通常能解决问题。操作步骤如下:
+ - 打开SideStore设置
+ - 向下滚动至“Anisette服务器”选项
+ - 从列表中选择其他服务器
+ - 您可能需要尝试列表中的多个服务器,找出最适合您的选项
-2. **Host Your Own Anisette Server:**
- If you prefer, you can set up your own Anisette server. Detailed instructions for hosting an Anisette server are available in the official documentation and can be found [here](https://docs.sidestore.io/docs/advanced/anisette).
+2. **自行托管 Anisette 服务器:**
+ 若您有意愿,您可以自行搭建 Anisette 服务器。官方文档中提供了详细的托管指南,请参阅[此处](../advanced/anisette)
-### Verification Code Not Received When Signing In with Apple ID
+### 使用Apple ID登录时未收到验证码
-Another common issue during sign-in is not receiving a verification code when using your Apple ID with SideStore. This can be resolved by following these steps:
+登录过程中另一个常见问题是使用Apple ID登录SideStore时未收到验证码。可通过以下步骤解决:
-**For iOS versions below 18.1:**
+**适用于iOS 18.1以下版本:**
-1. Open the "Settings" app.
-2. Tap on your name at the top of the screen.
-3. Navigate to "Sign-In and Security."
-4. Select "Two-Factor Authentication."
-5. Choose "Get Verification Code."
+1. 打开“设置”应用
+2. 点击屏幕顶部的姓名
+3. 进入“登录与安全”选项
+4. 选择“双重认证”
+5. 点击“获取验证码”
-**For iOS versions 18.1 and above:**
+**适用于 iOS 18.1 及以上版本:**
-1. Visit [iCloud](https://www.icloud.com) on a web browser.
-2. Click "Sign In."
-3. You may be prompted with see two options: "Sign In" and "Use Different Apple Account."
- - Select the bottom option, "Use Different Apple Account."
-4. Enter your Apple ID and password (don't use a passkey).
-5. Apple will send you a verification code.
- - Use this code in SideStore to complete the sign-in process.
+1. 在网页浏览器中访问 [iCloud](https://www.icloud.com)
+2. 点击“登录”
+3. 系统可能提示两个选项:“登录”和“使用其他 Apple 账户”
+ - 选择底部选项“使用其他 Apple 账户”
+4. 输入您的 Apple ID 和密码(请勿使用密钥登录)
+5. Apple 将向您发送验证码
+ - 在 SideStore 中使用此验证码完成登录流程
-## Can't Refresh or Install Apps
+## 无法刷新或安装应用
-### Resolving No Wi-Fi or VPN Error
+### 解决无Wi-Fi或VPN错误
-1. Enable Airplane Mode and connect to a stable Wi-Fi network.
-2. Ensure that Apple domains and the domain for your anisette server are not restricted. Check the following:
- - Turn off any DNS servers blocking domains such as `oscp.apple.com`
- - Disconnect from school/work Wi-Fi, try connecting to a restriction-free network.
-3. Verify VPN is connected in StosVPN.
-4. Turn StosVPN off, then back on, and wait a few seconds in SideStore before trying to refresh.
-5. Regenerate your pairing file.
- - If none of the above worked, it is very likely that the pairing file is corrupted. You can reference the documentation on how to create a new pairing file [here](/docs/installation/pairing-file).
-
-
-## Cannot Choose Pairing File
-
-### If you are unable to select a pairing file in Sidestore, follow these steps to resolve the issue:
-
-1. **Reimport Pairing File**: Use idevice pair to regenerate and import your pairing file to your device. If idevice pair doesn't work, try jitterbugpair and follow the steps below.
-2. **Check File Extension**: Make sure your pairing file's extension ends with `.mobiledevicepairing` or `.plist`. If it doesn't, double-check to see if you had zipped your pairing file before sending it to your phone. Failing to do so may lead to the file being corrupted during transport.
-3. **Move Pairing File**: If you are unable to select the pairing file from within the app, rename the file to `ALTPairingFile.mobiledevicepairing` and try moving the pairing file to the root directory of the SideStore folder in the Files app in "On My iPhone/iPad".
-4. **Certificate Signing**: When signing SideStore with a certificate, you won't be able to select the pairing file from within the app. You can try the fix mentioned above. If you do not see the SideStore folder in the Files app, connect your phone to your computer, and you can drag and drop the pairing file to the files of the SideStore app. Make sure to change it to the name mentioned above.
+1. 启用飞行模式并连接稳定的Wi-Fi网络
+2. 确保Apple域名及您的anisette服务器域名未被限制。请检查以下事项:
+ - 关闭任何阻断`ocsp.apple.com`等域名的DNS服务器
+ - 断开学校/工作Wi-Fi连接,改用无限制的网络
+3. 确认StosVPN中VPN已连接
+4. 关闭StosVPN后重新开启,在SideStore等待数秒再尝试刷新
+5. [使用iloader重新导入配对文件](../advanced/pairing-file)
## AltServer
-### What if I need to use the Windows Store version of iCloud?
+### 如果我需要使用Windows应用商店版本的iCloud怎么办?
+
+AltServer要求您直接从Apple安装iCloud以验证Apple ID。若您希望或需要同时使用Windows应用商店版本,可参照[此Reddit帖子](https://www.reddit.com/r/jailbreak/comments/rp5buz/tutorial\_how\_to\_use\_altserver\_if\_you\_have\_to\_use/?utm\_source=share\&utm\_medium=ios\_app\&utm\_name=iossmf) 并更新的替代方案:
-AltServer requires that you install iCloud directly from Apple in order to authenticate your Apple ID. If you want or need to use the Windows Store version as well, you can follow these alternate instructions copied from [this reddit post](https://www.reddit.com/r/jailbreak/comments/rp5buz/tutorial\_how\_to\_use\_altserver\_if\_you\_have\_to\_use/?utm\_source=share\&utm\_medium=ios\_app\&utm\_name=iossmf) and updated:
+1. 从苹果官网下载并安装[iTunes](https://www.apple.com/itunes/),具体地址为:([64位](https://secure-appldnld.apple.com/itunes12/001-80053-20210422-E8A3B28C-A3B2-11EB-BE07-CE1B67FC6302/iTunes64Setup.exe) 或 [32位](https://secure-appldnld.apple.com/itunes12/001-80042-20210422-E8A351F2-A3B2-11EB-9A8F-CF1B67FC6302/iTunesSetup.exe))
+2. 从苹果官网[此处](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe)下载并安装iCloud。
+3. 定位“C:\Program Files (x86)\Common Files\Apple”文件夹。复制其中的“Apple Application Support”和“Internet Services”文件夹,在任意安全的位置新建任意名称的文件夹,将这两个文件夹粘贴至该新文件夹。
+4. 从计算机中卸载iCloud。**切勿**卸载iTunes!(同时,**永远不要**卸载与iTunes及iCloud一同安装的“Apple Mobile Device Support”或“Apple Application Support”文件夹。)
+5. 从 Windows 应用商店安装 [iCloud](https://www.microsoft.com/store/productId/9PKTQ5699M62)
+6. 下载并安装[AltServer](https://cdn.altstore.io/file/altstore/altinstaller.zip)。首次以管理员权限打开时,点击“选择文件夹...”并选定第三步创建的文件夹。
-1. Download and install [iTunes](https://www.apple.com/itunes/) from the official Apple website here ([64-bit](https://secure-appldnld.apple.com/itunes12/001-80053-20210422-E8A3B28C-A3B2-11EB-BE07-CE1B67FC6302/iTunes64Setup.exe) or [32-bit](https://secure-appldnld.apple.com/itunes12/001-80042-20210422-E8A351F2-A3B2-11EB-9A8F-CF1B67FC6302/iTunesSetup.exe).
-2. Download and install iCloud from the official Apple website [here](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe).
-3. Locate your "C:\Program Files (x86)\Common Files\Apple" folder. Copy the "Apple Application Support" and "Internet Services" folders, then create a new folder somewhere you won't lose it, name it anything you want, and paste them in.
-4. Remove iCloud from your computer. **DO NOT** remove iTunes! (Also, **NEVER** remove the "Apple Mobile Device Support" or the "Apple Application Support" that are installed alongside iTunes and iCloud.)
-5. Install [iCloud](https://www.microsoft.com/store/productId/9PKTQ5699M62) from the Windows Store.
-6. Download and install [AltServer](https://cdn.altstore.io/file/altstore/altinstaller.zip). When you open it for the first time (with admin rights), click on "Choose Folder..." and select the folder you created in the 3rd step.
diff --git a/sidebars.js b/sidebars.js
index a64eaf5d..f6777b93 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -23,7 +23,7 @@ const sidebars = {
{
type: 'category',
label: 'Installation',
- items: ['installation/prerequisites', 'installation/mac', 'installation/windows', 'installation/linux', 'installation/pairing-file', 'installation/post-install'],
+ items: ['installation/prerequisites', 'installation/install'],
},
'faq',
{
@@ -34,7 +34,7 @@ const sidebars = {
{
type: 'category',
label: 'Advanced',
- items: ['advanced/anisette', 'advanced/app-sources', 'advanced/url-schema', 'advanced/sparserestore', 'advanced/jit'],
+ items: ['advanced/alternative', 'advanced/anisette', 'advanced/app-sources', 'advanced/jit', 'advanced/pairing-file', 'advanced/url-schema'],
},
{
type: 'category',