on main help sign in
chore: upgrade dependencies and fix related code (#1404)
87df66dAyman Bagabas
go.mod+7−9
@@ -4,9 +4,9 @@ go 1.25.0
4
4
5require (
5require (
6 charm.land/bubbles/v2 v2.0.0-beta.1.0.20251104200223-da0b892d1759
6 charm.land/bubbles/v2 v2.0.0-beta.1.0.20251104200223-da0b892d1759
7− charm.land/bubbletea/v2 v2.0.0-rc.1.0.20251106164730-d9f7210a9efd
7+ charm.land/bubbletea/v2 v2.0.0-rc.1.0.20251106195925-579e174cd7fa
8 charm.land/fantasy v0.1.6
8 charm.land/fantasy v0.1.6
9− charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251104200114-3aae28661422
9+ charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251106193318-19329a3e8410
10 github.com/JohannesKaufmann/html-to-markdown v1.6.0
10 github.com/JohannesKaufmann/html-to-markdown v1.6.0
11 github.com/MakeNowJust/heredoc v1.0.0
11 github.com/MakeNowJust/heredoc v1.0.0
12 github.com/PuerkitoBio/goquery v1.10.3
12 github.com/PuerkitoBio/goquery v1.10.3
@@ -17,11 +17,11 @@ require (
17 github.com/charlievieth/fastwalk v1.0.14
17 github.com/charlievieth/fastwalk v1.0.14
18 github.com/charmbracelet/catwalk v0.8.2
18 github.com/charmbracelet/catwalk v0.8.2
19 github.com/charmbracelet/colorprofile v0.3.3
19 github.com/charmbracelet/colorprofile v0.3.3
20− github.com/charmbracelet/fang v0.4.3
20+ github.com/charmbracelet/fang v0.4.4
21− github.com/charmbracelet/glamour/v2 v2.0.0-20250811143442-a27abb32f018
21+ github.com/charmbracelet/glamour/v2 v2.0.0-20251106195642-800eb8175930
22− github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706
22+ github.com/charmbracelet/log/v2 v2.0.0-20251106192421-eb64aaa963a0
23− github.com/charmbracelet/ultraviolet v0.0.0-20251105181648-75d1e37ff1bb
23+ github.com/charmbracelet/ultraviolet v0.0.0-20251106193841-7889546fc720
24− github.com/charmbracelet/x/ansi v0.10.3
24+ github.com/charmbracelet/x/ansi v0.11.0
25 github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3
25 github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3
26 github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f
26 github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f
27 github.com/charmbracelet/x/exp/ordered v0.1.0
27 github.com/charmbracelet/x/exp/ordered v0.1.0
@@ -88,8 +88,6 @@ require (
88 github.com/bahlo/generic-list-go v0.2.0 // indirect
88 github.com/bahlo/generic-list-go v0.2.0 // indirect
89 github.com/buger/jsonparser v1.1.1 // indirect
89 github.com/buger/jsonparser v1.1.1 // indirect
90 github.com/charmbracelet/anthropic-sdk-go v0.0.0-20251024181547-21d6f3d9a904 // indirect
90 github.com/charmbracelet/anthropic-sdk-go v0.0.0-20251024181547-21d6f3d9a904 // indirect
91− github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3.0.20251103214348-d3032608aa74 // indirect
92− github.com/charmbracelet/x/cellbuf v0.0.14-0.20250811133356-e0c5dbe5ea4a // indirect
93 github.com/charmbracelet/x/json v0.2.0 // indirect
91 github.com/charmbracelet/x/json v0.2.0 // indirect
94 github.com/charmbracelet/x/termios v0.1.1 // indirect
92 github.com/charmbracelet/x/termios v0.1.1 // indirect
95 github.com/charmbracelet/x/windows v0.2.2 // indirect
93 github.com/charmbracelet/x/windows v0.2.2 // indirect
go.sum+14−18
@@ -1,11 +1,11 @@
1charm.land/bubbles/v2 v2.0.0-beta.1.0.20251104200223-da0b892d1759 h1:P1MxkVl8ZeI9tHmmrn9UzV/5Mz7heoiTgqECHRFsUcs=
1charm.land/bubbles/v2 v2.0.0-beta.1.0.20251104200223-da0b892d1759 h1:P1MxkVl8ZeI9tHmmrn9UzV/5Mz7heoiTgqECHRFsUcs=
2charm.land/bubbles/v2 v2.0.0-beta.1.0.20251104200223-da0b892d1759/go.mod h1:G7JWaj3kDT0BDB+h5BLDUhhBLpDoRLKrpOp5QrA2SQs=
2charm.land/bubbles/v2 v2.0.0-beta.1.0.20251104200223-da0b892d1759/go.mod h1:G7JWaj3kDT0BDB+h5BLDUhhBLpDoRLKrpOp5QrA2SQs=
3−charm.land/bubbletea/v2 v2.0.0-rc.1.0.20251106164730-d9f7210a9efd h1:eyiUO6fojEdTbEq70qd8S5NXiRzvvIt5YaZsEa/vsfE=
3+charm.land/bubbletea/v2 v2.0.0-rc.1.0.20251106195925-579e174cd7fa h1:J30WneaxF2CV3f2ofamxlr+RwyF6LKSJ3UesrtHfU9I=
4−charm.land/bubbletea/v2 v2.0.0-rc.1.0.20251106164730-d9f7210a9efd/go.mod h1:oR2A+f83vzDY0hALwW4eh90fKXdranRWnH/vfwJL1lU=
4+charm.land/bubbletea/v2 v2.0.0-rc.1.0.20251106195925-579e174cd7fa/go.mod h1:lUNldRH4wRBZ9SGFqlss1Pep7QXzgV/Fp+V9BsAhOPc=
5charm.land/fantasy v0.1.6 h1:laomMUqUaniQoLx7UOb+MLUpIGJPoNwsXvw1PbzgnB8=
5charm.land/fantasy v0.1.6 h1:laomMUqUaniQoLx7UOb+MLUpIGJPoNwsXvw1PbzgnB8=
6charm.land/fantasy v0.1.6/go.mod h1:JpFcJ5zs/1CjmYYGAZ7GaFmeBv0mPaTzEPRG6Eic5pc=
6charm.land/fantasy v0.1.6/go.mod h1:JpFcJ5zs/1CjmYYGAZ7GaFmeBv0mPaTzEPRG6Eic5pc=
7−charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251104200114-3aae28661422 h1:LcW3SSv1EZvlb9pfaVZIZyHrPVRJdb0adgX+tWPYl0k=
7+charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251106193318-19329a3e8410 h1:D9PbaszZYpB4nj+d6HTWr1onlmlyuGVNfL9gAi8iB3k=
8−charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251104200114-3aae28661422/go.mod h1:0EJAlA1PDGb+2RyyC02yDSPDwvpegDefu74HC9Blg5o=
8+charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251106193318-19329a3e8410/go.mod h1:1qZyvvVCenJO2M1ac2mX0yyiIZJoZmDM4DG4s0udJkU=
9cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE=
9cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE=
10cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U=
10cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U=
11cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4=
11cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4=
@@ -88,20 +88,16 @@ github.com/charmbracelet/catwalk v0.8.2 h1:J7xq/ft/ZByJCHl3JpgvxlCd59bzZPugy66Xu
88github.com/charmbracelet/catwalk v0.8.2/go.mod h1:ReU4SdrLfe63jkEjWMdX2wlZMV3k9r11oQAmzN0m+KY=
88github.com/charmbracelet/catwalk v0.8.2/go.mod h1:ReU4SdrLfe63jkEjWMdX2wlZMV3k9r11oQAmzN0m+KY=
89github.com/charmbracelet/colorprofile v0.3.3 h1:DjJzJtLP6/NZ8p7Cgjno0CKGr7wwRJGxWUwh2IyhfAI=
89github.com/charmbracelet/colorprofile v0.3.3 h1:DjJzJtLP6/NZ8p7Cgjno0CKGr7wwRJGxWUwh2IyhfAI=
90github.com/charmbracelet/colorprofile v0.3.3/go.mod h1:nB1FugsAbzq284eJcjfah2nhdSLppN2NqvfotkfRYP4=
90github.com/charmbracelet/colorprofile v0.3.3/go.mod h1:nB1FugsAbzq284eJcjfah2nhdSLppN2NqvfotkfRYP4=
91−github.com/charmbracelet/fang v0.4.3 h1:qXeMxnL4H6mSKBUhDefHu8NfikFbP/MBNTfqTrXvzmY=
91+github.com/charmbracelet/fang v0.4.4 h1:G4qKxF6or/eTPgmAolwPuRNyuci3hTUGGX1rj1YkHJY=
92−github.com/charmbracelet/fang v0.4.3/go.mod h1:wHJKQYO5ReYsxx+yZl+skDtrlKO/4LLEQ6EXsdHhRhg=
92+github.com/charmbracelet/fang v0.4.4/go.mod h1:P5/DNb9DddQ0Z0dbc0P3ol4/ix5Po7Ofr2KMBfAqoCo=
93−github.com/charmbracelet/glamour/v2 v2.0.0-20250811143442-a27abb32f018 h1:PU4Zvpagsk5sgaDxn5W4sxHuLp9QRMBZB3bFSk40A4w=
93+github.com/charmbracelet/glamour/v2 v2.0.0-20251106195642-800eb8175930 h1:+47Z2jVAWPSLGjPRbfZizW3OpcAYsu7EUk2DR+66FyM=
94−github.com/charmbracelet/glamour/v2 v2.0.0-20250811143442-a27abb32f018/go.mod h1:Z/GLmp9fzaqX4ze3nXG7StgWez5uBM5XtlLHK8V/qSk=
94+github.com/charmbracelet/glamour/v2 v2.0.0-20251106195642-800eb8175930/go.mod h1:izs11tnkYaT3DTEH2E0V/lCb18VGZ7k9HLYEGuvgXGA=
95−github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3.0.20251103214348-d3032608aa74 h1:2N+CxpUFM6Rrx+xT7XaqM9pp/psOFlxKWa5R7rP/lck=
95+github.com/charmbracelet/log/v2 v2.0.0-20251106192421-eb64aaa963a0 h1:lxHzxsHd4P7o7+5D5OcEItYkQ1xY3ovNg8Dc5ftd3rI=
96−github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3.0.20251103214348-d3032608aa74/go.mod h1:RfXmCdNs2F4MVJjBVQp5RZYXR05MiRAHN4GHwWmsNIA=
96+github.com/charmbracelet/log/v2 v2.0.0-20251106192421-eb64aaa963a0/go.mod h1:Q7oMtlboDPnnrYiJDXNwdWmJblOmuOnycPKczlVju6I=
97−github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706 h1:WkwO6Ks3mSIGnGuSdKl9qDSyfbYK50z2wc2gGMggegE=
97+github.com/charmbracelet/ultraviolet v0.0.0-20251106193841-7889546fc720 h1:Pny/vp+ySKst82CWEME1oP6YEFs/17tlH+QOjqW7VUY=
98−github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706/go.mod h1:mjJGp00cxcfvD5xdCa+bso251Jt4owrQvuimJtVmEmM=
98+github.com/charmbracelet/ultraviolet v0.0.0-20251106193841-7889546fc720/go.mod h1:Y8B4DzWeTb0ama8l3+KyopZtkE8fZjwRQ3aEAPEXHE0=
99−github.com/charmbracelet/ultraviolet v0.0.0-20251105181648-75d1e37ff1bb h1:KZnKSrGjarKScpekDuPAVnlMSMtA7mdzmoUD0AhAZC0=
100−github.com/charmbracelet/ultraviolet v0.0.0-20251105181648-75d1e37ff1bb/go.mod h1:G7cNuWgmuugx6ApJv4kDGfnFanoDAz8AWazH9lSoWdw=
101−github.com/charmbracelet/x/ansi v0.10.3 h1:3WoV9XN8uMEnFRZZ+vBPRy59TaIWa+gJodS4Vg5Fut0=
99+github.com/charmbracelet/x/ansi v0.11.0 h1:uuIVK7GIplwX6UBIz8S2TF8nkr7xRlygSsBRjSJqIvA=
102−github.com/charmbracelet/x/ansi v0.10.3/go.mod h1:uQt8bOrq/xgXjlGcFMc8U2WYbnxyjrKhnvTQluvfCaE=
100+github.com/charmbracelet/x/ansi v0.11.0/go.mod h1:uQt8bOrq/xgXjlGcFMc8U2WYbnxyjrKhnvTQluvfCaE=
103−github.com/charmbracelet/x/cellbuf v0.0.14-0.20250811133356-e0c5dbe5ea4a h1:zYSNtEJM9jwHbJts2k+Hroj+xQwsW1yxc4Wopdv7KaI=
104−github.com/charmbracelet/x/cellbuf v0.0.14-0.20250811133356-e0c5dbe5ea4a/go.mod h1:rc2bsPC6MWae3LdOxNO1mOb443NlMrrDL0xEya48NNc=
105github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3 h1:1xwHZg6eMZ9Wv5TE1UGub6ARubyOd1Lo5kPUI/6VL50=
101github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3 h1:1xwHZg6eMZ9Wv5TE1UGub6ARubyOd1Lo5kPUI/6VL50=
106github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0=
102github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0=
107github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA=
103github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA=
internal/tui/exp/list/list.go+2−1
@@ -475,7 +475,8 @@ func (l *list[T]) selectionView(view string, textOnly bool) string {
475 ts := t.TextSelection
475 ts := t.TextSelection
476
476
477 cell = cell.Clone()
477 cell = cell.Clone()
478− cell.Style = cell.Style.Background(ts.GetBackground()).Foreground(ts.GetForeground())
478+ cell.Style.Bg = ts.GetBackground()
479+ cell.Style.Fg = ts.GetForeground()
479 scr.SetCell(x, y, cell)
480 scr.SetCell(x, y, cell)
480 }
481 }
481 }
482 }
internal/tui/page/chat/chat.go+2−1
@@ -946,7 +946,8 @@ func (p *chatPage) Help() help.KeyMap {
946 key.WithKeys("ctrl+m", "ctrl+l"),
946 key.WithKeys("ctrl+m", "ctrl+l"),
947 key.WithHelp("ctrl+l", "models"),
947 key.WithHelp("ctrl+l", "models"),
948 )
948 )
949− if p.keyboardEnhancements.SupportsKeyDisambiguation() {
949+ if p.keyboardEnhancements.Flags > 0 {
950+ // non-zero flags mean we have at least key disambiguation
950 modelsBinding.SetHelp("ctrl+m", "models")
951 modelsBinding.SetHelp("ctrl+m", "models")
951 }
952 }
952 helpBinding := key.NewBinding(
953 helpBinding := key.NewBinding(
internal/tui/tui.go+19−16
@@ -127,7 +127,8 @@ func (a *appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
127 }
127 }
128 return a, nil
128 return a, nil
129 case tea.KeyboardEnhancementsMsg:
129 case tea.KeyboardEnhancementsMsg:
130− if msg.SupportsKeyDisambiguation() {
130+ // A non-zero value means we have key disambiguation support.
131+ if msg.Flags > 0 {
131 a.keyMap.Models.SetHelp("ctrl+m", "models")
132 a.keyMap.Models.SetHelp("ctrl+m", "models")
132 }
133 }
133 for id, page := range a.pages {
134 for id, page := range a.pages {
@@ -558,22 +559,25 @@ func (a *appModel) moveToPage(pageID page.PageID) tea.Cmd {
558// View renders the complete application interface including pages, dialogs, and overlays.
559// View renders the complete application interface including pages, dialogs, and overlays.
559func (a *appModel) View() tea.View {
560func (a *appModel) View() tea.View {
560 var view tea.View
561 var view tea.View
561− view.AltScreen = true
562 t := styles.CurrentTheme()
562 t := styles.CurrentTheme()
563+ view.AltScreen = true
564+ view.MouseMode = tea.MouseModeCellMotion
563 view.BackgroundColor = t.BgBase
565 view.BackgroundColor = t.BgBase
564 if a.wWidth < 25 || a.wHeight < 15 {
566 if a.wWidth < 25 || a.wHeight < 15 {
565− view.Layer = lipgloss.NewCanvas(
567+ view.SetContent(
568+ lipgloss.NewCanvas(
566− lipgloss.NewLayer(
569+ lipgloss.NewLayer(
567− t.S().Base.Width(a.wWidth).Height(a.wHeight).
570+ t.S().Base.Width(a.wWidth).Height(a.wHeight).
568− Align(lipgloss.Center, lipgloss.Center).
571+ Align(lipgloss.Center, lipgloss.Center).
569− Render(
572+ Render(
570− t.S().Base.
573+ t.S().Base.
571− Padding(1, 4).
574+ Padding(1, 4).
572− Foreground(t.White).
575+ Foreground(t.White).
573− BorderStyle(lipgloss.RoundedBorder()).
576+ BorderStyle(lipgloss.RoundedBorder()).
574− BorderForeground(t.Primary).
577+ BorderForeground(t.Primary).
575− Render("Window too small!"),
578+ Render("Window too small!"),
579+ ),
576− ),
580+ ),
577 ),
581 ),
578 )
582 )
579 return view
583 return view
@@ -630,9 +634,8 @@ func (a *appModel) View() tea.View {
630 layers...,
634 layers...,
631 )
635 )
632
636
633− view.Layer = canvas
637+ view.Content = canvas
634 view.Cursor = cursor
638 view.Cursor = cursor
635− view.MouseMode = tea.MouseModeCellMotion
636
639
637 if a.sendProgressBar && a.app != nil && a.app.AgentCoordinator != nil && a.app.AgentCoordinator.IsBusy() {
640 if a.sendProgressBar && a.app != nil && a.app.AgentCoordinator != nil && a.app.AgentCoordinator.IsBusy() {
638 // HACK: use a random percentage to prevent ghostty from hiding it
641 // HACK: use a random percentage to prevent ghostty from hiding it