Repository navigation
PR from forks: https://github.com/WazeJinx/AltKeeperPlus, https://github.com/pingpingjinping/altkeeper and https://github.com/SalehAlSalem/altkeeper #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 144 commits
Commits
Show all changes
145 commits
Select commit
Hold shift + click to select a range
8cb2901
ci: publish AltKeeper Docker image for Raspberry Pi arm64
pingpingjinping f103611
Merge latest AltKeeper upstream (2026-10-25)
pingpingjinping f712a14
feat: query installed user apps through installation_proxy
pingpingjinping 151cc09
feat: filter unattended renewals by installed apps and share verified…
pingpingjinping 491b05c
feat(web): per-app renew and safe team-scoped profile deletion with b…
pingpingjinping 14f2a6c
feat: fall back to all profile renewals when installed-app lookup fails
pingpingjinping 773b5c7
feat(web): individual renewal and confirmation-backed profile deletio…
pingpingjinping 3ae1a63
ci: skip duplicate PR image build; publish arm64 only on main or tag
pingpingjinping 71f0115
docs: explain installed-only renewals, fallback, per-app control and …
pingpingjinping ebb42d2
Merge AltKeeper per-app renewal and profile controls
pingpingjinping d40444e
feat: safely prune expired profile backups on a persisted 30-day cadence
pingpingjinping 949f748
feat: run monthly backup cleanup in persistent AltKeeper web service
pingpingjinping 1f134fe
docs: describe safe 30-day profile backup cleanup and retention
pingpingjinping 22458fe
Merge monthly cleanup of expired provisioning profile backups
pingpingjinping 1e8e823
feat(web): persistent auto renewal ON/OFF and daily KST scheduler
pingpingjinping 5e749ad
fix: avoid cross-lock deadlock between automatic job and web state
pingpingjinping 4081e96
feat(web ui): enable/disable and set local-time auto-renew schedule
pingpingjinping de59d03
docs: built-in KST web auto-renew schedule and no additional systemd …
pingpingjinping d9aa2cf
chore: set default automatic renewal schedule to 06:00 KST
pingpingjinping e212506
chore: set default automatic renewal schedule to 06:00 KST
pingpingjinping 9684b23
chore: set default automatic renewal schedule to 06:00 KST
pingpingjinping 860bbb6
Merge built-in auto-renew scheduler with web controls
pingpingjinping 918de34
feat: identify host/extension profile groups with exact team marker
pingpingjinping c863f9b
fix: renew host and extensions as one app, including installed-only a…
pingpingjinping 1650d3e
feat(web): group app and extension profiles, show earliest member expiry
pingpingjinping 8b8f709
feat: persisted half-hour retry schedule and protected Discord failur…
pingpingjinping e5784b9
feat: configurable 1–6 day threshold, 30m retry twice and per-group o…
pingpingjinping 219c826
feat: secured Discord webhook settings and web backup restore
pingpingjinping 755e401
feat(ui): expandable grouped apps, renew preview, profile restore, re…
pingpingjinping 40b3d37
fix: borrow latest profiles while grouping extension bundles
pingpingjinping a416552
fix: borrow latest profiles while grouping extension bundles
pingpingjinping 3c75baa
build: install curl for Discord notifications
pingpingjinping 6dbddb5
docs: grouped renewal, adjustable threshold, 30-minute retries and Di…
pingpingjinping 499fb14
Merge pull request #5 from pingpingjinping/feature/grouped-app-renew-…
pingpingjinping 52b2ef1
fix: group extensions using embedded signing Team IDs, not only activ…
pingpingjinping 13795e2
test(web): assert real iOS bundle names display as 2 apps and 6 membe…
pingpingjinping 34e3941
Merge pull request #6 from pingpingjinping/fix/extension-bundle-group…
pingpingjinping 6ddd862
fix: strip profile Team ID suffix only for host/extension comparisons…
pingpingjinping 6613095
test: use genuinely unrelated bundle name for negative grouping case
pingpingjinping 3fb47e7
fix: installed-only renewal recognizes raw and normalized host app IDs
pingpingjinping 5c1e5f6
test(web): regress using raw phone provisioning IDs with trailing sig…
pingpingjinping 49b6753
Merge pull request #7 from pingpingjinping/fix/profile-suffix-aware-a…
pingpingjinping ffc0ac0
feat(web): add Apple touch and Safari bookmark PNG icon assets
pingpingjinping e1ee4d1
feat(web): serve public Safari bookmark PNGs and safe Discord webhook…
pingpingjinping 5287bc1
feat(web): link Safari touch icon and add Discord send-test button
pingpingjinping 6ca0623
fix(web): use explicit Axum body for icon bytes
pingpingjinping 4331816
docs: propose Korean UI translations for review only; do not change l…
pingpingjinping 9379564
test: correct Rust PNG signature byte-string escapes
pingpingjinping e7e8f0b
feat(web): add reviewed Korean localization, language switch, respons…
pingpingjinping 62f2a27
feat(i18n): add reviewed Korean terms for all dynamic UI messages
pingpingjinping 32735c5
feat(web): localize dynamic app statuses, progress messages and confi…
pingpingjinping df2dde3
style(web): enforce equal-width centered action buttons across respon…
pingpingjinping 7aecef3
docs: mark Korean UI review approved and record language toggle and l…
pingpingjinping 916ff73
test(web): syntax-check embedded JavaScript and verify localized layo…
pingpingjinping 439b13f
ci: check localized HTML script syntax and equal-sized action control…
pingpingjinping a537fea
style(web): use consistent 184px action buttons for install, login an…
pingpingjinping 3956608
Merge pull request #8 from pingpingjinping/feature/safari-favicon-dis…
pingpingjinping 74f056d
feat(signer): inspect IPA extension manifests and exclude unselected …
pingpingjinping 8d6f807
fix(signer): retain selected extensions through Bundle public method
pingpingjinping 3f8fb5e
feat(bundle): maintain in-memory extension tree after selection
pingpingjinping 0e8703f
feat(signer): filter unselected extensions before App ID registration
pingpingjinping 51d8a82
feat(signing): pass extension selection into signing pipeline
pingpingjinping e746031
feat(web): preflight IPA extension selection and confirm before signing
pingpingjinping 02c6e38
feat(web-ui): show checked-by-default Extension selection only for co…
pingpingjinping 46722db
test(web): validate IPA extension selection UI and endpoint wiring
pingpingjinping 204d7ab
fix(web): expire staged IPAs and clean up abandoned uploads on startup
pingpingjinping a349a6a
fix(ipa-inspect): avoid keeping borrowed ZIP entry name across read
pingpingjinping 0da9e8c
fix(signer): rebuild bundle tree after extension pruning to omit remo…
pingpingjinping 23a06a1
refactor: avoid redundant bundle extension state mutation
pingpingjinping 2e39529
feat(ipa): inspect main app identity and support optional name/Bundle…
pingpingjinping dbe3036
feat(signer): apply independent name/Bundle ID options before registr…
pingpingjinping 2447dd0
feat(apple): forward optional new-install identity overrides to signer
pingpingjinping ac7d2e9
feat(web): customize only new installs and block existing Bundle ID c…
pingpingjinping f1e7cc4
feat(ui): independent app-name and Bundle ID inputs only for new IPA …
pingpingjinping eadf48f
test(ui): cover new-install identity inputs and updated IPA inspectio…
pingpingjinping 7a674e0
fix(app-name): update localized InfoPlist.strings so renamed apps dis…
pingpingjinping 1fa26a3
test(web): verify independent new-install rename and clone Bundle ID …
pingpingjinping 83c6d47
fix(rust): preserve UTF-16 byte array lifetime when renaming localize…
pingpingjinping f8a7c57
fix(build): enable Axum query extractor for IPA customization preflight
pingpingjinping 961cd9d
fix(build): avoid new Axum query dependency and lockfile changes
pingpingjinping 7b747f9
fix(web): parse simple customization flag from request URI without qu…
pingpingjinping d0c6a1d
test(safety): block name/Bundle ID overrides for both installed ID fo…
pingpingjinping 39591a3
Merge pull request #9 from pingpingjinping/feature/ipa-extension-sele…
pingpingjinping 0860bc1
Merge pull request #10 from pingpingjinping/feature/ipa-new-install-i…
pingpingjinping 691d587
fix(ui): preserve responsive button alignment on latest IPA install UI
pingpingjinping 36e4cbf
test(ui): preserve new-install controls and validate compact 3-button…
pingpingjinping bfde9ca
Merge pull request #11 from pingpingjinping/fix/dashboard-button-row-…
pingpingjinping 582e9de
fix: prevent scheduler deadlock and fail incomplete renewals
pingpingjinping dbc8d59
fix(web): preserve auto-renew drafts and serialize status polling
pingpingjinping 5a14216
fix(web): retain saved draft until status confirms settings
pingpingjinping d463ed7
test(web): accept Windows CRLF in embedded script checks
pingpingjinping 2081be3
Merge pull request #12 from pingpingjinping/fix/renewal-deadlock-and-…
pingpingjinping 46d3cda
Merge pull request #13 from pingpingjinping/fix/web-draft-and-polling…
pingpingjinping 9c2014a
fix: show IPA progress in install card and retain signing error causes
pingpingjinping d8661fb
Merge pull request #14 from pingpingjinping/fix/ipa-progress-and-sign…
pingpingjinping 5e2d0a8
ci: build amd64 and arm64 natively in parallel and assemble manifest
pingpingjinping ede8d0a
Merge pull request #15 from pingpingjinping/perf/native-arm64-paralle…
pingpingjinping c61e687
perf(install): package signed IPA for fast Wi-Fi staging
pingpingjinping b6a9f3a
perf(install): stage one signed IPA over Wi-Fi instead of thousands o…
pingpingjinping 4edd703
perf(install): stage one signed IPA over Wi-Fi instead of thousands o…
pingpingjinping 72c4b2e
perf(install): stage one signed IPA over Wi-Fi instead of thousands o…
pingpingjinping 9c8d337
perf(install): stage one signed IPA over Wi-Fi instead of thousands o…
pingpingjinping 3e4c7d0
perf(install): stage one signed IPA over Wi-Fi instead of thousands o…
pingpingjinping 5dddc36
perf(install): stage one signed IPA over Wi-Fi instead of thousands o…
pingpingjinping 3286787
fix(install): import idevice stream write trait for AFC upload
pingpingjinping 250ce9c
fix(install): stage IPA correctly and pass signed CFBundleIdentifier
pingpingjinping 3c5f5a7
fix(install): clean up staged IPA after the install completes
pingpingjinping b4f37ca
Merge pull request #16 from pingpingjinping/perf/ipa-archive-wifi-upl…
pingpingjinping d653394
feat(web): play tiny muted video only during IPA install
pingpingjinping e80b7ac
test(web): verify install-only keepawake lifecycle
pingpingjinping a89dcfe
fix(web): embed verified 968-byte H264 keepawake clip
pingpingjinping 60674c9
fix(test): pass a newline when evaluating keepawake helper
pingpingjinping 62c0032
feat(web): add standalone five-minute screen-on video test without an…
pingpingjinping 6563d16
test(web): cover standalone five-minute keepawake test and install-on…
pingpingjinping 950dee0
fix(web): prevent the hidden video from autoplaying outside installs …
pingpingjinping 5e00bef
Merge pull request #17 from pingpingjinping/feat/install-only-silent-…
pingpingjinping 1f26140
fix(web): permit embedded H264 video under strict CSP
pingpingjinping 5bd4dd2
style(web): ensure keepawake video has a visible black fallback
pingpingjinping d714cac
test(web): guard against blocking embedded video in CSP
pingpingjinping a1951bf
Merge pull request #18 from pingpingjinping/fix/allow-embedded-keepaw…
pingpingjinping db8553d
revert(web): remove ineffective video overlay and manual screen-on test
pingpingjinping 61aacab
revert(test): remove video-only UI assertions
pingpingjinping 21226eb
revert(web): restore strict media-blocking CSP
pingpingjinping cf62a7f
Merge pull request #19 from pingpingjinping/revert/remove-failed-vide…
pingpingjinping 6509424
feat(https): add isolated private LAN Caddy setup and certificate guide
pingpingjinping 84f34f4
feat(https): add isolated private LAN Caddy setup and certificate guide
pingpingjinping 198053e
feat(https): add isolated private LAN Caddy setup and certificate guide
pingpingjinping 8c2c3ab
feat(web): use HTTPS Screen Wake Lock during IPA installs with a comp…
pingpingjinping 7d0411d
test(web): cover HTTPS proxy constraints and Screen Wake Lock lifecycle
pingpingjinping b55388a
fix(web): distinguish insecure HTTP from unsupported Wake Lock
pingpingjinping aa2f51e
docs(https): explain that HTTPS home-screen mode requires a new shortcut
pingpingjinping 404f595
Merge pull request #20 from pingpingjinping/feat/altkeeper-lan-https-…
pingpingjinping ef5bd92
revert: restore the post-PR19 dashboard without experimental Wake Lock
pingpingjinping c6fb38b
revert: restore the post-PR19 dashboard without experimental Wake Lock
pingpingjinping 01df432
revert: remove unused experimental local HTTPS proxy example
pingpingjinping 6440025
revert: remove unused experimental local HTTPS proxy example
pingpingjinping c6cea34
revert: remove unused experimental local HTTPS proxy example
pingpingjinping f11b806
Merge pull request #22 from pingpingjinping/revert/remove-lan-https-w…
pingpingjinping f4a78ca
Merge pull request #15 from pingpingjinping/main
BartolomeoRusso9 0fb3aec
Korean to English
BartolomeoRusso9 5992380
Fix
BartolomeoRusso9 7a6c000
Fix
BartolomeoRusso9 d3480f7
Update Cargo.lock
BartolomeoRusso9 55b8296
Fix
BartolomeoRusso9 58fb793
Fix update staging, restart log polling, backup cleanup, localized fi…
coderabbitai[bot] File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,105 @@ | ||
| # Compila AltKeeper per Windows, Linux e macOS e pubblica tutto in una GitHub Release. | ||
| # | ||
| # - Windows: `altkeeper.exe` + `altkeeper.exe.sha256`. L'aggiornamento dall'icona nella barra di | ||
| # sistema scarica proprio questi due file: i nomi non vanno cambiati. | ||
| # - Linux (x86-64 e arm64) e macOS (Apple Silicon e Intel): `altkeeper-<tag>-<sistema>-<arch>.tar.gz` | ||
| # con il suo `.sha256`. Sono download manuali: l'auto-aggiornamento è solo per Windows. | ||
| # | ||
| # Si lancia con un tag, per esempio: git tag v0.3.1 && git push origin v0.3.1 | ||
| # Il numero del tag deve coincidere con `version` in Cargo.toml. | ||
| name: release | ||
|
|
||
| on: | ||
| push: | ||
| tags: ["v*"] | ||
|
|
||
| jobs: | ||
| build: | ||
| strategy: | ||
| fail-fast: true | ||
| matrix: | ||
| include: | ||
| - name: windows | ||
| runner: windows-latest | ||
| test: true | ||
| # ubuntu-22.04: glibc 2.35, così il binario gira anche su distribuzioni non recentissime. | ||
| - name: linux-x86_64 | ||
| runner: ubuntu-22.04 | ||
| test: true | ||
| - name: linux-aarch64 | ||
| runner: ubuntu-22.04-arm | ||
| test: true | ||
| - name: macos-aarch64 | ||
| runner: macos-latest | ||
| test: false | ||
| - name: macos-x86_64 | ||
| runner: macos-15-intel | ||
| test: false | ||
| runs-on: ${{ matrix.runner }} | ||
| permissions: | ||
| contents: read | ||
| defaults: | ||
| run: | ||
| shell: bash | ||
| steps: | ||
| - uses: actions/checkout@v7 | ||
| - uses: dtolnay/rust-toolchain@stable | ||
| - uses: Swatinem/rust-cache@v2 | ||
| - name: Check that the tag matches Cargo.toml | ||
| run: | | ||
| version=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1) | ||
| if [ "v$version" != "${GITHUB_REF_NAME}" ]; then | ||
| echo "tag ${GITHUB_REF_NAME} != Cargo.toml v$version"; exit 1 | ||
| fi | ||
| - name: Test | ||
| if: matrix.test | ||
| run: cargo test --locked | ||
| - run: cargo build --release --locked | ||
| - name: Package (Windows) | ||
| if: matrix.name == 'windows' | ||
| run: | | ||
| mkdir dist | ||
| cp target/release/altkeeper.exe dist/altkeeper.exe | ||
| cd dist | ||
| hash=$(sha256sum altkeeper.exe | cut -d' ' -f1) | ||
| printf '%s altkeeper.exe' "$hash" > altkeeper.exe.sha256 | ||
| - name: Package (Linux, macOS) | ||
| if: matrix.name != 'windows' | ||
| run: | | ||
| pkg="altkeeper-${GITHUB_REF_NAME}-${{ matrix.name }}" | ||
| mkdir -p "dist/$pkg" | ||
| cp target/release/altkeeper LICENSE README.md README.it.md "dist/$pkg/" | ||
| cp -r examples "dist/$pkg/examples" | ||
| cd dist | ||
| tar -czf "$pkg.tar.gz" "$pkg" | ||
| rm -rf "$pkg" | ||
| if command -v sha256sum >/dev/null; then | ||
| sha256sum "$pkg.tar.gz" > "$pkg.tar.gz.sha256" | ||
| else | ||
| shasum -a 256 "$pkg.tar.gz" > "$pkg.tar.gz.sha256" | ||
| fi | ||
| - uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: dist-${{ matrix.name }} | ||
| path: dist/* | ||
| if-no-files-found: error | ||
| retention-days: 1 | ||
|
|
||
| publish: | ||
| # Una sola release, creata solo se tutte le build sono riuscite. | ||
| needs: [build] | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: write | ||
| steps: | ||
| - uses: actions/download-artifact@v4 | ||
| with: | ||
| path: dist | ||
| pattern: dist-* | ||
| merge-multiple: true | ||
| - name: List files | ||
| run: ls -l dist | ||
| - uses: softprops/action-gh-release@v2 | ||
|
coderabbitai[bot] marked this conversation as resolved.
Resolved
|
||
| with: | ||
| files: dist/* | ||
| fail_on_unmatched_files: true | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -23,3 +23,6 @@ notify.conf | |
| renew.log | ||
| .ultimo-errore | ||
| /profili-salvati/ | ||
| altkeeper.log | ||
| altkeeper.log.1 | ||
| altkeeper.new.exe | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.