X Tutup
Skip to content

Add host status indicator to connection tree#3161

Draft
Copilot wants to merge 3 commits intov1.78.2-devfrom
copilot/add-host-status-indication
Draft

Add host status indicator to connection tree#3161
Copilot wants to merge 3 commits intov1.78.2-devfrom
copilot/add-host-status-indication

Conversation

Copy link
Contributor

Copilot AI commented Feb 22, 2026

Users have no visual way to see which hosts are reachable directly in the connection tree — they must click each host individually to check its status.

Changes

New option: ShowStatusIndicatorInTree

  • Added ShowStatusIndicatorInTree boolean setting (default: false) to OptionsAppearancePage
  • Added checkbox in Options → Appearance to toggle the feature
  • Added localized string ShowStatusIndicatorInTree

HostStatus enum + ConnectionInfo property

  • New HostStatus enum: Unknown, Online, Offline
  • ConnectionInfo.HostStatus property with INotifyPropertyChanged support (not persisted/serialized, defaults to Unknown)

ConnectionStatusChecker background service

  • Runs on a 30-second timer; no-ops when the setting is disabled
  • Pings each non-container connection's hostname using System.Net.NetworkInformation.Ping
  • Throttled to max 10 concurrent pings via SemaphoreSlim
  • Catches PingExceptionOffline, other exceptions → Unknown
  • Created/disposed alongside the ConnectionTreeModel in ConnectionTree

Status bar rendering in StatusImageList

When the setting is enabled, a 3px colored bar is overlaid on the left edge of each connection icon:

  • 🟢 Green — Online
  • 🔴 Red — Offline
  • ⚪ Gray — Unknown

Status-variant images are generated and cached lazily per icon+connection-state+host-status combination.

ConnectionTree updates

  • HostStatus added to the set of PropertyChanged names that trigger a node refresh
  • ConnectionStatusChecker is started when a new ConnectionTreeModel is set and disposed on model replacement or control disposal
Original prompt

This section details on the original issue you should resolve

<issue_title>Status of hosts</issue_title>
<issue_description>
When I click host name I can see status button.

Expected Behavior

Is it possible to to check check status of all host in expanded folder and change indication of host depending on accessible host or not.

Context

It would be great to see all active and inactive hosts in current expanded directory.

Your Environment

  • Version used: ALL
  • Operating System and version (e.g. Windows 10 1709 x64):
    </issue_description>

<agent_instructions>first add to options - show status in the tree, then its on, then it should be a bar with a green or red color before icon</agent_instructions>

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits February 22, 2026 00:49
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
…ions

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
Copilot AI changed the title [WIP] Add host status indication in expanded folder Add host status indicator to connection tree Feb 22, 2026
Copilot AI requested a review from Kvarkas February 22, 2026 00:53
@sonarqubecloud
Copy link

@robertpopa22
Copy link

robertpopa22 commented Feb 24, 2026

Closing — Partially Implemented + Heavy Merge Conflicts

The core infrastructure for host status monitoring already exists in the codebase. The visual integration needs to be reimplemented fresh due to massive UI conflicts.

What already exists in codebase

Component PR's version Current codebase
Status enum HostStatus { Unknown, Online, Offline } (new file) HostReachabilityStatus { Unknown, Reachable, Unreachable } (inline in ConnectionInfo.cs)
Background checker ConnectionStatusChecker — ICMP Ping, 30s interval, SemaphoreSlim(10) HostStatusMonitorTCP port connect (checks actual service port, not just ICMP), async/await, CancellationToken, stagger delay
Status property HostStatus with RaisePropertyChangedEvent HostReachabilityStatus with SetField() pattern (consistent with all other properties)

TCP port checking is superior to ICMP ping — a host may respond to ping but have the service port down.

What's missing (to be reimplemented fresh)

  1. Visual integration in StatusImageList.GetConnectionIcon() — status bar overlay on connection icons
  2. Wiring HostStatusMonitor into ConnectionTree — start/stop on model change, listen to HostReachabilityStatus property changes
  3. ShowStatusIndicatorInTree toggle in Options > Appearance
  4. Localized string in Language.resx

Estimated effort: ~100 lines using existing infrastructure.

Why not merge this PR

11 files have heavy conflicts with the current codebase:

File Conflict reason
StatusImageList.cs Heavily refactored — now handles 4 icon variants (default, connected, template, replace-on-connect) vs PR's 2
AppearancePage.Designer.cs 3 new checkboxes added (ReplaceIconOnConnect, BoldActiveConnections, LockWindowSize), all Y-coordinates shifted
AppearancePage.cs New settings, registry support added
OptionsAppearancePage.Designer.cs/.settings New properties added at same insertion points
ConnectionTree.cs PopulateTreeView() refactored, HandleCollectionPropertyChanged now uses string?
ConnectionInfo.cs Property already exists under different name/pattern
HostStatus.cs (NEW) Duplicate of existing HostReachabilityStatus
ConnectionStatusChecker.cs (NEW) Duplicate of existing HostStatusMonitor

Thank you @Kvarkas for the feature request. The visual integration will be implemented as a focused follow-up using the existing HostStatusMonitor infrastructure. Closing as partially superseded.


We sincerely appreciate the mRemoteNG maintainers and the wonderful community that has kept this project alive and thriving for over a decade. Your work powers thousands of IT professionals worldwide, including us. Our fork builds entirely on your foundation — we're preparing a consolidated Pull Request to contribute these improvements back to the official project. Thank you for everything you've built.

— robertpopa22, community contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Status of hosts

3 participants

X Tutup