Add system tray, APK Installer, fix package visibility, new themes/fonts; bump to v1.3.0

- System tray (Linux): pure Go D-Bus StatusNotifierItem, no cgo/libappindicator.
  Close now offers Minimize to Tray vs Quit instead of always quitting.
- New APK Installer module: batch-install from a folder or hand-picked files,
  live per-file progress, select all/none.
- Fix Packages/App Inspector silently hiding packages disabled/uninstalled by
  Canta/Shizuku (pm list packages needs -u to see them). Added a state filter
  and per-row Restore/Enable/Disable/Uninstall actions.
- 6 new theme palettes (Nord, Tokyo Night, Solarized Dark/Light, Rosé Pine,
  Everforest - 26 total), custom text colour, 8 bundled display fonts,
  adjustable font size.
- Horizontal sidebar now shrinks label text progressively instead of
  scrolling when the window narrows; fixed a touchpad stuck-scrollbar-drag bug.
- Updated README and fixed stale Go 1.23 -> 1.25 build instructions.
This commit is contained in:
jegly 2026-07-09 20:05:26 +10:00
commit cf3fb26bd2
52 changed files with 2642 additions and 98 deletions

View file

@ -78,6 +78,33 @@ func (a *App) SelectDirectoryForPull() (string, error) {
return path, err
}
// SelectApkFolder opens a native directory picker for a folder of APKs to
// batch-install.
func (a *App) SelectApkFolder() (string, error) {
path, err := zenity.SelectFile(
zenity.Title("Select a folder of APKs"),
zenity.Directory(),
)
if err == zenity.ErrCanceled {
return "", nil
}
return path, err
}
// SelectMultipleApkFiles opens a native multi-file picker filtered to APKs.
func (a *App) SelectMultipleApkFiles() ([]string, error) {
paths, err := zenity.SelectFileMultiple(
zenity.Title("Select APKs to install"),
zenity.FileFilters{
{Name: "APK files", Patterns: []string{"*.apk"}, CaseFold: true},
},
)
if err == zenity.ErrCanceled {
return nil, nil
}
return paths, err
}
// SelectFileWithFilter opens a file picker with custom file type filters.
func (a *App) SelectFileWithFilter(title string, patterns []string) (string, error) {
filters := []zenity.FileFilter{