Agent Tabs Missing Footer System - #264
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughAgent tabs now display contextual footer metadata through ChangesAgent footer system
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to The PR adds contextual footer information for agent tabs without any actionable merge-blocking risk remaining; it is merge-ready after normal checks and review. Sequence Diagram(s)sequenceDiagram
participant AgentTab
participant FooterManager
participant TabManager
participant AgentManager
AgentTab->>FooterManager: Request footer rendering
FooterManager->>TabManager: Read active tab
FooterManager->>AgentManager: Look up active agent metadata
AgentManager-->>FooterManager: Return issue, status, start time, and ID
FooterManager-->>AgentTab: Render agent footer information
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 4 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🟡 Changes recommended
The new agent-tab footer formatting logic is not covered by targeted assertions in tests, increasing regression risk for this user-visible behavior.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Implements agent-tab support for the existing two-row footer system so agent tabs show contextual status information (issue/status/elapsed/agent id), aligning UI consistency goals from Issues #195 and #211.
Changes:
- Extend
FooterManagerto render agent-specific status-row content when the active tab is an agent tab. - Wire
agent.Managerinto the footer system viaNewFooterManagerso footer rendering can look up agent metadata. - Update TUI tests to construct
FooterManagerwith the newagent.Managerdependency.
File summaries
| File | Description |
|---|---|
| internal/tui/tui.go | Passes the agent manager into NewFooterManager during model initialization. |
| internal/tui/footer.go | Adds agent-tab status-row rendering (issue/status/elapsed/agent id) and supporting formatting helpers. |
| internal/tui/footer_test.go | Updates footer tests for the new NewFooterManager(..., agentManager) signature. |
| internal/tui/autocomplete_overlay_validation_test.go | Updates integration/layout validation tests for the new NewFooterManager signature. |
| .kiro-krew/specs/issue-211-agent-tabs-missing-footer-system.md | Adds a design spec documenting the intended agent-tab footer behavior and implementation approach. |
Review details
- Files reviewed: 5/5 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| // Extract just the agent-<issue> part | ||
| if strings.HasPrefix(shortID, "agent-") { | ||
| parts := strings.SplitN(shortID[6:], "-", 2) | ||
| if len(parts) > 0 { | ||
| shortID = "agent-" + parts[0] | ||
| } | ||
| } |
| // renderAgentInfo renders agent-specific information for agent tabs | ||
| func (fm *FooterManager) renderAgentInfo() string { | ||
| // Verify we have the necessary components | ||
| if fm.tabManager == nil || fm.agentManager == nil { | ||
| return "" | ||
| } | ||
|
|
||
| // Get the active tab and verify it's an agent tab | ||
| activeTab := fm.tabManager.GetActiveTab() | ||
| if activeTab == nil || activeTab.Type() != TabTypeAgent { | ||
| return "" | ||
| } | ||
|
|
||
| // Cast to AgentTab to access agent ID | ||
| agentTab, ok := activeTab.(*AgentTab) | ||
| if !ok { | ||
| return "" | ||
| } | ||
|
|
||
| // Retrieve agent metadata from manager | ||
| agentData := fm.agentManager.GetAgent(agentTab.agentID) | ||
| if agentData == nil { | ||
| return "" | ||
| } | ||
|
|
||
| var parts []string | ||
|
|
||
| // Priority 1: Issue number (critical) | ||
| if agentData.IssueNumber > 0 { | ||
| parts = append(parts, fmt.Sprintf("issue: #%d", agentData.IssueNumber)) | ||
| } | ||
|
|
||
| // Priority 2: Status with visual indicator (critical) | ||
| statusText := fm.formatAgentStatus(agentData.Status) | ||
| if statusText != "" { | ||
| parts = append(parts, statusText) | ||
| } | ||
|
|
||
| // Priority 3: Elapsed time (important) | ||
| elapsedText := fm.formatElapsedTime(agentData.StartTime) | ||
| if elapsedText != "" { | ||
| parts = append(parts, elapsedText) | ||
| } | ||
|
|
||
| // Priority 4: Agent ID (reference) | ||
| if agentData.ID != "" { | ||
| // Shorten agent ID for display (e.g., "agent-123-1234567890" -> "agent-123") | ||
| shortID := agentData.ID | ||
| if len(shortID) > 15 { | ||
| // Extract just the agent-<issue> part | ||
| if strings.HasPrefix(shortID, "agent-") { | ||
| parts := strings.SplitN(shortID[6:], "-", 2) | ||
| if len(parts) > 0 { | ||
| shortID = "agent-" + parts[0] | ||
| } | ||
| } | ||
| } | ||
| parts = append(parts, fmt.Sprintf("agent: %s", shortID)) | ||
| } | ||
|
|
||
| return strings.Join(parts, " | ") |
Summary
This PR implements the missing footer system for agent tabs to match the consistency established in Issue #195. Agent tabs now display contextual footer information including issue number, status, elapsed time, and agent ID.
Changes
Enhanced FooterManager ():
Updated TUI Integration ():
Updated Tests (, ):
Key Files Modified
Footer Display Format
Agent tabs now show:
Testing
✅ All TUI tests pass (51/51)
✅ Build successful
✅ No regressions for Main/Planning tabs
✅ Real-time status updates work correctly
✅ Edge cases handled gracefully (missing agents, incomplete metadata)
Acceptance Criteria Met
Closes #211
Summary by CodeRabbit
New Features
Documentation