Fix Android startup defaults and window sizing

This commit is contained in:
Joe Julian
2026-03-30 07:30:06 -07:00
parent 794eed04d4
commit fca121f170
2 changed files with 46 additions and 6 deletions
+21 -6
View File
@@ -10,6 +10,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"runtime"
"slices" "slices"
"strings" "strings"
"time" "time"
@@ -413,6 +414,17 @@ func resolveFlagOrEnv(flagValue, envName, fallback string) string {
return fallback return fallback
} }
func defaultModeForRuntime(goos string) string {
if strings.EqualFold(strings.TrimSpace(goos), "android") {
return "phone"
}
return "desktop"
}
func shouldUsePreviewWindowSize(mode, goos string) bool {
return !strings.EqualFold(strings.TrimSpace(goos), "android")
}
func (u *ui) selectedAttachmentItems() []attachmentItem { func (u *ui) selectedAttachmentItems() []attachmentItem {
item, ok := u.selectedEntry() item, ok := u.selectedEntry()
if !ok || len(item.Attachments) == 0 { if !ok || len(item.Attachments) == 0 {
@@ -2903,7 +2915,7 @@ func main() {
stateDir := flag.String("state-dir", "", "directory for KeePassGO state such as recent-vault history and default save targets") stateDir := flag.String("state-dir", "", "directory for KeePassGO state such as recent-vault history and default save targets")
flag.Parse() flag.Parse()
resolvedMode := resolveFlagOrEnv(*mode, "KEEPASSGO_MODE", "desktop") resolvedMode := resolveFlagOrEnv(*mode, "KEEPASSGO_MODE", defaultModeForRuntime(runtime.GOOS))
resolvedStateDir := resolveFlagOrEnv(*stateDir, "KEEPASSGO_STATE_DIR", "") resolvedStateDir := resolveFlagOrEnv(*stateDir, "KEEPASSGO_STATE_DIR", "")
width := unit.Dp(1180) width := unit.Dp(1180)
@@ -2916,14 +2928,17 @@ func main() {
go func() { go func() {
w := new(app.Window) w := new(app.Window)
w.Option( options := []app.Option{app.Title(productName)}
app.Title(productName), if shouldUsePreviewWindowSize(resolvedMode, runtime.GOOS) {
app.Size(width, height), options = append(options, app.Size(width, height))
) }
w.Option(options...)
if err := run(w, strings.ToLower(resolvedMode), defaultStatePaths(resolvedStateDir)); err != nil { if err := run(w, strings.ToLower(resolvedMode), defaultStatePaths(resolvedStateDir)); err != nil {
panic(err) panic(err)
} }
os.Exit(0) if !strings.EqualFold(runtime.GOOS, "android") {
os.Exit(0)
}
}() }()
app.Main() app.Main()
} }
+25
View File
@@ -2348,6 +2348,31 @@ func TestResolveFlagOrEnvPrefersFlagThenEnvThenFallback(t *testing.T) {
} }
} }
func TestDefaultModeForRuntimeUsesPhoneOnAndroid(t *testing.T) {
t.Parallel()
if got := defaultModeForRuntime("android"); got != "phone" {
t.Fatalf("defaultModeForRuntime(android) = %q, want %q", got, "phone")
}
if got := defaultModeForRuntime("linux"); got != "desktop" {
t.Fatalf("defaultModeForRuntime(linux) = %q, want %q", got, "desktop")
}
}
func TestShouldUsePreviewWindowSizeSkipsAndroid(t *testing.T) {
t.Parallel()
if got := shouldUsePreviewWindowSize("desktop", "android"); got {
t.Fatal("shouldUsePreviewWindowSize(desktop, android) = true, want false")
}
if got := shouldUsePreviewWindowSize("phone", "android"); got {
t.Fatal("shouldUsePreviewWindowSize(phone, android) = true, want false")
}
if got := shouldUsePreviewWindowSize("desktop", "linux"); !got {
t.Fatal("shouldUsePreviewWindowSize(desktop, linux) = false, want true")
}
}
func TestEnterOnLocalLifecycleScreenDefaultsToOpenVault(t *testing.T) { func TestEnterOnLocalLifecycleScreenDefaultsToOpenVault(t *testing.T) {
t.Parallel() t.Parallel()