From 5b8a69c7b90b751507d0ab762dd77aaa2048408b Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Mon, 7 Sep 2026 15:00:36 -0700 Subject: [PATCH] refactor(desktop): classify backend exports (#10265) --- apps/desktop/scripts/electron-launcher.mjs | 6 +-- .../backend/DesktopBackendConfiguration.ts | 1 + .../backend/DesktopLocalEnvironmentAuth.ts | 1 + .../src/backend/DesktopNetworkInterfaces.ts | 1 + .../src/backend/DesktopServerExposure.ts | 3 +- .../src/backend/tailscaleEndpointProvider.ts | 2 +- .../src/settings/DesktopAppSettings.ts | 3 +- .../src/settings/DesktopSavedEnvironments.ts | 54 +------------------ .../telemetry/DesktopTelemetryPublisher.ts | 1 + apps/desktop/src/wsl/DesktopWslServerTree.ts | 1 + 10 files changed, 14 insertions(+), 59 deletions(-) diff --git a/apps/desktop/scripts/electron-launcher.mjs b/apps/desktop/scripts/electron-launcher.mjs index 496a8a27a7b6c1cff71453df3bb077c49008e385..ba852974ed3eec1728f8eb7b555c084ffdbb40f6 100644 --- a/apps/desktop/scripts/electron-launcher.mjs +++ b/apps/desktop/scripts/electron-launcher.mjs @@ -15,8 +15,8 @@ const repoRoot = NodePath.resolve(desktopDir, "..", ".."); const devBundleIdSuffix = NodePath.basename(repoRoot) .toLowerCase() .replaceAll(/[^a-z0-9]+/g, ""); -export const APP_DISPLAY_NAME = isDevelopment ? "T3 Code (Dev)" : "T3 Code (Alpha)"; -export const APP_BUNDLE_ID = isDevelopment +const APP_DISPLAY_NAME = isDevelopment ? "T3 Code (Dev)" : "T3 Code (Alpha)"; +const APP_BUNDLE_ID = isDevelopment ? `com.t3tools.t3code.dev.${devBundleIdSuffix || "local"}` : "com.t3tools.t3code"; const APP_PROTOCOL_SCHEMES = isDevelopment ? ["t3code-dev"] : ["t3code"]; @@ -387,7 +387,7 @@ function resolveLinuxSandboxArgs(electronBinaryPath) { return ["--no-sandbox"]; } -export function resolveElectronPath() { +function resolveElectronPath() { const electronBinaryPath = resolveElectronBinaryPath(); if (hostPlatform !== "darwin") { diff --git a/apps/desktop/src/backend/DesktopBackendConfiguration.ts b/apps/desktop/src/backend/DesktopBackendConfiguration.ts index 7a8dc8334cf119597dd37adbc58a4677c279535e..9e827180f90c7d7bb29b3312b47b5f93393a2829 100644 --- a/apps/desktop/src/backend/DesktopBackendConfiguration.ts +++ b/apps/desktop/src/backend/DesktopBackendConfiguration.ts @@ -737,6 +737,7 @@ const resolveWslStartConfig = Effect.fn("desktop.backendConfiguration.resolveWsl } satisfies DesktopBackendManager.DesktopBackendStartConfig; }); +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* () { const environment = yield* DesktopEnvironment.DesktopEnvironment; const fileSystem = yield* FileSystem.FileSystem; diff --git a/apps/desktop/src/backend/DesktopLocalEnvironmentAuth.ts b/apps/desktop/src/backend/DesktopLocalEnvironmentAuth.ts index 201492f0e4c19f4aaed4efd723b52ebf24485d92..1055dc8dbf2280acef64a4320bd2d20d2a68904a 100644 --- a/apps/desktop/src/backend/DesktopLocalEnvironmentAuth.ts +++ b/apps/desktop/src/backend/DesktopLocalEnvironmentAuth.ts @@ -42,6 +42,7 @@ export class DesktopLocalEnvironmentAuth extends Context.Service< } >()("@t3tools/desktop/backend/DesktopLocalEnvironmentAuth") {} +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* () { const pool = yield* DesktopBackendPool.DesktopBackendPool; const httpClient = yield* HttpClient.HttpClient; diff --git a/apps/desktop/src/backend/DesktopNetworkInterfaces.ts b/apps/desktop/src/backend/DesktopNetworkInterfaces.ts index 43f634c44917a6eda0d12ab8952c246533da25d6..77c9b167f9961818e0a0b4858721de7681e6dbb9 100644 --- a/apps/desktop/src/backend/DesktopNetworkInterfaces.ts +++ b/apps/desktop/src/backend/DesktopNetworkInterfaces.ts @@ -39,6 +39,7 @@ export class DesktopNetworkInterfaces extends Context.Service< } >()("@t3tools/desktop/backend/DesktopNetworkInterfaces") {} +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* () { const platform = yield* HostProcessPlatform; return DesktopNetworkInterfaces.of({ diff --git a/apps/desktop/src/backend/DesktopServerExposure.ts b/apps/desktop/src/backend/DesktopServerExposure.ts index 24c24c15a00fc37024991641dd4ababe225341db..b2c1460a72950a29480c26d2256444f0aebe9dea 100644 --- a/apps/desktop/src/backend/DesktopServerExposure.ts +++ b/apps/desktop/src/backend/DesktopServerExposure.ts @@ -27,7 +27,7 @@ import { resolveTailscaleAdvertisedEndpoints } from "./tailscaleEndpointProvider const TAILSCALE_STATUS_CACHE_TTL = Duration.seconds(60); -export const DESKTOP_LOOPBACK_HOST = "127.0.0.1"; +const DESKTOP_LOOPBACK_HOST = "127.0.0.1"; const DESKTOP_LAN_BIND_HOST = "0.0.0.0"; interface ResolvedDesktopServerExposure { @@ -411,6 +411,7 @@ const requiresBackendRelaunch = (previous: RuntimeState, next: RuntimeState): bo previous.bindHost !== next.bindHost || previous.localHttpUrl !== next.localHttpUrl; +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* () { const config = yield* DesktopConfig.DesktopConfig; const networkInterfaces = yield* DesktopNetworkInterfaces.DesktopNetworkInterfaces; diff --git a/apps/desktop/src/backend/tailscaleEndpointProvider.ts b/apps/desktop/src/backend/tailscaleEndpointProvider.ts index 0b48adc308c39c41151b981c0f85114ba3ca6b8f..5a5a20780a65b7140862c3f831ff342104bc936e 100644 --- a/apps/desktop/src/backend/tailscaleEndpointProvider.ts +++ b/apps/desktop/src/backend/tailscaleEndpointProvider.ts @@ -14,7 +14,7 @@ import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawne import type { NetworkInterfaces } from "./DesktopNetworkInterfaces.ts"; -export { isTailscaleIpv4Address, parseTailscaleMagicDnsName } from "@t3tools/tailscale"; +export { parseTailscaleMagicDnsName } from "@t3tools/tailscale"; const TAILSCALE_ENDPOINT_PROVIDER: AdvertisedEndpointProvider = { id: "tailscale", diff --git a/apps/desktop/src/settings/DesktopAppSettings.ts b/apps/desktop/src/settings/DesktopAppSettings.ts index aefc67525531899d80103915dd87189330698714..2d9623af98a6b89f1a76c260a8e712381d30b35e 100644 --- a/apps/desktop/src/settings/DesktopAppSettings.ts +++ b/apps/desktop/src/settings/DesktopAppSettings.ts @@ -55,7 +55,7 @@ export interface DesktopSettingsChange { readonly changed: boolean; } -export const DEFAULT_TAILSCALE_SERVE_PORT = 443; +const DEFAULT_TAILSCALE_SERVE_PORT = 443; const MIN_MAIN_WINDOW_SIZE = { width: 840, height: 620, @@ -450,6 +450,7 @@ const writeSettings = Effect.fn("desktop.settings.writeSettings")(function* (inp ); }); +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* () { const environment = yield* DesktopEnvironment.DesktopEnvironment; const fileSystem = yield* FileSystem.FileSystem; diff --git a/apps/desktop/src/settings/DesktopSavedEnvironments.ts b/apps/desktop/src/settings/DesktopSavedEnvironments.ts index bdda7f9c7386ab25eca2dcbb95a066fb9da712e9..afaa649495a37d1f033bd0dbe3b4bdb7d809e510 100644 --- a/apps/desktop/src/settings/DesktopSavedEnvironments.ts +++ b/apps/desktop/src/settings/DesktopSavedEnvironments.ts @@ -9,7 +9,6 @@ import * as Layer from "effect/Layer"; import * as Option from "effect/Option"; import * as Path from "effect/Path"; import * as Schema from "effect/Schema"; -import * as Ref from "effect/Ref"; import * as DesktopEnvironment from "../app/DesktopEnvironment.ts"; import * as ElectronSafeStorage from "../electron/ElectronSafeStorage.ts"; @@ -365,6 +364,7 @@ function decodeSecretBytes( ); } +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* () { const environment = yield* DesktopEnvironment.DesktopEnvironment; const fileSystem = yield* FileSystem.FileSystem; @@ -555,55 +555,3 @@ export const make = Effect.gen(function* () { }); export const layer = Layer.effect(DesktopSavedEnvironments, make); - -export const layerTest = (input?: { - readonly records?: readonly PersistedSavedEnvironmentRecord[]; - readonly secrets?: ReadonlyMap; -}) => - Layer.effect( - DesktopSavedEnvironments, - Effect.gen(function* () { - const recordsRef = yield* Ref.make(input?.records ?? []); - const secretsRef = yield* Ref.make(new Map(input?.secrets ?? [])); - - return DesktopSavedEnvironments.of({ - getRegistry: Ref.get(recordsRef), - setRegistry: (records) => Ref.set(recordsRef, records), - removeEnvironment: (environmentId) => - Ref.update(recordsRef, (records) => - records.filter((record) => record.environmentId !== environmentId), - ).pipe( - Effect.andThen( - Ref.update(secretsRef, (secrets) => { - const nextSecrets = new Map(secrets); - nextSecrets.delete(environmentId); - return nextSecrets; - }), - ), - ), - getSecret: (environmentId) => - Ref.get(secretsRef).pipe( - Effect.map((secrets) => Option.fromNullishOr(secrets.get(environmentId))), - ), - setSecret: ({ environmentId, secret }) => - Ref.get(recordsRef).pipe( - Effect.flatMap((records) => { - if (!records.some((record) => record.environmentId === environmentId)) { - return Effect.succeed(false); - } - return Ref.update(secretsRef, (secrets) => { - const nextSecrets = new Map(secrets); - nextSecrets.set(environmentId, secret); - return nextSecrets; - }).pipe(Effect.as(true)); - }), - ), - removeSecret: (environmentId) => - Ref.update(secretsRef, (secrets) => { - const nextSecrets = new Map(secrets); - nextSecrets.delete(environmentId); - return nextSecrets; - }), - }); - }), - ); diff --git a/apps/desktop/src/telemetry/DesktopTelemetryPublisher.ts b/apps/desktop/src/telemetry/DesktopTelemetryPublisher.ts index 3f56ace15fb1cc98a2add1fe35c1e8c6bf574b40..8fd478c821e7bfaf993aab612ffed32896e26b13 100644 --- a/apps/desktop/src/telemetry/DesktopTelemetryPublisher.ts +++ b/apps/desktop/src/telemetry/DesktopTelemetryPublisher.ts @@ -145,6 +145,7 @@ function sampleInterval( return LIVE_SAMPLE_INTERVAL; } +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.fn("desktop.telemetryPublisher.make")(function* () { const electronApp = yield* ElectronApp.ElectronApp; const powerMonitor = yield* ElectronPowerMonitor.ElectronPowerMonitor; diff --git a/apps/desktop/src/wsl/DesktopWslServerTree.ts b/apps/desktop/src/wsl/DesktopWslServerTree.ts index c6094e780caf859e9d2bb3ed1168e959e1da689f..22a344843f18730cf2379718c2a9a9cf8e72928b 100644 --- a/apps/desktop/src/wsl/DesktopWslServerTree.ts +++ b/apps/desktop/src/wsl/DesktopWslServerTree.ts @@ -116,6 +116,7 @@ const copyTree = ( }), ); +/** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* () { const environment = yield* DesktopEnvironment.DesktopEnvironment; const fs = yield* FileSystem.FileSystem; -- 2.54.0