diff --git a/cli/internal/tui/chat.go b/cli/internal/tui/chat.go index f397654..b0b2c20 100644 --- a/cli/internal/tui/chat.go +++ b/cli/internal/tui/chat.go @@ -292,10 +292,7 @@ type ChatModel struct { pendingUsers []PendingUserTurn isSending bool interruptDeferred bool - // sentHere keeps replayed errors from an earlier attach from reopening - // /login; loginRequested carries a sign-in failure out of handleStreamEvent. - sentHere bool - loginRequested bool + sentHere bool WorkspaceRecovery *WorkspaceRecoveryState RecoveryInput textinput.Model @@ -1127,10 +1124,7 @@ func (m ChatModel) update(msg tea.Msg) (ChatModel, tea.Cmd) { } m.handleStreamEvent(msg.Event) m.refreshViewportContent() - if m.loginRequested { - m.loginRequested = false - return m, tea.Batch(m.waitForNextEvent(), func() tea.Msg { return ChatOpenLoginMsg{} }) - } + return m, tea.Batch(m.waitForNextEvent(), m.startAnimation(), m.windowCmd()) case ChatWindowMsg: @@ -1692,10 +1686,7 @@ func (m *ChatModel) handleStreamEvent(evt daemon.StreamEvent) { m.turn.failed = true m.closeTurn(false) } - // The daemon ends errors that only a new sign-in can fix with "run /login". - if m.sentHere && strings.HasSuffix(evt.Text, "run /login") { - m.loginRequested = true - } + case daemon.EventCompacted: m.settleActiveStream() diff --git a/cli/internal/tui/login_prompt_test.go b/cli/internal/tui/login_prompt_test.go deleted file mode 100644 index 690a385..0000000 --- a/cli/internal/tui/login_prompt_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package tui - -import ( - "testing" - - "albedo/cli/internal/daemon" -) - -func TestRevokedSignInOpensLoginOnlyForTurnsSentHere(t *testing.T) { - revoked := daemon.StreamEvent{Type: daemon.EventError, Text: "ChatGPT sign-in for a@b.c was revoked and has been removed; run /login"} - - replayed := NewChatModel(&daemon.Session{ID: "s"}, nil) - replayed.handleStreamEvent(revoked) - if replayed.loginRequested { - t.Fatal("a replayed error from an earlier attach must not open /login") - } - - live := NewChatModel(&daemon.Session{ID: "s"}, nil) - live.sentHere = true - live.handleStreamEvent(daemon.StreamEvent{Type: daemon.EventError, Text: "HttpError(500, \"\")"}) - if live.loginRequested { - t.Fatal("an unrelated error must not open /login") - } - live.handleStreamEvent(revoked) - if !live.loginRequested { - t.Fatal("a revoked sign-in during a turn sent here should open /login") - } -}