From 9001ec26314d92e11fb4e910db83b88d8e86033d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2026 19:33:04 +0000 Subject: [PATCH 1/3] chore(deps): update go-indirect --- go.mod | 8 ++++---- go.sum | 8 ++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 3575f51c..9e580064 100644 --- a/go.mod +++ b/go.mod @@ -65,7 +65,7 @@ require ( github.com/clipperhouse/displaywidth v0.11.0 // indirect github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/dlclark/regexp2 v1.12.0 // indirect - github.com/dlclark/regexp2/v2 v2.10.1 // indirect + github.com/dlclark/regexp2/v2 v2.11.0 // indirect github.com/felixge/httpsnoop v1.1.0 // indirect github.com/gabriel-vasile/mimetype v1.4.16 // indirect github.com/go-logr/logr v1.4.4 // indirect @@ -128,10 +128,10 @@ require ( go.yaml.in/yaml/v3 v3.0.5 // indirect golang.org/x/net v0.61.0 // indirect golang.org/x/sync v0.24.0 // indirect - google.golang.org/api v0.308.0 // indirect + google.golang.org/api v0.309.0 // indirect google.golang.org/genai v1.76.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b // indirect - google.golang.org/grpc v1.84.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20261026165753-2ffab32bce7e // indirect + google.golang.org/grpc v1.85.0 // indirect google.golang.org/protobuf v1.36.12 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.79.0 // indirect diff --git a/go.sum b/go.sum index 1d83c510..f0f45f73 100644 --- a/go.sum +++ b/go.sum @@ -118,6 +118,8 @@ github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dlclark/regexp2/v2 v2.10.1 h1:OfLIsGwI1ROq2rHdukCvJzojKjWiEIawRTr5Hqdzd5w= github.com/dlclark/regexp2/v2 v2.10.1/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU= +github.com/dlclark/regexp2/v2 v2.11.0 h1:z5uRPHav+eTVpoffDSuUP2KPS4f1ONZaPDK73S8HA0w= +github.com/dlclark/regexp2/v2 v2.11.0/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dustin/go-humanize v1.1.0 h1:dbKTrvD0klcbBV/h4AWJdMuZogJACoMlvWIWZ5b2xWg= @@ -341,6 +343,8 @@ gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/api v0.308.0 h1:iGb+4qT3nVb3uuIzwor3yP2nyu+rMZr31PvLFiRNJQk= google.golang.org/api v0.308.0/go.mod h1:4XMH+b/ZEfuTbK7FnrFRY9c4xfFHVflGTKuy/i5wUmE= +google.golang.org/api v0.309.0 h1:DXP86di4cL3R3R6aUrJNUNthav2djJ99QbSOrN63238= +google.golang.org/api v0.309.0/go.mod h1:4XMH+b/ZEfuTbK7FnrFRY9c4xfFHVflGTKuy/i5wUmE= google.golang.org/genai v1.76.0 h1:dCgbEro4Qwy0EoLaH/yuDfiBat0mrvksY9pz8YtsQGk= google.golang.org/genai v1.76.0/go.mod h1:2j40fGpqPPIZNjaDKmjGGjYwCJi6Nm2ofmyP65GnqtY= google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941 h1:CXq2XEi5aEyLjjPZIwqrmQH8ZY4ctUwK7uyAx3mjX/U= @@ -349,8 +353,12 @@ google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941 h1: google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941/go.mod h1:AuGAdi9KnXss7xbLxIKhCvk+Ro/SxpET/iS45DNYN+M= google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b h1:6WNWHZk91dp4gZ25642OALkuG1UVNZbwENJD19DnB8k= google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20261026165753-2ffab32bce7e h1:w3fy/G8OrJHYexn+u5y7hFyc8YRRIr7DCevtIOwAcGY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20261026165753-2ffab32bce7e/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc= google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0= google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0= +google.golang.org/grpc v1.85.0 h1:BPBCfuVRQ1qvBhKDOq9uvQllMvO59rKsYhXpp7Dd8vw= +google.golang.org/grpc v1.85.0/go.mod h1:0rQrOD58yjal/0EaVbGBANindixsCZNQPDV3VKtaKuQ= google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 15f2154fe98d0cf017e244c74d1d9f0fa44fc13a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 27 Oct 2026 19:37:44 +0000 Subject: [PATCH 2/3] chore: update vendorHash for Go dependency changes --- go.sum | 8 -------- nix/package.nix | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/go.sum b/go.sum index f0f45f73..09c897de 100644 --- a/go.sum +++ b/go.sum @@ -116,8 +116,6 @@ github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfv github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8= github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/dlclark/regexp2/v2 v2.10.1 h1:OfLIsGwI1ROq2rHdukCvJzojKjWiEIawRTr5Hqdzd5w= -github.com/dlclark/regexp2/v2 v2.10.1/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU= github.com/dlclark/regexp2/v2 v2.11.0 h1:z5uRPHav+eTVpoffDSuUP2KPS4f1ONZaPDK73S8HA0w= github.com/dlclark/regexp2/v2 v2.11.0/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= @@ -341,8 +339,6 @@ golang.org/x/tools v0.52.0 h1:ryxg4U63oaUYk7uOLTF37n43f4qgtGvqV4Ioit1BaEs= golang.org/x/tools v0.52.0/go.mod h1:ItcP5UNaVGG+Yc4eIYmaFLNJ4soEopkx5Y2d4lcEurs= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.308.0 h1:iGb+4qT3nVb3uuIzwor3yP2nyu+rMZr31PvLFiRNJQk= -google.golang.org/api v0.308.0/go.mod h1:4XMH+b/ZEfuTbK7FnrFRY9c4xfFHVflGTKuy/i5wUmE= google.golang.org/api v0.309.0 h1:DXP86di4cL3R3R6aUrJNUNthav2djJ99QbSOrN63238= google.golang.org/api v0.309.0/go.mod h1:4XMH+b/ZEfuTbK7FnrFRY9c4xfFHVflGTKuy/i5wUmE= google.golang.org/genai v1.76.0 h1:dCgbEro4Qwy0EoLaH/yuDfiBat0mrvksY9pz8YtsQGk= @@ -351,12 +347,8 @@ google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941 h1:CXq2XEi5aEyLjjP google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941/go.mod h1:3gK0ehnhP0V7/x3ypGoLyT3d0n6TSi/EcsphIjHrcz4= google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941 h1:DS/w3N8rsfrwxwgGSj6WhMsPo7aNQGmDx74J81zd0NQ= google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941/go.mod h1:AuGAdi9KnXss7xbLxIKhCvk+Ro/SxpET/iS45DNYN+M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b h1:6WNWHZk91dp4gZ25642OALkuG1UVNZbwENJD19DnB8k= -google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc= google.golang.org/genproto/googleapis/rpc v0.0.0-20261026165753-2ffab32bce7e h1:w3fy/G8OrJHYexn+u5y7hFyc8YRRIr7DCevtIOwAcGY= google.golang.org/genproto/googleapis/rpc v0.0.0-20261026165753-2ffab32bce7e/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc= -google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0= -google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0= google.golang.org/grpc v1.85.0 h1:BPBCfuVRQ1qvBhKDOq9uvQllMvO59rKsYhXpp7Dd8vw= google.golang.org/grpc v1.85.0/go.mod h1:0rQrOD58yjal/0EaVbGBANindixsCZNQPDV3VKtaKuQ= google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= diff --git a/nix/package.nix b/nix/package.nix index 1c7016c8..c39995b3 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -14,7 +14,7 @@ buildGoModule { inherit pname version; src = gitignoreSource ../.; subPackages = [ "cmd/micasa" ]; - vendorHash = "sha256-memKrHsqPYYMv6cs+EDnsCP0gBxwWaZVluHn3AbkXSs="; + vendorHash = "sha256-HJvPGLyMEvceg0wZ0M3yCklrLob7kxYMZBWQp2KXn30="; env.CGO_ENABLED = 0; preCheck = '' export HOME="$(mktemp -d)" From 09864e64066ffd82d8ce189c23341f51145241b6 Mon Sep 17 00:00:00 2001 From: Phillip Cloud <417981+cpcloud@users.noreply.github.com> Date: Wed, 28 Oct 2026 07:54:06 -0400 Subject: [PATCH 3/3] test(app): keep double-click tests inside the click threshold TestDashboardDoubleClickJumps failed on the macOS CI runner, and TestDoubleClickRowDrillsDown fails the same way locally. Both tests send two clicks and expect the second to count as a double-click, which needs the clicks less than 300ms apart in real time. Between the clicks, each test rendered the view again and waited for the zone tracker to record the new zones. Under -race with parallel tests that step alone took 90-770ms, so the second click often arrived after the threshold. The tests measured render speed, not double-click handling. Row positions do not move after the first click, so the second click now reuses the zone found before the first one. The handler still uses the real clock and the real threshold, and both tests still fail when the threshold is broken. This failure appeared on the go-indirect dependency update. With regexp2 v2.11.0 the tests failed 8 of 80 runs locally and with v2.10.1 none did, but CPU profiles show no regexp2 work during these tests. The upgrade only made the existing timing race easier to lose, so the dependency stays at v2.11.0. Generated with Claude Code (claude-opus-5-5) Co-Authored-By: Claude Opus 5.5 --- internal/app/mouse_test.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/internal/app/mouse_test.go b/internal/app/mouse_test.go index 548f843d..c2a2db4b 100644 --- a/internal/app/mouse_test.go +++ b/internal/app/mouse_test.go @@ -511,8 +511,9 @@ func TestDoubleClickRowDrillsDown(t *testing.T) { sendClick(m, colX, z.StartY) assert.False(t, m.inDetail(), "single click should not trigger drilldown") - // Second click within threshold triggers drilldown. - z = requireZone(t, m, "row-0") + // Second click within threshold triggers drilldown. Reuse the zone from + // before the first click: rendering again in between takes longer than + // doubleClickThreshold under -race on a loaded runner. sendClick(m, colX, z.StartY) assert.True(t, m.inDetail(), "double-click should trigger drilldown") } @@ -693,8 +694,9 @@ func TestDashboardDoubleClickJumps(t *testing.T) { require.True(t, m.dashboardVisible(), "single click should keep dashboard open") require.Equal(t, jumpIdx, m.dash.cursor) - // Second click within threshold jumps. - z = requireZone(t, m, fmt.Sprintf("dash-%d", jumpIdx)) + // Second click within threshold jumps. Reuse the zone from before the + // first click: rendering again in between takes longer than + // doubleClickThreshold under -race on a loaded runner. sendClick(m, z.StartX, z.StartY) assert.False(t, m.dashboardVisible(), "double-click should close dashboard and jump") }