Skip to content

Proactive slowness detection with status bar warning #887

@EhabY

Description

@EhabY

Follow-up to AIGOV-193.

When a user is connected to a workspace and the network is degraded, the extension should detect it and surface it in the status bar.

Detection

The extension already polls NetworkInfo from the CLI proxy every 3 seconds. We add three configurable thresholds:

  • coder.networkThreshold.latencyMs (default: 200) - latency above this triggers a warning
  • coder.networkThreshold.downloadMbps (default: 5) - download speed below this triggers a warning
  • coder.networkThreshold.uploadMbps (default: 0) - upload speed below this triggers a warning (disabled by default)

Setting any threshold to 0 disables that check. Each threshold is evaluated independently. To avoid flicker, the condition must persist across 3 consecutive polls (~9 seconds) before triggering, and 3 consecutive healthy polls to clear.

Status bar UX

  • The existing network status bar item turns yellow (statusBarItem.warningBackground) when any threshold is crossed.

  • The hover tooltip shows all live metrics with warning markers after the offending values:

    Latency: 350ms ⚠ (threshold: 200ms)
    Download: 45.2 Mbps
    Upload: 12.1 Mbps
    Connection: us-east (relay)
    Click for diagnostics
    
  • Click action depends on what's degraded:

    • Only latency is bad: runs Ping Workspace
    • Only download/upload is bad: runs Speed Test
    • Multiple thresholds crossed: opens a QuickPick to choose between Ping, Speed Test, and Support Bundle
  • In normal state, the tooltip shows the same metrics without warning markers.

Files to change

  • src/remote/sshProcess.ts - threshold checking, warning state, tooltip, click handler
  • package.json - new setting declarations

Part of AIGOV-193.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions