Conversation
Lightweight standalone package for login and connect TUI flows, separate from the seed TUI. Reuses existing spinner and text input components from the TUI framework.
Replace goroutine spinners and manual ANSI in login and connect with configtui Bubble Tea models. Replace pterm in dbinfo with dbheader + fmt. All error messages and output preserved.
refactor: replace pterm with lipgloss in subscription display
refactor: rewrite config commands to Bubble Tea
Legacy compatibility layer for keychain operations that was never imported anywhere in the codebase. All callers use `internal/keychain` directly.
Remove `DSNResolver.GetDatabaseName()` (orchestrator uses `dsn.ExtractDatabaseName()` directly), `EventHandler.logVerboseHumanPrompt()`, `AuthValidator.IsAuthenticated()` (all callers use `Validate()`), `DatabaseConnector.ConnectWithTimeout()` (only `Connect()` is used), and unused `SeedState.Area` and `SeedState.Frames` fields.
Remove `auth.IsLoggedIn`, `auth.SetLoggedIn`, `auth.SetLoggedOut` (never called from anywhere) and `keychain.MustGetManager()` (dead code with dangerous panic pattern).
Single `auth.Service` instance shared across the orchestrator instead of 4 separate instantiations. `Validate()` now returns the access token directly, eliminating `getAccessToken()` and the redundant `WhoAmI` call. Saves 1-2 HTTP round-trips per run.
`FetchLatestVersion()` previously made an HTTP call on every CLI invocation. Now the cache stores `LastCheckTime` and skips the HTTP call when within `checkInterval` (24 hours), using the cached `LatestVersion` instead. The PersistentPreRun context timeout is increased from 2s to 5s to accommodate the 3-second HTTP timeout when a fetch does occur.
`GetVersion` and `GetCLIVersion` are now fetched concurrently using goroutines after the manifest is resolved, reducing `--version` latency by running both HTTP calls in parallel instead of sequentially.
Replaces 4 identical private `isVerbose()` functions across backend, manifest, auth, and keychain packages with a single exported function in the logging package.
Centralizes DSN priority logic (SEEDFAST_DSN > DATABASE_URL > keychain) into a shared function. Both dbinfo command and DSNResolver now delegate to it instead of reimplementing.
Consolidates the email > user_id > id fallback pattern into a single function. Replaces 4 inline copies across auth service and me command.
The `TokenManager` struct was stateless, holding only a constant 2-minute threshold, yet required a heap allocation on every token validation call. Replace the struct and methods with package-level functions and a constant.
Replace the if-chain with string() casts in ProcessEvents with a labeled switch statement. Use a labeled break to exit the for loop from within the switch for terminal events. Delete dead no-op line and unused strings import in ui_helpers.go.
Shrink MCP server initial scan buffer from 10MB to 64KB while keeping the 10MB max for large messages. Replace map-based output mode validation in `validateFlags` with a switch statement to avoid allocation.
Replaces per-call http.Client creation with a package-level shared client. Enables TCP connection pooling across manifest fetch calls.
Replaces grpc.DialContext + WithBlock with grpc.NewClient which is non-blocking and the recommended API going forward.
The `seedfast_connections_test` tool now verifies connectivity using `pgxpool` instead of returning a static success message.
refactor: remove dead code and unused exports
…duplicate-api-calls # Conflicts: # cmd/dbinfo.go
refactor: deduplicate API calls and reduce code duplication
perf: optimize CLI startup performance
refactor: clean up minor inefficiencies
…gement refactor: improve connection management
…nections-test # Conflicts: # internal/mcpserver/handlers.go
fix: real database connection test in MCP server
Add ScopeIssues field to AskHumanMsg for structured scope issue passthrough from proto. Add PromptWarnings and PromptOption types to bridge orchestration warning data to TUI PromptPhase. Update convertAskHuman to populate ScopeIssues from proto UserQuestion.
Arrow-key navigation selector following the TextInputComponent pattern. Supports PromptOption items with Label/Answer pairs, keyboard navigation, and cancel via Ctrl+C/Esc.
Accept optional PromptWarnings in constructor. When warnings with options are present, show styled warning lines and selector instead of text input. Selector "describe" option falls through to text input mode. Factory passes nil to preserve existing TUI behavior.
Add RunPrompt standalone Bubble Tea program that wraps PromptPhase with promptActions to capture results without gRPC. Add buildPromptWarnings to convert warningFormatResult to TUI types. Replace pterm prompt rendering and runScopeInput/runScopeSelector calls in handleAskHuman with single RunPrompt call.
Cover SelectorComponent navigation, PromptPhase warning mode, promptActions channel behavior, buildPromptWarnings option building, helper functions, promptApp delegation, and EventBridge ScopeIssues.
docs: add plan for TUI prompt wiring in production
Replace pterm-based scope rendering in handlePlanProposed and
handleAskHuman with the TUI PlanPhase component via a new
RunScopeDisplay function. Add configurable header support to
PlanPhase for replan mode ("Previous seeding scope").
feat: migrate scope display from pterm to TUI
Remove .claude/ and .mcp.json from git tracking and add .claude/, .mcp.json, docs/ to .gitignore. Public repo must not contain internal documentation, skills, or config.
Re-register OS signal handlers after Bubble Tea exits raw mode to ensure CTRL+C continues working. Add MarkComplete to prompt phase to prevent stale spinner on final render. Send cancellation to backend when user interrupts during ask_human.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
grpc.NewClientfrom deprecatedDialContext