Skip to content

feat(connect): let hosts set their display name - #4850

Open
PixPMusic wants to merge 3 commits into
pingdotgg:mainfrom
PixPMusic:pixpmusic/connect-host-name
Open

feat(connect): let hosts set their display name#4850
PixPMusic wants to merge 3 commits into
pingdotgg:mainfrom
PixPMusic:pixpmusic/connect-host-name

Conversation

@PixPMusic

@PixPMusic PixPMusic commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a host-local Host name setting under Settings → Connections for web and desktop
  • use the configured name in live environment descriptors and as the default for newly paired manual connections
  • refresh relay-managed environment labels from verified health responses so renamed hosts propagate to other clients
  • fall back to the existing OS-detected computer name when the setting is cleared
  • keep web and mobile environment presentation in sync with the live server descriptor

Why

T3 Connect environment names were derived from the host operating system with no supported override. Relay-managed machines, especially remote hosts, could not choose a useful display name from the host itself.

Before / After

Before

Connections settings before host naming

After

Connections settings after setting a neutral host display name

The screenshots use an isolated test environment and the neutral example “Studio Mac”; no real machine hostname is shown.

Verification

  • vp test run packages/contracts/src/settings.test.ts apps/server/src/environment/ServerEnvironment.test.ts packages/client-runtime/src/state/server.test.ts packages/client-runtime/src/relay/discovery.test.ts infra/relay/src/environments/EnvironmentConnector.test.ts infra/relay/src/environments/EnvironmentLinks.test.ts infra/relay/src/agentActivity/AgentActivityPublisher.test.ts infra/relay/src/agentActivity/MobileRegistrations.test.ts infra/relay/src/environments/EnvironmentLinker.test.ts infra/relay/src/http/Api.test.ts — 105 tests passed
  • vp run --filter @t3tools/contracts --filter @t3tools/client-runtime --filter t3 --filter @t3tools/web --filter @t3tools/mobile --filter t3code-relay --concurrency-limit 2 typecheck
  • targeted formatting and lint for all changed files
  • git diff --check
  • isolated test-t3-app pass: verified the new row is absent on main, setting “Studio Mac” persists, and Connections renders the configured name without exposing the system hostname

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I added regression coverage
  • I included before/after UI evidence

Note

Let hosts set a custom display name for their environment via Settings

  • Adds environmentLabel to ServerSettings and ServerSettingsPatch schemas, with an empty string default for backward compatibility.
  • Adds a 'Host name' input to the Connections Settings UI, visible to users with the orchestration operate scope.
  • ServerEnvironment.getDescriptor now reads the current environmentLabel from settings dynamically, falling back to the default label on read failure.
  • settingsUpdated WebSocket events now include an environment descriptor, and the client-runtime projection applies it on receipt.
  • The relay's EnvironmentConnector persists label changes reported in health responses via a new EnvironmentLinks.updateLabelForUser method.
  • Behavioral Change: getDescriptor is no longer a static snapshot — it reflects live settings state.

Macroscope summarized f03974b.

Model: GPT-5.6 Sol | Harness: Codex in T3 Code


Note

Medium Risk
Touches persisted settings, live environment descriptors, WebSocket config streaming, and relay link label persistence; failures are mostly logged/ignored on the relay path, but clients now depend on optional environment on settings updates.

Overview
Adds a host-local Host name (environmentLabel) setting so machines can choose how they appear in T3 Connect and when other clients pair manually.

Settings & server: ServerSettings gains environmentLabel (trimmed, empty = OS-detected default). ServerEnvironment.getDescriptor reads the live setting instead of a fixed snapshot; getDescriptorForSettings supports projecting labels from a settings snapshot. settingsUpdated WebSocket events now include an optional environment descriptor; client-runtime applies it to the config projection. The connect CLI wires ServerSettings into the environment layer.

UI: Settings → Connections adds a Host name row (DraftInput) for users with orchestration operate scope on web/desktop.

Relay & clients: Verified health responses that report a new label trigger EnvironmentLinks.updateLabelForUser; relay discovery updates cached environment labels from status descriptors. Web/mobile environment presentation prefers serverConfig.environment.label over the connection entry label.

Docs: Remote-access docs describe naming this host under Connections.

Reviewed by Cursor Bugbot for commit f03974b. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b88dd30e-990c-4dc4-8f86-e2ca47576741

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Jul 29, 2026
Comment thread apps/web/src/components/settings/ConnectionsSettings.tsx
@macroscopeapp

macroscopeapp Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new feature (custom host display name) with changes spanning server settings, relay database persistence, WebSocket protocol, client state, and UI. New cross-cutting features warrant human review regardless of implementation quality.

You can customize Macroscope's approvability policy. Learn more.

@PixPMusic
PixPMusic force-pushed the pixpmusic/connect-host-name branch from f7d7c28 to 1b689f9 Compare August 3, 2026 16:07

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1b689f9. Configure here.

Comment thread apps/server/src/ws.ts Outdated
@inayayousfi

Copy link
Copy Markdown
Contributor

Written by inayayousfi, typed by gpt-5.6-sol running in OpenCode.
Every call here is inayayousfi's, and no agent acted on its own.

Thanks for working through the server-owned naming design. PR #7267 now implements the same core approach and extends it with authorized remote editing, a native mobile rename screen, duplicate-name confirmation, an explicit live label event, and direct environment-authenticated relay synchronization with bounded retries.

Would you be open to closing this PR in favor of #7267? The overlap is substantial, and keeping one implementation should reduce the review and integration burden for maintainers. The remote-access documentation added here is useful and could still be carried over separately.

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

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants