a7f2fbecf512743f4eac6dffc4ddfab05cbc5079
- Author
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Committer
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/cmd/soft/browse/browse.go b/cmd/soft/browse/browse.go
2index ecb3d5302d44aebee5147d5540477bd79d4ba6c6..799907b026585b3efce26a1a4ec23a3ba20f392c 100644
3--- a/cmd/soft/browse/browse.go
4+++ b/cmd/soft/browse/browse.go
5@@ -5,9 +5,9 @@ import (
6 "path/filepath"
7 "time"
8
9- "github.com/charmbracelet/bubbles/v2/key"
10- tea "github.com/charmbracelet/bubbletea/v2"
11- "github.com/charmbracelet/lipgloss/v2"
12+ "charm.land/bubbles/v2/key"
13+ tea "charm.land/bubbletea/v2"
14+ "charm.land/lipgloss/v2"
15 "github.com/charmbracelet/soft-serve/git"
16 "github.com/charmbracelet/soft-serve/pkg/proto"
17 "github.com/charmbracelet/soft-serve/pkg/ui/common"
18@@ -58,10 +58,7 @@ var Command = &cobra.Command{
19 }
20
21 m.footer = footer.New(c, m)
22- p := tea.NewProgram(m,
23- tea.WithAltScreen(),
24- tea.WithMouseCellMotion(),
25- )
26+ p := tea.NewProgram(m)
27
28 _, err = p.Run()
29 return err
30@@ -202,7 +199,11 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
31 }
32
33 // View implements tea.Model.
34-func (m *model) View() string {
35+func (m *model) View() tea.View {
36+ var v tea.View
37+ v.AltScreen = true
38+ v.MouseMode = tea.MouseModeCellMotion
39+
40 style := m.common.Styles.App
41 wm, hm := style.GetHorizontalFrameSize(), style.GetVerticalFrameSize()
42 if m.showFooter {
43@@ -230,7 +231,8 @@ func (m *model) View() string {
44 view = lipgloss.JoinVertical(lipgloss.Left, view, m.footer.View())
45 }
46
47- return m.common.Zone.Scan(style.Render(view))
48+ v.Content = m.common.Zone.Scan(style.Render(view))
49+ return v
50 }
51
52 type repository struct {
53diff --git a/cmd/soft/hook/hook.go b/cmd/soft/hook/hook.go
54index 8a6fb87dc4ca64a9eaf0da1a1ef7fdaf5a8c7faa..a16cad6d6728886df7de26be436170b28b6ec350 100644
55--- a/cmd/soft/hook/hook.go
56+++ b/cmd/soft/hook/hook.go
57@@ -12,7 +12,7 @@ import (
58 "path/filepath"
59 "strings"
60
61- "github.com/charmbracelet/log/v2"
62+ "charm.land/log/v2"
63 "github.com/charmbracelet/soft-serve/cmd"
64 "github.com/charmbracelet/soft-serve/pkg/backend"
65 "github.com/charmbracelet/soft-serve/pkg/config"
66diff --git a/cmd/soft/main.go b/cmd/soft/main.go
67index 9b248fd37aa641d6d0707004413bf53ad959b4aa..14fdcd6b63286d12e8365f62bb69e003c2fd75a7 100644
68--- a/cmd/soft/main.go
69+++ b/cmd/soft/main.go
70@@ -8,7 +8,7 @@ import (
71 "strconv"
72
73 "github.com/charmbracelet/colorprofile"
74- "github.com/charmbracelet/log/v2"
75+ "charm.land/log/v2"
76 "github.com/charmbracelet/soft-serve/cmd/soft/admin"
77 "github.com/charmbracelet/soft-serve/cmd/soft/browse"
78 "github.com/charmbracelet/soft-serve/cmd/soft/hook"
79diff --git a/cmd/soft/serve/server.go b/cmd/soft/serve/server.go
80index 56402f13e0182a0a5e9c0b089727cd398174a731..4260f7576da3fccc12f5b296255f70490ed72682 100644
81--- a/cmd/soft/serve/server.go
82+++ b/cmd/soft/serve/server.go
83@@ -6,7 +6,7 @@ import (
84 "fmt"
85 "net/http"
86
87- "github.com/charmbracelet/log/v2"
88+ "charm.land/log/v2"
89
90 "github.com/charmbracelet/soft-serve/pkg/backend"
91 "github.com/charmbracelet/soft-serve/pkg/config"
92diff --git a/go.mod b/go.mod
93index 04363831c13ef507340525c5fb893b552a399e75..0cc5c4317393a011ca2f1dfb2184955e545f3da6 100644
94--- a/go.mod
95+++ b/go.mod
96@@ -1,24 +1,24 @@
97 module github.com/charmbracelet/soft-serve
98
99-go 1.24.0
100+go 1.24.2
101
102 require (
103+ charm.land/bubbles/v2 v2.0.0-rc.1.0.20251208171859-93a004ab70c8
104+ charm.land/bubbletea/v2 v2.0.0-rc.2.0.20251216153312-819e2e89c62e
105+ charm.land/glamour/v2 v2.0.0-20251110203732-69649f93d3b1
106+ charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251205162909-7869489d8971
107+ charm.land/log/v2 v2.0.0-20251110204020-529bb77f35da
108+ charm.land/wish/v2 v2.0.0-20251118130305-6cd7463a7b97
109 github.com/alecthomas/chroma/v2 v2.20.0
110- github.com/aymanbagabas/bubblezone/v2 v2.0.0-20250319214444-bb232f16d5e3
111+ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be
112 github.com/aymanbagabas/git-module v1.8.4-0.20250826192401-1f81c5471e53
113 github.com/caarlos0/duration v0.0.0-20240108180406-5d492514f3c7
114 github.com/caarlos0/env/v11 v11.3.1
115- github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250603123720-56bbc4a1ba66
116- github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.3.0.20250617194119-3f1d09f7d826
117- github.com/charmbracelet/colorprofile v0.3.2
118+ github.com/charmbracelet/colorprofile v0.4.1
119 github.com/charmbracelet/git-lfs-transfer v0.1.1-0.20240708204110-bacbfdb68d92
120- github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe
121- github.com/charmbracelet/keygen v0.5.3
122- github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.2.0.20250703152125-8e1c474f8a71
123- github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706
124- github.com/charmbracelet/ssh v0.0.0-20250128164007-98fd5ae11894
125- github.com/charmbracelet/wish/v2 v2.0.0-20250505151211-5996fc7c1f33
126- github.com/charmbracelet/x/ansi v0.10.1
127+ github.com/charmbracelet/keygen v0.5.4
128+ github.com/charmbracelet/ssh v0.0.0-20250826160808-ebfa259c7309
129+ github.com/charmbracelet/x/ansi v0.11.3
130 github.com/dustin/go-humanize v1.0.1
131 github.com/go-git/go-git/v5 v5.16.2
132 github.com/go-jose/go-jose/v3 v3.0.4
133@@ -31,6 +31,7 @@ require (
134 github.com/hashicorp/golang-lru/v2 v2.0.7
135 github.com/jmoiron/sqlx v1.4.0
136 github.com/lib/pq v1.10.9
137+ github.com/lrstanley/bubblezone/v2 v2.0.0-alpha.3
138 github.com/matryer/is v1.4.1
139 github.com/muesli/mango-cobra v1.2.0
140 github.com/muesli/reflow v0.3.0
141@@ -40,6 +41,7 @@ require (
142 github.com/rogpeppe/go-internal v1.14.1
143 github.com/sergi/go-diff v1.4.0
144 github.com/spf13/cobra v1.9.1
145+ github.com/stretchr/testify v1.10.0
146 go.uber.org/automaxprocs v1.6.0
147 golang.org/x/crypto v0.45.0
148 golang.org/x/sync v0.18.0
149@@ -48,30 +50,32 @@ require (
150 )
151
152 require (
153- github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
154 github.com/atotto/clipboard v0.1.4 // indirect
155 github.com/aymerick/douceur v0.2.0 // indirect
156 github.com/beorn7/perks v1.0.1 // indirect
157 github.com/cespare/xxhash/v2 v2.3.0 // indirect
158- github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa // indirect
159- github.com/charmbracelet/x/conpty v0.1.0 // indirect
160- github.com/charmbracelet/x/errors v0.0.0-20240725160154-f9f6568126ec // indirect
161+ github.com/charmbracelet/ultraviolet v0.0.0-20251212194010-b927aa605560 // indirect
162+ github.com/charmbracelet/x/conpty v0.1.1 // indirect
163+ github.com/charmbracelet/x/errors v0.0.0-20251110184232-6ab307057ac7 // indirect
164 github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf // indirect
165- github.com/charmbracelet/x/input v0.3.5-0.20250509021451-13796e822d86 // indirect
166- github.com/charmbracelet/x/term v0.2.1 // indirect
167- github.com/charmbracelet/x/termios v0.1.0 // indirect
168- github.com/charmbracelet/x/windows v0.2.1 // indirect
169- github.com/creack/pty v1.1.21 // indirect
170+ github.com/charmbracelet/x/term v0.2.2 // indirect
171+ github.com/charmbracelet/x/termios v0.1.1 // indirect
172+ github.com/charmbracelet/x/windows v0.2.2 // indirect
173+ github.com/clipperhouse/displaywidth v0.6.1 // indirect
174+ github.com/clipperhouse/stringish v0.1.1 // indirect
175+ github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
176+ github.com/creack/pty v1.1.24 // indirect
177+ github.com/davecgh/go-spew v1.1.1 // indirect
178 github.com/dlclark/regexp2 v1.11.5 // indirect
179 github.com/felixge/httpsnoop v1.0.4 // indirect
180 github.com/git-lfs/pktline v0.0.0-20230103162542-ca444d533ef1 // indirect
181 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
182- github.com/go-logfmt/logfmt v0.6.0 // indirect
183+ github.com/go-logfmt/logfmt v0.6.1 // indirect
184 github.com/gorilla/css v1.0.1 // indirect
185 github.com/inconshreveable/mousetrap v1.1.0 // indirect
186- github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
187+ github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
188 github.com/mattn/go-isatty v0.0.20 // indirect
189- github.com/mattn/go-runewidth v0.0.16 // indirect
190+ github.com/mattn/go-runewidth v0.0.19 // indirect
191 github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2 // indirect
192 github.com/microcosm-cc/bluemonday v1.0.27 // indirect
193 github.com/muesli/cancelreader v0.2.2 // indirect
194@@ -79,6 +83,7 @@ require (
195 github.com/muesli/mango-pflag v0.1.0 // indirect
196diff --git a/go.sum b/go.sum
197index ec6a1d3bb84833de60f35a1a95d44f56ae53b034..afcfbffbe5e8cd3e22b7bc32f05835bc73665f4f 100644
198--- a/go.sum
199+++ b/go.sum
200@@ -1,3 +1,15 @@
201+charm.land/bubbles/v2 v2.0.0-rc.1.0.20251208171859-93a004ab70c8 h1:mBFNMn9ABYmHqHhYlaWugfFET6mZs2w8tD9/cDlUqeQ=
202+charm.land/bubbles/v2 v2.0.0-rc.1.0.20251208171859-93a004ab70c8/go.mod h1:5AbN6cEd/47gkEf8TgiQ2O3RZ5QxMS14l9W+7F9fPC4=
203+charm.land/bubbletea/v2 v2.0.0-rc.2.0.20251216153312-819e2e89c62e h1:tXwTmgGpwZT7ParKF5xbEQBVjM2e1uKhKi/GpfU3mYQ=
204+charm.land/bubbletea/v2 v2.0.0-rc.2.0.20251216153312-819e2e89c62e/go.mod h1:pDM18flq3Z4njKZPA3zCvyVSSIJbMcoqlE82BdGUtL8=
205+charm.land/glamour/v2 v2.0.0-20251110203732-69649f93d3b1 h1:9q4+yyU7105T3OrOx0csMyKnw89yMSijJ+rVld/Z2ek=
206+charm.land/glamour/v2 v2.0.0-20251110203732-69649f93d3b1/go.mod h1:J3kVhY6oHXZq5f+8vC3hmDO95fEvbqj3z7xDwxrfzU8=
207+charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251205162909-7869489d8971 h1:xZFcNsJMiIDbFtWRyDmkKNk1sjojfaom4Zoe0cyH/8c=
208+charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251205162909-7869489d8971/go.mod h1:i61Y3FmdbcBNSKa+pKB3DaE4uVQmBLMs/xlvRyHcXAE=
209+charm.land/log/v2 v2.0.0-20251110204020-529bb77f35da h1:vZa/Ow0uLclpfaDY0ubjzE+B0eLQqi2zanmpeALanow=
210+charm.land/log/v2 v2.0.0-20251110204020-529bb77f35da/go.mod h1:Tj12StbPc4GwksDF6XwhC9wdXouinIVxRGKKmmmzdSU=
211+charm.land/wish/v2 v2.0.0-20251118130305-6cd7463a7b97 h1:71lxKLcPBqntp/99s+nD2/UHyd7GIzOOW9TFIzy1y9A=
212+charm.land/wish/v2 v2.0.0-20251118130305-6cd7463a7b97/go.mod h1:FsbVEDgo+gQ86lu5Aqe8D1V6UtOF7U1J8iKQKycdbc0=
213 filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
214 filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
215 github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
216@@ -10,12 +22,10 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI
217 github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
218 github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
219 github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
220-github.com/aymanbagabas/bubblezone/v2 v2.0.0-20250319214444-bb232f16d5e3 h1:1z2ihw0YUYUhNmRaavyXvG9ZU/9Tj0vj6sA3z5DFIJ8=
221-github.com/aymanbagabas/bubblezone/v2 v2.0.0-20250319214444-bb232f16d5e3/go.mod h1:sJwqZoo/BSKSizmr0pSJ758RuRsnjlkrOaxPtwlWtOs=
222 github.com/aymanbagabas/git-module v1.8.4-0.20250826192401-1f81c5471e53 h1:KfKp+gVsQtuM9qb8Putvkx1jjAWqlvI1vdv5x9hdFoQ=
223 github.com/aymanbagabas/git-module v1.8.4-0.20250826192401-1f81c5471e53/go.mod h1:d4gQ7/3/S2sPq4NnKdtAgUOVr6XtLpWFtxyVV5/+76U=
224-github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8=
225-github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA=
226+github.com/aymanbagabas/go-udiff v0.3.1 h1:LV+qyBQ2pqe0u42ZsUEtPiCaUoqgA9gYRDs3vj1nolY=
227+github.com/aymanbagabas/go-udiff v0.3.1/go.mod h1:G0fsKmG+P6ylD0r6N/KgQD/nWzgfnl8ZBcNLgcbrw8E=
228 github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
229 github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
230 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
231@@ -26,49 +36,41 @@ github.com/caarlos0/env/v11 v11.3.1 h1:cArPWC15hWmEt+gWk7YBi7lEXTXCvpaSdCiZE2X5m
232 github.com/caarlos0/env/v11 v11.3.1/go.mod h1:qupehSf/Y0TUTsxKywqRt/vJjN5nz6vauiYEUUr8P4U=
233 github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
234 github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
235-github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250603123720-56bbc4a1ba66 h1:LDUnLzW0DZ4riy4juBAXJWeE94vvVChgZwzhZL/4wuk=
236-github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250603123720-56bbc4a1ba66/go.mod h1:6HamsBKWqEC/FVHuQMHgQL+knPyvHH55HwJDHl/adMw=
237-github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.3.0.20250617194119-3f1d09f7d826 h1:pQxCWMojVjHePqGzWsANhplourZYsD6AuR6eR2Hi5yc=
238-github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.3.0.20250617194119-3f1d09f7d826/go.mod h1:bfzSaUDPMKrWDjD6wo/ato9lfDdEX83rZgwcXHYWJ98=
239-github.com/charmbracelet/colorprofile v0.3.2 h1:9J27WdztfJQVAQKX2WOlSSRB+5gaKqqITmrvb1uTIiI=
240-github.com/charmbracelet/colorprofile v0.3.2/go.mod h1:mTD5XzNeWHj8oqHb+S1bssQb7vIHbepiebQ2kPKVKbI=
241+github.com/charmbracelet/colorprofile v0.4.1 h1:a1lO03qTrSIRaK8c3JRxJDZOvhvIeSco3ej+ngLk1kk=
242+github.com/charmbracelet/colorprofile v0.4.1/go.mod h1:U1d9Dljmdf9DLegaJ0nGZNJvoXAhayhmidOdcBwAvKk=
243 github.com/charmbracelet/git-lfs-transfer v0.1.1-0.20240708204110-bacbfdb68d92 h1:KtQlsiHfY3K4AoIEh0yUE/wCLHteZ9EzV1hKmx+p7U8=
244 github.com/charmbracelet/git-lfs-transfer v0.1.1-0.20240708204110-bacbfdb68d92/go.mod h1:UrXUCm3xLQkq15fu7qlXHUMlrhdlXHoi13KH2Dfiits=
245-github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe h1:i6ce4CcAlPpTj2ER69m1DBeLZ3RRcHnKExuwhKa3GfY=
246-github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe/go.mod h1:p3Q+aN4eQKeM5jhrmXPMgPrlKbmc59rWSnMsSA3udhk=
247-github.com/charmbracelet/keygen v0.5.3 h1:2MSDC62OUbDy6VmjIE2jM24LuXUvKywLCmaJDmr/Z/4=
248-github.com/charmbracelet/keygen v0.5.3/go.mod h1:TcpNoMAO5GSmhx3SgcEMqCrtn8BahKhB8AlwnLjRUpk=
249-github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.2.0.20250703152125-8e1c474f8a71 h1:X0tsNa2UHCKNw+illiavosasVzqioRo32SRV35iwr2I=
250-github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.2.0.20250703152125-8e1c474f8a71/go.mod h1:EJWvaCrhOhNGVZMvcjc0yVryl4qqpMs8tz0r9WyEkdQ=
251-github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706 h1:WkwO6Ks3mSIGnGuSdKl9qDSyfbYK50z2wc2gGMggegE=
252-github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706/go.mod h1:mjJGp00cxcfvD5xdCa+bso251Jt4owrQvuimJtVmEmM=
253-github.com/charmbracelet/ssh v0.0.0-20250128164007-98fd5ae11894 h1:Ffon9TbltLGBsT6XE//YvNuu4OAaThXioqalhH11xEw=
254-github.com/charmbracelet/ssh v0.0.0-20250128164007-98fd5ae11894/go.mod h1:hg+I6gvlMl16nS9ZzQNgBIrrCasGwEw0QiLsDcP01Ko=
255-github.com/charmbracelet/wish/v2 v2.0.0-20250505151211-5996fc7c1f33 h1:/TlxP6Lw9Z7NJCQ7TSbuvfO3/AL0UXGDPwH1zO9pV8U=
256-github.com/charmbracelet/wish/v2 v2.0.0-20250505151211-5996fc7c1f33/go.mod h1:Tssk2d4IKqV3tNiPgwrYSvJMQu+nN9J4JlGmYaXpiR4=
257-github.com/charmbracelet/x/ansi v0.10.1 h1:rL3Koar5XvX0pHGfovN03f5cxLbCF2YvLeyz7D2jVDQ=
258-github.com/charmbracelet/x/ansi v0.10.1/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
259-github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa h1:lphz0Z3rsiOtMYiz8axkT24i9yFiueDhJbzyNUADmME=
260-github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa/go.mod h1:xBlh2Yi3DL3zy/2n15kITpg0YZardf/aa/hgUaIM6Rk=
261-github.com/charmbracelet/x/conpty v0.1.0 h1:4zc8KaIcbiL4mghEON8D72agYtSeIgq8FSThSPQIb+U=
262-github.com/charmbracelet/x/conpty v0.1.0/go.mod h1:rMFsDJoDwVmiYM10aD4bH2XiRgwI7NYJtQgl5yskjEQ=
263-github.com/charmbracelet/x/errors v0.0.0-20240725160154-f9f6568126ec h1:O8c7pFFK0imuHH5JBqv5smlbVoFn4CZKGjtvCQKu1WE=
264-github.com/charmbracelet/x/errors v0.0.0-20240725160154-f9f6568126ec/go.mod h1:2P0UgXMEa6TsToMSuFqKFQR+fZTO9CNGUNokkPatT/0=
265-github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a h1:FsHEJ52OC4VuTzU8t+n5frMjLvpYWEznSr/u8tnkCYw=
266-github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
267+github.com/charmbracelet/keygen v0.5.4 h1:XQYgf6UEaTGgQSSmiPpIQ78WfseNQp4Pz8N/c1OsrdA=
268+github.com/charmbracelet/keygen v0.5.4/go.mod h1:t4oBRr41bvK7FaJsAaAQhhkUuHslzFXVjOBwA55CZNM=
269+github.com/charmbracelet/ssh v0.0.0-20250826160808-ebfa259c7309 h1:dCVbCRRtg9+tsfiTXTp0WupDlHruAXyp+YoxGVofHHc=
270+github.com/charmbracelet/ssh v0.0.0-20250826160808-ebfa259c7309/go.mod h1:R9cISUs5kAH4Cq/rguNbSwcR+slE5Dfm8FEs//uoIGE=
271+github.com/charmbracelet/ultraviolet v0.0.0-20251212194010-b927aa605560 h1:j3PW2hypGoPKBy3ooKzW0TFxaxhyHK3NbkLLn4KeRFc=
272+github.com/charmbracelet/ultraviolet v0.0.0-20251212194010-b927aa605560/go.mod h1:VWATWLRwYP06VYCEur7FsNR2B1xAo7Y+xl1PTbd1ePc=
273+github.com/charmbracelet/x/ansi v0.11.3 h1:6DcVaqWI82BBVM/atTyq6yBoRLZFBsnoDoX9GCu2YOI=
274+github.com/charmbracelet/x/ansi v0.11.3/go.mod h1:yI7Zslym9tCJcedxz5+WBq+eUGMJT0bM06Fqy1/Y4dI=
275+github.com/charmbracelet/x/conpty v0.1.1 h1:s1bUxjoi7EpqiXysVtC+a8RrvPPNcNvAjfi4jxsAuEs=
276+github.com/charmbracelet/x/conpty v0.1.1/go.mod h1:OmtR77VODEFbiTzGE9G1XiRJAga6011PIm4u5fTNZpk=
277+github.com/charmbracelet/x/errors v0.0.0-20251110184232-6ab307057ac7 h1:4EG8pCHK5fa8dIxv97VHC8hdkJAz6QNm1WB9BuD/WhY=
278+github.com/charmbracelet/x/errors v0.0.0-20251110184232-6ab307057ac7/go.mod h1:O2BTD/aMVQDmrvqroIO3fB6zXUuU07ZpVt21QTmZjRg=
279+github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA=
280+github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f/go.mod h1:IfZAMTHB6XkZSeXUqriemErjAWCCzT0LwjKFYCZyw0I=
281 github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf h1:rLG0Yb6MQSDKdB52aGX55JT1oi0P0Kuaj7wi1bLUpnI=
282 github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf/go.mod h1:B3UgsnsBZS/eX42BlaNiJkD1pPOUa+oF1IYC6Yd2CEU=
283-github.com/charmbracelet/x/input v0.3.5-0.20250509021451-13796e822d86 h1:BxAEmOBIDajkgao3EsbBxKQCYvgYPGdT62WASLvtf4Y=
284-github.com/charmbracelet/x/input v0.3.5-0.20250509021451-13796e822d86/go.mod h1:62Rp/6EtTxoeJDSdtpA3tJp3y3ZRpsiekBSje+K8htA=
285-github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
286-github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
287-github.com/charmbracelet/x/termios v0.1.0 h1:y4rjAHeFksBAfGbkRDmVinMg7x7DELIGAFbdNvxg97k=
288-github.com/charmbracelet/x/termios v0.1.0/go.mod h1:H/EVv/KRnrYjz+fCYa9bsKdqF3S8ouDK0AZEbG7r+/U=
289-github.com/charmbracelet/x/windows v0.2.1 h1:3x7vnbpQrjpuq/4L+I4gNsG5htYoCiA5oe9hLjAij5I=
290-github.com/charmbracelet/x/windows v0.2.1/go.mod h1:ptZp16h40gDYqs5TSawSVW+yiLB13j4kSMA0lSCHL0M=
291+github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
292+github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
293+github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY=
294+github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo=
295+github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM=
296+github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k=
297+github.com/clipperhouse/displaywidth v0.6.1 h1:/zMlAezfDzT2xy6acHBzwIfyu2ic0hgkT83UX5EY2gY=
298+github.com/clipperhouse/displaywidth v0.6.1/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o=
299+github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
300diff --git a/pkg/backend/auth.go b/pkg/backend/auth.go
301index 7c8158f6d1ad67a580c2f6216b4ad02664f3a94b..5309e410e588ebda1fff86563afcd058794ac1b9 100644
302--- a/pkg/backend/auth.go
303+++ b/pkg/backend/auth.go
304@@ -5,7 +5,7 @@ import (
305 "crypto/sha256"
306 "encoding/hex"
307
308- "github.com/charmbracelet/log/v2"
309+ "charm.land/log/v2"
310 "golang.org/x/crypto/bcrypt"
311 )
312
313diff --git a/pkg/backend/backend.go b/pkg/backend/backend.go
314index 579d4cecbbc95118b8af451fdd8c9069d3c29e63..95d45ec2d90a0749ad7028c4b9a164f64694752a 100644
315--- a/pkg/backend/backend.go
316+++ b/pkg/backend/backend.go
317@@ -3,7 +3,7 @@ package backend
318 import (
319 "context"
320
321- "github.com/charmbracelet/log/v2"
322+ "charm.land/log/v2"
323 "github.com/charmbracelet/soft-serve/pkg/config"
324 "github.com/charmbracelet/soft-serve/pkg/db"
325 "github.com/charmbracelet/soft-serve/pkg/store"
326diff --git a/pkg/backend/webhooks.go b/pkg/backend/webhooks.go
327index d25d1cf6ec9ddd307d96ba3683ea25ff62882ff6..2fd90c2a505cd0e5b4f9526f6f685f5dae7f6ae0 100644
328--- a/pkg/backend/webhooks.go
329+++ b/pkg/backend/webhooks.go
330@@ -4,7 +4,7 @@ import (
331 "context"
332 "encoding/json"
333
334- "github.com/charmbracelet/log/v2"
335+ "charm.land/log/v2"
336 "github.com/charmbracelet/soft-serve/pkg/db"
337 "github.com/charmbracelet/soft-serve/pkg/db/models"
338 "github.com/charmbracelet/soft-serve/pkg/proto"
339diff --git a/pkg/cron/cron.go b/pkg/cron/cron.go
340index fa290a33e1e826515aeae2fbcd24e78b5a68e95d..fa5fbb2a38a9773a2aa5d108b9764763d313e0ce 100644
341--- a/pkg/cron/cron.go
342+++ b/pkg/cron/cron.go
343@@ -4,7 +4,7 @@ import (
344 "context"
345 "time"
346
347- "github.com/charmbracelet/log/v2"
348+ "charm.land/log/v2"
349 "github.com/robfig/cron/v3"
350 )
351
352diff --git a/pkg/cron/cron_test.go b/pkg/cron/cron_test.go
353index b8151db55fbbacb7444a87ad67e3f83ba87e6343..b67666b17c9628673b38ff885370f2de55dd8b1f 100644
354--- a/pkg/cron/cron_test.go
355+++ b/pkg/cron/cron_test.go
356@@ -6,7 +6,7 @@ import (
357 "fmt"
358 "testing"
359
360- "github.com/charmbracelet/log/v2"
361+ "charm.land/log/v2"
362 )
363
364 func TestCronLogger(t *testing.T) {
365diff --git a/pkg/daemon/daemon.go b/pkg/daemon/daemon.go
366index 30faadd7aac103ccf7110b36f402908f3ee67ed1..a8fcd0c91cc8188897b1fc85d6acc4f98e6007af 100644
367--- a/pkg/daemon/daemon.go
368+++ b/pkg/daemon/daemon.go
369@@ -12,7 +12,7 @@ import (
370 "sync/atomic"
371 "time"
372
373- "github.com/charmbracelet/log/v2"
374+ "charm.land/log/v2"
375 "github.com/charmbracelet/soft-serve/pkg/access"
376 "github.com/charmbracelet/soft-serve/pkg/backend"
377 "github.com/charmbracelet/soft-serve/pkg/config"
378diff --git a/pkg/db/db.go b/pkg/db/db.go
379index 7d5fc2ebea59141c5f40ff83341303792709eebf..2d27ae0ecc227324f5e2dbf32446a7f8ada818a0 100644
380--- a/pkg/db/db.go
381+++ b/pkg/db/db.go
382@@ -6,7 +6,7 @@ import (
383 "errors"
384 "fmt"
385
386- "github.com/charmbracelet/log/v2"
387+ "charm.land/log/v2"
388 "github.com/charmbracelet/soft-serve/pkg/config"
389 "github.com/jmoiron/sqlx"
390 _ "github.com/lib/pq" // postgres driver
391diff --git a/pkg/db/logger.go b/pkg/db/logger.go
392index 605ec133a82c7676c3a7315904bb09a5fb219e5b..aef9a8e17985b1c2402d75f9d4c5ca0f93dcf1f7 100644
393--- a/pkg/db/logger.go
394+++ b/pkg/db/logger.go
395@@ -5,7 +5,7 @@ import (
396 "database/sql"
397 "strings"
398
399- "github.com/charmbracelet/log/v2"
400+ "charm.land/log/v2"
401 "github.com/jmoiron/sqlx"
402 )
403
404diff --git a/pkg/db/migrate/0003_migrate_lfs_objects.go b/pkg/db/migrate/0003_migrate_lfs_objects.go
405index c89775d8ed0b5fc0f0d414179ff6c3c8f6fc4d4c..8477f23f103639ec5b944a33adaccc9c9a0177e3 100644
406--- a/pkg/db/migrate/0003_migrate_lfs_objects.go
407+++ b/pkg/db/migrate/0003_migrate_lfs_objects.go
408@@ -6,7 +6,7 @@ import (
409 "path/filepath"
410 "strconv"
411
412- "github.com/charmbracelet/log/v2"
413+ "charm.land/log/v2"
414 "github.com/charmbracelet/soft-serve/pkg/config"
415 "github.com/charmbracelet/soft-serve/pkg/db"
416 "github.com/charmbracelet/soft-serve/pkg/db/models"
417diff --git a/pkg/db/migrate/migrate.go b/pkg/db/migrate/migrate.go
418index 8273e454c9b5a8b1ac28edef580147be04dcafee..8ba8260370d5dfeaa883895444bb2cae0d19b8a3 100644
419--- a/pkg/db/migrate/migrate.go
420+++ b/pkg/db/migrate/migrate.go
421@@ -6,7 +6,7 @@ import (
422 "errors"
423 "fmt"
424
425- "github.com/charmbracelet/log/v2"
426+ "charm.land/log/v2"
427 "github.com/charmbracelet/soft-serve/pkg/db"
428 )
429
430diff --git a/pkg/git/git.go b/pkg/git/git.go
431index 7b18cf22d562ebb638520501309a196a04a86cdb..301640a14c2421c39644e7866ae0227f8b5698f4 100644
432--- a/pkg/git/git.go
433+++ b/pkg/git/git.go
434@@ -9,7 +9,7 @@ import (
435 "strings"
436
437 gitm "github.com/aymanbagabas/git-module"
438- "github.com/charmbracelet/log/v2"
439+ "charm.land/log/v2"
440 "github.com/charmbracelet/soft-serve/git"
441 "github.com/go-git/go-git/v5/plumbing/format/pktline"
442 )
443diff --git a/pkg/git/lfs.go b/pkg/git/lfs.go
444index 212ad08041a14b20d54acbd50bf8da942f3e4c9a..6a8809bd740aa3972fb3b878cfbbb70afdf6c899 100644
445--- a/pkg/git/lfs.go
446+++ b/pkg/git/lfs.go
447@@ -12,7 +12,7 @@ import (
448 "time"
449
450 "github.com/charmbracelet/git-lfs-transfer/transfer"
451- "github.com/charmbracelet/log/v2"
452+ "charm.land/log/v2"
453 "github.com/charmbracelet/soft-serve/pkg/config"
454 "github.com/charmbracelet/soft-serve/pkg/db"
455 "github.com/charmbracelet/soft-serve/pkg/db/models"
456diff --git a/pkg/git/lfs_auth.go b/pkg/git/lfs_auth.go
457index 32a8e6cba7abbc50d7499ba858bdb4ddffc9e83b..ae03a70cee80368b530d472714631024bec73ee4 100644
458--- a/pkg/git/lfs_auth.go
459+++ b/pkg/git/lfs_auth.go
460@@ -7,7 +7,7 @@ import (
461 "fmt"
462 "time"
463
464- "github.com/charmbracelet/log/v2"
465+ "charm.land/log/v2"
466 "github.com/charmbracelet/soft-serve/pkg/config"
467 "github.com/charmbracelet/soft-serve/pkg/jwk"
468 "github.com/charmbracelet/soft-serve/pkg/lfs"
469diff --git a/pkg/git/lfs_log.go b/pkg/git/lfs_log.go
470index fed14ba440aacc986c99e646fbef90e455c266b2..c9e6ac6413165e798b6bab064f9eba0c1b5dd237 100644
471--- a/pkg/git/lfs_log.go
472+++ b/pkg/git/lfs_log.go
473@@ -2,7 +2,7 @@ package git
474
475 import (
476 "github.com/charmbracelet/git-lfs-transfer/transfer"
477- "github.com/charmbracelet/log/v2"
478+ "charm.land/log/v2"
479 )
480
481 type lfsLogger struct {
482diff --git a/pkg/git/service.go b/pkg/git/service.go
483index af589c25719320f4c2d8581fe375de32158346b9..94253b798d7911d56b1c0379b154da2a908a376e 100644
484--- a/pkg/git/service.go
485+++ b/pkg/git/service.go
486@@ -10,7 +10,7 @@ import (
487 "strings"
488 "sync"
489
490- "github.com/charmbracelet/log/v2"
491+ "charm.land/log/v2"
492 )
493
494 // Service is a Git daemon service.
495diff --git a/pkg/hooks/gen.go b/pkg/hooks/gen.go
496index d06661be6010efa7ae6acc94e296fd072bae50b1..24415a7888be6c2eedf2b6aaa4b91aab846afb62 100644
497--- a/pkg/hooks/gen.go
498+++ b/pkg/hooks/gen.go
499@@ -7,7 +7,7 @@ import (
500 "path/filepath"
501 "text/template"
502
503- "github.com/charmbracelet/log/v2"
504+ "charm.land/log/v2"
505 "github.com/charmbracelet/soft-serve/pkg/config"
506 "github.com/charmbracelet/soft-serve/pkg/utils"
507 )
508diff --git a/pkg/jobs/mirror.go b/pkg/jobs/mirror.go
509index 9ebfdd864e76494b5081bb9ba244947989b591ee..4642e72b1508888b7aac6e902bb8eda68e748f40 100644
510--- a/pkg/jobs/mirror.go
511+++ b/pkg/jobs/mirror.go
512@@ -7,7 +7,7 @@ import (
513 "runtime"
514 "strings"
515
516- "github.com/charmbracelet/log/v2"
517+ "charm.land/log/v2"
518 "github.com/charmbracelet/soft-serve/git"
519 "github.com/charmbracelet/soft-serve/pkg/backend"
520 "github.com/charmbracelet/soft-serve/pkg/config"
521diff --git a/pkg/lfs/basic_transfer.go b/pkg/lfs/basic_transfer.go
522index d3e4100cd3477d77b3fe8a5953882f847336fd53..ddec8b350e81f273029b855908dcecfd37bdd966 100644
523--- a/pkg/lfs/basic_transfer.go
524+++ b/pkg/lfs/basic_transfer.go
525@@ -9,7 +9,7 @@ import (
526 "io"
527 "net/http"
528
529- "github.com/charmbracelet/log/v2"
530+ "charm.land/log/v2"
531 )
532
533 // BasicTransferAdapter implements the "basic" adapter
534diff --git a/pkg/lfs/http_client.go b/pkg/lfs/http_client.go
535index c78a2e4b2e061a3f8b9c4a675b4f97226ee209bb..e35b930cc7844191aa074a6a0b9e2def13c27260 100644
536--- a/pkg/lfs/http_client.go
537+++ b/pkg/lfs/http_client.go
538@@ -8,7 +8,7 @@ import (
539 "fmt"
540 "net/http"
541
542- "github.com/charmbracelet/log/v2"
543+ "charm.land/log/v2"
544 )
545
546 // httpClient is a Git LFS client to communicate with a LFS source API.
547diff --git a/pkg/log/log.go b/pkg/log/log.go
548index 0c1552589506a2cd82ae11aa77e300218e47d4d6..a4db7e1db2c8f5672b5b2dcc76912d194d2e06a2 100644
549--- a/pkg/log/log.go
550+++ b/pkg/log/log.go
551@@ -5,7 +5,7 @@ import (
552 "strings"
553 "time"
554
555- "github.com/charmbracelet/log/v2"
556+ "charm.land/log/v2"
557 "github.com/charmbracelet/soft-serve/pkg/config"
558 )
559
560diff --git a/pkg/ssh/cmd/commit.go b/pkg/ssh/cmd/commit.go
561index 2dceace252e1552700926ccbb1d6b256465d416c..f8b1b2285a744837788a4ff59964f5bc66bad843 100644
562--- a/pkg/ssh/cmd/commit.go
563+++ b/pkg/ssh/cmd/commit.go
564@@ -5,7 +5,7 @@ import (
565 "strings"
566 "time"
567
568- gansi "github.com/charmbracelet/glamour/v2/ansi"
569+ gansi "charm.land/glamour/v2/ansi"
570 "github.com/charmbracelet/soft-serve/git"
571 "github.com/charmbracelet/soft-serve/pkg/backend"
572 "github.com/charmbracelet/soft-serve/pkg/ui/common"
573diff --git a/pkg/ssh/cmd/git.go b/pkg/ssh/cmd/git.go
574index 620b9f0890e2ee4c19b202f9e97eee7ecab325b2..ee5852a87d32d1d1f04a3fcd7217d2298b6781f1 100644
575--- a/pkg/ssh/cmd/git.go
576+++ b/pkg/ssh/cmd/git.go
577@@ -6,7 +6,7 @@ import (
578 "strings"
579 "time"
580
581- "github.com/charmbracelet/log/v2"
582+ "charm.land/log/v2"
583 "github.com/charmbracelet/soft-serve/pkg/access"
584 "github.com/charmbracelet/soft-serve/pkg/backend"
585 "github.com/charmbracelet/soft-serve/pkg/config"
586diff --git a/pkg/ssh/cmd/tag.go b/pkg/ssh/cmd/tag.go
587index fc21ce0e4f73a2a340d61ade327ecfd157c1af0e..70f8ff4557c9cd693c7d5c1387c6c2fcf8649100 100644
588--- a/pkg/ssh/cmd/tag.go
589+++ b/pkg/ssh/cmd/tag.go
590@@ -3,7 +3,7 @@ package cmd
591 import (
592 "strings"
593
594- "github.com/charmbracelet/log/v2"
595+ "charm.land/log/v2"
596 "github.com/charmbracelet/soft-serve/git"
597 "github.com/charmbracelet/soft-serve/pkg/backend"
598 "github.com/charmbracelet/soft-serve/pkg/proto"
599diff --git a/pkg/ssh/cmd/token.go b/pkg/ssh/cmd/token.go
600index 6a11ebfcedbc9a5a3f2aa07ffb4cfb5f997002ad..f95c37f25c430a65b00b038818adcaf6044c75eb 100644
601--- a/pkg/ssh/cmd/token.go
602+++ b/pkg/ssh/cmd/token.go
603@@ -6,7 +6,7 @@ import (
604 "time"
605
606 "github.com/caarlos0/duration"
607- "github.com/charmbracelet/lipgloss/v2/table"
608+ "charm.land/lipgloss/v2/table"
609 "github.com/charmbracelet/soft-serve/pkg/backend"
610 "github.com/charmbracelet/soft-serve/pkg/proto"
611 "github.com/dustin/go-humanize"
612diff --git a/pkg/ssh/cmd/webhooks.go b/pkg/ssh/cmd/webhooks.go
613index 742127052107d2a8bd99f904d5e132e718e0a685..5f156672651d74d356ee5297d15c5679d034674e 100644
614--- a/pkg/ssh/cmd/webhooks.go
615+++ b/pkg/ssh/cmd/webhooks.go
616@@ -5,7 +5,7 @@ import (
617 "strconv"
618 "strings"
619
620- "github.com/charmbracelet/lipgloss/v2/table"
621+ "charm.land/lipgloss/v2/table"
622 "github.com/charmbracelet/soft-serve/pkg/backend"
623 "github.com/charmbracelet/soft-serve/pkg/utils"
624 "github.com/charmbracelet/soft-serve/pkg/webhook"
625diff --git a/pkg/ssh/middleware.go b/pkg/ssh/middleware.go
626index 32c31af933a807bef2de20dd37e53778a7cb91aa..a0a578e33684ba06e653bd6b961be6348d93e1dc 100644
627--- a/pkg/ssh/middleware.go
628+++ b/pkg/ssh/middleware.go
629@@ -4,7 +4,7 @@ import (
630 "fmt"
631 "time"
632
633- "github.com/charmbracelet/log/v2"
634+ "charm.land/log/v2"
635 "github.com/charmbracelet/soft-serve/pkg/backend"
636 "github.com/charmbracelet/soft-serve/pkg/config"
637 "github.com/charmbracelet/soft-serve/pkg/db"
638@@ -13,7 +13,7 @@ import (
639 "github.com/charmbracelet/soft-serve/pkg/sshutils"
640 "github.com/charmbracelet/soft-serve/pkg/store"
641 "github.com/charmbracelet/ssh"
642- "github.com/charmbracelet/wish/v2"
643+ "charm.land/wish/v2"
644 "github.com/prometheus/client_golang/prometheus"
645 "github.com/prometheus/client_golang/prometheus/promauto"
646 "github.com/spf13/cobra"
647diff --git a/pkg/ssh/session.go b/pkg/ssh/session.go
648index 892da8bba0de8330c6761e0e30a76adbd80afe12..c89d913f24d85cf804910a5aef206f84ad394833 100644
649--- a/pkg/ssh/session.go
650+++ b/pkg/ssh/session.go
651@@ -3,15 +3,15 @@ package ssh
652 import (
653 "time"
654
655- tea "github.com/charmbracelet/bubbletea/v2"
656+ tea "charm.land/bubbletea/v2"
657+ "charm.land/wish/v2"
658+ bm "charm.land/wish/v2/bubbletea"
659 "github.com/charmbracelet/soft-serve/pkg/access"
660 "github.com/charmbracelet/soft-serve/pkg/backend"
661 "github.com/charmbracelet/soft-serve/pkg/config"
662 "github.com/charmbracelet/soft-serve/pkg/proto"
663 "github.com/charmbracelet/soft-serve/pkg/ui/common"
664 "github.com/charmbracelet/ssh"
665- "github.com/charmbracelet/wish/v2"
666- bm "github.com/charmbracelet/wish/v2/bubbletea"
667 "github.com/prometheus/client_golang/prometheus"
668 "github.com/prometheus/client_golang/prometheus/promauto"
669 )
670@@ -54,9 +54,7 @@ func SessionHandler(s ssh.Session) *tea.Program {
671
672 opts := bm.MakeOptions(s)
673 opts = append(opts,
674- tea.WithAltScreen(),
675 tea.WithoutCatchPanics(),
676- tea.WithMouseCellMotion(),
677 tea.WithContext(ctx),
678 tea.WithColorProfile(common.DefaultColorProfile),
679 )
680diff --git a/pkg/ssh/session_test.go b/pkg/ssh/session_test.go
681index f831327450cf92c32188bde1096473274c57e78e..dab5b8e0722958e7836acdab7fc20ea7fb21ffb2 100644
682--- a/pkg/ssh/session_test.go
683+++ b/pkg/ssh/session_test.go
684@@ -8,7 +8,7 @@ import (
685 "testing"
686 "time"
687
688- "github.com/charmbracelet/log/v2"
689+ "charm.land/log/v2"
690 "github.com/charmbracelet/soft-serve/pkg/backend"
691 "github.com/charmbracelet/soft-serve/pkg/config"
692 "github.com/charmbracelet/soft-serve/pkg/db"
693@@ -17,8 +17,8 @@ import (
694 "github.com/charmbracelet/soft-serve/pkg/store/database"
695 "github.com/charmbracelet/soft-serve/pkg/test"
696 "github.com/charmbracelet/ssh"
697- bm "github.com/charmbracelet/wish/v2/bubbletea"
698- "github.com/charmbracelet/wish/v2/testsession"
699+ bm "charm.land/wish/v2/bubbletea"
700+ "charm.land/wish/v2/testsession"
701 "github.com/matryer/is"
702 gossh "golang.org/x/crypto/ssh"
703 _ "modernc.org/sqlite" // sqlite driver
704diff --git a/pkg/ssh/ssh.go b/pkg/ssh/ssh.go
705index 10d5edee632048c98e83fdfb9609c0426e57f2a0..274c63e971cc5be3d383a15ce827e9dc364541ec 100644
706--- a/pkg/ssh/ssh.go
707+++ b/pkg/ssh/ssh.go
708@@ -9,16 +9,16 @@ import (
709 "time"
710
711 "github.com/charmbracelet/keygen"
712- "github.com/charmbracelet/log/v2"
713+ "charm.land/log/v2"
714 "github.com/charmbracelet/soft-serve/pkg/backend"
715 "github.com/charmbracelet/soft-serve/pkg/config"
716 "github.com/charmbracelet/soft-serve/pkg/db"
717 "github.com/charmbracelet/soft-serve/pkg/proto"
718 "github.com/charmbracelet/soft-serve/pkg/store"
719 "github.com/charmbracelet/ssh"
720- "github.com/charmbracelet/wish/v2"
721- bm "github.com/charmbracelet/wish/v2/bubbletea"
722- rm "github.com/charmbracelet/wish/v2/recover"
723+ "charm.land/wish/v2"
724+ bm "charm.land/wish/v2/bubbletea"
725+ rm "charm.land/wish/v2/recover"
726 "github.com/prometheus/client_golang/prometheus"
727 "github.com/prometheus/client_golang/prometheus/promauto"
728 gossh "golang.org/x/crypto/ssh"
729diff --git a/pkg/ssh/ui.go b/pkg/ssh/ui.go
730index e08cc89a31f110b56a1f9b28da3b95ea518eac46..2e7d7b61523cdac5a2cfe310c1f0b1ff895a2c17 100644
731--- a/pkg/ssh/ui.go
732+++ b/pkg/ssh/ui.go
733@@ -3,10 +3,10 @@ package ssh
734 import (
735 "errors"
736
737- "github.com/charmbracelet/bubbles/v2/key"
738- "github.com/charmbracelet/bubbles/v2/list"
739- tea "github.com/charmbracelet/bubbletea/v2"
740- "github.com/charmbracelet/lipgloss/v2"
741+ "charm.land/bubbles/v2/key"
742+ "charm.land/bubbles/v2/list"
743+ tea "charm.land/bubbletea/v2"
744+ "charm.land/lipgloss/v2"
745 "github.com/charmbracelet/soft-serve/git"
746 "github.com/charmbracelet/soft-serve/pkg/proto"
747 "github.com/charmbracelet/soft-serve/pkg/ui/common"
748@@ -256,7 +256,11 @@ func (ui *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
749 }
750
751 // View implements tea.Model.
752-func (ui *UI) View() string {
753+func (ui *UI) View() tea.View {
754+ var v tea.View
755+ v.AltScreen = true
756+ v.MouseMode = tea.MouseModeCellMotion
757+
758 var view string
759 wm, hm := ui.getMargins()
760 switch ui.state {
761@@ -284,9 +288,10 @@ func (ui *UI) View() string {
762 if ui.showFooter {
763 view = lipgloss.JoinVertical(lipgloss.Left, view, ui.footer.View())
764 }
765- return ui.common.Zone.Scan(
766+ v.Content = ui.common.Zone.Scan(
767 ui.common.Styles.App.Render(view),
768 )
769+ return v
770 }
771
772 func (ui *UI) openRepo(rn string) (proto.Repository, error) {
773diff --git a/pkg/store/database/database.go b/pkg/store/database/database.go
774index e41087c7a8dfaa8f14da34715425c0f761d380ba..9e56ab646d8be37368388d6e9d1dace61c328cc2 100644
775--- a/pkg/store/database/database.go
776+++ b/pkg/store/database/database.go
777@@ -3,7 +3,7 @@ package database
778 import (
779 "context"
780
781- "github.com/charmbracelet/log/v2"
782+ "charm.land/log/v2"
783 "github.com/charmbracelet/soft-serve/pkg/config"
784 "github.com/charmbracelet/soft-serve/pkg/db"
785 "github.com/charmbracelet/soft-serve/pkg/store"
786diff --git a/pkg/ui/common/common.go b/pkg/ui/common/common.go
787index d6e0a778474698ede31c66bad607789164c24499..7412a8f07e469b5b6e06838c575072dd9a782dd6 100644
788--- a/pkg/ui/common/common.go
789+++ b/pkg/ui/common/common.go
790@@ -4,15 +4,15 @@ import (
791 "context"
792 "fmt"
793
794+ "charm.land/log/v2"
795 "github.com/alecthomas/chroma/v2/lexers"
796- zone "github.com/aymanbagabas/bubblezone/v2"
797- "github.com/charmbracelet/log/v2"
798 "github.com/charmbracelet/soft-serve/git"
799 "github.com/charmbracelet/soft-serve/pkg/backend"
800 "github.com/charmbracelet/soft-serve/pkg/config"
801 "github.com/charmbracelet/soft-serve/pkg/ui/keymap"
802 "github.com/charmbracelet/soft-serve/pkg/ui/styles"
803 "github.com/charmbracelet/ssh"
804+ zone "github.com/lrstanley/bubblezone/v2"
805 )
806
807 type contextKey struct {
808diff --git a/pkg/ui/common/component.go b/pkg/ui/common/component.go
809index 4b152a4ba81080af791446601d06133847d80102..510914136f1d896aa5590dddafdc67439153d44d 100644
810--- a/pkg/ui/common/component.go
811+++ b/pkg/ui/common/component.go
812@@ -1,14 +1,20 @@
813 package common
814
815 import (
816- "github.com/charmbracelet/bubbles/v2/help"
817- tea "github.com/charmbracelet/bubbletea/v2"
818+ "charm.land/bubbles/v2/help"
819+ tea "charm.land/bubbletea/v2"
820 )
821
822+// Model represents a simple UI model.
823+type Model interface {
824+ Init() tea.Cmd
825+ Update(tea.Msg) (Model, tea.Cmd)
826+ View() string
827+}
828+
829 // Component represents a Bubble Tea model that implements a SetSize function.
830 type Component interface {
831- tea.Model
832- tea.ViewModel
833+ Model
834 help.KeyMap
835 SetSize(width, height int)
836 }
837diff --git a/pkg/ui/common/error.go b/pkg/ui/common/error.go
838index 926df1d9ac7610b2a34648290e62c28a7d9d9629..e855273b01074012f9fb49f36739de3713214021 100644
839--- a/pkg/ui/common/error.go
840+++ b/pkg/ui/common/error.go
841@@ -3,7 +3,7 @@ package common
842 import (
843 "errors"
844
845- tea "github.com/charmbracelet/bubbletea/v2"
846+ tea "charm.land/bubbletea/v2"
847 )
848
849 // ErrMissingRepo indicates that the requested repository could not be found.
850diff --git a/pkg/ui/common/format.go b/pkg/ui/common/format.go
851index f82c71aec65d6366f3f4d6da770979c94a4d18e4..d7a14bfb777b42918904b9bbd49721af9eadd57c 100644
852--- a/pkg/ui/common/format.go
853+++ b/pkg/ui/common/format.go
854@@ -6,7 +6,7 @@ import (
855 "strings"
856
857 "github.com/alecthomas/chroma/v2/lexers"
858- gansi "github.com/charmbracelet/glamour/v2/ansi"
859+ gansi "charm.land/glamour/v2/ansi"
860 "github.com/charmbracelet/soft-serve/pkg/ui/styles"
861 )
862
863diff --git a/pkg/ui/common/style.go b/pkg/ui/common/style.go
864index 1f2032f8b5e0ffbb12c067427c397e34dc55944b..a8e8d1d5161e1eda9ccbac08c3d584ee89c01131 100644
865--- a/pkg/ui/common/style.go
866+++ b/pkg/ui/common/style.go
867@@ -2,8 +2,8 @@ package common
868
869 import (
870 "github.com/charmbracelet/colorprofile"
871- gansi "github.com/charmbracelet/glamour/v2/ansi"
872- "github.com/charmbracelet/glamour/v2/styles"
873+ gansi "charm.land/glamour/v2/ansi"
874+ "charm.land/glamour/v2/styles"
875 )
876
877 // DefaultColorProfile is the default color profile used by the SSH server.
878diff --git a/pkg/ui/components/code/code.go b/pkg/ui/components/code/code.go
879index 6da77c65fe8040f9bf21c266eafbcf78328613c5..085151a79a607e09b27a68ef957030410e233f2e 100644
880--- a/pkg/ui/components/code/code.go
881+++ b/pkg/ui/components/code/code.go
882@@ -5,11 +5,11 @@ import (
883 "strings"
884 "sync"
885
886+ tea "charm.land/bubbletea/v2"
887+ "charm.land/glamour/v2"
888+ gansi "charm.land/glamour/v2/ansi"
889+ "charm.land/lipgloss/v2"
890 "github.com/alecthomas/chroma/v2/lexers"
891- tea "github.com/charmbracelet/bubbletea/v2"
892- "github.com/charmbracelet/glamour/v2"
893- gansi "github.com/charmbracelet/glamour/v2/ansi"
894- "github.com/charmbracelet/lipgloss/v2"
895 "github.com/charmbracelet/soft-serve/pkg/ui/common"
896 vp "github.com/charmbracelet/soft-serve/pkg/ui/components/viewport"
897 )
898@@ -132,7 +132,7 @@ func (r *Code) Init() tea.Cmd {
899 }
900
901 // Update implements tea.Model.
902-func (r *Code) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
903+func (r *Code) Update(msg tea.Msg) (common.Model, tea.Cmd) {
904 cmds := make([]tea.Cmd, 0)
905 switch msg.(type) {
906 case tea.WindowSizeMsg:
907diff --git a/pkg/ui/components/footer/footer.go b/pkg/ui/components/footer/footer.go
908index 05e1160dedbe717a213de8907fbbb65dccc5bd4e..77bc2a9b8cbe3496a23803890a0e54c34a585cb2 100644
909--- a/pkg/ui/components/footer/footer.go
910+++ b/pkg/ui/components/footer/footer.go
911@@ -1,10 +1,10 @@
912 package footer
913
914 import (
915- "github.com/charmbracelet/bubbles/v2/help"
916- "github.com/charmbracelet/bubbles/v2/key"
917- tea "github.com/charmbracelet/bubbletea/v2"
918- "github.com/charmbracelet/lipgloss/v2"
919+ "charm.land/bubbles/v2/help"
920+ "charm.land/bubbles/v2/key"
921+ tea "charm.land/bubbletea/v2"
922+ "charm.land/lipgloss/v2"
923 "github.com/charmbracelet/soft-serve/pkg/ui/common"
924 )
925
926@@ -37,8 +37,8 @@ func New(c common.Common, keymap help.KeyMap) *Footer {
927 // SetSize implements common.Component.
928 func (f *Footer) SetSize(width, height int) {
929 f.common.SetSize(width, height)
930- f.help.Width = width -
931- f.common.Styles.Footer.GetHorizontalFrameSize()
932+ f.help.SetWidth(width -
933+ f.common.Styles.Footer.GetHorizontalFrameSize())
934 }
935
936 // Init implements tea.Model.
937@@ -47,7 +47,7 @@ func (f *Footer) Init() tea.Cmd {
938 }
939
940 // Update implements tea.Model.
941-func (f *Footer) Update(_ tea.Msg) (tea.Model, tea.Cmd) {
942+func (f *Footer) Update(_ tea.Msg) (common.Model, tea.Cmd) {
943 return f, nil
944 }
945
946diff --git a/pkg/ui/components/header/header.go b/pkg/ui/components/header/header.go
947index 63e47a4911f6618c31448cdbc8c902e80314be11..76ff89fda1d85ece13a2dc391120e2913c06dc63 100644
948--- a/pkg/ui/components/header/header.go
949+++ b/pkg/ui/components/header/header.go
950@@ -3,7 +3,7 @@ package header
951 import (
952 "strings"
953
954- tea "github.com/charmbracelet/bubbletea/v2"
955+ tea "charm.land/bubbletea/v2"
956 "github.com/charmbracelet/soft-serve/pkg/ui/common"
957 )
958
959@@ -32,7 +32,7 @@ func (h *Header) Init() tea.Cmd {
960 }
961
962 // Update implements tea.Model.
963-func (h *Header) Update(_ tea.Msg) (tea.Model, tea.Cmd) {
964+func (h *Header) Update(_ tea.Msg) (common.Model, tea.Cmd) {
965 return h, nil
966 }
967
968diff --git a/pkg/ui/components/selector/selector.go b/pkg/ui/components/selector/selector.go
969index e42ee3507a674a36561ae9255a7b6ea5f2e25c86..b796d44ef2f2a58ed434e1d3c8df464008d94e1e 100644
970--- a/pkg/ui/components/selector/selector.go
971+++ b/pkg/ui/components/selector/selector.go
972@@ -3,9 +3,9 @@ package selector
973 import (
974 "sync"
975
976- "github.com/charmbracelet/bubbles/v2/key"
977- "github.com/charmbracelet/bubbles/v2/list"
978- tea "github.com/charmbracelet/bubbletea/v2"
979+ "charm.land/bubbles/v2/key"
980+ "charm.land/bubbles/v2/list"
981+ tea "charm.land/bubbletea/v2"
982 "github.com/charmbracelet/soft-serve/pkg/ui/common"
983 )
984
985@@ -227,7 +227,7 @@ func (s *Selector) Init() tea.Cmd {
986 }
987
988 // Update implements tea.Model.
989-func (s *Selector) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
990+func (s *Selector) Update(msg tea.Msg) (common.Model, tea.Cmd) {
991 cmds := make([]tea.Cmd, 0)
992 switch msg := msg.(type) {
993 case tea.MouseClickMsg:
994diff --git a/pkg/ui/components/statusbar/statusbar.go b/pkg/ui/components/statusbar/statusbar.go
995index f913e644a2230ea4a3d6f1b46f9e7850de45a02e..ef6c6acfdcc2437906a2869e0c1e9aed5cba7407 100644
996--- a/pkg/ui/components/statusbar/statusbar.go
997+++ b/pkg/ui/components/statusbar/statusbar.go
998@@ -1,8 +1,8 @@
999 package statusbar
1000
1001 import (
1002- tea "github.com/charmbracelet/bubbletea/v2"
1003- "github.com/charmbracelet/lipgloss/v2"
1004+ tea "charm.land/bubbletea/v2"
1005+ "charm.land/lipgloss/v2"
1006 "github.com/charmbracelet/soft-serve/pkg/ui/common"
1007 "github.com/charmbracelet/x/ansi"
1008 )
1009@@ -52,7 +52,7 @@ func (s *Model) Init() tea.Cmd {
1010 }
1011
1012 // Update implements tea.Model.
1013-func (s *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
1014+func (s *Model) Update(msg tea.Msg) (common.Model, tea.Cmd) {
1015 switch msg := msg.(type) {
1016 case tea.WindowSizeMsg:
1017 s.SetSize(msg.Width, msg.Height)
1018diff --git a/pkg/ui/components/tabs/tabs.go b/pkg/ui/components/tabs/tabs.go
1019index 36f0a19e85c2bda3dc172e02d8b5bb5b70919ad4..ec49404d377b9d0831d8c7a29fda2fda8a8e33c0 100644
1020--- a/pkg/ui/components/tabs/tabs.go
1021+++ b/pkg/ui/components/tabs/tabs.go
1022@@ -3,8 +3,8 @@ package tabs
1023 import (
1024 "strings"
1025
1026- tea "github.com/charmbracelet/bubbletea/v2"
1027- "github.com/charmbracelet/lipgloss/v2"
1028+ tea "charm.land/bubbletea/v2"
1029+ "charm.land/lipgloss/v2"
1030 "github.com/charmbracelet/soft-serve/pkg/ui/common"
1031 )
1032
1033@@ -51,7 +51,7 @@ func (t *Tabs) Init() tea.Cmd {
1034 }
1035
1036 // Update implements tea.Model.
1037-func (t *Tabs) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
1038+func (t *Tabs) Update(msg tea.Msg) (common.Model, tea.Cmd) {
1039 cmds := make([]tea.Cmd, 0)
1040 switch msg := msg.(type) {
1041 case tea.KeyPressMsg:
1042diff --git a/pkg/ui/components/viewport/viewport.go b/pkg/ui/components/viewport/viewport.go
1043index 95bd06bdb8beca22e9f6abda9efba40d4cfbc5b6..814672d2865d85c22664704104d65461f8bc19ef 100644
1044--- a/pkg/ui/components/viewport/viewport.go
1045+++ b/pkg/ui/components/viewport/viewport.go
1046@@ -1,9 +1,9 @@
1047 package viewport
1048
1049 import (
1050- "github.com/charmbracelet/bubbles/v2/key"
1051- "github.com/charmbracelet/bubbles/v2/viewport"
1052- tea "github.com/charmbracelet/bubbletea/v2"
1053+ "charm.land/bubbles/v2/key"
1054+ "charm.land/bubbles/v2/viewport"
1055+ tea "charm.land/bubbletea/v2"
1056 "github.com/charmbracelet/soft-serve/pkg/ui/common"
1057 )
1058
1059@@ -38,7 +38,7 @@ func (v *Viewport) Init() tea.Cmd {
1060 }
1061
1062 // Update implements tea.Model.
1063-func (v *Viewport) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
1064+func (v *Viewport) Update(msg tea.Msg) (common.Model, tea.Cmd) {
1065 switch msg := msg.(type) {
1066 case tea.KeyPressMsg:
1067 switch {
1068diff --git a/pkg/ui/keymap/keymap.go b/pkg/ui/keymap/keymap.go
1069index 707a558616cec72ec85e1a07cde964e25930ce4d..2839e307e52b88eaff205ebb6665d94e5e2e85eb 100644
1070--- a/pkg/ui/keymap/keymap.go
1071+++ b/pkg/ui/keymap/keymap.go
1072@@ -1,6 +1,6 @@
1073 package keymap
1074
1075-import "github.com/charmbracelet/bubbles/v2/key"
1076+import "charm.land/bubbles/v2/key"
1077
1078 // KeyMap is a map of key bindings for the UI.
1079 type KeyMap struct {