46 Commits

Author SHA1 Message Date
Douglas Teles f1ab9d0c44 fix: Correct variant assignment in flash_image invocation v1.2.0 2026-04-02 19:03:15 -03:00
Douglas Teles c55048b3f0 fix: Implement extlinux configuration switching for soysauce variant 2026-04-02 18:42:53 -03:00
Douglas Teles 6c612a0367 fix: Enhance DTBO reading to support subdirectory traversal for panel files 2026-04-02 18:17:10 -03:00
Douglas Teles e13c995639 fix: Ensure safe environment variable setting before process re-execution 2026-04-02 18:00:11 -03:00
Douglas Teles 2dca4bc749 fix: Update panel DTBO paths to include subdirectory for Soysauce panels 2026-04-02 17:56:47 -03:00
Douglas Teles 96472384bb ArchLinux hotfix 2026-04-02 17:44:22 -03:00
Douglas Teles 5fffb15522 1.2.0 2026-04-02 13:59:36 -03:00
Douglas Teles 6c52a952d0 feat: Add support for custom DTB overlays and improve Windows 7 compatibility
- Implemented a new command `generate_overlay_from_dtb` to generate a panel overlay from a user-provided stock DTB file using a bundled Python script (`archr-dtbo.py`).
- Added a command `apply_custom_overlay` to apply a custom-generated overlay to an existing SD card.
- Introduced a new command `get_version` to retrieve the application version.
- Updated the Tauri configuration to include the new Python script as a resource and adjusted window dimensions.
- Enhanced UI text for custom DTB functionality in multiple languages.
- Added a Windows 7 compatibility shim (`win7_shim.c`) to handle the absence of `bcryptprimitives.dll` gracefully.
- Updated the main JavaScript logic to handle the new overlay generation and application flow.
2026-04-02 13:56:37 -03:00
Douglas Teles a5f5a71908 new layout 2026-04-02 13:40:55 -03:00
Douglas Teles 35765fe175 backend soysauce 2026-04-02 13:29:02 -03:00
Douglas Teles 5c990e098e bug fixes 2026-04-02 13:17:07 -03:00
Douglas Teles e950f4bc88 Windows hotfix v1.1.2 2026-03-22 01:02:39 -03:00
Douglas Teles 34dbc04f23 Add overlays 2026-03-20 13:51:01 -03:00
Douglas Teles 850a897537 Hotfix v1.1.1 2026-03-20 12:36:10 -03:00
Douglas Teles 6027de8063 Update readme 2026-03-20 11:45:01 -03:00
Douglas Teles d9bb7bd501 Merge branch 'main' of https://github.com/archr-linux/archr-flasher v1.1.0 2026-03-20 11:39:22 -03:00
Douglas Teles 04c8db6dfb Adjusted for new format 2026-03-20 11:38:33 -03:00
Douglas Teles d5ae38ba88 Merge pull request #2 from PM2D/main
Added ru i18n
2026-03-06 01:57:07 -03:00
PM2D 498c2838a8 ... 2026-03-05 18:52:57 +07:00
PM2D 2be4cf8360 Added ru i18n 2026-03-05 18:24:29 +07:00
Douglas Teles 10a41a5304 v1.0.0: Overlay tab, customizations, DTBO builder, i18n
New features:
- Overlay tab: change panel on existing SD without reflashing
- Customizations: rotation, analog stick inversion, HP detect polarity
- Built-in FDT/DTBO builder (no dtc dependency)
- Panel identification via description hash (survives customizations)
- In-app updater (check + install from GitHub Releases)
- 4 languages: en, pt-BR, es, zh

Panel database: 8 original + 12 clone = 20 panels.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.0.0
2026-03-04 17:42:58 -03:00
Douglas Teles 0a1043ec11 v0.2.0: Console-first flow, new image naming, updater support
Reorder UI: console selection (step 1) now comes before image
download (step 2), since each variant has its own image.
Switching console clears any previously downloaded image.

Image matching updated for simplified naming:
  original → ArchR-R36S-YYYYMMDD.img.xz
  clone    → ArchR-R36S-clone-YYYYMMDD.img.xz

Other changes:
- Add tauri-plugin-updater + tauri-plugin-process for auto-updates
- Add check_app_update / install_app_update commands
- Linux flash: O_DIRECT fallback, aggressive unmount, fs.protected_regular fix
- Remove dead i18n key (select_console_first)
- All panels set is_default: false (Flasher handles selection)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.2.0
2026-03-02 17:55:13 -03:00
Douglas Teles 3f1e03b7be fix(linux): O_DIRECT fallback for dd on incompatible SD card readers
Some USB SD card readers don't support O_DIRECT, causing dd to fail
immediately with EINVAL. Now tries O_DIRECT first and falls back to
normal write if dd exits within 1 second.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.1.5
2026-03-02 11:44:28 -03:00
Douglas Teles 14e704bfab RPi Imager techniques for Linux/macOS flash scripts
Linux:
- Escalating unmount strategy (RPi Imager technique): normal umount,
  then lazy (MNT_DETACH), then force (MNT_FORCE). Prevents "device busy".
- O_DIRECT via dd oflag=direct: bypasses page cache for reliable writes,
  same approach RPi Imager uses with open(O_DIRECT).

macOS:
- Force unmount via "diskutil unmountDisk force" (equivalent to RPi Imager's
  kDADiskUnmountOptionForce in DiskArbitration framework). Applied both in
  the Rust pre-unmount step and inside the elevated flash script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.1.4
2026-03-02 11:18:47 -03:00
Douglas Teles fd478887be Rufus-style admin manifest + disk write techniques
Major Windows flash rewrite inspired by studying Rufus source code:

- Add admin manifest (requireAdministrator) so the app requests UAC once
  at startup, like Rufus does. Eliminates ALL runtime elevation complexity:
  no more Start-Process -Verb RunAs, no EncodedCommand, no base64,
  no result marker files, no multi-layer exit code propagation.

- Replace diskpart with Clear-Disk cmdlet (Rufus technique: handles volume
  lock + dismount + MBR/GPT clearing in one call, equivalent to
  FSCTL_LOCK_VOLUME + FSCTL_DISMOUNT_VOLUME + zeroing MBR/GPT).

- Replace diskpart rescan with Update-Disk cmdlet (Rufus technique:
  equivalent to IOCTL_DISK_UPDATE_PROPERTIES).

- Write retry with file pointer reposition on failure (Rufus technique:
  4 attempts, 5s delay, reposition to last known good offset).

- FileStream open retry: 4 attempts with 5s delay (was 3 with 3s).

- Remove base64 crate dependency (no longer needed without EncodedCommand).

- Net result: 32 fewer lines, zero visible windows, more reliable writes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 11:09:50 -03:00