Skip to content

App Merging

Nix edited this page May 15, 2026 · 1 revision

App Merging

Sometimes one local app appears on more than one port. GhostlyShare tries to show one clean app card instead of a confusing list of duplicates.

Why Apps Are Merged

Modern development stacks often open multiple related ports:

  • One HTTP port and one HTTPS port.
  • A redirect port that forwards to the real app.
  • A frontend port and an internal helper endpoint.
  • A framework app that exposes the same content through more than one local URL.

Showing every technical port would make the app list noisy. GhostlyShare merges ports when they look like the same app.

Main Merge Signals

GhostlyShare can merge apps when probes produce the same stable app fingerprint.

The fingerprint is based on normalized response identity such as:

  • Page title.
  • Content type.
  • A small body snippet.

Dynamic details are reduced before fingerprinting. For example, localhost ports, timestamps, and GUID-like values are normalized so the same app does not look different just because a dev server changed port or generated a fresh value.

HTTP and HTTPS Pairs

If one app is available through both HTTP and HTTPS, GhostlyShare prefers the HTTPS entry when it can clearly identify the pair.

Example:

Port Behavior
5113 Redirects to HTTPS
7143 Serves the app over HTTPS

GhostlyShare will usually show the HTTPS app, not both ports.

Redirect Targets

If a local port redirects to another local port, GhostlyShare may follow the redirect and show the target app.

This avoids showing a launcher or redirect endpoint when the real app is somewhere else.

Which App Card Wins

When multiple candidates represent the same app, GhostlyShare prefers:

  1. The app whose displayed URL port matches the actual app port.
  2. HTTPS over HTTP.
  3. The lower port number when the candidates are otherwise equivalent.

This keeps the list stable and predictable.

When Apps Are Not Merged

Apps are not merged just because they have the same process name or run from the same runtime.

For example, one dotnet process may host multiple apps, or one Node workspace may start separate frontend and backend apps. GhostlyShare keeps entries separate when their fingerprints or app identities are different.

Why a Duplicate May Still Appear

Duplicates can still happen when:

  • The same app returns different content on different ports.
  • One endpoint has a title and the other does not.
  • One endpoint returns HTML and another returns JSON.
  • A framework dev server changes its response during startup.
  • The app has different public-facing paths on different ports.

If you see a duplicate, wait a few seconds after startup. Many dev servers first serve a partial response, then settle into the final app response.

Clone this wiki locally