diff --git a/Reviews/bottles-libadwaita-1.9-proceed-button.md b/Reviews/bottles-libadwaita-1.9-proceed-button.md new file mode 100644 index 0000000..b22dbf5 --- /dev/null +++ b/Reviews/bottles-libadwaita-1.9-proceed-button.md @@ -0,0 +1,64 @@ +# Bottles: Invisible Proceed Button on libadwaita 1.9+ + +## Issue + +When installing a program that requires local resources (e.g. `url: local` in the installer YAML), the "Proceed" button in the installer dialog is invisible. Users can select the local file, but cannot continue with the installation because the button never appears. + +This affects Bottles 63.2 (native/AUR build) running on systems with libadwaita 1.9.0 or later. The Flatpak version is unaffected because it bundles an older libadwaita. + +## Root Cause + +In `bottles/frontend/ui/dialog-installer.blp`, the `btn_proceed` widget is a bare `GtkButton` placed as a direct child of `Adw.PreferencesPage`: + +``` +Adw.PreferencesPage { + Adw.PreferencesGroup group_resources { ... } + + Button btn_proceed { ... } // <-- not rendered by libadwaita 1.9+ +} +``` + +`AdwPreferencesPage` expects all children to be `AdwPreferencesGroup` widgets. In libadwaita < 1.9, bare widgets were still rendered. In 1.9+, non-group children are silently dropped. + +## Fix + +Wrap `btn_proceed` in an `Adw.PreferencesGroup`: + +```diff +- Button btn_proceed { +- label: _("Proceed"); +- sensitive: false; +- visible: false; +- halign: center; +- valign: center; +- +- styles [ +- "pill", +- "suggested-action", +- ] +- } ++ Adw.PreferencesGroup { ++ Button btn_proceed { ++ label: _("Proceed"); ++ sensitive: false; ++ visible: false; ++ halign: center; ++ valign: center; ++ ++ styles [ ++ "pill", ++ "suggested-action", ++ ] ++ } ++ } +``` + +## Affected Versions + +- **Bottles**: 63.2 +- **libadwaita**: 1.9.0+ (confirmed on CachyOS with `libadwaita 1:1.9.0-1.1`) +- **Not affected**: Flatpak builds (bundle older libadwaita) + +## Status + +Patched locally. Should be reported upstream at [bottlesdevs/Bottles](https://github.com/bottlesdevs/Bottles). diff --git a/Reviews/pkhex.md b/Reviews/pkhex.md new file mode 100644 index 0000000..edb7ef9 --- /dev/null +++ b/Reviews/pkhex.md @@ -0,0 +1,39 @@ +# PKHeX +Review for the PKHeX installer. + +Maintainer: @Azevedo + +**Is the program properly opened?** +Grade: Gold +Additional notes: Opens successfully with .NET Desktop Runtime 10 installed. + +**Is it showing alerts or other warnings?** +Grade: Gold +Additional notes: No alerts or warnings after applying the DPI workaround. + +**Does it show graphical glitches?** +Grade: Silver +Additional notes: The window is not resizable and renders small (though usable). Pokemon tooltip popups are inconsistent — sometimes showing, sometimes not, sometimes disappearing too quickly. + +**Does it require some tweaking in order to work properly? (Out of normal software configuration)** +Grade: Silver +Additional notes: Requires a Windows AppCompatFlags registry key (`DPIUNAWARE`) to prevent a .NET WinForms DPI awareness crash when opening file dialogs. This is applied automatically by the installer. A Wine runner with .NET DPI fixes (e.g. Wine 11+) is recommended over older runners like soda-9.0. + +**Did it crash during tests execution?** +Grade: Gold +Additional notes: No crashes after the DPI workaround is applied. Without it, the app crashes on any file dialog (open/save) with `Failed to get thread's DpiAwareness context`. + +**Is it usable?** +Grade: Silver +Additional notes: Core functionality works — opening, editing, and saving Pokemon save files all function correctly. The UI quirks (non-resizable window, inconsistent tooltips) are cosmetic and do not block usage. + +**Final grade? (the lower evaluation from previous questions)** +Grade: Silver +Additional notes: Fully functional for its primary purpose. The DPI workaround is automated in the installer. Remaining issues are cosmetic (window size, tooltip rendering). + +**Additional notes** +- PKHeX binaries are available from https://projectpokemon.org/home/files/file/1-pkhex/ +- The installer uses `url: local` since there is no stable direct download link. +- PKHeX requires .NET Desktop Runtime 10. The installer downloads it from Microsoft's CDN. +- Wine 11+ is recommended as the runner. Older runners (e.g. soda-9.0) may have additional issues. +- **DPI workaround**: Wine does not implement `SetThreadDpiAwarenessContext`, which .NET 10 WinForms calls when opening file dialogs. The installer sets the `DPIUNAWARE` AppCompatFlags registry key to prevent this crash. diff --git a/Software/pkhex.yml b/Software/pkhex.yml new file mode 100644 index 0000000..7287c63 --- /dev/null +++ b/Software/pkhex.yml @@ -0,0 +1,39 @@ +Name: pkhex +Description: A Pokémon core series save editor. After installation, add environment variable DOTNET_SYSTEM_GLOBALIZATION_USENLS=true in bottle settings to fix search functionality. +Grade: Silver +Arch: win64 + +Dependencies: +- courie32 +- arial32 + +Executable: + name: PKHeX + icon: pkhex.ico + file: PKHeX.exe + path: PKHeX/PKHeX.exe + arguments: "" + +Steps: +- action: install_exe + file_name: windowsdesktop-runtime-10.0.5-win-x64.exe + url: https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/10.0.5/windowsdesktop-runtime-10.0.5-win-x64.exe + file_checksum: false + arguments: /install /quiet /norestart +- action: run_script + script: | + mkdir -p drive_c/PKHeX +- action: install_exe + file_name: PKHeX.exe + url: local + file_checksum: false + arguments: "" +- action: run_script + script: | + PKHEX_SRC=$(find ~ -maxdepth 5 -name "PKHeX.exe" -not -path "*/bottles/*" -not -path "*/.net/*" -type f 2>/dev/null | head -1) + if [ -n "$PKHEX_SRC" ]; then + cp "$PKHEX_SRC" drive_c/PKHeX/ + fi +- action: run_script + script: | + wine reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\PKHeX\PKHeX.exe" /t REG_SZ /d "~ DPIUNAWARE" /f diff --git a/data/pkhex/pkhex.ico b/data/pkhex/pkhex.ico new file mode 100644 index 0000000..fb416b1 Binary files /dev/null and b/data/pkhex/pkhex.ico differ diff --git a/index.yml b/index.yml index 1b2ec5c..7065a96 100644 --- a/index.yml +++ b/index.yml @@ -290,3 +290,11 @@ roon: Category: Software Icon: roon.png Event: RoonInstaller64.exe + +pkhex: + Arch: win64 + Name: PKHeX + Description: A Pokémon core series save editor. + Grade: Silver + Category: Software + Icon: pkhex.ico