diff --git a/.github/scripts/winget-manifests.sh b/.github/scripts/winget-manifests.sh new file mode 100755 index 0000000..56ab874 --- /dev/null +++ b/.github/scripts/winget-manifests.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash +# Writes the winget manifests of a release: version, installer, and the English and +# Arabic descriptions. The zip is a portable app; winget unpacks it and puts its folder +# on PATH (ArchiveBinariesDependOnPath), since FastbootStudio.exe needs the adb and +# fastboot next to it. +# +# Usage: winget-manifests.sh v2.2.0 path/to/FastbootStudio-v2.2.0-win-x64.zip OUTDIR [YYYY-MM-DD] +set -euo pipefail + +tag="$1" +zip="$2" +out="$3" +date="${4:-$(date -u +%Y-%m-%d)}" +version="${tag#v}" +id="IFOKNR.FastbootStudio" +repo="https://github.com/ifoknr/FastbootStudio" +sha=$(sha256sum "$zip" | cut -d' ' -f1 | tr 'a-f' 'A-F') +url="$repo/releases/download/$tag/$(basename "$zip")" +dir="$out/manifests/i/IFOKNR/FastbootStudio/$version" +mkdir -p "$dir" + +cat > "$dir/$id.yaml" < "$dir/$id.installer.yaml" < "$dir/$id.locale.en-US.yaml" < "$dir/$id.locale.ar-SA.yaml" <> "$GITHUB_OUTPUT" + + - name: Submit to winget + if: steps.winget.outputs.enabled == 'true' + continue-on-error: true + uses: vedantmgoyal9/winget-releaser@v2 + with: + identifier: IFOKNR.FastbootStudio + release-tag: ${{ env.RELEASE_VERSION }} + installers-regex: 'win-x64\.zip$' + token: ${{ secrets.WINGET_TOKEN }} diff --git a/packaging/README.md b/packaging/README.md new file mode 100644 index 0000000..d23677b --- /dev/null +++ b/packaging/README.md @@ -0,0 +1,22 @@ +# Packaging · النشر + +## winget + +`.github/scripts/winget-manifests.sh` writes the manifests of a release (version, installer, +English and Arabic descriptions). The Release workflow runs it for every release and attaches +the result as the `winget-manifests` artifact of the run. They follow schema 1.6.0: a portable +zip whose folder goes on PATH (`ArchiveBinariesDependOnPath`), because FastbootStudio.exe needs +the adb and fastboot next to it. + +**First submission** (once): copy `manifests/i/IFOKNR/FastbootStudio//` into a fork of +[microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs) at the same path and open a +pull request; agree to the Microsoft CLA when the bot asks. Or, on Windows: +`wingetcreate submit `. + +**Later releases**: add a classic GitHub token with the `public_repo` scope as the +`WINGET_TOKEN` secret; the Release workflow then submits each new version by itself. + +## XDA + +`xda/thread.bbcode` is the thread for XDA Developers (BBCode, paste it in the editor's BBCode +mode). The images come straight from `docs/` on GitHub, so they stay current. diff --git a/packaging/xda/thread.bbcode b/packaging/xda/thread.bbcode new file mode 100644 index 0000000..4c15fc1 --- /dev/null +++ b/packaging/xda/thread.bbcode @@ -0,0 +1,104 @@ +[CENTER][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/banner.png[/IMG] + +[SIZE=6][B]Fastboot Studio[/B][/SIZE] +[SIZE=4]fastboot, OTA flashing, payload dumper, super images and backups — in one Windows app[/SIZE] + +[URL='https://github.com/ifoknr/FastbootStudio/releases/latest'][B]⬇ Download[/B][/URL] · [URL='https://github.com/ifoknr/FastbootStudio']Source (GitHub)[/URL] · [URL='https://github.com/ifoknr/FastbootStudio/blob/master/CHANGELOG.md']Changelog[/URL] · [URL='https://t.me/IFOKNR1']Telegram[/URL][/CENTER] + +[SIZE=5][B]What is it?[/B][/SIZE] +Fastboot Studio is a free, open-source (MIT) rewrite of [URL='https://github.com/libxzr/FastbootEnhance']Fastboot Enhance[/URL] by LibXZR. It keeps everything the original did and adds what people who flash phones reach for every day: a safe OTA flasher, image tools that replace simg2img / lpunpack / lpmake, a super image builder, and backups of partitions and files over adb. + +Everything runs inside the app: no Python, no Linux tools, nothing to install. adb and fastboot (platform-tools 37.0.1) are included. English and Arabic interface. + +[SIZE=5][B]Features[/B][/SIZE] +[B]📱 Device[/B] +[LIST] +[*]Every getvar value, every partition with its size and whether it is logical, a filter by name +[*]Flash, erase, and for logical partitions create / resize / delete +[*]Pre-flash checks: bootloader lock state, bootloader or fastbootd, pending Virtual A/B update, leftover COW partitions, current slot +[*]Reboot to system / bootloader / fastbootd / recovery, switch slot, cancel a pending update +[*][B]Boot once[/B] (fastboot boot) — refuses init_boot and vendor_boot images, which cannot start on their own, and goes through the bootloader when you are in fastbootd +[*][B]Super space[/B] — what each slot and the COW partitions take in super, and how much is free +[*][B]USB check[/B] — phone plugged in but not listed? It tells you why: a missing or broken driver (with the steps to fix it), Qualcomm EDL (9008), MediaTek BROM/preloader, Unisoc or Samsung download mode, or a phone still in Android (and reboots it to the bootloader) +[/LIST] + +[B]⚡ Flash[/B] +[LIST] +[*]Flashes a full OTA (payload.bin or the OTA zip) in fastbootd +[*][B]Every image is extracted first, in parallel, and checked against its SHA-256 before anything is written[/B] — a broken download never reaches the phone +[*]Logical partitions the OTA needs but the phone lacks are created first; the images are checked to fit in super before writing +[*]Per-partition progress and a live fastboot log +[/LIST] + +[B]📦 Payload Dumper[/B] +[LIST] +[*]Opens payload.bin or the OTA zip directly (read in place, no unzipping) +[*]Full OTAs with every operation they use: REPLACE, ZERO, xz, bzip2, zstd… +[*]Extracts in parallel with hash checks +[/LIST] + +[B]🧱 Image Tools[/B] +[LIST] +[*]Sparse ↔ raw (simg2img / img2simg), split sparse images +[*]Inspect and unpack super images (lpunpack), including split factory parts +[*]Combine Qualcomm super_1.img … super_N.img pieces using rawprogram XML +[/LIST] + +[B]🧩 Build Super[/B] +[LIST] +[*]Builds super images byte-for-byte like AOSP lpmake (Virtual A/B, A/B, single slot) +[*]Import the layout from a phone's super, read the size from the phone +[/LIST] + +[B]💾 Backup[/B] +[LIST] +[*]Partitions over adb (root, or from recovery) with SHA-256 for every image +[*]Copies files and folders from the phone (DCIM, Download…) +[*]Phone in fastboot? It reboots to recovery or boots a recovery image for you +[/LIST] + +[SIZE=5][B]Safety[/B][/SIZE] +[LIST] +[*][B]Slot switch protection[/B] — warns when the other slot has not booted yet, asks in red when it is marked unbootable or out of retries, and refuses when its logical partitions are empty (as after flashing a factory super) +[*][B]Critical partitions[/B] (xbl, abl, tz, modem, persist, frp, preloader, nvdata…) can only be flashed or erased after typing the partition name +[*]vbmeta: offers --disable-verity --disable-verification and explains what it needs +[*]Asks before closing mid-flash +[/LIST] + +[SIZE=5][B]Requirements[/B][/SIZE] +[LIST] +[*]Windows 10 / 11, 64-bit +[*]The phone's USB driver (e.g. Google USB Driver) — the USB check helps if it is missing +[/LIST] + +[SIZE=5][B]Download & install[/B][/SIZE] +[LIST=1] +[*]Download [B]FastbootStudio-vX.Y.Z-win-x64.zip[/B] from [URL='https://github.com/ifoknr/FastbootStudio/releases/latest']GitHub Releases[/URL] +[*]Unzip it anywhere +[*]Run [B]FastbootStudio.exe[/B] +[/LIST] + +[SIZE=5][B]Screenshots[/B][/SIZE] +[SPOILER="Device"][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/device.png[/IMG] +[IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/device-partitions.png[/IMG][/SPOILER] +[SPOILER="Flash"][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/flash.png[/IMG][/SPOILER] +[SPOILER="Payload Dumper"][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/payload.png[/IMG][/SPOILER] +[SPOILER="Image Tools"][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/image-tools.png[/IMG] +[IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/qualcomm-pieces.png[/IMG][/SPOILER] +[SPOILER="Build Super"][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/build-super.png[/IMG][/SPOILER] +[SPOILER="Backup"][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/backup-partitions.png[/IMG] +[IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/backup-fastboot.png[/IMG][/SPOILER] +[SPOILER="Arabic interface"][IMG]https://raw.githubusercontent.com/ifoknr/FastbootStudio/master/docs/images/ar-device.png[/IMG][/SPOILER] + +[SIZE=5][B]Credits[/B][/SIZE] +[LIST] +[*][URL='https://github.com/libxzr/FastbootEnhance']Fastboot Enhance[/URL] by [B]LibXZR[/B] (MIT), the project this grew from +[*]AOSP libsparse and liblp (sparse and super formats), Android platform-tools (Apache 2.0) +[*]Roboto and Noto Kufi Arabic fonts (SIL OFL 1.1) +[/LIST] + +[SIZE=5][B]Feedback[/B][/SIZE] +Bug reports and ideas are welcome — here, on [URL='https://github.com/ifoknr/FastbootStudio/issues/new/choose']GitHub Issues[/URL] (please include your phone model, the mode and a copy of the Logs page), or on Telegram [URL='https://t.me/IFOKNR1']@IFOKNR1[/URL]. Pull requests and translations too. + +[B]Source code:[/B] [URL]https://github.com/ifoknr/FastbootStudio[/URL] +[B]License:[/B] MIT