Repository navigation
The glass look, a device bar and a status bar, one summary before a flash, and the fixes left from the review - #38
Merged
Merged
Conversation
…rom dl.google.com, checked against Google's catalogue (r13 pinned by SHA-256), added with pnputil
…as Heimdall sends them; files read and checked before anything is sent (MD5, LZ4); a plan checked against the phone's PIT and model; the stand-in phone takes flashes; tests
…checked, the plan with its warnings, the flash with progress, the result; help, README and CI screenshots; v2.9.0 notes
…nst a new reading; PIT v1 block sizes count in the size check
…files closed
Flashing
- Boot image check: the page is locked while the image is read, and the flash only
goes to the phone the image was checked for; a phone removed or swapped meanwhile
stops it.
- Root page: a step that throws is shown as a failure; before, "flashed, restart?" could
follow a flash that never ran, and "fastboot reboot" went out with no serial.
- Partition names and paths go to fastboot through one quoting helper; a payload naming
a partition that cannot sit on a command line ("-w") is refused; the Terminal and the
Backup poller stay out during every fastboot command, not only payload flashes.
- Current slot read as "_a" is handled like "a" (slot switch, vbmeta question).
Odin
- A BL or CP for another model next to the right AP is refused (it only warned as
"mixed" before); a tar whose name is not Samsung's is flagged, its model is unknown.
- Empty files are refused; PGPT, SGPT and PIT are protected and not offered as targets;
a failure before the first byte still ends the session.
- The phone leaving during the confirmation no longer crashes the window.
- Tar listing: a size that would wrap the bounds check, a long-name entry claiming
gigabytes, and pax "size" records (entries over 8 GiB).
Files that are damaged or crafted
- Payload: a blob is refused as soon as it inflates past its blocks (was: held whole in
memory first); zip offsets are checked against the file; NUL/CON/COM1 are not file names.
- super: extents past their block device, slot count 0 and tables past the metadata
area are damaged metadata, not partitions to extract.
- cpio: sizes near 2 GB ended in an exception; ramdisks are listed in long arithmetic.
- rawprogram: SECTOR_SIZE_IN_BYTES of 0 stacked every piece at offset 0.
- sparse parts: a part that fails to open no longer leaks the ones already opened.
Elsewhere
- settings.json: one writer at a time, written beside and moved over.
- Payload extraction asks before replacing images already in the folder; the Backup
page no longer selects a device twice.
- Window chrome buttons carry names for screen readers; the Odin totals line wraps.
- CI: screenshot commits as IFOKNR, the branch name through the environment,
release permissions only on the release job.
- README (both languages), the XDA post and the driver notes match 2.9.
- Tests for each new check (428 in all).
…erminal risks, images written beside then renamed, actions pinned by commit - The Odin "too big" check reads the sector size from the PIT: a v1 block size, or the entry's device type on v2 (2 = eMMC, 512 bytes; 8 = UFS, 4096). When the PIT says neither, the UFS limit blocks and the eMMC limit is a warning (MayNotFit). - A firmware is flashed in Odin's order (BL, AP, CP, CSC) whatever order the files were picked in. - The Terminal asks before flashall, update, set_active (and --set-active), delete-logical-partition and snapshot-update. - Extracted and built images (payload, super, sparse, rawprogram, super build) are written as .part and renamed once complete (AtomicFile), so a stopped run leaves nothing that looks finished. - Every GitHub Action is pinned to its commit. - 440 tests.
…tion, a log file per flash, a stop for a hung fastboot, root asked for only when turned on - The questions before a payload flash (pending update, missing logical partitions, images without a hash, super space, both slots) are one dialog: what is written, to which phone, and every point to know; a point that can cost data needs the "I have read this" box. - Every flash, erase, slot switch, boot-once and delete confirmation ends with the phone's serial, product, slot and mode. - While a payload is flashed the log is also written to %APPDATA%\Fastboot Studio\logs\flash-<date>-<serial>.log (newest 30 kept); the Logs page opens the folder. - Every step command (flash, erase, boot…) has a 15-minute deadline and can be stopped (cancelCurrent, wired to the device bar next). - A connected phone is asked for root (su) only when the Settings switch is on.
…ar, the Flash page's result strip, the new icon - Palette.Dark (grey glass) and Palette.Light (frosted): translucent surfaces over a sky gradient, hairline edges, one accent; Glass/GlassLine/SkyBrush/AccentGradient keys. - Cards 16 px, buttons 10 px, chips as pills, inputs and segments to match. - The rail: pages in three groups (Phone, Files, More tools), Settings and About at the foot, the chosen page in glass with its icon in the accent, the version read from the code. - A device bar above every page: product, serial, slot, mode, lock state, Restart menu, Disconnect, USB check, and Stop while a command runs. A status bar below: how many phones fastboot sees, the last command and how long it took, the tools' versions. - Flash: the result is a strip over the page (partitions written, time, both slots, deferred), the log sits beside the queue and runs the page's height, each row shows a state glyph and a "critical" badge where a wrong image can brick the phone. - The glass icon (tools/icon/glass-*.svg, render_glass.js): a screen with the bolt, grey glass for dark, frosted for light; big_icon.png and icon.ico from it. - The screenshot script answers the one flash summary and reads the result strip.
… Settings, About, Terminal, shortcuts, Mica - Samsung: the firmware's model against the phone's in one row at the top; the file list with part badges, MD5 state chips and a readable size; one main button (Download-mode flash) with the rest secondary. - Payload, Image Tools, Samsung and Build Super open on a dashed drop frame with the formats they take. - Root: four numbered steps; the current one lit, the ones done ticked, the rest dimmed; a "before you start" card. - Settings: the font preview card is gone (the page itself is the preview); the driver rows carry a green or red dot and the install button only when missing; check-for- updates sits by the version; a glass-backdrop switch (Windows 11, Mica); a shortcuts card. - About: a glass hero with the new icon; the links as a row of icon buttons. - Terminal: output on top, the line below it, the suggestions under the line. - Ctrl+O opens a file on the page, Ctrl+L the log, F1 the page's help, Ctrl+, Settings.
Chinese, Japanese and Korean have about an eighth of the strings translated, so they leave the language list (and the tour) until they are done; a choice saved earlier still applies.
…iles, the shortcuts
…ild Super scrolls on short windows Seen on the first Windows run: the rail's DockPanel laid the pages out left to right, the phone's name in the device bar was drawn black, and at 720 px the Build Super list had no height left, so its rows were not there to read.
zh-CN and ja-JP now carry all 1104 strings (984 and 983 added, a dozen old ones corrected). The languages return to Settings once Korean is complete too.
…or not The Odin window reads a phone in Download mode without any firmware open, so its button cannot live only inside the open-firmware view; the card keeps a second, larger one.
…ack under software rendering Seen in the light-theme screenshots: the page area was black and every glass surface grey.
…lass Page #121214, cards #1B1B1F, raised #26262B, hairlines #2C2C32, accent #7AA2FF. WPF draws no blur behind a translucent card, so the glass read as washed-out grey; solid tones look the same on every machine.
On by default it cleared the window's background; under software drawing (the default) Windows paints nothing there, so every page sat on black. The real cause of the black screenshots.
…peats the phone chip the bar shows A corner radius of 99 on a 24 px chip made WPF draw an ellipse.
ifoknr
added a commit
that referenced
this pull request
Nov 10, 2026
…n limits, full translations (#38)
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
On top of the review branch (#37, itself on #36). Two halves: the app's new look, and the fixes and suggestions the review left for later. The version is not bumped; the notes sit under
## Unreleasedin CHANGELOG.md until a release is decided.The look
Glass,GlassLine,SkyBrush,AccentGradient,OkSoft/OkLine,AppIcon.tools/icon/glass-*.svg, rendered byrender_glass.jsintoAssets/,big_icon.pngandicon.ico).Behaviour
%APPDATA%\Fastboot Studio\logs\flash-<date>-<serial>.log(newest 30 kept); Logs has Open log folder.MayNotFit). Files are flashed in Odin's order (BL, AP, CP, CSC) whatever order they were picked in.flashall,update,set_active/--set-active,delete-logical-partition,snapshot-update.AtomicFile: payload extraction, super extraction, sparse↔raw, rawprogram, super build): a stopped run never leaves a file that looks finished.Checks
net8.0-windows, Release, win-x64). Every AutomationId the screenshot script uses is still in the XAML.