4949 CONFIGURATION : ${{ github.event.inputs.configuration || 'Release' }}
5050 SIGNING : ${{ github.event.inputs.signing || 'unsigned' }}
5151 LITE : ' 0'
52- BOTH : ' 1 '
52+ BOTH : ' 0 '
5353 EVERYWHERE_CORE_MIN_VERSION : ' 2026.08.09'
5454
5555 steps :
@@ -113,8 +113,8 @@ jobs:
113113 run : |
114114 set -euo pipefail
115115 chmod +x Scripts/ci_export_ipa.sh Scripts/resign_ipa.sh build.sh
116- # One archive → full VPN IPA + Lite (no PacketTunnel)
117- BOTH=1 ./Scripts/ci_export_ipa.sh
116+ # One full VPN IPA for ESign / one-file install (app + PacketTunnel)
117+ BOTH=0 LITE=0 ./Scripts/ci_export_ipa.sh
118118 ls -lah build/ipa/
119119
120120 - name : Rename IPA with version
@@ -131,18 +131,12 @@ jobs:
131131 VER="v0.0.0-dev.${SHA_SHORT}"
132132 fi
133133
134- FULL_SRC="$(ls build/ipa/DecoderSec-unsigned.ipa 2>/dev/null || true)"
135- LITE_SRC="$(ls build/ipa/DecoderSec-lite-unsigned.ipa 2>/dev/null || true)"
136- # Fallback if only one file was produced
137- if [[ -z "$FULL_SRC" && -z "$LITE_SRC" ]]; then
138- FULL_SRC="$(ls build/ipa/*.ipa | head -n1)"
139- fi
140- if [[ -n "$FULL_SRC" ]]; then
141- mv "$FULL_SRC" "build/ipa/DecoderSec-${VER}-unsigned.ipa"
142- fi
143- if [[ -n "$LITE_SRC" ]]; then
144- mv "$LITE_SRC" "build/ipa/DecoderSec-${VER}-lite-unsigned.ipa"
145- fi
134+ SRC="$(ls build/ipa/DecoderSec-unsigned.ipa build/ipa/*.ipa 2>/dev/null | head -n1)"
135+ [[ -n "$SRC" ]] || { echo "no IPA produced"; exit 1; }
136+ # Single user-facing name + versioned copy
137+ cp "$SRC" "build/ipa/DecoderSec.ipa"
138+ mv "$SRC" "build/ipa/DecoderSec-${VER}.ipa"
139+ rm -f build/ipa/*lite* || true
146140
147141 echo "version=$VER" >> "$GITHUB_OUTPUT"
148142 PRE=false
@@ -156,7 +150,8 @@ jobs:
156150 with :
157151 name : DecoderSec-ipa-${{ steps.meta.outputs.version }}
158152 path : |
159- build/ipa/*.ipa
153+ build/ipa/DecoderSec.ipa
154+ build/ipa/DecoderSec-*.ipa
160155 build/*.xcarchive
161156 if-no-files-found : error
162157 retention-days : 30
@@ -165,29 +160,27 @@ jobs:
165160 if : startsWith(github.ref, 'refs/tags/v')
166161 uses : softprops/action-gh-release@v2
167162 with :
168- files : build/ipa/*.ipa
163+ files : |
164+ build/ipa/DecoderSec.ipa
165+ build/ipa/DecoderSec-${{ steps.meta.outputs.version }}.ipa
169166 generate_release_notes : true
170167 prerelease : ${{ steps.meta.outputs.prerelease == 'true' }}
171168 name : decoder sec. ${{ steps.meta.outputs.version }}
172169 body : |
173170 ## decoder sec. `${{ steps.meta.outputs.version }}`
174171
175- Two unsigned IPAs in this release (ad-hoc signed for install tools):
172+ **Один файл:** [`DecoderSec.ipa`](https://github.com/decoder-dev/decoder-sec/releases/download/${{ steps.meta.outputs.version }}/DecoderSec.ipa)
176173
177- 1. **`DecoderSec-…-lite-unsigned.ipa`** — UI only (no Packet Tunnel). Resign once for `com.decodersec.app`.
178- 2. **`DecoderSec-…-unsigned.ipa`** — full VPN. Resign with Network Extension for app + PacketTunnel (`Scripts/resign_ipa.sh`).
174+ ### ESign (один раз)
175+ 1. Скачай `DecoderSec.ipa`
176+ 2. Открой в **ESign** → Импорт
177+ 3. Подпись сертификатом с **Network Extension / VPN** (платный)
178+ 4. Установи → открой → добавь конфиг → Connect
179179
180- EverywhereCore is statically linked into the tunnel — it is **not** embedded as a Frameworks binary (that broke install on beta.5) .
180+ Внутри: приложение + PacketTunnel. Без App Groups. Bundle ID extension подхватывается после ремапа ESign автоматически .
181181
182- ```bash
183- ./Scripts/resign_ipa.sh --ipa DecoderSec-…-unsigned.ipa \
184- --profile App.mobileprovision \
185- --identity "Apple Development: You (TEAMID)"
186- ```
187-
188- - Bundle ID: `com.decodersec.app`
189- - Tunnel: `com.decodersec.app.PacketTunnel`
190- - Engines: Xray / sing-box / mihomo via EverywhereCore
182+ - Default IDs: `com.decodersec.app` + `com.decodersec.app.PacketTunnel`
183+ - Engines: Xray / sing-box / mihomo
191184 env :
192185 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
193186
@@ -199,14 +192,11 @@ jobs:
199192 name : decoder sec. ${{ steps.meta.outputs.version }}
200193 prerelease : true
201194 generate_release_notes : true
202- files : build/ipa/*.ipa
195+ files : |
196+ build/ipa/DecoderSec.ipa
197+ build/ipa/DecoderSec-${{ steps.meta.outputs.version }}.ipa
203198 body : |
204- ## decoder sec. `${{ steps.meta.outputs.version }}` (prerelease)
205-
206- Built from `${{ github.sha }}` via workflow_dispatch.
207-
208- Prefer **lite** IPA if you only need the UI. Full IPA needs Network Extension when resigning.
209- Use `Scripts/resign_ipa.sh` for one-command signing.
199+ Один файл: `DecoderSec.ipa` — ESign → подпись с Network Extension → установка.
210200 env :
211201 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
212202
0 commit comments