@@ -16,6 +16,7 @@ import (
16 "github.com/charmbracelet/crush/internal/format"
16 "github.com/charmbracelet/crush/internal/format"
17 "github.com/charmbracelet/crush/internal/history"
17 "github.com/charmbracelet/crush/internal/history"
18 "github.com/charmbracelet/crush/internal/llm/agent"
18 "github.com/charmbracelet/crush/internal/llm/agent"
19+ "github.com/charmbracelet/crush/internal/log"
19 "github.com/charmbracelet/crush/internal/pubsub"
20 "github.com/charmbracelet/crush/internal/pubsub"
21 "github.com/charmbracelet/crush/internal/lsp"
22 "github.com/charmbracelet/crush/internal/lsp"
@@ -230,6 +231,11 @@ func (app *App) InitCoderAgent() error {
232func (app *App) Subscribe(program *tea.Program) {
233func (app *App) Subscribe(program *tea.Program) {
234+ defer log.RecoverPanic("app.Subscribe", func() {
235+ slog.Info("TUI subscription panic - attempting graceful shutdown")
233 app.tuiWG.Add(1)
239 app.tuiWG.Add(1)
234 tuiCtx, tuiCancel := context.WithCancel(app.globalCtx)
240 tuiCtx, tuiCancel := context.WithCancel(app.globalCtx)
235 app.cleanupFuncs = append(app.cleanupFuncs, func() {
241 app.cleanupFuncs = append(app.cleanupFuncs, func() {