Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8c0edfa
feat: add persistent gallery downloads with cache-aware offline readi…
vvbbnn00 Mar 23, 2026
887f63f
refactor: simplify cache readiness checks with a dedicated async func…
vvbbnn00 Mar 25, 2026
e9f5646
Resolve build issues
Mar 27, 2026
7be9140
Resolve code review issues
Mar 27, 2026
812c037
Resolve an issue that causes test last forever
Mar 27, 2026
fd26b0f
Rewrite all tests using Swift Testing
Mar 27, 2026
9b52635
Update xctest-dynamic-overlay & use #require macro
Mar 28, 2026
9686832
Fill test coverage gaps
Mar 28, 2026
8631202
Update packages
Mar 28, 2026
ecb8ef1
Resolve compiler warnings
Mar 28, 2026
2fc9b21
Introduce SwiftLint plugin & resolve lint issues
Mar 28, 2026
67c045d
Update project settings
Mar 28, 2026
0363f71
Adopt to Observation framework
Mar 28, 2026
b521168
Implement WebP support
Mar 28, 2026
4d05cd0
Resolve lint issues
Mar 29, 2026
db25e02
Update dependencies
Apr 6, 2026
4c32a55
Resolve test crashing issues
Apr 6, 2026
3f1ff5d
Fix download tests
Apr 6, 2026
d038541
Resolve concurrency warnings
chihchy May 12, 2026
8b96462
Adopt to Swift Concurrency
chihchy May 12, 2026
3099889
Improve WebP support
chihchy May 20, 2026
b86ae15
Refactor versioning
chihchy May 20, 2026
ed5ff8f
Update Xcode settings
chihchy May 21, 2026
7584b15
Improve WebP support
chihchy May 21, 2026
214d784
Fix download parsing issue
chihchy May 21, 2026
f2f0866
Update download layout & logics
chihchy May 25, 2026
0c8550e
Update folder structure & resolve conflicts
chihchy May 26, 2026
ca31320
Update setting pages
chihchy May 26, 2026
14f82bc
Bump version to 3.0.0 (158) & Update CI
chihchy May 26, 2026
81d1e94
Update SwiftLint rules
chihchy May 30, 2026
4a133d0
Update setting page symbol
chihchy May 30, 2026
314cb12
Improve downloads UX
chihchy May 30, 2026
7860866
Resolve double setting pages issue on iPad
chihchy May 30, 2026
7f809bb
Enforce force_unwrapping rule
chihchy May 30, 2026
f916376
Fix test workflow
chihchy May 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 26 additions & 19 deletions .github/workflows/deploy-pre-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,13 @@ name: Deploy Pre-release
on:
workflow_dispatch:
inputs:
versionTag:
description: 'Version tag'
required: true
type: string
releaseTitle:
description: 'Release title'
required: true
type: string
releaseDescription:
description: 'Release description'
required: true
required: false
type: string
env:
DEVELOPER_DIR: /Applications/Xcode_26.5.app
Expand Down Expand Up @@ -47,16 +43,13 @@ jobs:
- name: Run tests
run: xcodebuild clean test
-skipMacroValidation
-skipPackagePluginValidation
-scheme ${{ env.SCHEME_NAME }}
-destination 'platform=iOS Simulator,name=iPhone Air'
- name: Bump version
id: bump-version
uses: yanamura/ios-bump-version@v1
with:
version: ${{ inputs.versionTag }}
- name: Xcode archive
run: xcodebuild archive
-skipMacroValidation
-skipPackagePluginValidation
-scheme ${{ env.SCHEME_NAME }}
-destination 'generic/platform=iOS'
-archivePath ${{ env.ARCHIVE_PATH }}
Expand All @@ -77,15 +70,29 @@ jobs:
- name: Retrieve data
id: retrieve-data
run: |
echo "size=$(stat -f%z $IPA_OUTPUT_PATH)" >> $GITHUB_OUTPUT
echo "version_date=$(date -u +"%Y-%m-%dT%T")" >> $GITHUB_OUTPUT
app_info_plist="$PAYLOAD_PATH/$SCHEME_NAME.app/Info.plist"
version="$(plutil -extract CFBundleShortVersionString raw -o - "$app_info_plist")"
size="$(stat -f%z "$IPA_OUTPUT_PATH")"

[[ ! -z "$version" ]] || exit 1
[[ ! -z "$size" ]] || exit 1

{
echo "size=$size"
echo "version=$version"
echo "version_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
} >> "$GITHUB_OUTPUT"
- name: Validate data
env:
RELEASE_TITLE: ${{ inputs.releaseTitle }}
RELEASE_SIZE: ${{ steps.retrieve-data.outputs.size }}
RELEASE_VERSION: ${{ steps.retrieve-data.outputs.version }}
RELEASE_DATE: ${{ steps.retrieve-data.outputs.version_date }}
run: |
[[ ! -z "${{ inputs.releaseTitle }}" ]] || exit 1
[[ ! -z "${{ inputs.releaseDescription }}" ]] || exit 1
[[ ! -z "${{ steps.retrieve-data.outputs.size }}" ]] || exit 1
[[ ! -z "${{ steps.bump-version.outputs.version }}" ]] || exit 1
[[ ! -z "${{ steps.retrieve-data.outputs.version_date }}" ]] || exit 1
[[ ! -z "$RELEASE_TITLE" ]] || exit 1
[[ ! -z "$RELEASE_SIZE" ]] || exit 1
[[ ! -z "$RELEASE_VERSION" ]] || exit 1
[[ ! -z "$RELEASE_DATE" ]] || exit 1
- name: Release to GitHub
uses: softprops/action-gh-release@v3
with:
Expand All @@ -94,5 +101,5 @@ jobs:
files: ${{ env.IPA_OUTPUT_PATH }}
token: ${{ secrets.GITHUB_TOKEN }}
name: ${{ inputs.releaseTitle }}
body: ${{ inputs.releaseDescription }}
tag_name: 'v${{ steps.bump-version.outputs.version }}'
body: ${{ inputs.releaseDescription || '' }}
tag_name: ${{ steps.retrieve-data.outputs.version }}
25 changes: 11 additions & 14 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ on:
types: [closed]
env:
DEVELOPER_DIR: /Applications/Xcode_26.5.app
APP_VERSION: '2.8.0'
SCHEME_NAME: 'EhPanda'
ALTSTORE_JSON_PATH: './AltStore.json'
BUILDS_PATH: '/tmp/action-builds'
Expand Down Expand Up @@ -43,16 +42,13 @@ jobs:
- name: Run tests
run: xcodebuild clean test
-skipMacroValidation
-skipPackagePluginValidation
-scheme ${{ env.SCHEME_NAME }}
-destination 'platform=iOS Simulator,name=iPhone Air'
- name: Bump version
id: bump-version
uses: yanamura/ios-bump-version@v1
with:
version: ${{ env.APP_VERSION }}
- name: Xcode archive
run: xcodebuild archive
-skipMacroValidation
-skipPackagePluginValidation
-scheme ${{ env.SCHEME_NAME }}
-destination 'generic/platform=iOS'
-archivePath ${{ env.ARCHIVE_PATH }}
Expand Down Expand Up @@ -146,12 +142,7 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
body: ${{ github.event.pull_request.body }}
name: ${{ github.event.pull_request.title }}
tag_name: 'v${{ steps.retrieve-data.outputs.version }}'
- name: Commit bump version
run: |
git add .
git commit -m "Bump version"
git push origin HEAD
tag_name: ${{ steps.retrieve-data.outputs.version }}
- name: Update AltStore.json
env:
RELEASE_SIZE: ${{ steps.retrieve-data.outputs.size }}
Expand Down Expand Up @@ -202,10 +193,16 @@ jobs:
git commit -m "Update AltStore.json"
git push origin HEAD
- name: Post release notes
env:
RELEASE_VERSION: ${{ steps.retrieve-data.outputs.version }}
RELEASE_BODY: ${{ github.event.pull_request.body }}
RELEASE_NOTES: ${{ steps.retrieve-data.outputs.notes }}
run: |
message="$(printf '*%s Release Notes:*\n%s' "$RELEASE_VERSION" "$RELEASE_BODY")"
curl https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage \
-d parse_mode=markdown -d chat_id=${{ secrets.TELEGRAM_CHANNEL_ID }} \
-d text='*v${{ steps.retrieve-data.outputs.version }} Release Notes:*%0A${{ github.event.pull_request.body }}'
--data-urlencode "text=$message"

payload="$(jq -n --arg content "**$RELEASE_VERSION Release Notes:**\n$RELEASE_NOTES" '{content: $content}')"
curl ${{ secrets.DISCORD_WEBHOOK }} \
-F 'payload_json={"content": "**v${{ steps.retrieve-data.outputs.version }} Release Notes:**\n${{ steps.retrieve-data.outputs.notes }}"}'
-F "payload_json=$payload"
1 change: 1 addition & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,6 @@ jobs:
- name: Run tests
run: xcodebuild clean test
-skipMacroValidation
-skipPackagePluginValidation
-scheme ${{ env.SCHEME_NAME }}
-destination 'platform=iOS Simulator,name=iPhone Air'
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
.build
.DS_Store
.xcode-home
EhPanda.xcodeproj/xcuserdata
EhPanda.xcodeproj/project.xcworkspace/xcuserdata
EhPanda.xcodeproj/project.xcworkspace/xcuserdata
Config/LocalSigning.xcconfig
23 changes: 15 additions & 8 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
disabled_rules:
- large_tuple
- file_length
- opening_brace
- type_body_length
- function_body_length
- cyclomatic_complexity
- blanket_disable_command
- multiple_closures_with_trailing_closure

identifier_name:
excluded:
- x
- y
- id
- no
opt_in_rules:
- force_try
- force_unwrapping

force_try:
severity: error

force_unwrapping:
severity: error

line_length:
warning: 120
error: 120

excluded:
- EhPandaTests
- EhPanda/App/Generated
Loading