From ce7b6dee895da67522ec403b8af16b9aced66251 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:10:05 +0000 Subject: [PATCH 01/29] Initial plan From c8ff4455a2513915b4515e9ff41304173d47b2cc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:13:25 +0000 Subject: [PATCH 02/29] Fix Windows WhatsApp session store DSN handling Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/4500974b-9ba5-4885-ad0a-fa7bb708545a Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- internal/whatsapplive/client.go | 38 +++++++++++++++++++--------- internal/whatsapplive/client_test.go | 23 +++++++++++++++++ 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/internal/whatsapplive/client.go b/internal/whatsapplive/client.go index a12d9f8..12595e5 100644 --- a/internal/whatsapplive/client.go +++ b/internal/whatsapplive/client.go @@ -219,13 +219,35 @@ func (b *Bridge) initClientLocked() error { } func sessionStoreDSN(path string) string { + return sessionStoreDSNWithQuery(path, "_pragma=foreign_keys(1)&_pragma=busy_timeout(5000)") +} + +func sessionStoreReadOnlyDSN(path string) string { + return sessionStoreDSNWithQuery(path, "mode=ro&_pragma=busy_timeout(5000)") +} + +func sessionStoreDSNWithQuery(path string, rawQuery string) string { + normalizedPath := strings.ReplaceAll(path, "\\", "/") + if isWindowsDrivePath(normalizedPath) { + normalizedPath = "/" + normalizedPath + } return (&url.URL{ Scheme: "file", - Path: path, - RawQuery: "_pragma=foreign_keys(1)&_pragma=busy_timeout(5000)", + Path: normalizedPath, + RawQuery: rawQuery, }).String() } +func isWindowsDrivePath(path string) bool { + if len(path) < 3 { + return false + } + drive := path[0] + return ((drive >= 'a' && drive <= 'z') || (drive >= 'A' && drive <= 'Z')) && + path[1] == ':' && + path[2] == '/' +} + func (b *Bridge) resetClientLocked() error { if b.client != nil { b.client.Disconnect() @@ -1713,11 +1735,7 @@ func (b *Bridge) lookupPNFromSessionStore(lidUser string) (watypes.JID, error) { if strings.TrimSpace(lidUser) == "" || strings.TrimSpace(b.sessionPath) == "" { return watypes.EmptyJID, nil } - dbh, err := sql.Open("sqlite", (&url.URL{ - Scheme: "file", - Path: b.sessionPath, - RawQuery: "mode=ro&_pragma=busy_timeout(5000)", - }).String()) + dbh, err := sql.Open("sqlite", sessionStoreReadOnlyDSN(b.sessionPath)) if err != nil { return watypes.EmptyJID, err } @@ -1739,11 +1757,7 @@ func (b *Bridge) lookupLIDFromSessionStore(pnUser string) watypes.JID { if strings.TrimSpace(pnUser) == "" || strings.TrimSpace(b.sessionPath) == "" { return watypes.EmptyJID } - dbh, err := sql.Open("sqlite", (&url.URL{ - Scheme: "file", - Path: b.sessionPath, - RawQuery: "mode=ro&_pragma=busy_timeout(5000)", - }).String()) + dbh, err := sql.Open("sqlite", sessionStoreReadOnlyDSN(b.sessionPath)) if err != nil { return watypes.EmptyJID } diff --git a/internal/whatsapplive/client_test.go b/internal/whatsapplive/client_test.go index 8653308..299ae8c 100644 --- a/internal/whatsapplive/client_test.go +++ b/internal/whatsapplive/client_test.go @@ -379,6 +379,29 @@ func TestSessionStoreDSNUsesModerncPragmas(t *testing.T) { } } +func TestSessionStoreDSNNormalizesWindowsDrivePaths(t *testing.T) { + got := sessionStoreDSN(`C:\Users\Alice\openmessage\wa store.db`) + if !strings.HasPrefix(got, "file:///C:/Users/Alice/openmessage/wa%20store.db?") { + t.Fatalf("dsn did not normalize windows path correctly: %q", got) + } + if strings.Contains(got, `%5C`) { + t.Fatalf("dsn should not contain encoded backslashes: %q", got) + } +} + +func TestSessionStoreReadOnlyDSNUsesReadOnlyMode(t *testing.T) { + got := sessionStoreReadOnlyDSN(`C:\Users\Alice\openmessage\whatsapp-session.db`) + if !strings.Contains(got, "mode=ro") { + t.Fatalf("dsn missing read-only mode: %q", got) + } + if !strings.Contains(got, "_pragma=busy_timeout(5000)") { + t.Fatalf("dsn missing busy_timeout pragma: %q", got) + } + if !strings.HasPrefix(got, "file:///C:/Users/Alice/openmessage/whatsapp-session.db?") { + t.Fatalf("read-only dsn did not normalize windows path correctly: %q", got) + } +} + func TestBridgeNewInitializesSQLiteSessionStore(t *testing.T) { dataDir := t.TempDir() store, err := db.New(filepath.Join(dataDir, "messages.db")) From 4fbfa1c29343ec75ea30978c3a605614bae5fa9d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:15:03 +0000 Subject: [PATCH 03/29] Address review feedback for Windows DSN normalization Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/4500974b-9ba5-4885-ad0a-fa7bb708545a Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- internal/whatsapplive/client.go | 4 ++-- internal/whatsapplive/client_test.go | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/whatsapplive/client.go b/internal/whatsapplive/client.go index 12595e5..20d2585 100644 --- a/internal/whatsapplive/client.go +++ b/internal/whatsapplive/client.go @@ -228,7 +228,7 @@ func sessionStoreReadOnlyDSN(path string) string { func sessionStoreDSNWithQuery(path string, rawQuery string) string { normalizedPath := strings.ReplaceAll(path, "\\", "/") - if isWindowsDrivePath(normalizedPath) { + if isNormalizedWindowsDrivePath(normalizedPath) { normalizedPath = "/" + normalizedPath } return (&url.URL{ @@ -238,7 +238,7 @@ func sessionStoreDSNWithQuery(path string, rawQuery string) string { }).String() } -func isWindowsDrivePath(path string) bool { +func isNormalizedWindowsDrivePath(path string) bool { if len(path) < 3 { return false } diff --git a/internal/whatsapplive/client_test.go b/internal/whatsapplive/client_test.go index 299ae8c..229552c 100644 --- a/internal/whatsapplive/client_test.go +++ b/internal/whatsapplive/client_test.go @@ -387,6 +387,11 @@ func TestSessionStoreDSNNormalizesWindowsDrivePaths(t *testing.T) { if strings.Contains(got, `%5C`) { t.Fatalf("dsn should not contain encoded backslashes: %q", got) } + + gotLowercaseDrive := sessionStoreDSN(`c:\Users\Alice\openmessage\wa store.db`) + if !strings.HasPrefix(gotLowercaseDrive, "file:///c:/Users/Alice/openmessage/wa%20store.db?") { + t.Fatalf("dsn did not normalize lowercase windows drive path correctly: %q", gotLowercaseDrive) + } } func TestSessionStoreReadOnlyDSNUsesReadOnlyMode(t *testing.T) { From 19b657dfe5bb9d4e7fb1f3b3e85063b20854b642 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:16:06 +0000 Subject: [PATCH 04/29] Complete validation for Windows WhatsApp DSN fix Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/4500974b-9ba5-4885-ad0a-fa7bb708545a Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- go.mod | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index d070d98..b65afe0 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,12 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 github.com/rs/zerolog v1.34.0 go.mau.fi/mautrix-gmessages v0.2601.0 + go.mau.fi/util v0.9.6 go.mau.fi/whatsmeow v0.0.0-20260327181659-02ec817e7cf4 + golang.org/x/crypto v0.48.0 + golang.org/x/net v0.50.0 golang.org/x/term v0.40.0 + google.golang.org/protobuf v1.36.11 modernc.org/sqlite v1.44.3 rsc.io/qr v0.2.0 ) @@ -34,13 +38,9 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.mau.fi/libsignal v0.2.1 // indirect - go.mau.fi/util v0.9.6 // indirect - golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a // indirect - golang.org/x/net v0.50.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.67.6 // indirect modernc.org/mathutil v1.7.1 // indirect From 5f10eb55ed7e33e80016b225a5b9a70e72f09a51 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:16:17 +0000 Subject: [PATCH 05/29] Revert unintended go.mod changes Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/4500974b-9ba5-4885-ad0a-fa7bb708545a Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- go.mod | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b65afe0..d070d98 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,8 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 github.com/rs/zerolog v1.34.0 go.mau.fi/mautrix-gmessages v0.2601.0 - go.mau.fi/util v0.9.6 go.mau.fi/whatsmeow v0.0.0-20260327181659-02ec817e7cf4 - golang.org/x/crypto v0.48.0 - golang.org/x/net v0.50.0 golang.org/x/term v0.40.0 - google.golang.org/protobuf v1.36.11 modernc.org/sqlite v1.44.3 rsc.io/qr v0.2.0 ) @@ -38,9 +34,13 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.mau.fi/libsignal v0.2.1 // indirect + go.mau.fi/util v0.9.6 // indirect + golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.67.6 // indirect modernc.org/mathutil v1.7.1 // indirect From 2effca4539a83b94c994d61f12372365af91776c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:16:51 +0000 Subject: [PATCH 06/29] Polish DSN helper naming for Windows path check Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/4500974b-9ba5-4885-ad0a-fa7bb708545a Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- internal/whatsapplive/client.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/whatsapplive/client.go b/internal/whatsapplive/client.go index 20d2585..08d3e2c 100644 --- a/internal/whatsapplive/client.go +++ b/internal/whatsapplive/client.go @@ -228,7 +228,7 @@ func sessionStoreReadOnlyDSN(path string) string { func sessionStoreDSNWithQuery(path string, rawQuery string) string { normalizedPath := strings.ReplaceAll(path, "\\", "/") - if isNormalizedWindowsDrivePath(normalizedPath) { + if hasNormalizedWindowsDrivePrefix(normalizedPath) { normalizedPath = "/" + normalizedPath } return (&url.URL{ @@ -238,7 +238,7 @@ func sessionStoreDSNWithQuery(path string, rawQuery string) string { }).String() } -func isNormalizedWindowsDrivePath(path string) bool { +func hasNormalizedWindowsDrivePrefix(path string) bool { if len(path) < 3 { return false } From f8328a8d48c63f3cbd5a17f905f171fa9effa921 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:18:11 +0000 Subject: [PATCH 07/29] Rename Windows path helper for DSN clarity Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/4500974b-9ba5-4885-ad0a-fa7bb708545a Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- go.mod | 8 ++++---- internal/whatsapplive/client.go | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index d070d98..b65afe0 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,12 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 github.com/rs/zerolog v1.34.0 go.mau.fi/mautrix-gmessages v0.2601.0 + go.mau.fi/util v0.9.6 go.mau.fi/whatsmeow v0.0.0-20260327181659-02ec817e7cf4 + golang.org/x/crypto v0.48.0 + golang.org/x/net v0.50.0 golang.org/x/term v0.40.0 + google.golang.org/protobuf v1.36.11 modernc.org/sqlite v1.44.3 rsc.io/qr v0.2.0 ) @@ -34,13 +38,9 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.mau.fi/libsignal v0.2.1 // indirect - go.mau.fi/util v0.9.6 // indirect - golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a // indirect - golang.org/x/net v0.50.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.67.6 // indirect modernc.org/mathutil v1.7.1 // indirect diff --git a/internal/whatsapplive/client.go b/internal/whatsapplive/client.go index 08d3e2c..b64cda3 100644 --- a/internal/whatsapplive/client.go +++ b/internal/whatsapplive/client.go @@ -228,7 +228,7 @@ func sessionStoreReadOnlyDSN(path string) string { func sessionStoreDSNWithQuery(path string, rawQuery string) string { normalizedPath := strings.ReplaceAll(path, "\\", "/") - if hasNormalizedWindowsDrivePrefix(normalizedPath) { + if isWindowsAbsolutePath(normalizedPath) { normalizedPath = "/" + normalizedPath } return (&url.URL{ @@ -238,7 +238,7 @@ func sessionStoreDSNWithQuery(path string, rawQuery string) string { }).String() } -func hasNormalizedWindowsDrivePrefix(path string) bool { +func isWindowsAbsolutePath(path string) bool { if len(path) < 3 { return false } From 785c4a6790d05206ff0beb5908ceeedc763cb04c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:18:20 +0000 Subject: [PATCH 08/29] Revert go.mod churn from local toolchain Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/4500974b-9ba5-4885-ad0a-fa7bb708545a Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- go.mod | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b65afe0..d070d98 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,8 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 github.com/rs/zerolog v1.34.0 go.mau.fi/mautrix-gmessages v0.2601.0 - go.mau.fi/util v0.9.6 go.mau.fi/whatsmeow v0.0.0-20260327181659-02ec817e7cf4 - golang.org/x/crypto v0.48.0 - golang.org/x/net v0.50.0 golang.org/x/term v0.40.0 - google.golang.org/protobuf v1.36.11 modernc.org/sqlite v1.44.3 rsc.io/qr v0.2.0 ) @@ -38,9 +34,13 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.mau.fi/libsignal v0.2.1 // indirect + go.mau.fi/util v0.9.6 // indirect + golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.67.6 // indirect modernc.org/mathutil v1.7.1 // indirect From 271780d737811843e9b8bb169d5aecf3a4cd9ce4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:35:42 +0000 Subject: [PATCH 09/29] Skip iMessage local sync outside darwin Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/86acf90b-56f8-45a6-934b-c55cd4979791 Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- cmd/serve.go | 12 +++++++++--- cmd/serve_test.go | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/cmd/serve.go b/cmd/serve.go index fdb7f62..a7f0b91 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -237,9 +237,11 @@ func RunServe(logger zerolog.Logger, args ...string) error { }).ImportFromDB(store) }) } - syncPlatform("imessage", "iMessage sync complete", func(store *db.Store) (*importer.ImportResult, error) { - return (&importer.IMessage{MyName: identityName}).ImportFromDB(store) - }) + if iMessageSyncSupported() { + syncPlatform("imessage", "iMessage sync complete", func(store *db.Store) (*importer.ImportResult, error) { + return (&importer.IMessage{MyName: identityName}).ImportFromDB(store) + }) + } if changed { events.PublishConversations() events.PublishMessages("") @@ -508,6 +510,10 @@ func macOSNotificationsEnabled(interactive bool) bool { return strings.EqualFold(runtimeGOOS(), "darwin") } +func iMessageSyncSupported() bool { + return strings.EqualFold(runtimeGOOS(), "darwin") +} + func publicHost(host string) string { switch host { case "", "0.0.0.0", "::", "[::]": diff --git a/cmd/serve_test.go b/cmd/serve_test.go index bbd6455..56b1efd 100644 --- a/cmd/serve_test.go +++ b/cmd/serve_test.go @@ -88,6 +88,23 @@ func TestMacOSNotificationsEnabled(t *testing.T) { }) } +func TestIMessageSyncSupported(t *testing.T) { + originalGOOS := runtimeGOOS + t.Cleanup(func() { + runtimeGOOS = originalGOOS + }) + + runtimeGOOS = func() string { return "darwin" } + if !iMessageSyncSupported() { + t.Fatal("expected iMessage sync to be supported on darwin") + } + + runtimeGOOS = func() string { return "windows" } + if iMessageSyncSupported() { + t.Fatal("expected iMessage sync to be unsupported on windows") + } +} + func TestParseServeOptions(t *testing.T) { t.Run("defaults to normal serve", func(t *testing.T) { opts, err := parseServeOptions(nil) From 20c633cadabfbfaa8113aced857945fc9b797ffd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:36:57 +0000 Subject: [PATCH 10/29] Refactor darwin checks for iMessage sync gating Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/86acf90b-56f8-45a6-934b-c55cd4979791 Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- cmd/serve.go | 6 +++++- go.mod | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cmd/serve.go b/cmd/serve.go index a7f0b91..3f22677 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -507,10 +507,14 @@ func macOSNotificationsEnabled(interactive bool) bool { if !interactive { return false } - return strings.EqualFold(runtimeGOOS(), "darwin") + return isDarwin() } func iMessageSyncSupported() bool { + return isDarwin() +} + +func isDarwin() bool { return strings.EqualFold(runtimeGOOS(), "darwin") } diff --git a/go.mod b/go.mod index d070d98..b65afe0 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,12 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 github.com/rs/zerolog v1.34.0 go.mau.fi/mautrix-gmessages v0.2601.0 + go.mau.fi/util v0.9.6 go.mau.fi/whatsmeow v0.0.0-20260327181659-02ec817e7cf4 + golang.org/x/crypto v0.48.0 + golang.org/x/net v0.50.0 golang.org/x/term v0.40.0 + google.golang.org/protobuf v1.36.11 modernc.org/sqlite v1.44.3 rsc.io/qr v0.2.0 ) @@ -34,13 +38,9 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.mau.fi/libsignal v0.2.1 // indirect - go.mau.fi/util v0.9.6 // indirect - golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a // indirect - golang.org/x/net v0.50.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.67.6 // indirect modernc.org/mathutil v1.7.1 // indirect From 9de9cdad22fff3ea9b45a2fac55e8d9af7c5d75d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:37:29 +0000 Subject: [PATCH 11/29] Revert unintended go.mod churn Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/86acf90b-56f8-45a6-934b-c55cd4979791 Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- go.mod | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b65afe0..d070d98 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,8 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 github.com/rs/zerolog v1.34.0 go.mau.fi/mautrix-gmessages v0.2601.0 - go.mau.fi/util v0.9.6 go.mau.fi/whatsmeow v0.0.0-20260327181659-02ec817e7cf4 - golang.org/x/crypto v0.48.0 - golang.org/x/net v0.50.0 golang.org/x/term v0.40.0 - google.golang.org/protobuf v1.36.11 modernc.org/sqlite v1.44.3 rsc.io/qr v0.2.0 ) @@ -38,9 +34,13 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.mau.fi/libsignal v0.2.1 // indirect + go.mau.fi/util v0.9.6 // indirect + golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.67.6 // indirect modernc.org/mathutil v1.7.1 // indirect From 83cf54ca24d32a16b420cba9c9863718ec9a0d10 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:38:56 +0000 Subject: [PATCH 12/29] Gate iMessage local sync to macOS in `serve` to eliminate unsupported-platform warnings Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/86acf90b-56f8-45a6-934b-c55cd4979791 Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- go.mod | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index d070d98..b65afe0 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,12 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 github.com/rs/zerolog v1.34.0 go.mau.fi/mautrix-gmessages v0.2601.0 + go.mau.fi/util v0.9.6 go.mau.fi/whatsmeow v0.0.0-20260327181659-02ec817e7cf4 + golang.org/x/crypto v0.48.0 + golang.org/x/net v0.50.0 golang.org/x/term v0.40.0 + google.golang.org/protobuf v1.36.11 modernc.org/sqlite v1.44.3 rsc.io/qr v0.2.0 ) @@ -34,13 +38,9 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.mau.fi/libsignal v0.2.1 // indirect - go.mau.fi/util v0.9.6 // indirect - golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a // indirect - golang.org/x/net v0.50.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.67.6 // indirect modernc.org/mathutil v1.7.1 // indirect From fc041692bcd1b760e0972002d8ec7cb0d2d983a9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:54:50 +0000 Subject: [PATCH 13/29] Add sidebar Platforms button in web UI Agent-Logs-Url: https://github.com/chz160/openmessage/sessions/6b76c7c4-32a9-4608-9343-1576c96fec7b Co-authored-by: chz160 <3420276+chz160@users.noreply.github.com> --- internal/web/static/index.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/web/static/index.html b/internal/web/static/index.html index 8c50a61..0f67e0b 100644 --- a/internal/web/static/index.html +++ b/internal/web/static/index.html @@ -4041,6 +4041,9 @@