Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions apps/desktop/src/app/DesktopApp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import * as DesktopUpdates from "../updates/DesktopUpdates.ts";
import * as DesktopSnapShot from "../snapShot/DesktopSnapShot.ts";
import * as DesktopWslBackend from "../wsl/DesktopWslBackend.ts";
import * as DesktopRendererHistory from "../telemetry/DesktopRendererHistory.ts";
import { HostProcessHomeDirectory } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";

const DEFAULT_DESKTOP_BACKEND_PORT = 3773;
const MAX_TCP_PORT = 65_535;
Expand Down Expand Up @@ -286,7 +286,7 @@ const startup = Effect.gen(function* () {
const linuxElectronOptions =
environment.platform === "linux" && !hasCommandLinePasswordStore
? DesktopPreReadyPlatform.resolveEarlyLinuxElectronOptionsFromProcess(
yield* HostProcessHomeDirectory,
yield* HostProcess.HomeDirectory,
)
: preReadyElectronOptions.linux;
if (linuxElectronOptions !== null && !hasCommandLinePasswordStore) {
Expand Down
18 changes: 9 additions & 9 deletions apps/desktop/src/app/DesktopAppActivation.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
type DesktopAppActivationResponse,
} from "@t3tools/contracts";
import { resolveDesktopAppControlAddress } from "@t3tools/shared/desktopAppControl";
import { HostProcessPlatform, HostProcessUserId } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import { it } from "@effect/vitest";
import * as Effect from "effect/Effect";
import { afterEach, describe, expect } from "vite-plus/test";
Expand Down Expand Up @@ -83,8 +83,8 @@ function exchange(address: string, payload: DesktopAppActivationRequest) {
describe("desktop app control server", () => {
it.effect("roundtrips a request and removes its socket on shutdown", () =>
Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const userId = yield* HostProcessUserId;
const platform = yield* HostProcess.Platform;
const userId = yield* HostProcess.UserId;
yield* Effect.promise(async () => {
const root = await NodeFSP.mkdtemp(NodePath.join(NodeOS.tmpdir(), "t3-app-control-test-"));
const target = makeTarget(NodePath.join(root, "userdata"), platform, userId);
Expand Down Expand Up @@ -123,8 +123,8 @@ describe("desktop app control server", () => {

it.effect("cancels a queued request when the client disconnects", () =>
Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const userId = yield* HostProcessUserId;
const platform = yield* HostProcess.Platform;
const userId = yield* HostProcess.UserId;
yield* Effect.promise(async () => {
const root = await NodeFSP.mkdtemp(NodePath.join(NodeOS.tmpdir(), "t3-app-cancel-test-"));
const target = makeTarget(NodePath.join(root, "userdata"), platform, userId);
Expand Down Expand Up @@ -162,8 +162,8 @@ describe("desktop app control server", () => {
// Two desktop apps can share one state dir, such as nightly and a preview build.
it.effect("keeps a newer app's socket when an older app on the same state dir quits", () =>
Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const userId = yield* HostProcessUserId;
const platform = yield* HostProcess.Platform;
const userId = yield* HostProcess.UserId;
if (platform === "win32") return;
yield* Effect.promise(async () => {
const root = await NodeFSP.mkdtemp(NodePath.join(NodeOS.tmpdir(), "t3-app-takeover-test-"));
Expand All @@ -183,8 +183,8 @@ describe("desktop app control server", () => {

it.effect("binds its address again after the socket file is removed", () =>
Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const userId = yield* HostProcessUserId;
const platform = yield* HostProcess.Platform;
const userId = yield* HostProcess.UserId;
if (platform === "win32") return;
yield* Effect.promise(async () => {
const root = await NodeFSP.mkdtemp(NodePath.join(NodeOS.tmpdir(), "t3-app-reclaim-test-"));
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/app/DesktopAppActivation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
type DesktopAppActivationResponse,
} from "@t3tools/contracts";
import { resolveDesktopAppControlAddress } from "@t3tools/shared/desktopAppControl";
import { HostProcessUserId } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
Expand Down Expand Up @@ -315,7 +315,7 @@ export const make = Effect.gen(function* () {
const desktopWindow = yield* DesktopWindow.DesktopWindow;
const electronWindow = yield* ElectronWindow.ElectronWindow;
const path = yield* Path.Path;
const userId = yield* HostProcessUserId;
const userId = yield* HostProcess.UserId;
const runPromise = Effect.runPromiseWith(yield* Effect.context<never>());
const address = resolveDesktopAppControlAddress({
stateDir: path.resolve(desktopEnvironment.stateDir),
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/app/DesktopClerk.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import * as NodeHttp from "node:http";
import * as NodePath from "@effect/platform-node/NodePath";
import { codexAuthHandoffUrl, readCodexAuthDelivery } from "@t3tools/shared/codexAuthHandoff";
import { EnvironmentId, ProviderInstanceId } from "@t3tools/contracts";
import { HostProcessArguments } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import { assert, describe, it } from "@effect/vitest";
import * as Cause from "effect/Cause";
import * as Effect from "effect/Effect";
Expand Down Expand Up @@ -375,7 +375,7 @@ it.effect.each(["startup", "open-url"] as const)(
assert.strictEqual(delivery?.returnUrl, request.returnUrl);
}).pipe(
Effect.provide(layerDesktopClerk(true, [], "darwin", undefined, shell)),
Effect.provideService(HostProcessArguments, entry === "startup" ? ["t3", link] : ["t3"]),
Effect.provideService(HostProcess.Arguments, entry === "startup" ? ["t3", link] : ["t3"]),
Effect.provideService(ElectronApp.ElectronApp, electronApp),
Effect.provideService(
ElectronWindow.ElectronWindow,
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/app/DesktopClerk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { codexAuthDeliveryUrl, readCodexAuthHandoff } from "@t3tools/shared/code
import { receiveCodexAuthCallback, CodexAuthCallbackError } from "./CodexAuthCallback.ts";
import * as ElectronShell from "../electron/ElectronShell.ts";
import { providerAuthReturnUrl } from "@t3tools/shared/providerAuthReturnUrl";
import { HostProcessArguments } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import { clerkFrontendApiHostnameFromPublishableKey } from "@t3tools/shared/relayAuth";
import * as ElectronApp from "../electron/ElectronApp.ts";
import * as ElectronProtocol from "../electron/ElectronProtocol.ts";
Expand Down Expand Up @@ -182,7 +182,7 @@ export const make = Effect.gen(function* () {
);
return true;
};
const args = yield* HostProcessArguments;
const args = yield* HostProcess.Arguments;
args.some((value) => startProviderAuthHandoff(value));
yield* electronApp.on("open-url", (event: { preventDefault: () => void }, url: string) => {
if (startProviderAuthHandoff(url) || resumeProviderAuth(url)) event.preventDefault();
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/app/DesktopPreReadyFileSystem.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as NodeServices from "@effect/platform-node/NodeServices";
import { assert, it } from "@effect/vitest";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Effect from "effect/Effect";
import * as Exit from "effect/Exit";
import * as FileSystem from "effect/FileSystem";
Expand Down Expand Up @@ -32,7 +32,7 @@ it.layer(NodeServices.layer)("DesktopPreReadyFileSystem", (it) => {
}),
);

it.effect.skipIf(HostProcessPlatform.defaultValue() === "win32" || process.getuid?.() === 0)(
it.effect.skipIf(HostProcess.Platform.defaultValue() === "win32" || process.getuid?.() === 0)(
"fails instead of treating an unreadable profile as missing",
() =>
Effect.gen(function* () {
Expand Down
12 changes: 6 additions & 6 deletions apps/desktop/src/app/DesktopPreReadyPlatform.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { assert, describe, it } from "@effect/vitest";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
Expand Down Expand Up @@ -75,7 +75,7 @@ describe("DesktopPreReadyPlatform", () => {
}).pipe(
Effect.provide(
DesktopPreReadyPlatform.layer.pipe(
Layer.provide(Layer.succeed(HostProcessPlatform, "linux")),
Layer.provide(Layer.succeed(HostProcess.Platform, "linux")),
),
),
);
Expand Down Expand Up @@ -111,7 +111,7 @@ describe("DesktopPreReadyPlatform", () => {
}));
yield* Layer.build(
DesktopPreReadyPlatform.layer.pipe(
Layer.provide(Layer.succeed(HostProcessPlatform, "linux")),
Layer.provide(Layer.succeed(HostProcess.Platform, "linux")),
),
);
const identity = yield* Effect.promise(() => portalIdentity);
Expand All @@ -135,7 +135,7 @@ describe("DesktopPreReadyPlatform", () => {
});

return DesktopPreReadyPlatform.make.pipe(
Effect.provideService(HostProcessPlatform, "linux"),
Effect.provideService(HostProcess.Platform, "linux"),
Effect.asVoid,
);
});
Expand All @@ -151,7 +151,7 @@ describe("DesktopPreReadyPlatform", () => {
assert.include(contents, "MimeType=x-scheme-handler/t3code;");
assert.include(contents, "Icon=");
assert.equal(setDesktopNameMock.mock.calls.length, 1);
}).pipe(Effect.provideService(HostProcessPlatform, "linux"));
}).pipe(Effect.provideService(HostProcess.Platform, "linux"));
});

it.effect(
Expand All @@ -168,7 +168,7 @@ describe("DesktopPreReadyPlatform", () => {
});

const layerPreReady = DesktopPreReadyPlatform.layer.pipe(
Layer.provide(Layer.succeed(HostProcessPlatform, "darwin")),
Layer.provide(Layer.succeed(HostProcess.Platform, "darwin")),
);

const layerClerkShaped = Layer.effect(
Expand Down
6 changes: 3 additions & 3 deletions apps/desktop/src/app/DesktopPreReadyPlatform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";

import * as Electron from "electron";
import { HostProcessHomeDirectory, HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";

import * as DesktopEarlyElectronStartup from "./DesktopEarlyElectronStartup.ts";
import { resolveDesktopAppBranding } from "./DesktopEnvironment.ts";
Expand Down Expand Up @@ -50,8 +50,8 @@ export class DesktopPreReadyElectronOptions extends Context.Service<

/** @public Service construction is part of the canonical Effect module API. */
export const make = Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const homeDirectory = yield* HostProcessHomeDirectory;
const platform = yield* HostProcess.Platform;
const homeDirectory = yield* HostProcess.HomeDirectory;
return yield* Effect.sync((): DesktopPreReadyElectronOptions["Service"] => {
const linuxPasswordStoreCommandLine =
platform === "linux"
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/backend/DesktopNetworkInterfaces.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { assert, describe, it } from "@effect/vitest";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Cause from "effect/Cause";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
Expand All @@ -16,7 +16,7 @@ vi.mock("node:os", () => ({
import * as DesktopNetworkInterfaces from "./DesktopNetworkInterfaces.ts";

const layerTest = DesktopNetworkInterfaces.layer.pipe(
Layer.provide(Layer.succeed(HostProcessPlatform, "linux")),
Layer.provide(Layer.succeed(HostProcess.Platform, "linux")),
);

describe("DesktopNetworkInterfaces", () => {
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/backend/DesktopNetworkInterfaces.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as NodeOS from "node:os";

import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
Expand Down Expand Up @@ -41,7 +41,7 @@ export class DesktopNetworkInterfaces extends Context.Service<

/** @public Service construction is part of the canonical Effect module API. */
export const make = Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const platform = yield* HostProcess.Platform;
return DesktopNetworkInterfaces.of({
read: Effect.try({
try: () => NodeOS.networkInterfaces(),
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/electron/ElectronMenu.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { assert, describe, it } from "@effect/vitest";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Cause from "effect/Cause";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
Expand Down Expand Up @@ -28,7 +28,7 @@ vi.mock("electron", () => ({
import * as ElectronMenu from "./ElectronMenu.ts";

const layerTest = ElectronMenu.layer.pipe(
Layer.provide(Layer.succeed(HostProcessPlatform, "linux")),
Layer.provide(Layer.succeed(HostProcess.Platform, "linux")),
);

const makeWindow = (zoomFactor = 1): Electron.BrowserWindow =>
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/electron/ElectronMenu.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ContextMenuItem } from "@t3tools/contracts";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
Expand Down Expand Up @@ -114,7 +114,7 @@ const normalizePosition = (

/** @public Service construction is part of the canonical Effect module API. */
export const make = Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const platform = yield* HostProcess.Platform;
let destructiveMenuIconCache: Option.Option<Electron.NativeImage> | undefined;

const getDestructiveMenuIcon = (): Option.Option<Electron.NativeImage> => {
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/electron/ElectronSafeStorage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import * as Option from "effect/Option";
import * as Schema from "effect/Schema";

import * as Electron from "electron";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";

const electronSafeStorageErrorFields = {
cause: Schema.Defect(),
Expand Down Expand Up @@ -67,7 +67,7 @@ export class ElectronSafeStorage extends Context.Service<

/** @public Service construction is part of the canonical Effect module API. */
export const make = Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const platform = yield* HostProcess.Platform;

return ElectronSafeStorage.of({
isEncryptionAvailable: Effect.try({
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/electron/ElectronWindow.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { assert, describe, it } from "@effect/vitest";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as Cause from "effect/Cause";
import * as Effect from "effect/Effect";
import * as Fiber from "effect/Fiber";
Expand Down Expand Up @@ -58,7 +58,7 @@ vi.mock("electron", () => ({
import * as ElectronWindow from "./ElectronWindow.ts";

const layerTestFor = (platform: NodeJS.Platform) =>
ElectronWindow.layer.pipe(Layer.provide(Layer.succeed(HostProcessPlatform, platform)));
ElectronWindow.layer.pipe(Layer.provide(Layer.succeed(HostProcess.Platform, platform)));

const layerTest = layerTestFor("linux");

Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/electron/ElectronWindow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import * as NodePath from "node:path";

import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import type * as Cause from "effect/Cause";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
Expand Down Expand Up @@ -129,7 +129,7 @@ export class ElectronWindow extends Context.Service<

/** @public Service construction is part of the canonical Effect module API. */
export const make = Effect.gen(function* () {
const platform = yield* HostProcessPlatform;
const platform = yield* HostProcess.Platform;
// The focus worker loads a native accessibility module. Start it on the first
// capture reveal so users who never capture pay nothing at launch.
let windowsForegroundFocus: ReturnType<typeof startWindowsForegroundFocusThread> | undefined;
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/ipc/methods/notificationBadge.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as Effect from "effect/Effect";
import { beforeEach, expect, vi } from "vite-plus/test";
import { it } from "@effect/vitest";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";

const native = vi.hoisted(() => ({
setBadgeCount: vi.fn(),
Expand Down Expand Up @@ -122,7 +122,7 @@ it.effect("validates IPC and clears on native focus, quit, and disposal", () =>
expect(native.setBadgeCount).toHaveBeenLastCalledWith(0);
}),
).pipe(
Effect.provideService(HostProcessPlatform, "linux"),
Effect.provideService(HostProcess.Platform, "linux"),
Effect.provide([
ElectronApp.layer,
DesktopIpc.layer({
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/src/ipc/methods/notificationBadge.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as Electron from "electron";
import * as Effect from "effect/Effect";
import * as Schema from "effect/Schema";
import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";

import * as ElectronApp from "../../electron/ElectronApp.ts";
import * as DesktopIpc from "../DesktopIpc.ts";
Expand Down Expand Up @@ -45,7 +45,7 @@ export const installNotificationBadge = Effect.fn("desktop.ipc.installNotificati
function* () {
const ipc = yield* DesktopIpc.DesktopIpc;
const app = yield* ElectronApp.ElectronApp;
const platform = yield* HostProcessPlatform;
const platform = yield* HostProcess.Platform;
const clear = () => {
applyNotificationBadge(platform, { count: 0, image: null });
for (const window of Electron.BrowserWindow.getAllWindows()) {
Expand Down
8 changes: 4 additions & 4 deletions apps/desktop/src/ipc/methods/window.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { assert, describe, it } from "@effect/vitest";
import * as NodeServices from "@effect/platform-node/NodeServices";
import { HostProcessEnvironment, HostProcessPlatform } from "@t3tools/shared/hostProcess";
import * as HostProcess from "@t3tools/shared/HostProcess";
import * as FileSystem from "effect/FileSystem";
import * as Path from "effect/Path";
import * as Effect from "effect/Effect";
Expand Down Expand Up @@ -314,7 +314,7 @@ describe("pickProjectFavicon", () => {
);
});

it.effect.skipIf(HostProcessPlatform.defaultValue() === "win32")(
it.effect.skipIf(HostProcess.Platform.defaultValue() === "win32")(
"finds remote editors installed without PATH launchers",
() =>
Effect.gen(function* () {
Expand All @@ -333,11 +333,11 @@ it.effect.skipIf(HostProcessPlatform.defaultValue() === "win32")(
yield* fs.chmod(executable, 0o755);
}
const editors = yield* probeRemoteEditors.handler(undefined).pipe(
Effect.provideService(HostProcessEnvironment, {
Effect.provideService(HostProcess.Environment, {
HOME: home,
PATH: path.join(home, "empty"),
}),
Effect.provideService(HostProcessPlatform, "darwin"),
Effect.provideService(HostProcess.Platform, "darwin"),
);
assert.include(editors, "cursor");
assert.include(editors, "vscode");
Expand Down
Loading
Loading