authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-06-19 21:04:49-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-06-19 21:04:49-07:00
log8bfdacf206608c0e14b1c5471dfa1f482a452acc
treebcb3684209f25e5abb22b0c56fd50c4e090ca24f
parentb6302784f8e058de4fb20dae931b4df29e9302fe
signature Signed by PGP key B5690EEEBB952194

[codex] Use namespace imports for desktop core services (#3207)

Co-authored-by: codex <codex@users.noreply.github.com>

4 files changed, 18 insertions(+), 22 deletions(-)

apps/desktop/src/app/DesktopApp.ts+4-3
......@@ -17,6 +17,7 @@ import * as DesktopBackendManager from "../backend/DesktopBackendManager.ts";
1717import * as DesktopEnvironment from "./DesktopEnvironment.ts";
1818import * as DesktopLifecycle from "./DesktopLifecycle.ts";
1919import * as DesktopObservability from "./DesktopObservability.ts";
20import * as DesktopShutdown from "./DesktopShutdown.ts";
2021import * as DesktopServerExposure from "../backend/DesktopServerExposure.ts";
2122import * as DesktopAppSettings from "../settings/DesktopAppSettings.ts";
2223import * as DesktopShellEnvironment from "../shell/DesktopShellEnvironment.ts";
......@@ -100,12 +101,12 @@ const handleFatalStartupError = Effect.fn("desktop.startup.handleFatalStartupErr
100101): Effect.fn.Return<
101102 void,
102103 never,
103 | DesktopLifecycle.DesktopShutdown
104 | DesktopShutdown.DesktopShutdown
104105 | DesktopState.DesktopState
105106 | ElectronApp.ElectronApp
106107 | ElectronDialog.ElectronDialog
107108> {
108 const shutdown = yield* DesktopLifecycle.DesktopShutdown;
109 const shutdown = yield* DesktopShutdown.DesktopShutdown;
109110 const state = yield* DesktopState.DesktopState;
110111 const electronApp = yield* ElectronApp.ElectronApp;
111112 const electronDialog = yield* ElectronDialog.ElectronDialog;
......@@ -237,7 +238,7 @@ const scopedProgram = Effect.scoped(
237238 yield* Effect.annotateLogsScoped({ scope: "desktop", runId });
238239 yield* Effect.annotateCurrentSpan({ scope: "desktop", runId });
239240
240 const shutdown = yield* DesktopLifecycle.DesktopShutdown;
241 const shutdown = yield* DesktopShutdown.DesktopShutdown;
241242 const backendManager = yield* DesktopBackendManager.DesktopBackendManager;
242243
243244 yield* Effect.addFinalizer(() =>
apps/desktop/src/app/DesktopLifecycle.ts+4-6
......@@ -9,17 +9,15 @@ import type * as Electron from "electron";
99
1010import * as DesktopEnvironment from "./DesktopEnvironment.ts";
1111import * as DesktopObservability from "./DesktopObservability.ts";
12import * as DesktopShutdownModule from "./DesktopShutdown.ts";
12import * as DesktopShutdown from "./DesktopShutdown.ts";
1313import * as ElectronApp from "../electron/ElectronApp.ts";
1414import * as ElectronTheme from "../electron/ElectronTheme.ts";
1515import * as DesktopState from "./DesktopState.ts";
1616import * as DesktopWindow from "../window/DesktopWindow.ts";
1717
18export { DesktopShutdown, layer as layerShutdown } from "./DesktopShutdown.ts";
19
2018export type DesktopLifecycleRuntimeServices =
2119 | DesktopEnvironment.DesktopEnvironment
22 | DesktopShutdownModule.DesktopShutdown
20 | DesktopShutdown.DesktopShutdown
2321 | DesktopState.DesktopState
2422 | DesktopWindow.DesktopWindow
2523 | ElectronApp.ElectronApp
......@@ -63,8 +61,8 @@ function addScopedListener<Args extends ReadonlyArray<unknown>>(
6361}
6462
6563const requestDesktopShutdownAndWait = Effect.fn("desktop.lifecycle.requestShutdownAndWait")(
66 function* (): Effect.fn.Return<void, never, DesktopShutdownModule.DesktopShutdown> {
67 const shutdown = yield* DesktopShutdownModule.DesktopShutdown;
64 function* (): Effect.fn.Return<void, never, DesktopShutdown.DesktopShutdown> {
65 const shutdown = yield* DesktopShutdown.DesktopShutdown;
6866 yield* shutdown.request;
6967 yield* shutdown.awaitComplete;
7068 },
apps/desktop/src/backend/DesktopServerExposure.test.ts+8-12
......@@ -9,19 +9,15 @@ import * as Sink from "effect/Sink";
99import * as Stream from "effect/Stream";
1010import { ChildProcessSpawner } from "effect/unstable/process";
1111
12import {
13 DesktopEnvironment,
14 layer as makeDesktopEnvironmentLayer,
15} from "../app/DesktopEnvironment.ts";
12import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";
1613import * as DesktopConfig from "../app/DesktopConfig.ts";
1714import * as DesktopServerExposure from "./DesktopServerExposure.ts";
18import type { DesktopNetworkInterfaces } from "./DesktopServerExposure.ts";
1915import * as DesktopAppSettings from "../settings/DesktopAppSettings.ts";
2016
2117const encoder = new TextEncoder();
2218
23const emptyNetworkInterfaces: DesktopNetworkInterfaces = {};
24const lanNetworkInterfaces: DesktopNetworkInterfaces = {
19const emptyNetworkInterfaces: DesktopServerExposure.DesktopNetworkInterfaces = {};
20const lanNetworkInterfaces: DesktopServerExposure.DesktopNetworkInterfaces = {
2521 en0: [
2622 {
2723 address: "192.168.1.20",
......@@ -31,7 +27,7 @@ const lanNetworkInterfaces: DesktopNetworkInterfaces = {
3127 ],
3228};
3329
34const tailnetNetworkInterfaces: DesktopNetworkInterfaces = {
30const tailnetNetworkInterfaces: DesktopServerExposure.DesktopNetworkInterfaces = {
3531 tailscale0: [
3632 {
3733 address: "100.90.1.2",
......@@ -72,7 +68,7 @@ function dieOnSpawnLayer() {
7268}
7369
7470function makeEnvironmentLayer(baseDir: string, env: Record<string, string | undefined> = {}) {
75 return makeDesktopEnvironmentLayer({
71 return DesktopEnvironment.layer({
7672 dirname: "/repo/apps/desktop/src",
7773 homeDirectory: baseDir,
7874 platform: "darwin",
......@@ -91,7 +87,7 @@ function makeEnvironmentLayer(baseDir: string, env: Record<string, string | unde
9187
9288function makeLayer(input: {
9389 readonly baseDir: string;
94 readonly networkInterfaces?: DesktopNetworkInterfaces;
90 readonly networkInterfaces?: DesktopServerExposure.DesktopNetworkInterfaces;
9591 readonly env?: Record<string, string | undefined>;
9692 readonly spawnerLayer?: Layer.Layer<ChildProcessSpawner.ChildProcessSpawner>;
9793}) {
......@@ -113,12 +109,12 @@ function makeLayer(input: {
113109}
114110
115111const withHarness = <A, E, R>(
116 networkInterfaces: DesktopNetworkInterfaces,
112 networkInterfaces: DesktopServerExposure.DesktopNetworkInterfaces,
117113 effect: Effect.Effect<
118114 A,
119115 E,
120116 | R
121 | DesktopEnvironment
117 | DesktopEnvironment.DesktopEnvironment
122118 | FileSystem.FileSystem
123119 | DesktopServerExposure.DesktopServerExposure
124120 | DesktopAppSettings.DesktopAppSettings
apps/desktop/src/main.ts+2-1
......@@ -35,6 +35,7 @@ import * as DesktopBackendManager from "./backend/DesktopBackendManager.ts";
3535import * as DesktopLocalEnvironmentAuth from "./backend/DesktopLocalEnvironmentAuth.ts";
3636import * as DesktopEnvironment from "./app/DesktopEnvironment.ts";
3737import * as DesktopLifecycle from "./app/DesktopLifecycle.ts";
38import * as DesktopShutdown from "./app/DesktopShutdown.ts";
3839import * as DesktopObservability from "./app/DesktopObservability.ts";
3940import * as DesktopServerExposure from "./backend/DesktopServerExposure.ts";
4041import * as DesktopClientSettings from "./settings/DesktopClientSettings.ts";
......@@ -114,7 +115,7 @@ const electronLayer = Layer.mergeAll(
114115
115116const desktopFoundationLayer = Layer.mergeAll(
116117 DesktopState.layer,
117 DesktopLifecycle.layerShutdown,
118 DesktopShutdown.layer,
118119 DesktopAppSettings.layer,
119120 DesktopClientSettings.layer,
120121 DesktopConnectionCatalogStore.layer.pipe(Layer.provideMerge(DesktopSavedEnvironments.layer)),