Add user-visible LSP status indicators #2036

Closed
opened 2026-02-16 17:33:52 -05:00 by yindo · 3 comments
Owner

Originally created by @kierr on GitHub (Oct 10, 2025).

🎯 Feature Request

Add user-visible LSP status indicators to help users understand when Language Server Protocol servers are active, working, or encountering issues.

📋 Problem Description

Currently, opencode gives no indication when LSP servers are enabled, starting, or working. Users are "flying blind" - they don't know if:

  • ruby-lsp actually started when opening a Ruby project
  • Why diagnostics aren't appearing (server crash? missing binary?)
  • If LSP is working but just finding no issues
  • Which LSP servers are active for their current project

This makes debugging language support issues difficult and reduces confidence in the tool.

🚀 Proposed Solution

Phase 1: Minimal Status Indicators (High Impact, Low Risk)

  1. Status bar LSP indicator in TUI:

    • LSP: ✓ when servers are healthy
    • LSP: ⚠ when there are issues
    • LSP: ✗ when disconnected
    • LSP: 3 showing diagnostic count
  2. Server initialization feedback:

    • Show "Starting ruby-lsp..." during initialization
    • Display errors if servers fail to start
  3. Enhanced debug command:

    opencode debug lsp-status
    
    • Show all active servers, versions, connections
    • Display diagnostic counts and performance metrics
    • Show workspace root detection results

Phase 2: Enhanced Integration

  • Progress indicators for long server initialization
  • Hover details on LSP status showing active servers
  • Diagnostic count badges in status bar

Phase 3: Advanced Features

  • LSP performance dashboard
  • Server restart capabilities
  • Configuration validation

🏗️ Technical Implementation Notes

The codebase is well-prepared for this feature:

  • Existing status bar (status/status.go) can be extended with LSP information
  • Event system (Bus.publish()) already handles LSP diagnostics
  • Log levels (--log-level debug) can control verbosity
  • Debug commands already exist (debug/lsp.ts)
  • LSP client lifecycle already tracks server states

🎨 UI/UX Considerations

  • Normal mode: Minimal status bar indicator
  • Debug mode: Detailed server information
  • Error states: Always visible (server failed to start, missing binary)
  • Follow existing patterns in the TUI status bar
  • Use color coding for quick status recognition

📊 Success Criteria

  • Users can see at a glance if LSP is working
  • Clear feedback when LSP servers fail to start
  • Easy way to debug LSP configuration issues
  • Professional experience comparable to other editors
  • No performance impact on normal operations
Originally created by @kierr on GitHub (Oct 10, 2025). ## 🎯 Feature Request Add user-visible LSP status indicators to help users understand when Language Server Protocol servers are active, working, or encountering issues. ## 📋 Problem Description Currently, opencode gives no indication when LSP servers are enabled, starting, or working. Users are "flying blind" - they don't know if: - ruby-lsp actually started when opening a Ruby project - Why diagnostics aren't appearing (server crash? missing binary?) - If LSP is working but just finding no issues - Which LSP servers are active for their current project This makes debugging language support issues difficult and reduces confidence in the tool. ## 🚀 Proposed Solution ### Phase 1: Minimal Status Indicators (High Impact, Low Risk) 1. **Status bar LSP indicator** in TUI: - `LSP: ✓` when servers are healthy - `LSP: ⚠` when there are issues - `LSP: ✗` when disconnected - `LSP: 3` showing diagnostic count 2. **Server initialization feedback**: - Show "Starting ruby-lsp..." during initialization - Display errors if servers fail to start 3. **Enhanced debug command**: ```bash opencode debug lsp-status ``` - Show all active servers, versions, connections - Display diagnostic counts and performance metrics - Show workspace root detection results ### Phase 2: Enhanced Integration - Progress indicators for long server initialization - Hover details on LSP status showing active servers - Diagnostic count badges in status bar ### Phase 3: Advanced Features - LSP performance dashboard - Server restart capabilities - Configuration validation ## 🏗️ Technical Implementation Notes The codebase is well-prepared for this feature: - **Existing status bar** (`status/status.go`) can be extended with LSP information - **Event system** (`Bus.publish()`) already handles LSP diagnostics - **Log levels** (`--log-level debug`) can control verbosity - **Debug commands** already exist (`debug/lsp.ts`) - **LSP client lifecycle** already tracks server states ## 🎨 UI/UX Considerations - **Normal mode**: Minimal status bar indicator - **Debug mode**: Detailed server information - **Error states**: Always visible (server failed to start, missing binary) - Follow existing patterns in the TUI status bar - Use color coding for quick status recognition ## 📊 Success Criteria - Users can see at a glance if LSP is working - Clear feedback when LSP servers fail to start - Easy way to debug LSP configuration issues - Professional experience comparable to other editors - No performance impact on normal operations
yindo closed this issue 2026-02-16 17:33:52 -05:00
Author
Owner

@github-actions[bot] commented on GitHub (Oct 10, 2025):

This issue might be a duplicate of existing issues. Please check:

  • #2121: Requests an indicator to show if LSP is 'on' for a particular language, specifically suggesting an indicator at the bottom near the agent name
  • #1939: Requests the ability to view active LSPs or errors if they failed to start in the TUI

Feel free to ignore if none of these address your specific case.

@github-actions[bot] commented on GitHub (Oct 10, 2025): This issue might be a duplicate of existing issues. Please check: - #2121: Requests an indicator to show if LSP is 'on' for a particular language, specifically suggesting an indicator at the bottom near the agent name - #1939: Requests the ability to view active LSPs or errors if they failed to start in the TUI Feel free to ignore if none of these address your specific case.
Author
Owner

@rekram1-node commented on GitHub (Oct 10, 2025):

We have a couple other issues tracking this, we will have this support once the opentui migration is complete should be done within the week!

@rekram1-node commented on GitHub (Oct 10, 2025): We have a couple other issues tracking this, we will have this support once the opentui migration is complete should be done within the week!
Author
Owner

@kierr commented on GitHub (Oct 10, 2025):

We have a couple other issues tracking this, we will have this support once the opentui migration is complete should be done within the week!

FFS god damn sloppy AI, creating issues on public repos despite my firm allcaps system instruction insistence to only do so on private repos!

But to be fair, sloppy as it was in quick firing, the issue is well researched and very well written!

My fault for not scoping my PAT better! Sorry! I was trying to add this to my private fork for my own usage. But thank you, and well done on swiftly and effectively maintaining/fighting against AI slop ;)

@kierr commented on GitHub (Oct 10, 2025): > We have a couple other issues tracking this, we will have this support once the opentui migration is complete should be done within the week! FFS god damn sloppy AI, creating issues on public repos despite my firm allcaps system instruction insistence to only do so on private repos! But to be fair, sloppy as it was in quick firing, the issue is well researched and very well written! My fault for not scoping my PAT better! Sorry! I was trying to add this to my private fork for my own usage. But thank you, and well done on swiftly and effectively maintaining/fighting against AI slop ;)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#2036