History

Merge branch 'main' into fix/pr-links-without-linked-project

shivam committed 2 months ago

Commit 806c2b72 parents 927b784 6ba15c044 files · +1632 −486Browse files

Unified · Split

44 files
  1. .macroscope/check-run-agents/effect-service-conventions.md +1 −0
  2. .macroscope/check-run-agents/ui-consistency.md +1 −0
  3. .vscode/settings.json +0 −1
  4. apps/desktop/package.json +1 −1
  5. apps/marketing/package.json +1 −1
  6. apps/mobile/src/features/usage/UsageLimitsSection.tsx +24 −3
  7. apps/server/package.json +1 −1
  8. apps/server/src/mcp/PreviewAutomationBroker.test.ts +43 −0
  9. apps/server/src/mcp/PreviewAutomationBroker.ts +24 −0
  10. apps/server/src/mcp/toolkits/preview/handlers.test.ts +125 −2
  11. apps/server/src/mcp/toolkits/preview/handlers.ts +106 −10
  12. apps/server/src/mcp/toolkits/preview/tools.ts +4 −2
  13. apps/web/package.json +1 −1
  14. apps/web/src/browser/browserRecording.test.ts +43 −0
  15. apps/web/src/browser/browserRecording.ts +16 −0
  16. apps/web/src/browser/browserRecordingUpload.ts +84 −0
  17. apps/web/src/components/ChatMarkdown.tsx +37 −27
  18. apps/web/src/components/ChatView.tsx +34 −18
  19. apps/web/src/components/ServerUpdateAction.test.tsx +158 −3
  20. apps/web/src/components/ServerUpdateAction.tsx +119 −53
  21. apps/web/src/components/chat/ComposerUsageLimits.tsx +28 −4
  22. apps/web/src/components/chat/ExpandedImageDialog.tsx +17 −12
  23. apps/web/src/components/chat/markdownImageGallery.ts +51 −0
  24. apps/web/src/components/chat/useAutoBalanceUpdateBanner.tsx +160 −0
  25. apps/web/src/components/preview/PreviewAutomationHosts.tsx +18 −2
  26. apps/web/src/components/preview/previewAutomationErrors.ts +9 −1
  27. apps/web/src/components/pullRequest/PullRequestMarkdown.tsx +1 −1
  28. apps/web/src/components/ui/button.tsx +1 −0
  29. infra/relay/package.json +1 −1
  30. oxlint-plugin-t3code/package.json +1 −1
  31. package.json +2 −2
  32. packages/client-runtime/package.json +1 −1
  33. packages/contracts/package.json +1 −1
  34. packages/contracts/src/previewAutomation.ts +45 −0
  35. packages/effect-acp/package.json +1 −1
  36. packages/effect-codex-app-server/package.json +1 −1
  37. packages/shared/package.json +1 −1
  38. packages/ssh/package.json +1 −1
  39. packages/tailscale/package.json +1 −1
  40. pnpm-lock.yaml +460 −303
  41. pnpm-workspace.yaml +4 −3
  42. scripts/clean-tsgo-backups.mjs +0 −24
  43. scripts/knip-schemas.ts +2 −1
  44. scripts/package.json +2 −1
.macroscope/check-run-agents/effect-service-conventions.md+1−0
@@ -14,6 +14,7 @@ exclude: · 13 unmodified lines
14 - "**/*.test.ts"14 - "**/*.test.ts"
15labels:15labels:
16 - vouch:trusted16 - vouch:trusted
17 - macroscope-review
17requires:18requires:
18 - Check19 - Check
19maxBudgetPerRun: 520maxBudgetPerRun: 5
.macroscope/check-run-agents/ui-consistency.md+1−0
@@ -13,6 +13,7 @@ exclude: · 12 unmodified lines
13 - "apps/web/src/**/*.test.tsx"13 - "apps/web/src/**/*.test.tsx"
14labels:14labels:
15 - vouch:trusted15 - vouch:trusted
16 - macroscope-review
16requires:17requires:
17 - Check18 - Check
18maxBudgetPerRun: 219maxBudgetPerRun: 2
.vscode/settings.json+0−1
@@ -6,7 +6,6 @@ · 5 unmodified lines
6 },6 },
7 "oxc.unusedDisableDirectives": "warn",7 "oxc.unusedDisableDirectives": "warn",
8 "js/ts.tsdk.path": "node_modules/typescript/lib",8 "js/ts.tsdk.path": "node_modules/typescript/lib",
9 "typescript.native-preview.tsdk": "node_modules/@typescript/native-preview",
10 "typescript.preferences.autoImportFileExcludePatterns": [".repos/**"],9 "typescript.preferences.autoImportFileExcludePatterns": [".repos/**"],
11 "javascript.preferences.autoImportFileExcludePatterns": [".repos/**"],10 "javascript.preferences.autoImportFileExcludePatterns": [".repos/**"],
12 "files.watcherExclude": {11 "files.watcherExclude": {
apps/desktop/package.json+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
7 "scripts": {7 "scripts": {
8 "ensure:electron": "node scripts/ensure-electron-runtime.mjs",8 "ensure:electron": "node scripts/ensure-electron-runtime.mjs",
9 "start": "node scripts/start-electron.mjs",9 "start": "node scripts/start-electron.mjs",
10 "typecheck": "tsgo --noEmit",10 "typecheck": "tsc --noEmit",
11 "test": "vp test run --passWithNoTests",11 "test": "vp test run --passWithNoTests",
12 "smoke-test": "node scripts/smoke-test.mjs"12 "smoke-test": "node scripts/smoke-test.mjs"
13 },13 },
apps/marketing/package.json+1−1
@@ -17,6 +17,6 @@ · 16 unmodified lines
17 "devDependencies": {17 "devDependencies": {
18 "@astrojs/check": "^0.9.7",18 "@astrojs/check": "^0.9.7",
19 "@vercel/config": "^0.3.0",19 "@vercel/config": "^0.3.0",
20 "typescript": "catalog:"20 "typescript": "~6.0.3"
21 }21 }
22}22}
apps/mobile/src/features/usage/UsageLimitsSection.tsx+24−3
@@ -97,6 +97,29 @@ function WindowRow(props: { · 96 unmodified lines
97 );97 );
98}98}
99 99
100function AccountInstanceLabel({ value }: { readonly value: string }) {
101 const [revealed, setRevealed] = useState(false);
102 if (!value.includes("@")) {
103 return (
104 <Text className="shrink text-xs text-foreground-tertiary" numberOfLines={1}>
105 · {value}
106 </Text>
107 );
108 }
109 return (
110 <Pressable
111 className="shrink active:opacity-60"
112 accessibilityRole="button"
113 accessibilityLabel={revealed ? "Hide account label" : "Reveal account label"}
114 onPress={() => setRevealed((current) => !current)}
115 >
116 <Text className="text-xs text-foreground-tertiary" numberOfLines={1}>
117 · {revealed ? value : "••••••@••••••"}
118 </Text>
119 </Pressable>
120 );
121}
122
100/** One account: icon, name and plan on a single line, then its windows. */123/** One account: icon, name and plan on a single line, then its windows. */
101export function AccountLimits(props: {124export function AccountLimits(props: {
102 readonly driver: Driver;125 readonly driver: Driver;
@@ -128,9 +151,7 @@ export function AccountLimits(props: { · 25 unmodified lines
128 <View className="min-w-0 flex-1 flex-row items-baseline gap-2">151 <View className="min-w-0 flex-1 flex-row items-baseline gap-2">
129 <Text className="text-base font-t3-medium text-foreground">{props.label}</Text>152 <Text className="text-base font-t3-medium text-foreground">{props.label}</Text>
130 {props.instanceLabel !== props.label ? (153 {props.instanceLabel !== props.label ? (
131 <Text className="shrink text-xs text-foreground-tertiary" numberOfLines={1}>154 <AccountInstanceLabel key={props.instanceLabel} value={props.instanceLabel} />
132 · {props.instanceLabel}
133 </Text>
134 ) : null}155 ) : null}
135 {props.detail ? (156 {props.detail ? (
136 <Text className="shrink text-sm text-foreground-muted" numberOfLines={1}>157 <Text className="shrink text-sm text-foreground-muted" numberOfLines={1}>
apps/server/package.json+1−1
@@ -18,7 +18,7 @@ · 17 unmodified lines
18 "dev": "node --watch src/bin.ts",18 "dev": "node --watch src/bin.ts",
19 "build:bundle": "vp pack && vp pack src/service-launcher.ts --out-dir dist --no-clean",19 "build:bundle": "vp pack && vp pack src/service-launcher.ts --out-dir dist --no-clean",
20 "start": "node dist/bin.mjs",20 "start": "node dist/bin.mjs",
21 "typecheck": "tsgo --noEmit",21 "typecheck": "tsc --noEmit",
22 "test": "vp test run"22 "test": "vp test run"
23 },23 },
24 "dependencies": {24 "dependencies": {
apps/server/src/mcp/PreviewAutomationBroker.test.ts+43−0
@@ -404,6 +404,49 @@ it.effect("classifies a remote non-editable target without collapsing it to exec · 403 unmodified lines
404 );404 );
405});405});
406 406
407it.effect.each([
408 "PreviewAutomationRecordingTransferError",
409 "PreviewAutomationRecordingDesktopUpdateRequiredError",
410 "PreviewAutomationRecordingTooLargeError",
411 "PreviewAutomationRecordingDeadlineExpiredError",
412] as const)("preserves recording failure %s", (tag) =>
413 Effect.scoped(
414 Effect.gen(function* () {
415 const broker = yield* makeBroker;
416 const remoteError = {
417 _tag: tag,
418 message: "remote recording details",
419 detail: { reason: "untrusted-reason", threadId: "untrusted-thread" },
420 };
421 const requests = requestsFrom(yield* broker.connect(makeHost()));
422 yield* Stream.runForEach(requests, (request) =>
423 broker.respond({
424 clientId: "client-1",
425 connectionId: request.connectionId,
426 requestId: request.requestId,
427 ok: false,
428 error: remoteError,
429 }),
430 ).pipe(Effect.forkScoped);
431 yield* Effect.yieldNow;
432 const error = yield* broker
433 .invoke<void>({
434 scope,
435 operation: "recordingStop",
436 input: {},
437 })
438 .pipe(Effect.flip);
439 expect(error).toMatchObject({
440 _tag: tag,
441 threadId: scope.threadId,
442 });
443 expect(error.cause).toBe(remoteError);
444 expect(error.message).toContain("remains on the desktop");
445 expect(error.message).not.toContain("remote recording details");
446 }),
447 ),
448);
449
407it.effect("distinguishes malformed remote failures", () =>450it.effect("distinguishes malformed remote failures", () =>
408 Effect.scoped(451 Effect.scoped(
409 Effect.gen(function* () {452 Effect.gen(function* () {
apps/server/src/mcp/PreviewAutomationBroker.ts+24−0
@@ -7,6 +7,10 @@ import { · 6 unmodified lines
7 PreviewAutomationMalformedResponseError,7 PreviewAutomationMalformedResponseError,
8 PreviewAutomationNoAvailableHostError,8 PreviewAutomationNoAvailableHostError,
9 PreviewAutomationRemoteUnavailableError,9 PreviewAutomationRemoteUnavailableError,
10 PreviewAutomationRecordingTransferError,
11 PreviewAutomationRecordingDesktopUpdateRequiredError,
12 PreviewAutomationRecordingTooLargeError,
13 PreviewAutomationRecordingDeadlineExpiredError,
10 PreviewAutomationRequestQueueClosedError,14 PreviewAutomationRequestQueueClosedError,
11 PreviewAutomationResultTooLargeError,15 PreviewAutomationResultTooLargeError,
12 PreviewAutomationTabNotFoundError,16 PreviewAutomationTabNotFoundError,
@@ -194,6 +198,26 @@ const classifyResponseError = ( · 181 unmodified lines
194 cause: error,198 cause: error,
195 };199 };
196 switch (error._tag) {200 switch (error._tag) {
201 case "PreviewAutomationRecordingDesktopUpdateRequiredError":
202 return new PreviewAutomationRecordingDesktopUpdateRequiredError({
203 threadId: context.threadId,
204 cause: error,
205 });
206 case "PreviewAutomationRecordingTooLargeError":
207 return new PreviewAutomationRecordingTooLargeError({
208 threadId: context.threadId,
209 cause: error,
210 });
211 case "PreviewAutomationRecordingDeadlineExpiredError":
212 return new PreviewAutomationRecordingDeadlineExpiredError({
213 threadId: context.threadId,
214 cause: error,
215 });
216 case "PreviewAutomationRecordingTransferError":
217 return new PreviewAutomationRecordingTransferError({
218 threadId: context.threadId,
219 cause: error,
220 });
197 case "PreviewAutomationNoAvailableHostError":221 case "PreviewAutomationNoAvailableHostError":
198 return new PreviewAutomationNoAvailableHostError({222 return new PreviewAutomationNoAvailableHostError({
199 ...context,223 ...context,
apps/server/src/mcp/toolkits/preview/handlers.test.ts+125−2
@@ -1,6 +1,17 @@
1import { describe, expect, it } from "vite-plus/test";1import { describe, expect, it } from "@effect/vitest";
2import * as NodeServices from "@effect/platform-node/NodeServices";
3import { ThreadId } from "@t3tools/contracts";
4import * as Effect from "effect/Effect";
5import * as FileSystem from "effect/FileSystem";
6import * as Layer from "effect/Layer";
7import * as Path from "effect/Path";
2 8
3import { normalizePreviewOpenInput } from "./handlers.ts";9import {
10 createPendingAttachmentId,
11 parseThreadSegmentFromAttachmentId,
12} from "../../../attachmentStore.ts";
13import * as ServerConfig from "../../../config.ts";
14import { claimPreviewRecording, normalizePreviewOpenInput } from "./handlers.ts";
4 15
5describe("normalizePreviewOpenInput", () => {16describe("normalizePreviewOpenInput", () => {
6 it("leaves an unstated visibility for the client preference to decide", () => {17 it("leaves an unstated visibility for the client preference to decide", () => {
@@ -30,3 +41,115 @@ describe("normalizePreviewOpenInput", () => { · 23 unmodified lines
30 });41 });
31 });42 });
32});43});
44
45describe("claimPreviewRecording", () => {
46 it.effect("overlapping and repeated claims return the same retained recording", () =>
47 Effect.gen(function* () {
48 const config = yield* ServerConfig.ServerConfig;
49 const fileSystem = yield* FileSystem.FileSystem;
50 const path = yield* Path.Path;
51 const uploadedAttachmentId = createPendingAttachmentId(".webm");
52 const pendingPath = path.join(config.attachmentsDir, `${uploadedAttachmentId}.webm`);
53 yield* fileSystem.makeDirectory(config.attachmentsDir, { recursive: true });
54 yield* fileSystem.writeFileString(pendingPath, "video!");
55 const response = {
56 id: "desktop-recording",
57 tabId: "tab-1",
58 path: "/desktop/recording.webm",
59 mimeType: "video/webm",
60 sizeBytes: 6,
61 createdAt: "2026-09-07T00:00:00.000Z",
62 uploadedAttachmentId,
63 };
64 const claim = claimPreviewRecording(ThreadId.make("thread-1"), response);
65 const [first, second] = yield* Effect.all([claim, claim], { concurrency: "unbounded" });
66 expect(first).toEqual(second);
67 expect(yield* claim).toEqual(first);
68 expect(yield* fileSystem.readFileString(first.path)).toBe("video!");
69 expect(yield* fileSystem.exists(pendingPath)).toBe(false);
70 const wrongThread = yield* claimPreviewRecording(ThreadId.make("thread-2"), response).pipe(
71 Effect.result,
72 );
73 expect(wrongThread._tag).toBe("Failure");
74 const wrongPath = yield* claimPreviewRecording(ThreadId.make("thread-1"), {
75 ...response,
76 uploadedAttachmentId: `../${uploadedAttachmentId}`,
77 }).pipe(Effect.result);
78 expect(wrongPath._tag).toBe("Failure");
79 }).pipe(
80 Effect.provide(
81 ServerConfig.layerTest(process.cwd(), { prefix: "t3-preview-recording-" }).pipe(
82 Layer.provideMerge(NodeServices.layer),
83 ),
84 ),
85 ),
86 );
87
88 it.effect.each([6, 5])(
89 "claims only a complete uploaded recording (reported bytes: %s)",
90 (sizeBytes) =>
91 Effect.gen(function* () {
92 const config = yield* ServerConfig.ServerConfig;
93 const fileSystem = yield* FileSystem.FileSystem;
94 const path = yield* Path.Path;
95 const uploadedAttachmentId = createPendingAttachmentId(".webm");
96 const pendingPath = path.join(config.attachmentsDir, `${uploadedAttachmentId}.webm`);
97 yield* fileSystem.makeDirectory(config.attachmentsDir, { recursive: true });
98 yield* fileSystem.writeFileString(pendingPath, "video!");
99 const response = {
100 id: "desktop-recording",
101 tabId: "tab-1",
102 path: "/desktop/recording.webm",
103 mimeType: "video/webm",
104 sizeBytes,
105 createdAt: "2026-09-07T00:00:00.000Z",
106 uploadedAttachmentId,
107 };
108 const result = yield* claimPreviewRecording(ThreadId.make("thread-1"), response).pipe(
109 Effect.result,
110 );
111 if (sizeBytes === 6) {
112 expect(result._tag).toBe("Success");
113 if (result._tag !== "Success") return;
114 expect(result.success.path).not.toBe(response.path);
115 expect(parseThreadSegmentFromAttachmentId(result.success.id)).toBe("thread-1");
116 expect(yield* fileSystem.readFileString(result.success.path)).toBe("video!");
117 expect(yield* fileSystem.exists(pendingPath)).toBe(false);
118 } else {
119 expect(result._tag).toBe("Failure");
120 if (result._tag !== "Failure") return;
121 expect(result.failure._tag).toBe("PreviewAutomationRecordingTransferError");
122 expect(yield* fileSystem.exists(pendingPath)).toBe(true);
123 }
124 }).pipe(
125 Effect.provide(
126 ServerConfig.layerTest(process.cwd(), { prefix: "t3-preview-recording-" }).pipe(
127 Layer.provideMerge(NodeServices.layer),
128 ),
129 ),
130 ),
131 );
132
133 it.effect("reports an older desktop without returning its inaccessible path", () =>
134 Effect.gen(function* () {
135 const result = yield* claimPreviewRecording(ThreadId.make("thread-1"), {
136 id: "desktop-recording",
137 tabId: "tab-1",
138 path: "/desktop/recording.webm",
139 mimeType: "video/webm",
140 sizeBytes: 6,
141 createdAt: "2026-09-07T00:00:00.000Z",
142 }).pipe(Effect.result);
143 expect(result._tag).toBe("Failure");
144 if (result._tag !== "Failure") return;
145 expect(result.failure._tag).toBe("PreviewAutomationRecordingDesktopUpdateRequiredError");
146 expect(result.failure.message).toContain("Update the desktop app");
147 }).pipe(
148 Effect.provide(
149 ServerConfig.layerTest(process.cwd(), { prefix: "t3-preview-recording-" }).pipe(
150 Layer.provideMerge(NodeServices.layer),
151 ),
152 ),
153 ),
154 );
155});
apps/server/src/mcp/toolkits/preview/handlers.ts+106−10
@@ -1,16 +1,31 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import type {2import * as FileSystem from "effect/FileSystem";
3 PreviewAutomationOperation,3import * as Schema from "effect/Schema";
4 PreviewAutomationOpenInput,4import {
5 PROVIDER_SEND_TURN_MAX_FILE_BYTES,
6 PREVIEW_RECORDING_STOP_TIMEOUT_MS,
7 PreviewAutomationRecordingTransferError,
8 PreviewAutomationRecordingDesktopUpdateRequiredError,
5 PreviewAutomationRecordingArtifact,9 PreviewAutomationRecordingArtifact,
6 PreviewAutomationRecordingStatus,10 type ThreadId,
7 PreviewAutomationResizeResult,11 type PreviewAutomationOperation,
8 PreviewAutomationSetColorSchemeResult,12 type PreviewAutomationOpenInput,
9 PreviewAutomationSnapshot,13 type PreviewAutomationRecordingStatus,
10 PreviewAutomationStatus,14 type PreviewAutomationResizeResult,
11 PreviewTabId,15 type PreviewAutomationSetColorSchemeResult,
16 type PreviewAutomationSnapshot,
17 type PreviewAutomationStatus,
18 type PreviewTabId,
12} from "@t3tools/contracts";19} from "@t3tools/contracts";
13 20
21import {
22 parseAttachmentUuid,
23 parseAttachmentFileExtension,
24 PENDING_ATTACHMENT_THREAD_SEGMENT,
25 toSafeThreadAttachmentSegment,
26} from "../../../attachmentStore.ts";
27import { resolveAttachmentRelativePath } from "../../../attachmentPaths.ts";
28import * as ServerConfig from "../../../config.ts";
14import * as McpInvocationContext from "../../McpInvocationContext.ts";29import * as McpInvocationContext from "../../McpInvocationContext.ts";
15import * as PreviewAutomationBroker from "../../PreviewAutomationBroker.ts";30import * as PreviewAutomationBroker from "../../PreviewAutomationBroker.ts";
16import { PreviewSnapshotToolkit, PreviewStandardToolkit, PreviewToolkit } from "./tools.ts";31import { PreviewSnapshotToolkit, PreviewStandardToolkit, PreviewToolkit } from "./tools.ts";
@@ -67,6 +82,79 @@ const invokeTargeted = <A>( · 50 unmodified lines
67 return invoke<A>(operation, operationInput, timeoutMs, tabId);82 return invoke<A>(operation, operationInput, timeoutMs, tabId);
68};83};
69 84
85const UploadedRecordingArtifact = Schema.Struct({
86 ...PreviewAutomationRecordingArtifact.fields,
87 uploadedAttachmentId: Schema.optional(Schema.String),
88});
89const decodeUploadedRecordingArtifact = Schema.decodeUnknownEffect(UploadedRecordingArtifact);
90
91export const claimPreviewRecording = Effect.fn("PreviewToolkit.claimRecording")(function* (
92 threadId: ThreadId,
93 response: unknown,
94) {
95 const artifact = yield* decodeUploadedRecordingArtifact(response).pipe(
96 Effect.mapError(
97 (cause) =>
98 new PreviewAutomationRecordingTransferError({
99 threadId,
100 cause,
101 }),
102 ),
103 );
104 if (!artifact.uploadedAttachmentId) {
105 return yield* new PreviewAutomationRecordingDesktopUpdateRequiredError({ threadId });
106 }
107 const config = yield* ServerConfig.ServerConfig;
108 const uuid = parseAttachmentUuid(artifact.uploadedAttachmentId);
109 const extension = parseAttachmentFileExtension(artifact.uploadedAttachmentId);
110 const threadSegment = toSafeThreadAttachmentSegment(threadId);
111 const pendingId = `${PENDING_ATTACHMENT_THREAD_SEGMENT}-${uuid}-${extension}`;
112 if (!uuid || !extension || !threadSegment || artifact.uploadedAttachmentId !== pendingId) {
113 return yield* new PreviewAutomationRecordingTransferError({
114 threadId,
115 });
116 }
117 // The same completed upload can be returned to overlapping stop requests.
118 const finalId = `${threadSegment}-${uuid}-${extension}`;
119 const currentPath = resolveAttachmentRelativePath({
120 attachmentsDir: config.attachmentsDir,
121 relativePath: `${pendingId}.${extension}`,
122 });
123 const finalPath = resolveAttachmentRelativePath({
124 attachmentsDir: config.attachmentsDir,
125 relativePath: `${finalId}.${extension}`,
126 });
127 if (!currentPath || !finalPath) {
128 return yield* new PreviewAutomationRecordingTransferError({ threadId });
129 }
130 const fileSystem = yield* FileSystem.FileSystem;
131 const validateFile = (filePath: string) =>
132 fileSystem.stat(filePath).pipe(
133 Effect.filterOrFail(
134 (stat) =>
135 stat.type === "File" &&
136 Number(stat.size) === artifact.sizeBytes &&
137 artifact.sizeBytes > 0 &&
138 artifact.sizeBytes <= PROVIDER_SEND_TURN_MAX_FILE_BYTES,
139 () => new PreviewAutomationRecordingTransferError({ threadId }),
140 ),
141 );
142 yield* Effect.gen(function* () {
143 yield* validateFile(currentPath);
144 yield* fileSystem.rename(currentPath, finalPath);
145 }).pipe(
146 // Another stop may already have claimed this exact upload for this thread.
147 Effect.catch((cause) =>
148 cause._tag !== "PreviewAutomationRecordingTransferError" && cause.reason._tag === "NotFound"
149 ? validateFile(finalPath)
150 : Effect.fail(cause),
151 ),
152 Effect.mapError((cause) => new PreviewAutomationRecordingTransferError({ threadId, cause })),
153 );
154 const { uploadedAttachmentId: _uploadedAttachmentId, ...recording } = artifact;
155 return { ...recording, id: finalId, path: finalPath };
156});
157
70const handlers = {158const handlers = {
71 preview_status: (input) => invokeTargeted<PreviewAutomationStatus>("status", input ?? {}),159 preview_status: (input) => invokeTargeted<PreviewAutomationStatus>("status", input ?? {}),
72 preview_open: (input) =>160 preview_open: (input) =>
@@ -94,7 +182,15 @@ const handlers = { · 21 unmodified lines
94 preview_recording_start: (input) =>182 preview_recording_start: (input) =>
95 invokeTargeted<PreviewAutomationRecordingStatus>("recordingStart", input ?? {}),183 invokeTargeted<PreviewAutomationRecordingStatus>("recordingStart", input ?? {}),
96 preview_recording_stop: (input) =>184 preview_recording_stop: (input) =>
97 invokeTargeted<PreviewAutomationRecordingArtifact>("recordingStop", input ?? {}),185 Effect.gen(function* () {
186 const scope = yield* McpInvocationContext.requireMcpCapability("preview");
187 const response = yield* invokeTargeted<unknown>(
188 "recordingStop",
189 { ...input, transferToEnvironment: true },
190 PREVIEW_RECORDING_STOP_TIMEOUT_MS,
191 );
192 return yield* claimPreviewRecording(scope.threadId, response);
193 }),
98} satisfies Parameters<typeof PreviewToolkit.toLayer>[0];194} satisfies Parameters<typeof PreviewToolkit.toLayer>[0];
99 195
100const { preview_snapshot, ...standardHandlers } = handlers;196const { preview_snapshot, ...standardHandlers } = handlers;
apps/server/src/mcp/toolkits/preview/tools.ts+4−2
@@ -19,10 +19,12 @@ import { · 18 unmodified lines
19 PreviewAutomationWaitForInput,19 PreviewAutomationWaitForInput,
20} from "@t3tools/contracts";20} from "@t3tools/contracts";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import * as FileSystem from "effect/FileSystem";
22import { Tool, Toolkit } from "effect/unstable/ai";23import { Tool, Toolkit } from "effect/unstable/ai";
23 24
24import * as McpInvocationContext from "../../McpInvocationContext.ts";25import * as McpInvocationContext from "../../McpInvocationContext.ts";
25import * as PreviewAutomationBroker from "../../PreviewAutomationBroker.ts";26import * as PreviewAutomationBroker from "../../PreviewAutomationBroker.ts";
27import * as ServerConfig from "../../../config.ts";
26 28
27const dependencies = [29const dependencies = [
28 McpInvocationContext.McpInvocationContext,30 McpInvocationContext.McpInvocationContext,
@@ -207,11 +209,11 @@ export const PreviewRecordingStartTool = safeBrowserTool( · 178 unmodified lines
207export const PreviewRecordingStopTool = safeBrowserTool(209export const PreviewRecordingStopTool = safeBrowserTool(
208 Tool.make("preview_recording_stop", {210 Tool.make("preview_recording_stop", {
209 description:211 description:
210 "Stop recording the collaborative browser tab selected by tabId, or this agent session's current tab when omitted, and save it as a local evidence artifact.",212 "Stop recording the collaborative browser tab selected by tabId, or this agent session's current tab when omitted, and transfer the compressed recording once (up to 50 MiB) to an evidence file readable in this agent's environment. Returns its environment-local path after transfer succeeds.",
211 parameters: PreviewAutomationTabTargetInput,213 parameters: PreviewAutomationTabTargetInput,
212 success: PreviewAutomationRecordingArtifact,214 success: PreviewAutomationRecordingArtifact,
213 failure: PreviewAutomationError,215 failure: PreviewAutomationError,
214 dependencies,216 dependencies: [...dependencies, FileSystem.FileSystem, ServerConfig.ServerConfig],
215 }).annotate(Tool.Title, "Stop browser recording"),217 }).annotate(Tool.Title, "Stop browser recording"),
216);218);
217 219
apps/web/package.json+1−1
@@ -8,7 +8,7 @@ · 7 unmodified lines
8 "dev": "vp dev",8 "dev": "vp dev",
9 "build": "vp build",9 "build": "vp build",
10 "preview": "vp preview",10 "preview": "vp preview",
11 "typecheck": "tsgo --noEmit",11 "typecheck": "tsc --noEmit",
12 "test": "vp test run --passWithNoTests --project unit"12 "test": "vp test run --passWithNoTests --project unit"
13 },13 },
14 "dependencies": {14 "dependencies": {
apps/web/src/browser/browserRecording.test.ts+43−0
@@ -78,6 +78,7 @@ import { · 77 unmodified lines
78 readActiveBrowserRecordingTargets,78 readActiveBrowserRecordingTargets,
79 startBrowserRecording,79 startBrowserRecording,
80 stopBrowserRecording,80 stopBrowserRecording,
81 stopBrowserRecordingForUpload,
81} from "./browserRecording";82} from "./browserRecording";
82import { useBrowserSurfaceStore } from "./browserSurfaceStore";83import { useBrowserSurfaceStore } from "./browserSurfaceStore";
83import { previewRuntimeTabId } from "./previewRuntimeTabId";84import { previewRuntimeTabId } from "./previewRuntimeTabId";
@@ -180,6 +181,48 @@ describe("browser recording", () => { · 96 unmodified lines
180 await stopBrowserRecording("automation-recording-tab");181 await stopBrowserRecording("automation-recording-tab");
181 });182 });
182 183
184 it("saves locally and releases capture before transferring the encoded recording once", async () => {
185 const stopTrack = vi.fn();
186 getDisplayMedia.mockResolvedValue({
187 getVideoTracks: () => [],
188 getTracks: () => [{ stop: stopTrack }],
189 });
190 await startBrowserRecording("transfer-tab");
191 let finishUpload!: () => void;
192 const uploaded = new Promise<void>((resolve) => {
193 finishUpload = resolve;
194 });
195 const transfer = vi.fn(async (artifact, blob: Blob) => {
196 expect(save).toHaveBeenCalledOnce();
197 expect(stopTrack).toHaveBeenCalled();
198 expect(artifact.path).toBe("/tmp/recording-test.webm");
199 expect(blob.type).toBe("video/webm;codecs=vp9");
200 await uploaded;
201 return "uploaded-recording";
202 });
203 const localStop = stopBrowserRecording("transfer-tab");
204 const firstStop = stopBrowserRecordingForUpload("transfer-tab", transfer);
205 const secondStop = stopBrowserRecordingForUpload("transfer-tab", transfer);
206 finishUpload();
207 expect(await firstStop).toEqual(await secondStop);
208 expect((await firstStop)?.uploadedAttachmentId).toBe("uploaded-recording");
209 expect((await localStop)?.path).toBe("/tmp/recording-test.webm");
210 expect(transfer).toHaveBeenCalledOnce();
211 });
212
213 it("keeps the saved desktop file and releases the recording when transfer fails", async () => {
214 await startBrowserRecording("failed-transfer-tab");
215 await expect(
216 stopBrowserRecordingForUpload("failed-transfer-tab", async () => {
217 throw new Error("Connection interrupted");
218 }),
219 ).rejects.toThrow("Connection interrupted");
220 expect(save).toHaveBeenCalledOnce();
221 expect(readActiveBrowserRecordingTabIds().has("failed-transfer-tab")).toBe(false);
222 await startBrowserRecording("failed-transfer-tab");
223 await stopBrowserRecording("failed-transfer-tab");
224 });
225
183 it("paints and holds a hidden browser surface for the recording lifetime", async () => {226 it("paints and holds a hidden browser surface for the recording lifetime", async () => {
184 startScreencast.mockImplementationOnce(async (tabId: string) => {227 startScreencast.mockImplementationOnce(async (tabId: string) => {
185 expect(animationFrameCount).toBe(2);228 expect(animationFrameCount).toBe(2);
apps/web/src/browser/browserRecording.ts+16−0
@@ -123,6 +123,8 @@ interface ActiveRecording { · 122 unmodified lines
123 releaseSurfaceActivity: (() => void) | null;123 releaseSurfaceActivity: (() => void) | null;
124 stream: MediaStream | null;124 stream: MediaStream | null;
125 recorder: MediaRecorder | null;125 recorder: MediaRecorder | null;
126 savedBlob?: Blob;
127 uploadPromise?: Promise<string>;
126 lifecycle: BrowserRecordingLifecycle;128 lifecycle: BrowserRecordingLifecycle;
127}129}
128 130
@@ -708,6 +710,7 @@ const finalizeBrowserRecording = async ( · 579 unmodified lines
708 mimeType,710 mimeType,
709 new Uint8Array(await blob.arrayBuffer()),711 new Uint8Array(await blob.arrayBuffer()),
710 );712 );
713 recording.savedBlob = blob;
711 result = { _tag: "Success", artifact };714 result = { _tag: "Success", artifact };
712 } catch (cause) {715 } catch (cause) {
713 throw new BrowserRecordingOperationError({716 throw new BrowserRecordingOperationError({
@@ -814,3 +817,16 @@ export function stopBrowserRecording( · 100 unmodified lines
814 recording.lifecycle = { phase: "stopping", stopPromise };817 recording.lifecycle = { phase: "stopping", stopPromise };
815 return stopPromise;818 return stopPromise;
816}819}
820
821/** Joins local stops and shares one upload among concurrent automation requests. */
822export async function stopBrowserRecordingForUpload(
823 tabId: string,
824 upload: (artifact: DesktopPreviewRecordingArtifact, blob: Blob) => Promise<string>,
825): Promise<(DesktopPreviewRecordingArtifact & { uploadedAttachmentId: string }) | null> {
826 const recording = activeRecordings.get(tabId);
827 if (!recording) return null;
828 const artifact = await stopBrowserRecording(tabId);
829 if (!artifact || !recording.savedBlob) return null;
830 recording.uploadPromise ??= upload(artifact, recording.savedBlob);
831 return { ...artifact, uploadedAttachmentId: await recording.uploadPromise };
832}
apps/web/src/browser/browserRecordingUpload.ts+84−0
@@ -0,0 +1,84 @@
1import {
2 PROVIDER_SEND_TURN_MAX_FILE_BYTES,
3 PreviewAutomationRecordingTransferError,
4 PreviewAutomationRecordingTooLargeError,
5 PreviewAutomationRecordingDeadlineExpiredError,
6 type DesktopPreviewRecordingArtifact,
7 type ScopedThreadRef,
8} from "@t3tools/contracts";
9import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
10import {
11 deletePendingAttachmentUpload,
12 runAttachmentUploadCycle,
13} from "@t3tools/client-runtime/state/attachments";
14
15import { appAtomRegistry } from "~/rpc/atomRegistry";
16import { attachmentEnvironment } from "~/state/attachments";
17import { readPreparedConnection } from "~/state/session";
18
19/** Sends the finished encoded file once; capture frames never cross the environment connection. */
20export async function uploadBrowserRecording(
21 { environmentId, threadId }: ScopedThreadRef,
22 artifact: DesktopPreviewRecordingArtifact,
23 blob: Blob,
24 deadlineMs: number,
25): Promise<string> {
26 if (blob.size > PROVIDER_SEND_TURN_MAX_FILE_BYTES) {
27 throw new PreviewAutomationRecordingTooLargeError({ threadId });
28 }
29 const result = await runAttachmentUploadCycle({
30 registry: appAtomRegistry,
31 createUploadUrl: attachmentEnvironment.createUploadUrl,
32 remove: attachmentEnvironment.remove,
33 environmentId,
34 upload: {
35 type: "file",
36 name: artifact.path.split(/[\\/]/).at(-1) ?? artifact.id,
37 mimeType: artifact.mimeType,
38 sizeBytes: blob.size,
39 },
40 resolveUploadUrl: (relativeUrl) => {
41 const connection = readPreparedConnection(environmentId);
42 return connection ? resolveAssetUrl(connection.httpBaseUrl, relativeUrl) : null;
43 },
44 transport: (url) => {
45 const controller = new AbortController();
46 // Encoding, saving and minting consume the same request budget. Leave time to reply.
47 const remainingMs = deadlineMs - Date.now() - 1_000;
48 return {
49 abort: () => controller.abort(),
50 done:
51 remainingMs <= 0
52 ? Promise.reject(new Error("Recording transfer deadline expired."))
53 : fetch(url, {
54 method: "POST",
55 headers: { "Content-Type": artifact.mimeType },
56 body: blob,
57 signal: AbortSignal.any([controller.signal, AbortSignal.timeout(remainingMs)]),
58 }).then((response) => {
59 if (!response.ok)
60 throw new Error(`Recording upload rejected (${response.status}).`);
61 }),
62 };
63 },
64 });
65 if (result.status !== "uploaded") {
66 if (result.attachmentId) {
67 deletePendingAttachmentUpload({
68 registry: appAtomRegistry,
69 remove: attachmentEnvironment.remove,
70 environmentId,
71 attachmentId: result.attachmentId,
72 });
73 }
74 const cause = result.status === "failed" ? result.error : undefined;
75 if (Date.now() >= deadlineMs - 1_000) {
76 throw new PreviewAutomationRecordingDeadlineExpiredError({ threadId, cause });
77 }
78 throw new PreviewAutomationRecordingTransferError({
79 threadId,
80 cause,
81 });
82 }
83 return result.attachmentId;
84}
apps/web/src/components/ChatMarkdown.tsx+37−27
@@ -89,6 +89,7 @@ import { · 88 unmodified lines
89 type ExpandedImagePreview,89 type ExpandedImagePreview,
90} from "./chat/ExpandedImagePreview";90} from "./chat/ExpandedImagePreview";
91import { ExpandedImageDialog } from "./chat/ExpandedImageDialog";91import { ExpandedImageDialog } from "./chat/ExpandedImageDialog";
92import { markdownImageGallery, markdownImageItems } from "./chat/markdownImageGallery";
92import { MediaVideoPlayer } from "./media/MediaVideoPlayer";93import { MediaVideoPlayer } from "./media/MediaVideoPlayer";
93import { MediaActions, type MediaActionSource } from "./media/MediaActions";94import { MediaActions, type MediaActionSource } from "./media/MediaActions";
94import { resolveProtocolRelativeMediaUrl } from "./media/mediaContent";95import { resolveProtocolRelativeMediaUrl } from "./media/mediaContent";
@@ -1284,10 +1285,7 @@ const MarkdownLinkContext = React.createContext(false); · 1189 unmodified lines
1284 1285
1285function expandableMarkdownImageProps(1286function expandableMarkdownImageProps(
1286 onImageExpand: ((preview: ExpandedImagePreview) => void) | undefined,1287 onImageExpand: ((preview: ExpandedImagePreview) => void) | undefined,
1287 src: string,
1288 alt: string,1288 alt: string,
1289 originalUrl?: string,
1290 actionsSource?: MediaActionSource,
1291) {1289) {
1292 if (!onImageExpand) return {};1290 if (!onImageExpand) return {};
1293 const previewName = alt.trim() || "image";1291 const previewName = alt.trim() || "image";
@@ -1295,17 +1293,8 @@ function expandableMarkdownImageProps( · 1 unmodified line
1295 if (event.currentTarget.closest("a")) return;1293 if (event.currentTarget.closest("a")) return;
1296 event.preventDefault();1294 event.preventDefault();
1297 event.stopPropagation();1295 event.stopPropagation();
1298 onImageExpand({1296 const item = markdownImageItems.get(event.currentTarget);
1299 images: [1297 if (item) onImageExpand(markdownImageGallery(event.currentTarget, item));
1300 {
1301 src,
1302 name: previewName,
1303 ...(originalUrl ? { originalUrl } : {}),
1304 ...(actionsSource ? { actionsSource } : {}),
1305 },
1306 ],
1307 index: 0,
1308 });
1309 };1298 };
1310 return {1299 return {
1311 role: "button" as const,1300 role: "button" as const,
@@ -1399,9 +1388,19 @@ function ChatMarkdownImage(props: { · 87 unmodified lines
1399 // A failure forgets the decoded image so the next URL loads behind the slot.1388 // A failure forgets the decoded image so the next URL loads behind the slot.
1400 const settled = src !== null && !failed && (!props.standalone || loadedSrc !== null);1389 const settled = src !== null && !failed && (!props.standalone || loadedSrc !== null);
1401 // Cached images are complete before `onLoad` can fire.1390 // Cached images are complete before `onLoad` can fire.
1402 const markLoadedIfComplete = useCallback((image: HTMLImageElement | null) => {1391 const markLoadedIfComplete = useCallback(
1403 if (image?.complete && image.naturalWidth > 0) setLoadedSrc(image.currentSrc || image.src);1392 (image: HTMLImageElement | null) => {
1404 }, []);1393 if (!image) return;
1394 if (image.complete && image.naturalWidth > 0) setLoadedSrc(image.currentSrc || image.src);
1395 markdownImageItems.set(image, {
1396 src,
1397 name: props.alt.trim() || "image",
1398 actionsSource: props.actionsSource,
1399 ...(props.originalUrl ? { originalUrl: props.originalUrl } : {}),
1400 });
1401 },
1402 [props.actionsSource, props.alt, props.originalUrl, src],
1403 );
1405 const imageEvents = (loadingSrc: string) => ({1404 const imageEvents = (loadingSrc: string) => ({
1406 onLoad: () => {1405 onLoad: () => {
1407 setLoadedSrc(loadingSrc);1406 setLoadedSrc(loadingSrc);
@@ -1430,13 +1429,7 @@ function ChatMarkdownImage(props: { · 22 unmodified lines
1430 props.onImageExpand && "cursor-zoom-in",1429 props.onImageExpand && "cursor-zoom-in",
1431 )}1430 )}
1432 style={props.style}1431 style={props.style}
1433 {...expandableMarkdownImageProps(1432 {...expandableMarkdownImageProps(props.onImageExpand, props.alt)}
1434 props.onImageExpand,
1435 src,
1436 props.alt,
1437 props.originalUrl,
1438 props.actionsSource,
1439 )}
1440 {...imageEvents(src)}1433 {...imageEvents(src)}
1441 />1434 />
1442 </MediaActions>1435 </MediaActions>
@@ -2174,6 +2167,7 @@ function useChatMarkdownState({ · 731 unmodified lines
2174}: ChatMarkdownProps) {2167}: ChatMarkdownProps) {
2175 const { resolvedTheme } = useTheme();2168 const { resolvedTheme } = useTheme();
2176 const [localMediaPreview, setLocalMediaPreview] = useState<ExpandedImagePreview | null>(null);2169 const [localMediaPreview, setLocalMediaPreview] = useState<ExpandedImagePreview | null>(null);
2170 const markdownRef = useRef<HTMLDivElement>(null);
2177 const expandMedia = onImageExpand ?? setLocalMediaPreview;2171 const expandMedia = onImageExpand ?? setLocalMediaPreview;
2178 const mediaRequestId = useRef(0);2172 const mediaRequestId = useRef(0);
2179 useEffect(() => {2173 useEffect(() => {
@@ -2204,7 +2198,7 @@ function useChatMarkdownState({ · 24 unmodified lines
2204 );2198 );
2205 const preparedConnection = usePreparedConnection(environmentId);2199 const preparedConnection = usePreparedConnection(environmentId);
2206 const openMarkdownMedia = useCallback(2200 const openMarkdownMedia = useCallback(
2207 (source: string, resolvedFilePath?: string) => {2201 (source: string, resolvedFilePath?: string, clickedImage?: HTMLImageElement | null) => {
2208 const requestId = ++mediaRequestId.current;2202 const requestId = ++mediaRequestId.current;
2209 void resolveMarkdownMediaPreview({2203 void resolveMarkdownMediaPreview({
2210 source,2204 source,
@@ -2219,7 +2213,14 @@ function useChatMarkdownState({ · 8 unmodified lines
2219 : undefined,2213 : undefined,
2220 }).then(2214 }).then(
2221 (preview) => {2215 (preview) => {
2222 if (preview && mediaRequestId.current === requestId) expandMedia(preview);2216 if (preview && mediaRequestId.current === requestId) {
2217 const selected = preview.images[preview.index];
2218 expandMedia(
2219 selected && selected.type !== "video" && markdownRef.current
2220 ? markdownImageGallery(clickedImage ?? markdownRef.current, selected)
2221 : preview,
2222 );
2223 }
2223 },2224 },
2224 (error: unknown) => {2225 (error: unknown) => {
2225 if (mediaRequestId.current !== requestId) return;2226 if (mediaRequestId.current !== requestId) return;
@@ -2626,6 +2627,7 @@ function useChatMarkdownState({ · 400 unmodified lines
2626 return {2627 return {
2627 componentState,2628 componentState,
2628 handleCopy,2629 handleCopy,
2630 markdownRef,
2629 markdownUrlTransform,2631 markdownUrlTransform,
2630 localMediaPreview,2632 localMediaPreview,
2631 setLocalMediaPreview,2633 setLocalMediaPreview,
@@ -2812,7 +2814,13 @@ const CHAT_MARKDOWN_COMPONENTS = { · 180 unmodified lines
2812 ) {2814 ) {
2813 event.preventDefault();2815 event.preventDefault();
2814 event.stopPropagation();2816 event.stopPropagation();
2815 openMarkdownMedia(href);2817 openMarkdownMedia(
2818 href,
2819 undefined,
2820 event.target instanceof HTMLImageElement
2821 ? event.target
2822 : event.currentTarget.querySelector("img"),
2823 );
2816 return;2824 return;
2817 }2825 }
2818 // A link to a change request in a workspace project opens beside the2826 // A link to a change request in a workspace project opens beside the
@@ -3133,6 +3141,7 @@ function ChatMarkdown({ · 314 unmodified lines
3133 const {3141 const {
3134 componentState,3142 componentState,
3135 handleCopy,3143 handleCopy,
3144 markdownRef,
3136 markdownUrlTransform,3145 markdownUrlTransform,
3137 localMediaPreview,3146 localMediaPreview,
3138 setLocalMediaPreview,3147 setLocalMediaPreview,
@@ -3150,6 +3159,7 @@ function ChatMarkdown({ · 11 unmodified lines
3150 // complete source token instead of dropping it from the rendered message.3159 // complete source token instead of dropping it from the rendered message.
3151 return (3160 return (
3152 <div3161 <div
3162 ref={markdownRef}
3153 className={cn(3163 className={cn(
3154 "chat-markdown w-full min-w-0 text-sm leading-relaxed text-foreground/80 [overflow-wrap:anywhere] [word-break:break-word]",3164 "chat-markdown w-full min-w-0 text-sm leading-relaxed text-foreground/80 [overflow-wrap:anywhere] [word-break:break-word]",
3155 className,3165 className,
apps/web/src/components/ChatView.tsx+34−18
@@ -440,6 +440,7 @@ import { · 439 unmodified lines
440} from "./ui/alert-dialog";440} from "./ui/alert-dialog";
441import { Tooltip, TooltipPopup, TooltipTrigger } from "./ui/tooltip";441import { Tooltip, TooltipPopup, TooltipTrigger } from "./ui/tooltip";
442import { ServerUpdateAction } from "./ServerUpdateAction";442import { ServerUpdateAction } from "./ServerUpdateAction";
443import { useAutoBalanceUpdateBanner } from "./chat/useAutoBalanceUpdateBanner";
443import {444import {
444 ComposerServerUpdateIcon,445 ComposerServerUpdateIcon,
445 ComposerServerUpdateStatus,446 ComposerServerUpdateStatus,
@@ -2317,6 +2318,35 @@ export default function ChatView(props: ChatViewProps) { · 1871 unmodified lines
2317 advertisedFileAttachmentBytes === null2318 advertisedFileAttachmentBytes === null
2318 ? null2319 ? null
2319 : clampFileAttachmentUploadBytes(advertisedFileAttachmentBytes);2320 : clampFileAttachmentUploadBytes(advertisedFileAttachmentBytes);
2321 const envLocked = Boolean(
2322 activeThread &&
2323 (activeThread.messages.length > 0 ||
2324 (activeThread.session !== null && activeThread.session.status !== "stopped")),
2325 );
2326
2327 const loadBalancingSettings = useClientSettings();
2328 const automaticEnvironment = Boolean(
2329 clientSettingsHydrated &&
2330 draftId &&
2331 !envLocked &&
2332 hasMultipleEnvironments &&
2333 loadBalancingSettings.loadBalancingEnabled &&
2334 draftThread?.environmentSelection !== "manual" &&
2335 (!composerHasAttachments || Boolean(draftThread?.loadBalancedEnvironmentId)) &&
2336 (!draftThread?.branch || draftThread.environmentSelection === "auto") &&
2337 !draftThread?.worktreePath,
2338 );
2339 const autoUpdateEnvironments = useMemo(
2340 () =>
2341 automaticEnvironment
2342 ? logicalProjectEnvironments.flatMap(({ environmentId }) => {
2343 const environment = environmentById.get(environmentId);
2344 return environment ? [environment] : [];
2345 })
2346 : [],
2347 [automaticEnvironment, logicalProjectEnvironments, environmentById],
2348 );
2349 const autoBalanceUpdateBanner = useAutoBalanceUpdateBanner(autoUpdateEnvironments);
2320 const versionMismatch = resolveServerConfigVersionMismatch(serverConfig);2350 const versionMismatch = resolveServerConfigVersionMismatch(serverConfig);
2321 const versionMismatchDismissKey =2351 const versionMismatchDismissKey =
2322 versionMismatch && activeThread2352 versionMismatch && activeThread
@@ -2420,6 +2450,7 @@ export default function ChatView(props: ChatViewProps) { · 97 unmodified lines
2420 }2450 }
2421 }2451 }
2422 if (2452 if (
2453 !automaticEnvironment &&
2423 serverUpdateEnvironmentId &&2454 serverUpdateEnvironmentId &&
2424 !reconnectingThroughVersionSkew &&2455 !reconnectingThroughVersionSkew &&
2425 (serverUpdateState.status === "idle"2456 (serverUpdateState.status === "idle"
@@ -2498,8 +2529,11 @@ export default function ChatView(props: ChatViewProps) { · 72 unmodified lines
2498 }),2529 }),
2499 });2530 });
2500 }2531 }
2532 if (autoBalanceUpdateBanner) items.push(autoBalanceUpdateBanner);
2501 return items;2533 return items;
2502 }, [2534 }, [
2535 automaticEnvironment,
2536 autoBalanceUpdateBanner,
2503 activeEnvironmentUnavailableState,2537 activeEnvironmentUnavailableState,
2504 reconnectWarningGraceElapsed,2538 reconnectWarningGraceElapsed,
2505 handleReconnectActiveEnvironment,2539 handleReconnectActiveEnvironment,
@@ -3233,24 +3267,6 @@ export default function ChatView(props: ChatViewProps) { · 727 unmodified lines
3233 }3267 }
3234 }, [activeThreadRef, diffOpen, isServerThread, onDiffPanelOpen]);3268 }, [activeThreadRef, diffOpen, isServerThread, onDiffPanelOpen]);
3235 3269
3236 const envLocked = Boolean(
3237 activeThread &&
3238 (activeThread.messages.length > 0 ||
3239 (activeThread.session !== null && activeThread.session.status !== "stopped")),
3240 );
3241
3242 const loadBalancingSettings = useClientSettings();
3243 const automaticEnvironment = Boolean(
3244 clientSettingsHydrated &&
3245 draftId &&
3246 !envLocked &&
3247 hasMultipleEnvironments &&
3248 loadBalancingSettings.loadBalancingEnabled &&
3249 draftThread?.environmentSelection !== "manual" &&
3250 (!composerHasAttachments || Boolean(draftThread?.loadBalancedEnvironmentId)) &&
3251 (!draftThread?.branch || draftThread.environmentSelection === "auto") &&
3252 !draftThread?.worktreePath,
3253 );
3254 const needsLoadBalancing = automaticEnvironment && !draftThread?.loadBalancedEnvironmentId;3270 const needsLoadBalancing = automaticEnvironment && !draftThread?.loadBalancedEnvironmentId;
3255 const loadBalancingCandidates = useMemo(3271 const loadBalancingCandidates = useMemo(
3256 () =>3272 () =>
apps/web/src/components/ServerUpdateAction.test.tsx+158−3
@@ -1,9 +1,10 @@
1import type { ReactElement } from "react";1import { act, type ReactElement } from "react";
2import { create, type ReactTestRenderer } from "react-test-renderer";
2import { renderToStaticMarkup } from "react-dom/server";3import { renderToStaticMarkup } from "react-dom/server";
3import type { EnvironmentId } from "@t3tools/contracts";4import type { EnvironmentId } from "@t3tools/contracts";
4import * as Cause from "effect/Cause";5import * as Cause from "effect/Cause";
5import { AsyncResult } from "effect/unstable/reactivity";6import { AsyncResult } from "effect/unstable/reactivity";
6import { beforeEach, describe, expect, it, vi } from "vite-plus/test";7import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
7 8
8const testState = vi.hoisted(() => ({9const testState = vi.hoisted(() => ({
9 updateServer: vi.fn(),10 updateServer: vi.fn(),
@@ -30,7 +31,18 @@ vi.mock("./ui/toast", () => ({ · 20 unmodified lines
30 toastManager: { add: testState.toast },31 toastManager: { add: testState.toast },
31}));32}));
32 33
33import { ServerUpdateAction, ServerUpdateProgress } from "./ServerUpdateAction";34import {
35 readConfirmDialogState,
36 registerConfirmDialogHost,
37 resetConfirmDialogForTests,
38 respondToConfirmDialog,
39} from "~/confirmDialog";
40import {
41 ServerUpdateAction,
42 ServerUpdateProgress,
43 ServerUpdatesAction,
44 type ServerUpdateTarget,
45} from "./ServerUpdateAction";
34 46
35type ActionElement = ReactElement<{47type ActionElement = ReactElement<{
36 readonly onClick?: () => void;48 readonly onClick?: () => void;
@@ -194,6 +206,149 @@ describe("ServerUpdateAction", () => { · 157 unmodified lines
194 });206 });
195});207});
196 208
209describe("ServerUpdatesAction", () => {
210 let renderer: ReactTestRenderer | undefined;
211 const targets: ReadonlyArray<ServerUpdateTarget> = [
212 {
213 environmentId: "batch-a" as EnvironmentId,
214 serverLabel: "Laptop",
215 selfUpdate: "boot-service",
216 targetVersion: "0.0.31",
217 threadContinuation: true,
218 continueThreadsAfterServerUpdate: true,
219 },
220 {
221 environmentId: "batch-b" as EnvironmentId,
222 serverLabel: "Office",
223 selfUpdate: "respawn",
224 targetVersion: "0.0.31",
225 threadContinuation: true,
226 continueThreadsAfterServerUpdate: false,
227 },
228 {
229 environmentId: "batch-c" as EnvironmentId,
230 serverLabel: "Manual",
231 selfUpdate: null,
232 targetVersion: "0.0.31",
233 },
234 ];
235 const success = AsyncResult.success({ targetVersion: "0.0.31", method: "boot-service" as const });
236
237 async function mount(batch = targets) {
238 await act(async () => {
239 renderer = create(<ServerUpdatesAction targets={batch} />);
240 });
241 return renderer!.root.findByType("button");
242 }
243
244 beforeEach(() => {
245 vi.stubGlobal("IS_REACT_ACT_ENVIRONMENT", true);
246 testState.updateServer.mockReset();
247 testState.toast.mockReset();
248 resetConfirmDialogForTests();
249 });
250 afterEach(async () => {
251 await act(async () => {
252 renderer?.unmount();
253 });
254 renderer = undefined;
255 resetConfirmDialogForTests();
256 vi.unstubAllGlobals();
257 });
258
259 it("updates both supported machines with their own continuation preference and skips the manual machine", async () => {
260 testState.updateServer.mockResolvedValue(success);
261 const button = await mount();
262 await act(async () => {
263 button.props.onClick();
264 });
265
266 expect(testState.updateServer.mock.calls.map(([target]) => target)).toEqual([
267 {
268 environmentId: "batch-a",
269 input: { targetVersion: "0.0.31", continueRunningThreads: true },
270 },
271 { environmentId: "batch-b", input: { targetVersion: "0.0.31" } },
272 ]);
273 expect(testState.toast.mock.calls.map(([toast]) => toast.title)).toEqual([
274 "Laptop updated",
275 "Office updated",
276 ]);
277 });
278
279 it("names a failed machine while letting the other machine complete", async () => {
280 testState.updateServer
281 .mockResolvedValueOnce(AsyncResult.failure(Cause.fail(new Error("Download failed"))))
282 .mockResolvedValueOnce(success);
283 const button = await mount();
284 await act(async () => {
285 button.props.onClick();
286 });
287
288 expect(testState.updateServer).toHaveBeenCalledTimes(2);
289 expect(testState.toast).toHaveBeenCalledWith({
290 type: "error",
291 title: "Laptop update failed",
292 description: "Download failed",
293 });
294 expect(testState.toast).toHaveBeenCalledWith(
295 expect.objectContaining({ type: "success", title: "Office updated" }),
296 );
297 expect(button.props.disabled).toBe(false);
298 });
299
300 it("starts each machine once when double-clicked and disables the action until both finish", async () => {
301 const completions: Array<() => void> = [];
302 testState.updateServer.mockImplementation(
303 () =>
304 new Promise((resolve) => {
305 completions.push(() => resolve(success));
306 }),
307 );
308 const button = await mount();
309 await act(async () => {
310 button.props.onClick();
311 button.props.onClick();
312 });
313 expect(testState.updateServer).toHaveBeenCalledTimes(2);
314 expect(button.props.disabled).toBe(true);
315 await act(async () => {
316 completions[0]!();
317 });
318 expect(button.props.disabled).toBe(true);
319 await act(async () => {
320 completions[1]!();
321 });
322 expect(button.props.disabled).toBe(false);
323 expect(testState.toast).toHaveBeenCalledTimes(2);
324 });
325
326 it("asks once for desktop machines and cancels the entire batch", async () => {
327 registerConfirmDialogHost();
328 const button = await mount(
329 targets.map((target, index) =>
330 index < 2 ? { ...target, selfUpdate: "desktop-managed", desktopAppUpdate: true } : target,
331 ),
332 );
333 await act(async () => {
334 button.props.onClick();
335 });
336 const confirmation = readConfirmDialogState();
337 expect(confirmation).toEqual(
338 expect.objectContaining({
339 status: "confirming",
340 message: expect.stringContaining("Laptop, Office"),
341 }),
342 );
343 expect(testState.updateServer).not.toHaveBeenCalled();
344 await act(async () => {
345 respondToConfirmDialog(false);
346 });
347 expect(testState.updateServer).not.toHaveBeenCalled();
348 expect(button.props.disabled).toBe(false);
349 });
350});
351
197describe("ServerUpdateProgress", () => {352describe("ServerUpdateProgress", () => {
198 it("shows one calm status row for the restart wait", () => {353 it("shows one calm status row for the restart wait", () => {
199 const markup = renderToStaticMarkup(354 const markup = renderToStaticMarkup(
apps/web/src/components/ServerUpdateAction.tsx+119−53
@@ -4,7 +4,7 @@ import { · 3 unmodified lines
4 isAtomCommandInterrupted,4 isAtomCommandInterrupted,
5 squashAtomCommandFailure,5 squashAtomCommandFailure,
6} from "@t3tools/client-runtime/state/runtime";6} from "@t3tools/client-runtime/state/runtime";
7import type { ComponentProps } from "react";7import { type ComponentProps, useRef, useState } from "react";
8 8
9import { requestConfirmDialog } from "~/confirmDialog";9import { requestConfirmDialog } from "~/confirmDialog";
10import { useCopyToClipboard } from "~/hooks/useCopyToClipboard";10import { useCopyToClipboard } from "~/hooks/useCopyToClipboard";
@@ -34,6 +34,113 @@ function updateFailureMessage(error: unknown): string { · 23 unmodified lines
34 return error instanceof Error ? error.message : "Server update failed.";34 return error instanceof Error ? error.message : "Server update failed.";
35}35}
36 36
37export interface ServerUpdateTarget {
38 readonly environmentId: EnvironmentId;
39 readonly serverLabel: string;
40 readonly selfUpdate: ServerSelfUpdateCapability | null;
41 readonly desktopAppUpdate?: boolean;
42 readonly threadContinuation?: boolean;
43 readonly targetVersion: string;
44 readonly continueThreadsAfterServerUpdate?: boolean;
45}
46
47type UpdateButtonProps = Pick<ComponentProps<typeof Button>, "variant" | "size"> & {
48 readonly label?: string;
49};
50
51function useServerUpdate() {
52 const updateServer = useAtomCommand(serverEnvironment.updateServer, { reportFailure: false });
53 return async (target: ServerUpdateTarget, failureTitle = "Server update failed") => {
54 const { environmentId, serverLabel, selfUpdate, targetVersion } = target;
55 if (pendingUpdateEnvironmentIds.has(environmentId)) return;
56 pendingUpdateEnvironmentIds.add(environmentId);
57 try {
58 const result = await updateServer({
59 environmentId,
60 input: {
61 targetVersion,
62 ...(target.threadContinuation && target.continueThreadsAfterServerUpdate
63 ? { continueRunningThreads: true }
64 : {}),
65 },
66 });
67 if (result._tag === "Failure") {
68 if (isAtomCommandInterrupted(result)) return;
69 throw squashAtomCommandFailure(result);
70 }
71 toastManager.add({
72 type: "success",
73 title: `${serverLabel} updated`,
74 description:
75 selfUpdate === "desktop-managed"
76 ? `Desktop app relaunched on ${result.value.targetVersion}.`
77 : `Reconnected on t3@${result.value.targetVersion}.`,
78 });
79 } catch (error) {
80 toastManager.add({
81 type: "error",
82 title: failureTitle,
83 description: updateFailureMessage(error),
84 });
85 } finally {
86 pendingUpdateEnvironmentIds.delete(environmentId);
87 }
88 };
89}
90
91/** Updates eligible machines independently; manual paths remain in the machine list. */
92export function ServerUpdatesAction({
93 targets,
94 label = "Update all",
95 variant = "outline",
96 size = "xs",
97}: UpdateButtonProps & {
98 readonly targets: ReadonlyArray<ServerUpdateTarget>;
99}) {
100 const update = useServerUpdate();
101 const pending = useRef(false);
102 const [isPending, setIsPending] = useState(false);
103 const eligible = targets.filter(
104 (target) =>
105 target.selfUpdate !== null &&
106 (target.selfUpdate !== "desktop-managed" || target.desktopAppUpdate),
107 );
108 const handleUpdate = async () => {
109 if (pending.current) return;
110 pending.current = true;
111 setIsPending(true);
112 try {
113 const available = eligible.filter(
114 (target) => !pendingUpdateEnvironmentIds.has(target.environmentId),
115 );
116 const desktopTargets = available.filter((target) => target.selfUpdate === "desktop-managed");
117 if (desktopTargets.length > 0) {
118 const confirmed =
119 (await requestConfirmDialog(
120 `Update the T3 Code desktop apps on ${desktopTargets.map((target) => target.serverLabel).join(", ")}? They will close and relaunch on those machines.`,
121 )) ?? true;
122 if (!confirmed) return;
123 }
124 await Promise.all(
125 available.map((target) => update(target, `${target.serverLabel} update failed`)),
126 );
127 } finally {
128 pending.current = false;
129 setIsPending(false);
130 }
131 };
132 return (
133 <Button
134 size={size}
135 variant={variant}
136 disabled={isPending || eligible.length === 0}
137 onClick={() => void handleUpdate()}
138 >
139 {label}
140 </Button>
141 );
142}
143
37/**144/**
38 * One-row status for an in-flight server update: "Downloading…" then145 * One-row status for an in-flight server update: "Downloading…" then
39 * "Restarting…". The update is a wait, not a warning: a single pulsing dot146 * "Restarting…". The update is a wait, not a warning: a single pulsing dot
@@ -84,28 +191,13 @@ export function ServerUpdateAction({ · 44 unmodified lines
84 label = "Update",191 label = "Update",
85 variant = "outline",192 variant = "outline",
86 size = "xs",193 size = "xs",
87}: {194}: Omit<ServerUpdateTarget, "continueThreadsAfterServerUpdate"> & UpdateButtonProps) {
88 readonly environmentId: EnvironmentId;
89 readonly serverLabel: string;
90 readonly selfUpdate: ServerSelfUpdateCapability | null;
91 /** The desktop app supervising this server accepts remote update
92 requests (capabilities.desktopAppUpdate). */
93 readonly desktopAppUpdate?: boolean;
94 /** The server can durably continue running provider turns after updating. */
95 readonly threadContinuation?: boolean;
96 readonly targetVersion: string;
97 readonly label?: string;
98 readonly variant?: ComponentProps<typeof Button>["variant"];
99 readonly size?: ComponentProps<typeof Button>["size"];
100}) {
101 const isDesktopAppUpdate = selfUpdate === "desktop-managed";195 const isDesktopAppUpdate = selfUpdate === "desktop-managed";
102 const continueThreadsAfterServerUpdate = useEnvironmentSettings(196 const continueThreadsAfterServerUpdate = useEnvironmentSettings(
103 environmentId,197 environmentId,
104 (settings) => settings.continueThreadsAfterServerUpdate,198 (settings) => settings.continueThreadsAfterServerUpdate,
105 );199 );
106 const updateServer = useAtomCommand(serverEnvironment.updateServer, {200 const update = useServerUpdate();
107 reportFailure: false,
108 });
109 const { copyToClipboard } = useCopyToClipboard<{ command: string }>({201 const { copyToClipboard } = useCopyToClipboard<{ command: string }>({
110 target: "update command",202 target: "update command",
111 onCopy: ({ command }) => {203 onCopy: ({ command }) => {
@@ -140,41 +232,15 @@ export function ServerUpdateAction({ · 28 unmodified lines
140 return;232 return;
141 }233 }
142 }234 }
143 if (pendingUpdateEnvironmentIds.has(environmentId)) {235 await update({
144 return;236 environmentId,
145 }237 serverLabel,
146 pendingUpdateEnvironmentIds.add(environmentId);238 selfUpdate,
147 try {239 desktopAppUpdate,
148 const result = await updateServer({240 threadContinuation,
149 environmentId,241 targetVersion,
150 input: {242 continueThreadsAfterServerUpdate,
151 targetVersion,243 });
152 ...(threadContinuation && continueThreadsAfterServerUpdate
153 ? { continueRunningThreads: true }
154 : {}),
155 },
156 });
157 if (result._tag === "Failure") {
158 if (isAtomCommandInterrupted(result)) {
159 return;
160 }
161 toastManager.add({
162 type: "error",
163 title: "Server update failed",
164 description: updateFailureMessage(squashAtomCommandFailure(result)),
165 });
166 return;
167 }
168 toastManager.add({
169 type: "success",
170 title: `${serverLabel} updated`,
171 description: isDesktopAppUpdate
172 ? `Desktop app relaunched on ${result.value.targetVersion}.`
173 : `Reconnected on t3@${result.value.targetVersion}.`,
174 });
175 } finally {
176 pendingUpdateEnvironmentIds.delete(environmentId);
177 }
178 };244 };
179 245
180 if (selfUpdate === "desktop-managed" && !desktopAppUpdate) {246 if (selfUpdate === "desktop-managed" && !desktopAppUpdate) {
apps/web/src/components/chat/ComposerUsageLimits.tsx+28−4
@@ -3,6 +3,7 @@ import { limitsNotice } from "@t3tools/shared/usageLimits"; · 2 unmodified lines
3import { GaugeIcon } from "lucide-react";3import { GaugeIcon } from "lucide-react";
4 4
5import { getDriverOption } from "../settings/providerDriverMeta";5import { getDriverOption } from "../settings/providerDriverMeta";
6import { RedactedSensitiveText } from "../settings/RedactedSensitiveText";
6import { LimitWindows, ResetCredits } from "../usage/UsageLimits";7import { LimitWindows, ResetCredits } from "../usage/UsageLimits";
7import { ComposerBanner } from "./ComposerBanner";8import { ComposerBanner } from "./ComposerBanner";
8import type { ComposerBannerStackItem } from "./ComposerBannerStack";9import type { ComposerBannerStackItem } from "./ComposerBannerStack";
@@ -20,6 +21,27 @@ function accountLabel(account: UsageLimitsReport["accounts"][number]): string { · 11 unmodified lines
20 : driver;21 : driver;
21}22}
22 23
24function AccountSummary({ account }: { readonly account: UsageLimitsReport["accounts"][number] }) {
25 const label = accountLabel(account);
26 return (
27 <>
28 {label.includes("@") ? (
29 <RedactedSensitiveText
30 key={label}
31 value={label}
32 ariaLabel="Toggle account label visibility"
33 revealTooltip="Click to reveal account"
34 hideTooltip="Click to hide account"
35 className="max-w-full truncate align-bottom font-sans text-xs leading-normal"
36 />
37 ) : (
38 label
39 )}
40 {account.plan ? ` · ${account.plan}` : null}
41 </>
42 );
43}
44
23/** The /usage-limits result as a composer notice: it stacks under warnings and dismisses like one. */45/** The /usage-limits result as a composer notice: it stacks under warnings and dismisses like one. */
24export function usageLimitsBannerItem(46export function usageLimitsBannerItem(
25 id: string,47 id: string,
@@ -29,9 +51,11 @@ export function usageLimitsBannerItem( · 3 unmodified lines
29): ComposerBannerStackItem {51): ComposerBannerStackItem {
30 const [first] = report.accounts;52 const [first] = report.accounts;
31 const single = report.accounts.length === 1 && first ? first : null;53 const single = report.accounts.length === 1 && first ? first : null;
32 const summary = single54 const summary = single ? (
33 ? [accountLabel(single), single.plan].filter(Boolean).join(" · ")55 <AccountSummary account={single} />
34 : `${report.accounts.length} accounts`;56 ) : (
57 `${report.accounts.length} accounts`
58 );
35 return {59 return {
36 id,60 id,
37 variant: "info",61 variant: "info",
@@ -65,7 +89,7 @@ function UsageLimitsBannerBody({ · 27 unmodified lines
65 <div key={account.id} className="flex min-w-0 flex-col gap-1">89 <div key={account.id} className="flex min-w-0 flex-col gap-1">
66 {report.accounts.length > 1 ? (90 {report.accounts.length > 1 ? (
67 <span className="truncate text-xs text-muted-foreground">91 <span className="truncate text-xs text-muted-foreground">
68 {[accountLabel(account), account.plan].filter(Boolean).join(" · ")}92 <AccountSummary account={account} />
69 </span>93 </span>
70 ) : null}94 ) : null}
71 {notice ? (95 {notice ? (
apps/web/src/components/chat/ExpandedImageDialog.tsx+17−12
@@ -83,9 +83,14 @@ export const ExpandedImageDialog = memo(function ExpandedImageDialog({ · 82 unmodified lines
83 }83 }
84 : source;84 : source;
85 85
86 const navigateImage = useCallback((direction: -1 | 1) => {86 const navigateImage = useCallback(
87 setImageOffset((current) => current + direction);87 (direction: -1 | 1) => {
88 }, []);88 setImageOffset(
89 (current) => (current + direction + preview.images.length) % preview.images.length,
90 );
91 },
92 [preview.images.length],
93 );
89 94
90 // The element that opened the preview gets focus back on close. Without95 // The element that opened the preview gets focus back on close. Without
91 // this a close button click leaves focus on the unmounted dialog, and the96 // this a close button click leaves focus on the unmounted dialog, and the
@@ -161,13 +166,13 @@ export const ExpandedImageDialog = memo(function ExpandedImageDialog({ · 69 unmodified lines
161 {preview.images.length > 1 && (166 {preview.images.length > 1 && (
162 <Button167 <Button
163 type="button"168 type="button"
164 size="icon"169 size="icon-xl"
165 variant="ghost"170 variant="overlay"
166 className="absolute left-2 top-1/2 z-20 -translate-y-1/2 text-white/90 hover:bg-white/10 hover:text-white sm:left-6"171 className="absolute left-2 top-1/2 z-20 -translate-y-1/2 sm:left-6"
167 aria-label="Previous image"172 aria-label="Previous image"
168 onClick={() => navigateImage(-1)}173 onClick={() => navigateImage(-1)}
169 >174 >
170 <ChevronLeftIcon className="size-5" />175 <ChevronLeftIcon className="size-7" />
171 </Button>176 </Button>
172 )}177 )}
173 <MediaActions source={actionsSource}>178 <MediaActions source={actionsSource}>
@@ -209,7 +214,7 @@ export const ExpandedImageDialog = memo(function ExpandedImageDialog({ · 35 unmodified lines
209 onError={() => setFailedImageSrc(item.src)}214 onError={() => setFailedImageSrc(item.src)}
210 />215 />
211 )}216 )}
212 <div className="mt-2 flex max-w-[92vw] items-center justify-center gap-1.5 text-xs text-muted-foreground/80">217 <div className="mt-2 flex max-w-[92vw] items-center justify-center gap-1.5 text-xs text-white/80">
213 <span className="truncate">218 <span className="truncate">
214 {item.name}219 {item.name}
215 {preview.images.length > 1 ? ` (${index + 1}/${preview.images.length})` : ""}220 {preview.images.length > 1 ? ` (${index + 1}/${preview.images.length})` : ""}
@@ -247,13 +252,13 @@ export const ExpandedImageDialog = memo(function ExpandedImageDialog({ · 31 unmodified lines
247 {preview.images.length > 1 && (252 {preview.images.length > 1 && (
248 <Button253 <Button
249 type="button"254 type="button"
250 size="icon"255 size="icon-xl"
251 variant="ghost"256 variant="overlay"
252 className="absolute right-2 top-1/2 z-20 -translate-y-1/2 text-white/90 hover:bg-white/10 hover:text-white sm:right-6"257 className="absolute right-2 top-1/2 z-20 -translate-y-1/2 sm:right-6"
253 aria-label="Next image"258 aria-label="Next image"
254 onClick={() => navigateImage(1)}259 onClick={() => navigateImage(1)}
255 >260 >
256 <ChevronRightIcon className="size-5" />261 <ChevronRightIcon className="size-7" />
257 </Button>262 </Button>
258 )}263 )}
259 </div>,264 </div>,
apps/web/src/components/chat/markdownImageGallery.ts+51−0
@@ -0,0 +1,51 @@
1import { mediaKindFromPath } from "@t3tools/shared/filePreview";
2import { mediaUrlReference } from "@t3tools/client-runtime/media-reference";
3import type { ExpandedImageItem, ExpandedImagePreview } from "./ExpandedImagePreview";
4import { resolveExternalWebLinkHost } from "./externalLinkContextMenu";
5import { resolveProtocolRelativeMediaUrl } from "../media/mediaContent";
6
7// Weak keys retain resolved media actions only while the rendered image is reachable.
8export const markdownImageItems = new WeakMap<Element, ExpandedImageItem>();
9
10/** Collect in document order only when opened, including PR sections separated by videos. */
11export function markdownImageGallery(
12 element: Element,
13 selected: ExpandedImageItem,
14): ExpandedImagePreview {
15 const scope = element.closest("[data-image-gallery]") ?? element.closest(".chat-markdown");
16 const images: ExpandedImageItem[] = [];
17 let index = -1;
18 for (const image of scope?.querySelectorAll("img") ?? []) {
19 const registered = markdownImageItems.get(image);
20 if (!registered) continue;
21 const link = image.closest("a");
22 const href = link?.getAttribute("href") ?? "";
23 if (link && mediaKindFromPath(href) !== "image") continue;
24 const linkedSource =
25 resolveExternalWebLinkHost(href) !== null ? resolveProtocolRelativeMediaUrl(href) : null;
26 const reference = mediaUrlReference(href);
27 const item = linkedSource
28 ? {
29 ...registered,
30 src: linkedSource,
31 originalUrl: href,
32 actionsSource: {
33 kind: "image" as const,
34 name: registered.name,
35 src: linkedSource,
36 ...(reference ? { reference } : {}),
37 },
38 }
39 : registered;
40 if (
41 image === element ||
42 (!markdownImageItems.has(element) && index < 0 && item.src === selected.src)
43 ) {
44 index = images.length;
45 images.push(selected);
46 } else {
47 images.push(item);
48 }
49 }
50 return index < 0 ? { images: [selected], index: 0 } : { images, index };
51}
apps/web/src/components/chat/useAutoBalanceUpdateBanner.tsx+160−0
@@ -0,0 +1,160 @@
1import { useAtomValue } from "@effect/atom-react";
2import type { ServerUpdateState } from "@t3tools/client-runtime/state/server";
3import { Atom } from "effect/unstable/reactivity";
4import { useMemo, useState } from "react";
5
6import type { EnvironmentPresentation } from "~/state/environments";
7import { serverEnvironment } from "~/state/server";
8import {
9 buildVersionMismatchDismissalKey,
10 dismissServerUpdateFailure,
11 dismissVersionMismatch,
12 isServerUpdateFailureDismissed,
13 isVersionMismatchDismissed,
14 resolveServerConfigVersionMismatch,
15 resolveServerSelfUpdateCapability,
16 supportsDesktopAppUpdate,
17 supportsServerUpdateThreadContinuation,
18} from "~/versionSkew";
19import {
20 ServerUpdateAction,
21 ServerUpdateProgress,
22 ServerUpdatesAction,
23} from "../ServerUpdateAction";
24import { Popover, PopoverPopup, PopoverTrigger } from "../ui/popover";
25import type { ComposerBannerStackItem } from "./ComposerBannerStack";
26import { ComposerServerUpdateIcon } from "./ComposerServerUpdateStatus";
27
28/** Keep every machine's update visible while auto balance has no single update target. */
29export function useAutoBalanceUpdateBanner(
30 environments: readonly EnvironmentPresentation[],
31): ComposerBannerStackItem | null {
32 const statesAtom = useMemo(
33 () =>
34 Atom.make((get) =>
35 environments.map((environment) => ({
36 environment,
37 state: get(serverEnvironment.updateStateAtom(environment.environmentId)),
38 })),
39 ),
40 [environments],
41 );
42 const states = useAtomValue(statesAtom);
43 const [dismissedNotices, setDismissedNotices] = useState<ReadonlySet<string | ServerUpdateState>>(
44 () => new Set(),
45 );
46 const machines = states.flatMap(({ environment, state }) => {
47 const mismatch = resolveServerConfigVersionMismatch(environment.serverConfig);
48 const dismissKey = mismatch
49 ? buildVersionMismatchDismissalKey(environment.environmentId, mismatch)
50 : null;
51 if (
52 state.status === "idle"
53 ? !mismatch ||
54 (dismissKey !== null && dismissedNotices.has(dismissKey)) ||
55 isVersionMismatchDismissed(dismissKey)
56 : dismissedNotices.has(state) || isServerUpdateFailureDismissed(state)
57 )
58 return [];
59 const selfUpdate = resolveServerSelfUpdateCapability(environment.serverConfig);
60 const desktopAppUpdate = supportsDesktopAppUpdate(environment.serverConfig);
61 return [
62 {
63 environmentId: environment.environmentId,
64 serverLabel: environment.label,
65 selfUpdate,
66 desktopAppUpdate,
67 threadContinuation: supportsServerUpdateThreadContinuation(environment.serverConfig),
68 continueThreadsAfterServerUpdate:
69 environment.serverConfig?.settings.continueThreadsAfterServerUpdate ?? false,
70 targetVersion: state.status === "idle" ? mismatch!.clientVersion : state.targetVersion,
71 connected: environment.connection.phase === "connected",
72 remoteUpdate: selfUpdate !== null && (selfUpdate !== "desktop-managed" || desktopAppUpdate),
73 state,
74 dismissKey,
75 },
76 ];
77 });
78 if (machines.length === 0) return null;
79
80 const running = machines.filter((machine) => machine.state.status === "running").length;
81 const failed = machines.filter((machine) => machine.state.status === "failed").length;
82 const manual = machines.filter((machine) => !machine.remoteUpdate).length;
83 const targets = machines.filter(
84 (machine) => machine.connected && machine.remoteUpdate && machine.state.status !== "running",
85 );
86 const count = running || failed || machines.length;
87 const status = running ? "running" : failed ? "failed" : "idle";
88 const prefix = running ? "Updating" : failed ? "Could not update" : "Update available for";
89 const title = `${prefix} ${count} ${count === 1 ? "machine" : "machines"}`;
90 return {
91 id: `auto-balance-server-updates-${dismissedNotices.size}`,
92 variant: failed ? "error" : "default",
93 priority: running ? "urgent" : "notice",
94 icon: <ComposerServerUpdateIcon status={status} />,
95 title: (
96 <Popover>
97 <PopoverTrigger
98 className="block max-w-full truncate rounded-sm text-left outline-none focus-visible:ring-2 focus-visible:ring-ring"
99 aria-label={`${title}. View machines`}
100 >
101 {title}
102 </PopoverTrigger>
103 <PopoverPopup side="top" align="start" className="w-80 max-w-[calc(100vw-2rem)]">
104 <div className="space-y-3 text-xs">
105 {machines.map((machine) => (
106 <div key={machine.environmentId} className="space-y-1">
107 <div className="font-medium">{machine.serverLabel}</div>
108 {machine.state.status !== "idle" ? (
109 <ServerUpdateProgress state={machine.state} />
110 ) : !machine.remoteUpdate ? (
111 <>
112 <div className="text-muted-foreground">Manual update required</div>
113 <ServerUpdateAction {...machine} />
114 </>
115 ) : (
116 <div className="text-muted-foreground">
117 {machine.connected
118 ? `Ready to update to ${machine.targetVersion}`
119 : "Reconnect this machine to update"}
120 </div>
121 )}
122 </div>
123 ))}
124 </div>
125 </PopoverPopup>
126 </Popover>
127 ),
128 description:
129 manual > 0 ? `${manual} ${manual === 1 ? "needs" : "need"} a manual update` : undefined,
130 actions:
131 running === 0 && targets.length > 0 ? (
132 <ServerUpdatesAction
133 targets={targets}
134 variant="ghost"
135 label={
136 failed > 0
137 ? "Retry"
138 : targets.length === machines.length
139 ? "Update all"
140 : `Update ${targets.length} ${targets.length === 1 ? "machine" : "machines"}`
141 }
142 />
143 ) : undefined,
144 dismissLabel: "Dismiss update notice",
145 ...(running
146 ? {}
147 : {
148 onDismiss: () => {
149 const next = new Set(dismissedNotices);
150 for (const { state, dismissKey } of machines) {
151 dismissServerUpdateFailure(state);
152 dismissVersionMismatch(dismissKey);
153 if (dismissKey) next.add(dismissKey);
154 if (state.status === "failed") next.add(state);
155 }
156 setDismissedNotices(next);
157 },
158 }),
159 };
160}
apps/web/src/components/preview/PreviewAutomationHosts.tsx+18−2
@@ -35,8 +35,10 @@ import { · 34 unmodified lines
35 readActiveBrowserRecordingTargets,35 readActiveBrowserRecordingTargets,
36 startBrowserRecording,36 startBrowserRecording,
37 stopBrowserRecording,37 stopBrowserRecording,
38 stopBrowserRecordingForUpload,
38} from "~/browser/browserRecording";39} from "~/browser/browserRecording";
39import { resolveBrowserRecordingStopTarget } from "~/browser/browserRecordingScope";40import { resolveBrowserRecordingStopTarget } from "~/browser/browserRecordingScope";
41import { uploadBrowserRecording } from "~/browser/browserRecordingUpload";
40import {42import {
41 acquireBrowserSurfaceActivity,43 acquireBrowserSurfaceActivity,
42 useBrowserSurfaceStore,44 useBrowserSurfaceStore,
@@ -716,7 +718,18 @@ function PreviewAutomationHost(props: { readonly environmentId: EnvironmentId }) · 673 unmodified lines
716 const stopRuntimeTabId =718 const stopRuntimeTabId =
717 activeRecordings.find((recording) => recording.serverTabId === stopTabId)719 activeRecordings.find((recording) => recording.serverTabId === stopTabId)
718 ?.runtimeTabId ?? null;720 ?.runtimeTabId ?? null;
719 const artifact = stopRuntimeTabId ? await stopBrowserRecording(stopRuntimeTabId) : null;721 const transferToEnvironment =
722 typeof request.input === "object" &&
723 request.input !== null &&
724 "transferToEnvironment" in request.input &&
725 request.input.transferToEnvironment === true;
726 const artifact = stopRuntimeTabId
727 ? transferToEnvironment
728 ? await stopBrowserRecordingForUpload(stopRuntimeTabId, (saved, blob) =>
729 uploadBrowserRecording(threadRef, saved, blob, hostDeadlineMs),
730 )
731 : await stopBrowserRecording(stopRuntimeTabId)
732 : null;
720 if (!artifact || !stopTabId) {733 if (!artifact || !stopTabId) {
721 return raisePreviewAutomationHostError(734 return raisePreviewAutomationHostError(
722 new PreviewAutomationRecordingNotActiveError({735 new PreviewAutomationRecordingNotActiveError({
@@ -727,7 +740,10 @@ function PreviewAutomationHost(props: { readonly environmentId: EnvironmentId }) · 4 unmodified lines
727 }),740 }),
728 );741 );
729 }742 }
730 return { ...artifact, tabId: stopTabId };743 return {
744 ...artifact,
745 tabId: stopTabId,
746 };
731 }747 }
732 }748 }
733 } catch (cause) {749 } catch (cause) {
apps/web/src/components/preview/previewAutomationErrors.ts+9−1
@@ -2,6 +2,10 @@ import { · 1 unmodified line
2 EnvironmentId,2 EnvironmentId,
3 type PreviewAutomationHost,3 type PreviewAutomationHost,
4 PreviewAutomationOperation,4 PreviewAutomationOperation,
5 PreviewAutomationRecordingTransferError,
6 PreviewAutomationRecordingDesktopUpdateRequiredError,
7 PreviewAutomationRecordingTooLargeError,
8 PreviewAutomationRecordingDeadlineExpiredError,
5 type PreviewAutomationRequest,9 type PreviewAutomationRequest,
6 type PreviewAutomationResponse,10 type PreviewAutomationResponse,
7 PreviewTabId,11 PreviewTabId,
@@ -206,6 +210,10 @@ export class PreviewAutomationOperationError extends Schema.TaggedErrorClass<Pre · 198 unmodified lines
206}210}
207 211
208export const PreviewAutomationHostError = Schema.Union([212export const PreviewAutomationHostError = Schema.Union([
213 PreviewAutomationRecordingTransferError,
214 PreviewAutomationRecordingDesktopUpdateRequiredError,
215 PreviewAutomationRecordingTooLargeError,
216 PreviewAutomationRecordingDeadlineExpiredError,
209 PreviewAutomationOverlayTimeoutError,217 PreviewAutomationOverlayTimeoutError,
210 PreviewAutomationNavigationTimeoutError,218 PreviewAutomationNavigationTimeoutError,
211 PreviewAutomationViewportTimeoutError,219 PreviewAutomationViewportTimeoutError,
@@ -228,7 +236,7 @@ export function serializePreviewAutomationHostError( · 16 unmodified lines
228 ),236 ),
229 );237 );
230 return {238 return {
231 _tag: error.responseTag,239 _tag: "responseTag" in error ? error.responseTag : error._tag,
232 message: error.message,240 message: error.message,
233 ...(Object.keys(detail).length === 0 ? {} : { detail }),241 ...(Object.keys(detail).length === 0 ? {} : { detail }),
234 };242 };
apps/web/src/components/pullRequest/PullRequestMarkdown.tsx+1−1
@@ -39,7 +39,7 @@ export function PullRequestMarkdown({ · 38 unmodified lines
39 [repositoryUrl],39 [repositoryUrl],
40 );40 );
41 return (41 return (
42 <div className={cn("space-y-3", className)}>42 <div className={cn("space-y-3", className)} data-image-gallery>
43 {segments.map((segment) => {43 {segments.map((segment) => {
44 if (segment.kind === "markdown") {44 if (segment.kind === "markdown") {
45 return (45 return (
apps/web/src/components/ui/button.tsx+1−0
@@ -51,6 +51,7 @@ const buttonVariants = cva( · 50 unmodified lines
51 link: "border-transparent underline-offset-4 [:hover,[data-pressed]]:underline",51 link: "border-transparent underline-offset-4 [:hover,[data-pressed]]:underline",
52 outline:52 outline:
53 "[--control-icon-color:var(--contrast-muted-foreground)] border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64",53 "[--control-icon-color:var(--contrast-muted-foreground)] border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64",
54 overlay: "border-transparent bg-black/70 text-white/65 [:hover,[data-pressed]]:bg-black/90",
54 secondary:55 secondary:
55 "border-transparent bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90",56 "border-transparent bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90",
56 "warning-outline":57 "warning-outline":
infra/relay/package.json+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 "deploy": "node -- scripts/deploy.ts",6 "deploy": "node -- scripts/deploy.ts",
7 "destroy": "alchemy destroy",7 "destroy": "alchemy destroy",
8 "test": "vp test run",8 "test": "vp test run",
9 "typecheck": "tsgo --noEmit"9 "typecheck": "tsc --noEmit"
10 },10 },
11 "dependencies": {11 "dependencies": {
12 "@clerk/backend": "catalog:",12 "@clerk/backend": "catalog:",
oxlint-plugin-t3code/package.json+1−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
3 "private": true,3 "private": true,
4 "type": "module",4 "type": "module",
5 "scripts": {5 "scripts": {
6 "typecheck": "tsgo --noEmit",6 "typecheck": "tsc --noEmit",
7 "test": "vp test run"7 "test": "vp test run"
8 },8 },
9 "dependencies": {9 "dependencies": {
package.json+2−2
@@ -3,7 +3,7 @@ · 2 unmodified lines
3 "private": true,3 "private": true,
4 "type": "module",4 "type": "module",
5 "scripts": {5 "scripts": {
6 "prepare": "node scripts/clean-tsgo-backups.mjs && effect-tsgo patch && vp config --no-agent",6 "prepare": "effect-tsgo patch && vp config --no-agent",
7 "dev": "node scripts/dev-runner.ts dev",7 "dev": "node scripts/dev-runner.ts dev",
8 "dev:share": "node scripts/dev-runner.ts dev --share",8 "dev:share": "node scripts/dev-runner.ts dev --share",
9 "dev:server": "node scripts/dev-runner.ts dev:server",9 "dev:server": "node scripts/dev-runner.ts dev:server",
@@ -51,8 +51,8 @@ · 41 unmodified lines
51 "devDependencies": {51 "devDependencies": {
52 "@effect/tsgo": "catalog:",52 "@effect/tsgo": "catalog:",
53 "@types/node": "catalog:",53 "@types/node": "catalog:",
54 "@typescript/native-preview": "catalog:",
55 "knip": "6.34.0",54 "knip": "6.34.0",
55 "typescript": "catalog:",
56 "vite-plus": "catalog:"56 "vite-plus": "catalog:"
57 },57 },
58 "engines": {58 "engines": {
packages/client-runtime/package.json+1−1
@@ -233,7 +233,7 @@ · 232 unmodified lines
233 }233 }
234 },234 },
235 "scripts": {235 "scripts": {
236 "typecheck": "tsgo --noEmit",236 "typecheck": "tsc --noEmit",
237 "test": "vp test run"237 "test": "vp test run"
238 },238 },
239 "dependencies": {239 "dependencies": {
packages/contracts/package.json+1−1
@@ -21,7 +21,7 @@ · 20 unmodified lines
21 }21 }
22 },22 },
23 "scripts": {23 "scripts": {
24 "typecheck": "tsgo --noEmit",24 "typecheck": "tsc --noEmit",
25 "test": "vp test run"25 "test": "vp test run"
26 },26 },
27 "dependencies": {27 "dependencies": {
packages/contracts/src/previewAutomation.ts+45−0
@@ -553,6 +553,8 @@ export const PreviewAutomationRecordingStatus = Schema.Struct({ · 552 unmodified lines
553});553});
554export type PreviewAutomationRecordingStatus = typeof PreviewAutomationRecordingStatus.Type;554export type PreviewAutomationRecordingStatus = typeof PreviewAutomationRecordingStatus.Type;
555 555
556export const PREVIEW_RECORDING_STOP_TIMEOUT_MS = 120_000;
557
556export const PreviewAutomationRecordingArtifact = Schema.Struct({558export const PreviewAutomationRecordingArtifact = Schema.Struct({
557 id: Schema.String,559 id: Schema.String,
558 tabId: PreviewTabId,560 tabId: PreviewTabId,
@@ -856,7 +858,50 @@ export class PreviewAutomationMalformedResponseError extends Schema.TaggedErrorC · 297 unmodified lines
856 }858 }
857}859}
858 860
861export class PreviewAutomationRecordingTransferError extends Schema.TaggedErrorClass<PreviewAutomationRecordingTransferError>()(
862 "PreviewAutomationRecordingTransferError",
863 {
864 threadId: ThreadId,
865 cause: Schema.optional(Schema.Defect()),
866 },
867) {
868 override get message(): string {
869 return "Preview recording could not be saved to the agent environment. The saved copy remains on the desktop.";
870 }
871}
872
873export class PreviewAutomationRecordingDesktopUpdateRequiredError extends Schema.TaggedErrorClass<PreviewAutomationRecordingDesktopUpdateRequiredError>()(
874 "PreviewAutomationRecordingDesktopUpdateRequiredError",
875 { threadId: ThreadId, cause: Schema.optional(Schema.Defect()) },
876) {
877 override get message(): string {
878 return "Update the desktop app to transfer recordings. The recording remains on the desktop.";
879 }
880}
881
882export class PreviewAutomationRecordingTooLargeError extends Schema.TaggedErrorClass<PreviewAutomationRecordingTooLargeError>()(
883 "PreviewAutomationRecordingTooLargeError",
884 { threadId: ThreadId, cause: Schema.optional(Schema.Defect()) },
885) {
886 override get message(): string {
887 return "The recording exceeds 50 MiB. The saved copy remains on the desktop.";
888 }
889}
890
891export class PreviewAutomationRecordingDeadlineExpiredError extends Schema.TaggedErrorClass<PreviewAutomationRecordingDeadlineExpiredError>()(
892 "PreviewAutomationRecordingDeadlineExpiredError",
893 { threadId: ThreadId, cause: Schema.optional(Schema.Defect()) },
894) {
895 override get message(): string {
896 return "The recording transfer deadline expired. The saved copy remains on the desktop.";
897 }
898}
899
859export const PreviewAutomationError = Schema.Union([900export const PreviewAutomationError = Schema.Union([
901 PreviewAutomationRecordingTransferError,
902 PreviewAutomationRecordingDesktopUpdateRequiredError,
903 PreviewAutomationRecordingTooLargeError,
904 PreviewAutomationRecordingDeadlineExpiredError,
860 PreviewAutomationUnavailableError,905 PreviewAutomationUnavailableError,
861 PreviewAutomationNoAvailableHostError,906 PreviewAutomationNoAvailableHostError,
862 PreviewAutomationUnsupportedClientError,907 PreviewAutomationUnsupportedClientError,
packages/effect-acp/package.json+1−1
@@ -25,7 +25,7 @@ · 24 unmodified lines
25 }25 }
26 },26 },
27 "scripts": {27 "scripts": {
28 "typecheck": "tsgo --noEmit",28 "typecheck": "tsc --noEmit",
29 "test": "vp test run",29 "test": "vp test run",
30 "generate": "node scripts/generate.ts"30 "generate": "node scripts/generate.ts"
31 },31 },
packages/effect-codex-app-server/package.json+1−1
@@ -21,7 +21,7 @@ · 20 unmodified lines
21 }21 }
22 },22 },
23 "scripts": {23 "scripts": {
24 "typecheck": "tsgo --noEmit",24 "typecheck": "tsc --noEmit",
25 "test": "vp test run",25 "test": "vp test run",
26 "generate": "node scripts/generate.ts",26 "generate": "node scripts/generate.ts",
27 "probe": "node test/examples/codex-app-server-probe.ts"27 "probe": "node test/examples/codex-app-server-probe.ts"
packages/shared/package.json+1−1
@@ -281,7 +281,7 @@ · 280 unmodified lines
281 }281 }
282 },282 },
283 "scripts": {283 "scripts": {
284 "typecheck": "tsgo --noEmit",284 "typecheck": "tsc --noEmit",
285 "test": "vp test run"285 "test": "vp test run"
286 },286 },
287 "dependencies": {287 "dependencies": {
packages/ssh/package.json+1−1
@@ -25,7 +25,7 @@ · 24 unmodified lines
25 }25 }
26 },26 },
27 "scripts": {27 "scripts": {
28 "typecheck": "tsgo --noEmit",28 "typecheck": "tsc --noEmit",
29 "test": "vp test run"29 "test": "vp test run"
30 },30 },
31 "dependencies": {31 "dependencies": {
packages/tailscale/package.json+1−1
@@ -9,7 +9,7 @@ · 8 unmodified lines
9 }9 }
10 },10 },
11 "scripts": {11 "scripts": {
12 "typecheck": "tsgo --noEmit",12 "typecheck": "tsc --noEmit",
13 "test": "vp test run"13 "test": "vp test run"
14 },14 },
15 "dependencies": {15 "dependencies": {
pnpm-lock.yaml+460−303
@@ -10,8 +10,8 @@ catalogs: · 9 unmodified lines
10 specifier: 4.0.0-beta.10310 specifier: 4.0.0-beta.103
11 version: 4.0.0-beta.10311 version: 4.0.0-beta.103
12 '@effect/tsgo':12 '@effect/tsgo':
13 specifier: 0.13.213 specifier: 0.41.0
14 version: 0.13.214 version: 0.41.0
15 '@legendapp/list':15 '@legendapp/list':
16 specifier: 3.3.516 specifier: 3.3.5
17 version: 3.3.517 version: 3.3.5
@@ -24,20 +24,18 @@ catalogs: · 6 unmodified lines
24 '@pierre/diffs':24 '@pierre/diffs':
25 specifier: 1.3.0-beta.1025 specifier: 1.3.0-beta.10
26 version: 1.3.0-beta.1026 version: 1.3.0-beta.10
27 '@typescript/native-preview':
28 specifier: 7.0.0-dev.20260604.1
29 version: 7.0.0-dev.20260604.1
30 jose:27 jose:
31 specifier: 6.2.228 specifier: 6.2.2
32 version: 6.2.229 version: 6.2.2
33 typescript:30 typescript:
34 specifier: ~6.0.331 specifier: 7.0.2
35 version: 6.0.332 version: 7.0.2
36 vite-plus:33 vite-plus:
37 specifier: 0.3.034 specifier: 0.3.0
38 version: 0.3.035 version: 0.3.0
39 36
40overrides:37overrides:
38 '@react-navigation/core': 7.21.13
41 dbus-next>usocket: '-'39 dbus-next>usocket: '-'
42 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-darwin-arm64': '-'40 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-darwin-arm64': '-'
43 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-darwin-x64': '-'41 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-darwin-x64': '-'
@@ -114,19 +112,19 @@ importers: · 70 unmodified lines
114 devDependencies:112 devDependencies:
115 '@effect/tsgo':113 '@effect/tsgo':
116 specifier: 'catalog:'114 specifier: 'catalog:'
117 version: 0.13.2115 version: 0.41.0
118 '@types/node':116 '@types/node':
119 specifier: 24.12.4117 specifier: 24.12.4
120 version: 24.12.4118 version: 24.12.4
121 '@typescript/native-preview':
122 specifier: 'catalog:'
123 version: 7.0.0-dev.20260604.1
124 knip:119 knip:
125 specifier: 6.34.0120 specifier: 6.34.0
126 version: 6.34.0121 version: 6.34.0
122 typescript:
123 specifier: 'catalog:'
124 version: 7.0.2
127 vite-plus:125 vite-plus:
128 specifier: 'catalog:'126 specifier: 'catalog:'
129 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)127 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
130 128
131 apps/desktop:129 apps/desktop:
132 dependencies:130 dependencies:
@@ -205,7 +203,7 @@ importers: · 72 unmodified lines
205 version: 4.3.3203 version: 4.3.3
206 vite-plus:204 vite-plus:
207 specifier: 'catalog:'205 specifier: 'catalog:'
208 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)206 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
209 207
210 apps/marketing:208 apps/marketing:
211 dependencies:209 dependencies:
@@ -226,14 +224,14 @@ importers: · 14 unmodified lines
226 specifier: ^0.3.0224 specifier: ^0.3.0
227 version: 0.3.0225 version: 0.3.0
228 typescript:226 typescript:
229 specifier: 'catalog:'227 specifier: ~6.0.3
230 version: 6.0.3228 version: 6.0.3
231 229
232 apps/mobile:230 apps/mobile:
233 dependencies:231 dependencies:
234 '@clerk/expo':232 '@clerk/expo':
235 specifier: 4.2.0233 specifier: 4.2.0
236 version: 4.2.0(patch_hash=72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1)(1fcd0592788ddcf326eeeb90d875ed47)234 version: 4.2.0(patch_hash=72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1)(dbc31631339ce74330e188d5d7a88158)
237 '@effect/atom-react':235 '@effect/atom-react':
238 specifier: 4.0.0-beta.103236 specifier: 4.0.0-beta.103
239 version: 4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(react@19.2.3)(scheduler@0.27.0)237 version: 4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(react@19.2.3)(scheduler@0.27.0)
@@ -290,7 +288,7 @@ importers: · 50 unmodified lines
290 version: link:../../packages/contracts288 version: link:../../packages/contracts
291 '@t3tools/mobile-markdown-text':289 '@t3tools/mobile-markdown-text':
292 specifier: file:./modules/t3-markdown-text290 specifier: file:./modules/t3-markdown-text
293 version: file:apps/mobile/modules/t3-markdown-text(eb96cd030e772ab91fe21f812240338a)291 version: file:apps/mobile/modules/t3-markdown-text(6f0a94b6f541bbd4be3f343e27991996)
294 '@t3tools/mobile-review-diff-native':292 '@t3tools/mobile-review-diff-native':
295 specifier: file:./modules/t3-review-diff293 specifier: file:./modules/t3-review-diff
296 version: file:apps/mobile/modules/t3-review-diff294 version: file:apps/mobile/modules/t3-review-diff
@@ -314,13 +312,13 @@ importers: · 17 unmodified lines
314 version: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)312 version: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)
315 expo:313 expo:
316 specifier: ~57.0.18314 specifier: ~57.0.18
317 version: 57.0.18(f9c992a5d7c53d81398568d3950992dc)315 version: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
318 expo-asset:316 expo-asset:
319 specifier: ~57.0.15317 specifier: ~57.0.15
320 version: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)318 version: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)
321 expo-audio:319 expo-audio:
322 specifier: ~57.0.4320 specifier: ~57.0.4
323 version: 57.0.4(patch_hash=fa9a3e0442ed395d4071bb406e08c3a471c9a84700bdfa0b9ad7ff144c96041a)(expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)321 version: 57.0.4(patch_hash=fa9a3e0442ed395d4071bb406e08c3a471c9a84700bdfa0b9ad7ff144c96041a)(expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
324 expo-auth-session:322 expo-auth-session:
325 specifier: ~57.0.10323 specifier: ~57.0.10
326 version: 57.0.10(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)324 version: 57.0.10(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
@@ -377,22 +375,22 @@ importers: · 50 unmodified lines
377 version: 57.0.1(expo@57.0.18)(react@19.2.3)375 version: 57.0.1(expo@57.0.18)(react@19.2.3)
378 expo-notifications:376 expo-notifications:
379 specifier: ~57.0.15377 specifier: ~57.0.15
380 version: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)378 version: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)
381 expo-paste-input:379 expo-paste-input:
382 specifier: ^0.1.15380 specifier: ^0.1.15
383 version: 0.1.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)381 version: 0.1.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
384 expo-quick-actions:382 expo-quick-actions:
385 specifier: ^6.0.2383 specifier: ^6.0.2
386 version: 6.0.2(expo@57.0.18)(typescript@6.0.3)384 version: 6.0.2(expo@57.0.18)(typescript@7.0.2)
387 expo-secure-store:385 expo-secure-store:
388 specifier: ~57.0.2386 specifier: ~57.0.2
389 version: 57.0.2(expo@57.0.18)387 version: 57.0.2(expo@57.0.18)
390 expo-sharing:388 expo-sharing:
391 specifier: 57.0.17389 specifier: 57.0.17
392 version: 57.0.17(patch_hash=8d2e3b10eb3f52036a9a086800180ec6cebf3b75bccc5b1775117a7244d4ac45)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)390 version: 57.0.17(patch_hash=8d2e3b10eb3f52036a9a086800180ec6cebf3b75bccc5b1775117a7244d4ac45)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)
393 expo-splash-screen:391 expo-splash-screen:
394 specifier: ~57.0.8392 specifier: ~57.0.8
395 version: 57.0.8(expo@57.0.18)(typescript@6.0.3)393 version: 57.0.8(expo@57.0.18)(typescript@7.0.2)
396 expo-sqlite:394 expo-sqlite:
397 specifier: ~57.0.2395 specifier: ~57.0.2
398 version: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)396 version: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
@@ -464,7 +462,7 @@ importers: · 65 unmodified lines
464 version: 3.6.0462 version: 3.6.0
465 uniwind:463 uniwind:
466 specifier: 1.11.0464 specifier: 1.11.0
467 version: 1.11.0(patch_hash=17d92be2eec71bb6396b402e8d034968e54b28746876d7977cb3139655f42b90)(@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6))(metro-cache@0.84.5)(metro-transform-worker@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(metro@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(tailwindcss@4.3.3)465 version: 1.11.0(patch_hash=17d92be2eec71bb6396b402e8d034968e54b28746876d7977cb3139655f42b90)(@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6))(metro-cache@0.84.5)(metro-transform-worker@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(metro@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(tailwindcss@4.3.3)
468 devDependencies:466 devDependencies:
469 '@effect/vitest':467 '@effect/vitest':
470 specifier: 4.0.0-beta.103468 specifier: 4.0.0-beta.103
@@ -483,7 +481,7 @@ importers: · 12 unmodified lines
483 version: 4.3.3481 version: 4.3.3
484 typescript:482 typescript:
485 specifier: 'catalog:'483 specifier: 'catalog:'
486 version: 6.0.3484 version: 7.0.2
487 485
488 apps/server:486 apps/server:
489 dependencies:487 dependencies:
@@ -559,7 +557,7 @@ importers: · 69 unmodified lines
559 version: link:../../packages/effect-codex-app-server557 version: link:../../packages/effect-codex-app-server
560 vite-plus:558 vite-plus:
561 specifier: 'catalog:'559 specifier: 'catalog:'
562 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)560 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
563 561
564 apps/web:562 apps/web:
565 dependencies:563 dependencies:
@@ -683,13 +681,13 @@ importers: · 117 unmodified lines
683 version: 4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))681 version: 4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
684 '@rolldown/plugin-babel':682 '@rolldown/plugin-babel':
685 specifier: ^0.2.0683 specifier: ^0.2.0
686 version: 0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)684 version: 0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)
687 '@tailwindcss/vite':685 '@tailwindcss/vite':
688 specifier: 4.3.3686 specifier: 4.3.3
689 version: 4.3.3(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))687 version: 4.3.3(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))
690 '@tanstack/router-plugin':688 '@tanstack/router-plugin':
691 specifier: ^1.161.0689 specifier: ^1.161.0
692 version: 1.168.13(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))690 version: 1.168.13(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))
693 '@types/babel__core':691 '@types/babel__core':
694 specifier: ^7.20.5692 specifier: ^7.20.5
695 version: 7.20.5693 version: 7.20.5
@@ -713,7 +711,7 @@ importers: · 17 unmodified lines
713 version: 0.3.0711 version: 0.3.0
714 '@vitejs/plugin-react':712 '@vitejs/plugin-react':
715 specifier: ^6.0.0713 specifier: ^6.0.0
716 version: 6.0.2(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0)714 version: 6.0.2(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0)
717 babel-plugin-react-compiler:715 babel-plugin-react-compiler:
718 specifier: 1.0.0716 specifier: 1.0.0
719 version: 1.0.0717 version: 1.0.0
@@ -728,10 +726,10 @@ importers: · 8 unmodified lines
728 version: 4.3.3726 version: 4.3.3
729 vite:727 vite:
730 specifier: npm:@voidzero-dev/vite-plus-core@0.3.0728 specifier: npm:@voidzero-dev/vite-plus-core@0.3.0
731 version: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'729 version: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
732 vite-plus:730 vite-plus:
733 specifier: 'catalog:'731 specifier: 'catalog:'
734 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)732 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
735 733
736 infra/relay:734 infra/relay:
737 dependencies:735 dependencies:
@@ -758,7 +756,7 @@ importers: · 20 unmodified lines
758 version: link:../../packages/shared756 version: link:../../packages/shared
759 alchemy:757 alchemy:
760 specifier: 2.0.0-beta.65758 specifier: 2.0.0-beta.65
761 version: 2.0.0-beta.65(db83c2a4e1e233e8661745115951ce85)759 version: 2.0.0-beta.65(5a5e74348f57625dac72981db7114e79)
762 drizzle-orm:760 drizzle-orm:
763 specifier: 1.0.0-rc.4761 specifier: 1.0.0-rc.4
764 version: 1.0.0-rc.4(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0-beta.101(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-pg@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-sqlite-bun@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(mysql2@3.22.4(@types/node@24.12.4))(pg@8.21.0)(zod@4.4.3)762 version: 1.0.0-rc.4(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0-beta.101(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-pg@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-sqlite-bun@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(mysql2@3.22.4(@types/node@24.12.4))(pg@8.21.0)(zod@4.4.3)
@@ -783,10 +781,10 @@ importers: · 18 unmodified lines
783 version: 1.0.0-rc.4781 version: 1.0.0-rc.4
784 vite:782 vite:
785 specifier: npm:@voidzero-dev/vite-plus-core@0.3.0783 specifier: npm:@voidzero-dev/vite-plus-core@0.3.0
786 version: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'784 version: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
787 vite-plus:785 vite-plus:
788 specifier: 'catalog:'786 specifier: 'catalog:'
789 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)787 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
790 788
791 oxlint-plugin-t3code:789 oxlint-plugin-t3code:
792 dependencies:790 dependencies:
@@ -805,7 +803,7 @@ importers: · 12 unmodified lines
805 version: 4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))803 version: 4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
806 vite-plus:804 vite-plus:
807 specifier: 'catalog:'805 specifier: 'catalog:'
808 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)806 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
809 807
810 packages/client-runtime:808 packages/client-runtime:
811 dependencies:809 dependencies:
@@ -842,7 +840,7 @@ importers: · 30 unmodified lines
842 version: 2.0.2840 version: 2.0.2
843 vite-plus:841 vite-plus:
844 specifier: 'catalog:'842 specifier: 'catalog:'
845 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)843 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
846 844
847 packages/contracts:845 packages/contracts:
848 dependencies:846 dependencies:
@@ -855,7 +853,7 @@ importers: · 6 unmodified lines
855 version: 4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))853 version: 4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
856 vite-plus:854 vite-plus:
857 specifier: 'catalog:'855 specifier: 'catalog:'
858 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)856 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
859 857
860 packages/effect-acp:858 packages/effect-acp:
861 dependencies:859 dependencies:
@@ -877,7 +875,7 @@ importers: · 15 unmodified lines
877 version: 24.12.4875 version: 24.12.4
878 vite-plus:876 vite-plus:
879 specifier: 'catalog:'877 specifier: 'catalog:'
880 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)878 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
881 879
882 packages/effect-codex-app-server:880 packages/effect-codex-app-server:
883 dependencies:881 dependencies:
@@ -899,7 +897,7 @@ importers: · 15 unmodified lines
899 version: 24.12.4897 version: 24.12.4
900 vite-plus:898 vite-plus:
901 specifier: 'catalog:'899 specifier: 'catalog:'
902 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)900 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
903 901
904 packages/shared:902 packages/shared:
905 dependencies:903 dependencies:
@@ -933,7 +931,7 @@ importers: · 27 unmodified lines
933 version: 24.12.4931 version: 24.12.4
934 vite-plus:932 vite-plus:
935 specifier: 'catalog:'933 specifier: 'catalog:'
936 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)934 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
937 935
938 packages/ssh:936 packages/ssh:
939 dependencies:937 dependencies:
@@ -958,7 +956,7 @@ importers: · 18 unmodified lines
958 version: 24.12.4956 version: 24.12.4
959 vite-plus:957 vite-plus:
960 specifier: 'catalog:'958 specifier: 'catalog:'
961 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)959 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
962 960
963 packages/tailscale:961 packages/tailscale:
964 dependencies:962 dependencies:
@@ -977,7 +975,7 @@ importers: · 12 unmodified lines
977 version: 24.12.4975 version: 24.12.4
978 vite-plus:976 vite-plus:
979 specifier: 'catalog:'977 specifier: 'catalog:'
980 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)978 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
981 979
982 scripts:980 scripts:
983 dependencies:981 dependencies:
@@ -1014,10 +1012,13 @@ importers: · 30 unmodified lines
1014 version: 6.0.51012 version: 6.0.5
1015 typescript:1013 typescript:
1016 specifier: 'catalog:'1014 specifier: 'catalog:'
1017 version: 6.0.31015 version: 7.0.2
1016 typescript-legacy:
1017 specifier: npm:typescript@~6.0.3
1018 version: typescript@6.0.3
1018 vite-plus:1019 vite-plus:
1019 specifier: 'catalog:'1020 specifier: 'catalog:'
1020 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)1021 version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
1021 1022
1022packages:1023packages:
1023 1024
@@ -2082,43 +2083,43 @@ packages: · 1058 unmodified lines
2082 peerDependencies:2083 peerDependencies:
2083 effect: 4.0.0-beta.1032084 effect: 4.0.0-beta.103
2084 2085
2085 '@effect/tsgo-darwin-arm64@0.13.2':2086 '@effect/tsgo-darwin-arm64@0.41.0':
2086 resolution: {integrity: sha512-AlYlxU2sD3urNCmNCQWtatPJS/+m2r3CvgZdDTs9KEz2YcyQc2GV1g2RWFkoMwmgzYBx69DBLu1oscqJO2qAog==}2087 resolution: {integrity: sha512-3iEPtcHF72yDjv7T5YpnX+Io1LDLywJb1oGG3Fp/Fth4xmqiT1Vacyz5wnPCfEWGQ6CyrlyCZSSjUxPyJ70+DQ==}
2087 cpu: [arm64]2088 cpu: [arm64]
2088 os: [darwin]2089 os: [darwin]
2089 2090
2090 '@effect/tsgo-darwin-x64@0.13.2':2091 '@effect/tsgo-darwin-x64@0.41.0':
2091 resolution: {integrity: sha512-oGWIUsWuzCGBRaxB3R4ZjzmqaWb20OtLpBc8HKf3mGstyiCpGUtb7arqncpSq04nN9yb+mM5yBpGKZ9EJAYuEA==}2092 resolution: {integrity: sha512-rrVVNacJ/Qh8DfdfgNJDuzcVmR3xPnqes3z+F1kio99umJwPIRB8iPWRAY0SrO+Y84A/y2SSb0AjMGqA5V3Aiw==}
2092 cpu: [x64]2093 cpu: [x64]
2093 os: [darwin]2094 os: [darwin]
2094 2095
2095 '@effect/tsgo-linux-arm64@0.13.2':2096 '@effect/tsgo-linux-arm64@0.41.0':
2096 resolution: {integrity: sha512-v9PIgdLR6jREQk42EIm/mtFBwmB4Xzuq70l1Uf/7MnV/eivrZP+Wjfex/UuzMRbjM5eLRP3FFMj2HZvjkFQv6Q==}2097 resolution: {integrity: sha512-RVI+7pG3tP56LfH06a2aq4KLp2RQ0HohW8mmoGmrBPyNEL9DnzFEGB98ZoMJ+ERYUJoIp74Jy3nKRVbnzVhxFw==}
2097 cpu: [arm64]2098 cpu: [arm64]
2098 os: [linux]2099 os: [linux]
2099 2100
2100 '@effect/tsgo-linux-arm@0.13.2':2101 '@effect/tsgo-linux-arm@0.41.0':
2101 resolution: {integrity: sha512-y5aTN7MrwnsStcSJ4Z8J93Nszeh9yf8kbaHk+03bRm9n0TrhVea/bJZoi9cprLJSy01Umt+xC3jFyvOSMrWB8g==}2102 resolution: {integrity: sha512-JddS91IaupLa22oc4YQiYppe7iAZAEyx/2iR9sAAAhpVanWACsIAcyUy4RJrs8sPLLoLsZQaKQa+9rbQO1FLsg==}
2102 cpu: [arm]2103 cpu: [arm]
2103 os: [linux]2104 os: [linux]
2104 2105
2105 '@effect/tsgo-linux-x64@0.13.2':2106 '@effect/tsgo-linux-x64@0.41.0':
2106 resolution: {integrity: sha512-MzrApKfCL0DnFGvoyJUKtW39PGDykJZkkB/tOZSuTSurcYAzkmUIOUwuTASeNqDjj4/DixT7Ha4CMVeCQgg6hg==}2107 resolution: {integrity: sha512-U3+kMDVe2Opa5mxbN4B6PgOizWx5B4LXLN98CZDUl2vYtRGfwrRRhKQiB+de3ELaZ0MuDjPlCvU7S2mXQ8UiuQ==}
2107 cpu: [x64]2108 cpu: [x64]
2108 os: [linux]2109 os: [linux]
2109 2110
2110 '@effect/tsgo-win32-arm64@0.13.2':2111 '@effect/tsgo-win32-arm64@0.41.0':
2111 resolution: {integrity: sha512-WwYLSrgCa4iiSIZe5KkG2P1q+JmIloDI6tbqHqpvumrz3uU8fg33e5A7wQ68sRgr4ofqrTYPQhJ6b+Eyeadazg==}2112 resolution: {integrity: sha512-H6/xkn+B4B63OPKc0UAzQQFvLs0MXKigiD9dtvQeCU7czWGztOQILuLkyHnM1Dlc+uy4cJ5eXHiMXd+lwl+E8g==}
2112 cpu: [arm64]2113 cpu: [arm64]
2113 os: [win32]2114 os: [win32]
2114 2115
2115 '@effect/tsgo-win32-x64@0.13.2':2116 '@effect/tsgo-win32-x64@0.41.0':
2116 resolution: {integrity: sha512-M4Cf98tlCzCWig61QNoPxhE0LyMJtlVIQY2hed0Y1uYpwv0W1BMyOACLcj6ll+vuLWmXvVlOfXC+BuDOqPo9fg==}2117 resolution: {integrity: sha512-vRN/Mhi381xEGrvV68IN/VO4Lc0pnlVQzHSVmNCJXLwGLmJUvuvPoyZ7Lv4wwHRX9iZe8Rch21xUGu5jSQtUSw==}
2117 cpu: [x64]2118 cpu: [x64]
2118 os: [win32]2119 os: [win32]
2119 2120
2120 '@effect/tsgo@0.13.2':2121 '@effect/tsgo@0.41.0':
2121 resolution: {integrity: sha512-zPQMHBdCN1k7Jbxjxq0HVAbzsZd+LAoRPzBEZ3F4y/uxNK0K/XGvFXUUw/CUAsD6rhUtC2VahZY1tp0owb5lgg==}2122 resolution: {integrity: sha512-C/U7lFM0AXsfpqRilDOgwu+llBhAo8bcdIlzgbRWf1LWlU4KZKB2UsUvBPL3qPnm+wmbCvQLeTQc4BjV9oJrcg==}
2122 hasBin: true2123 hasBin: true
2123 2124
2124 '@effect/vitest@4.0.0-beta.103':2125 '@effect/vitest@4.0.0-beta.103':
@@ -4305,8 +4306,8 @@ packages: · 2180 unmodified lines
4305 '@types/react':4306 '@types/react':
4306 optional: true4307 optional: true
4307 4308
4308 '@react-navigation/core@7.21.2':4309 '@react-navigation/core@7.21.13':
4309 resolution: {integrity: sha512-EsJhQnsL5NuIhXsWF7URijS5hd2AaJUREdq1fOIowlyNNQBA3jCnkGU0DkW7+eI40cQ+GXH8DQw+ci7TefLIxQ==}4310 resolution: {integrity: sha512-d1syMXra7RlJjGsjsIxEA14F6U+awFtQJeOfDc+V7x3y1mPqYQVTYnqnt3PR+fBBouUKaKsgKZsSR3MP5919Xg==}
4310 peerDependencies:4311 peerDependencies:
4311 react: '>= 18.2.0'4312 react: '>= 18.2.0'
4312 4313
@@ -4337,8 +4338,8 @@ packages: · 24 unmodified lines
4337 react: '>= 18.2.0'4338 react: '>= 18.2.0'
4338 react-native: '*'4339 react-native: '*'
4339 4340
4340 '@react-navigation/routers@7.6.0':4341 '@react-navigation/routers@7.6.4':
4341 resolution: {integrity: sha512-lblhDXfS75jLc7G2K7BZGM+7cjqQXk13X/MA4fq/12r62zM+fBhhreLzYflSitrDDXFRJpSvJXy0ziiGU04Xow==}4342 resolution: {integrity: sha512-GI7eJm8/KsZUQaYcXvEExikKurRZRgEsSzyZ7faENfi65yqJBCXjDMwyN1pF6pNW1MoLH1ErDwDivFxY6BzD3w==}
4342 4343
4343 '@rolldown/binding-android-arm64@1.0.0-rc.17':4344 '@rolldown/binding-android-arm64@1.0.0-rc.17':
4344 resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==}4345 resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==}
@@ -5194,52 +5195,125 @@ packages: · 849 unmodified lines
5194 '@types/yauzl@3.4.0':5195 '@types/yauzl@3.4.0':
5195 resolution: {integrity: sha512-NRPn5w6h8dhcnmx3YIRQcqMywY/+nND/uOkJessedcrowO3C0AssHp3tMJpxKAwOhFOo0OV1y9VtsC5hbKKBAw==}5196 resolution: {integrity: sha512-NRPn5w6h8dhcnmx3YIRQcqMywY/+nND/uOkJessedcrowO3C0AssHp3tMJpxKAwOhFOo0OV1y9VtsC5hbKKBAw==}
5196 5197
5197 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260604.1':5198 '@typescript/typescript-aix-ppc64@7.0.2':
5198 resolution: {integrity: sha512-zs616um9UuaODLsNlCu5Aw95rFcTV4u3hVt090r6k0lVvTxfaJOv8HKA6BpIotcEYlZlMQowrMSYCCdedo7iyA==}5199 resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==}
5200 engines: {node: '>=16.20.0'}
5201 cpu: [ppc64]
5202 os: [aix]
5203
5204 '@typescript/typescript-darwin-arm64@7.0.2':
5205 resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==}
5199 engines: {node: '>=16.20.0'}5206 engines: {node: '>=16.20.0'}
5200 cpu: [arm64]5207 cpu: [arm64]
5201 os: [darwin]5208 os: [darwin]
5202 5209
5203 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260604.1':5210 '@typescript/typescript-darwin-x64@7.0.2':
5204 resolution: {integrity: sha512-pOdNAf2pwc9JBjo8gUsvLs5uqg7d0AhYXfE8/3zvPKBlIZG+mTcvEWW1hPawlWxXzf/vxnP4dgYwUHAMDghhKA==}5211 resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==}
5205 engines: {node: '>=16.20.0'}5212 engines: {node: '>=16.20.0'}
5206 cpu: [x64]5213 cpu: [x64]
5207 os: [darwin]5214 os: [darwin]
5208 5215
5209 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260604.1':5216 '@typescript/typescript-freebsd-arm64@7.0.2':
5210 resolution: {integrity: sha512-GjIrt6YHP3bbOWBCCE08SlBSDf84Lnjn3Td822/lOX9nm6ODlA/HI7rtGh7KzS/fxehep2Vy4dXU4Il12X1s5A==}5217 resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==}
5218 engines: {node: '>=16.20.0'}
5219 cpu: [arm64]
5220 os: [freebsd]
5221
5222 '@typescript/typescript-freebsd-x64@7.0.2':
5223 resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==}
5224 engines: {node: '>=16.20.0'}
5225 cpu: [x64]
5226 os: [freebsd]
5227
5228 '@typescript/typescript-linux-arm64@7.0.2':
5229 resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==}
5211 engines: {node: '>=16.20.0'}5230 engines: {node: '>=16.20.0'}
5212 cpu: [arm64]5231 cpu: [arm64]
5213 os: [linux]5232 os: [linux]
5214 5233
5215 '@typescript/native-preview-linux-arm@7.0.0-dev.20260604.1':5234 '@typescript/typescript-linux-arm@7.0.2':
5216 resolution: {integrity: sha512-IKaZL3i5HKmKqwb2IZEXW1j68fVg1HsvAaXkbrkOIG/J5Eyksu5tEnTzucrIY1oPdzgHT+y2HpDIYp2sGeHFvw==}5235 resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==}
5217 engines: {node: '>=16.20.0'}5236 engines: {node: '>=16.20.0'}
5218 cpu: [arm]5237 cpu: [arm]
5219 os: [linux]5238 os: [linux]
5220 5239
5221 '@typescript/native-preview-linux-x64@7.0.0-dev.20260604.1':5240 '@typescript/typescript-linux-loong64@7.0.2':
5222 resolution: {integrity: sha512-twQ7XDjsmaHIevN1MjeRYIVLUPL0fBm8A0jg1FhGYPckhTxEBiHIpJf9E//eFidAdrEHjeTSBP1jJw3GNAensg==}5241 resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==}
5242 engines: {node: '>=16.20.0'}
5243 cpu: [loong64]
5244 os: [linux]
5245
5246 '@typescript/typescript-linux-mips64el@7.0.2':
5247 resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==}
5248 engines: {node: '>=16.20.0'}
5249 cpu: [mips64el]
5250 os: [linux]
5251
5252 '@typescript/typescript-linux-ppc64@7.0.2':
5253 resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==}
5254 engines: {node: '>=16.20.0'}
5255 cpu: [ppc64]
5256 os: [linux]
5257
5258 '@typescript/typescript-linux-riscv64@7.0.2':
5259 resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==}
5260 engines: {node: '>=16.20.0'}
5261 cpu: [riscv64]
5262 os: [linux]
5263
5264 '@typescript/typescript-linux-s390x@7.0.2':
5265 resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==}
5266 engines: {node: '>=16.20.0'}
5267 cpu: [s390x]
5268 os: [linux]
5269
5270 '@typescript/typescript-linux-x64@7.0.2':
5271 resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==}
5223 engines: {node: '>=16.20.0'}5272 engines: {node: '>=16.20.0'}
5224 cpu: [x64]5273 cpu: [x64]
5225 os: [linux]5274 os: [linux]
5226 5275
5227 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260604.1':5276 '@typescript/typescript-netbsd-arm64@7.0.2':
5228 resolution: {integrity: sha512-QBRxaVT3SFiNfOhwYb/56ddpHWPMFdfiJ4zkFJIjaAXeZ/ssWNHM9lH7yR++GrE9VTsUZ4eVSZfOmQbzRERhgw==}5277 resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==}
5229 engines: {node: '>=16.20.0'}5278 engines: {node: '>=16.20.0'}
5230 cpu: [arm64]5279 cpu: [arm64]
5231 os: [win32]5280 os: [netbsd]
5281
5282 '@typescript/typescript-netbsd-x64@7.0.2':
5283 resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==}
5284 engines: {node: '>=16.20.0'}
5285 cpu: [x64]
5286 os: [netbsd]
5287
5288 '@typescript/typescript-openbsd-arm64@7.0.2':
5289 resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==}
5290 engines: {node: '>=16.20.0'}
5291 cpu: [arm64]
5292 os: [openbsd]
5293
5294 '@typescript/typescript-openbsd-x64@7.0.2':
5295 resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==}
5296 engines: {node: '>=16.20.0'}
5297 cpu: [x64]
5298 os: [openbsd]
5232 5299
5233 '@typescript/native-preview-win32-x64@7.0.0-dev.20260604.1':5300 '@typescript/typescript-sunos-x64@7.0.2':
5234 resolution: {integrity: sha512-hR7YHoRpm88Q86gK6/IMayWUA+ROdHGzOPKK8EBp1xD/Cg2Bh5AXbut8HcyUDx/bcGQvnuht/XsW47bT3to9mg==}5301 resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==}
5235 engines: {node: '>=16.20.0'}5302 engines: {node: '>=16.20.0'}
5236 cpu: [x64]5303 cpu: [x64]
5304 os: [sunos]
5305
5306 '@typescript/typescript-win32-arm64@7.0.2':
5307 resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==}
5308 engines: {node: '>=16.20.0'}
5309 cpu: [arm64]
5237 os: [win32]5310 os: [win32]
5238 5311
5239 '@typescript/native-preview@7.0.0-dev.20260604.1':5312 '@typescript/typescript-win32-x64@7.0.2':
5240 resolution: {integrity: sha512-A3/9yZTt2V5NlDURcVJ4mN2YjfeQTXCRyLuENKrNdGhO+y59mC/2UDr7UvpB3Li+83TRAuhDN8SBoM+7gkHdzQ==}5313 resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==}
5241 engines: {node: '>=16.20.0'}5314 engines: {node: '>=16.20.0'}
5242 hasBin: true5315 cpu: [x64]
5316 os: [win32]
5243 5317
5244 '@ungap/structured-clone@1.3.1':5318 '@ungap/structured-clone@1.3.1':
5245 resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==}5319 resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==}
@@ -10237,6 +10311,11 @@ packages: · 4991 unmodified lines
10237 engines: {node: '>=14.17'}10311 engines: {node: '>=14.17'}
10238 hasBin: true10312 hasBin: true
10239 10313
10314 typescript@7.0.2:
10315 resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==}
10316 engines: {node: '>=16.20.0'}
10317 hasBin: true
10318
10240 ua-parser-js@0.7.41:10319 ua-parser-js@0.7.41:
10241 resolution: {integrity: sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==}10320 resolution: {integrity: sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==}
10242 hasBin: true10321 hasBin: true
@@ -11976,14 +12055,14 @@ snapshots: · 1733 unmodified lines
11976 electron-store: 8.2.012055 electron-store: 8.2.0
11977 react-dom: 19.2.6(react@19.2.6)12056 react-dom: 19.2.6(react@19.2.6)
11978 12057
11979 '@clerk/expo@4.2.0(patch_hash=72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1)(1fcd0592788ddcf326eeeb90d875ed47)':12058 '@clerk/expo@4.2.0(patch_hash=72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1)(dbc31631339ce74330e188d5d7a88158)':
11980 dependencies:12059 dependencies:
11981 '@clerk/clerk-js': 6.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)12060 '@clerk/clerk-js': 6.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
11982 '@clerk/react': 6.14.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)12061 '@clerk/react': 6.14.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
11983 '@clerk/shared': 4.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)12062 '@clerk/shared': 4.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
11984 '@expo/config-plugins': 57.0.9(typescript@6.0.3)12063 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
11985 base-64: 1.0.012064 base-64: 1.0.0
11986 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)12065 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
11987 react: 19.2.312066 react: 19.2.3
11988 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)12067 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
11989 react-native-url-polyfill: 4.0.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))12068 react-native-url-polyfill: 4.0.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
@@ -12104,14 +12183,14 @@ snapshots: · 114 unmodified lines
12104 '@distilled.cloud/core': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))12183 '@distilled.cloud/core': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
12105 effect: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)12184 effect: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)
12106 12185
12107 '@distilled.cloud/cloudflare-rolldown-plugin@0.13.10(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)(workerd@1.20260704.1)':12186 '@distilled.cloud/cloudflare-rolldown-plugin@0.13.10(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)(workerd@1.20260704.1)':
12108 dependencies:12187 dependencies:
12109 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1)12188 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1)
12110 magic-string: 0.30.2112189 magic-string: 0.30.21
12111 unenv: 2.0.0-rc.2412190 unenv: 2.0.0-rc.24
12112 optionalDependencies:12191 optionalDependencies:
12113 rolldown: 1.1.512192 rolldown: 1.1.5
12114 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'12193 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
12115 transitivePeerDependencies:12194 transitivePeerDependencies:
12116 - workerd12195 - workerd
12117 12196
@@ -12125,13 +12204,13 @@ snapshots: · 7 unmodified lines
12125 '@effect/platform-bun': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6)12204 '@effect/platform-bun': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6)
12126 '@effect/platform-node': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6)12205 '@effect/platform-node': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6)
12127 12206
12128 '@distilled.cloud/cloudflare-vite-plugin@0.13.10(86e3ed6000e5955518fd9c0dea8322a9)':12207 '@distilled.cloud/cloudflare-vite-plugin@0.13.10(414e2eac4e6e313aabea4c365b0972ba)':
12129 dependencies:12208 dependencies:
12130 '@distilled.cloud/cloudflare': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))12209 '@distilled.cloud/cloudflare': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
12131 '@distilled.cloud/cloudflare-rolldown-plugin': 0.13.10(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)(workerd@1.20260704.1)12210 '@distilled.cloud/cloudflare-rolldown-plugin': 0.13.10(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)(workerd@1.20260704.1)
12132 '@distilled.cloud/cloudflare-runtime': 0.13.10(@distilled.cloud/cloudflare@0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/platform-bun@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6))(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))12211 '@distilled.cloud/cloudflare-runtime': 0.13.10(@distilled.cloud/cloudflare@0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/platform-bun@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6))(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
12133 effect: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)12212 effect: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)
12134 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'12213 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
12135 optionalDependencies:12214 optionalDependencies:
12136 '@effect/platform-bun': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6)12215 '@effect/platform-bun': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6)
12137 '@effect/platform-node': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6)12216 '@effect/platform-node': 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6)
@@ -12260,36 +12339,36 @@ snapshots: · 122 unmodified lines
12260 dependencies:12339 dependencies:
12261 effect: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)12340 effect: 4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)
12262 12341
12263 '@effect/tsgo-darwin-arm64@0.13.2':12342 '@effect/tsgo-darwin-arm64@0.41.0':
12264 optional: true12343 optional: true
12265 12344
12266 '@effect/tsgo-darwin-x64@0.13.2':12345 '@effect/tsgo-darwin-x64@0.41.0':
12267 optional: true12346 optional: true
12268 12347
12269 '@effect/tsgo-linux-arm64@0.13.2':12348 '@effect/tsgo-linux-arm64@0.41.0':
12270 optional: true12349 optional: true
12271 12350
12272 '@effect/tsgo-linux-arm@0.13.2':12351 '@effect/tsgo-linux-arm@0.41.0':
12273 optional: true12352 optional: true
12274 12353
12275 '@effect/tsgo-linux-x64@0.13.2':12354 '@effect/tsgo-linux-x64@0.41.0':
12276 optional: true12355 optional: true
12277 12356
12278 '@effect/tsgo-win32-arm64@0.13.2':12357 '@effect/tsgo-win32-arm64@0.41.0':
12279 optional: true12358 optional: true
12280 12359
12281 '@effect/tsgo-win32-x64@0.13.2':12360 '@effect/tsgo-win32-x64@0.41.0':
12282 optional: true12361 optional: true
12283 12362
12284 '@effect/tsgo@0.13.2':12363 '@effect/tsgo@0.41.0':
12285 optionalDependencies:12364 optionalDependencies:
12286 '@effect/tsgo-darwin-arm64': 0.13.212365 '@effect/tsgo-darwin-arm64': 0.41.0
12287 '@effect/tsgo-darwin-x64': 0.13.212366 '@effect/tsgo-darwin-x64': 0.41.0
12288 '@effect/tsgo-linux-arm': 0.13.212367 '@effect/tsgo-linux-arm': 0.41.0
12289 '@effect/tsgo-linux-arm64': 0.13.212368 '@effect/tsgo-linux-arm64': 0.41.0
12290 '@effect/tsgo-linux-x64': 0.13.212369 '@effect/tsgo-linux-x64': 0.41.0
12291 '@effect/tsgo-win32-arm64': 0.13.212370 '@effect/tsgo-win32-arm64': 0.41.0
12292 '@effect/tsgo-win32-x64': 0.13.212371 '@effect/tsgo-win32-x64': 0.41.0
12293 12372
12294 '@effect/vitest@4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))':12373 '@effect/vitest@4.0.0-beta.103(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))':
12295 dependencies:12374 dependencies:
@@ -12632,25 +12711,25 @@ snapshots: · 336 unmodified lines
12632 12711
12633 '@expo-google-fonts/material-symbols@0.4.38': {}12712 '@expo-google-fonts/material-symbols@0.4.38': {}
12634 12713
12635 '@expo/cli@57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)(utf-8-validate@6.0.6)':12714 '@expo/cli@57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)(utf-8-validate@6.0.6)':
12636 dependencies:12715 dependencies:
12637 '@expo/code-signing-certificates': 0.0.612716 '@expo/code-signing-certificates': 0.0.6
12638 '@expo/config': 57.0.9(typescript@6.0.3)12717 '@expo/config': 57.0.9(typescript@7.0.2)
12639 '@expo/config-plugins': 57.0.9(typescript@6.0.3)12718 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
12640 '@expo/devcert': 1.2.112719 '@expo/devcert': 1.2.1
12641 '@expo/env': 2.4.312720 '@expo/env': 2.4.3
12642 '@expo/image-utils': 0.11.5(typescript@6.0.3)12721 '@expo/image-utils': 0.11.5(typescript@7.0.2)
12643 '@expo/inline-modules': 0.1.7(typescript@6.0.3)12722 '@expo/inline-modules': 0.1.7(typescript@7.0.2)
12644 '@expo/json-file': 11.0.112723 '@expo/json-file': 11.0.1
12645 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)12724 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
12646 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)12725 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
12647 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6)12726 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)
12648 '@expo/metro-file-map': 57.0.212727 '@expo/metro-file-map': 57.0.2
12649 '@expo/osascript': 2.7.112728 '@expo/osascript': 2.7.1
12650 '@expo/package-manager': 1.13.112729 '@expo/package-manager': 1.13.1
12651 '@expo/plist': 0.8.112730 '@expo/plist': 0.8.1
12652 '@expo/prebuild-config': 57.0.15(typescript@6.0.3)12731 '@expo/prebuild-config': 57.0.15(typescript@7.0.2)
12653 '@expo/require-utils': 57.0.5(typescript@6.0.3)12732 '@expo/require-utils': 57.0.5(typescript@7.0.2)
12654 '@expo/router-server': 57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)12733 '@expo/router-server': 57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
12655 '@expo/schema-utils': 57.0.212734 '@expo/schema-utils': 57.0.2
12656 '@expo/spawn-async': 1.8.012735 '@expo/spawn-async': 1.8.0
@@ -12668,7 +12747,7 @@ snapshots: · 11 unmodified lines
12668 connect: 3.7.012747 connect: 3.7.0
12669 debug: 4.4.312748 debug: 4.4.3
12670 dnssd-advertise: 1.1.412749 dnssd-advertise: 1.1.4
12671 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)12750 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
12672 expo-server: 57.0.312751 expo-server: 57.0.3
12673 fetch-nodeshim: 0.4.1012752 fetch-nodeshim: 0.4.10
12674 getenv: 2.0.012753 getenv: 2.0.0
@@ -12709,25 +12788,25 @@ snapshots: · 34 unmodified lines
12709 - typescript12788 - typescript
12710 - utf-8-validate12789 - utf-8-validate
12711 12790
12712 '@expo/cli@57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@6.0.3)(utf-8-validate@6.0.6)':12791 '@expo/cli@57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2)(utf-8-validate@6.0.6)':
12713 dependencies:12792 dependencies:
12714 '@expo/code-signing-certificates': 0.0.612793 '@expo/code-signing-certificates': 0.0.6
12715 '@expo/config': 57.0.9(typescript@6.0.3)12794 '@expo/config': 57.0.9(typescript@7.0.2)
12716 '@expo/config-plugins': 57.0.9(typescript@6.0.3)12795 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
12717 '@expo/devcert': 1.2.112796 '@expo/devcert': 1.2.1
12718 '@expo/env': 2.4.312797 '@expo/env': 2.4.3
12719 '@expo/image-utils': 0.11.5(typescript@6.0.3)12798 '@expo/image-utils': 0.11.5(typescript@7.0.2)
12720 '@expo/inline-modules': 0.1.7(typescript@6.0.3)12799 '@expo/inline-modules': 0.1.7(typescript@7.0.2)
12721 '@expo/json-file': 11.0.112800 '@expo/json-file': 11.0.1
12722 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)12801 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
12723 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)12802 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
12724 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6)12803 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)
12725 '@expo/metro-file-map': 57.0.212804 '@expo/metro-file-map': 57.0.2
12726 '@expo/osascript': 2.7.112805 '@expo/osascript': 2.7.1
12727 '@expo/package-manager': 1.13.112806 '@expo/package-manager': 1.13.1
12728 '@expo/plist': 0.8.112807 '@expo/plist': 0.8.1
12729 '@expo/prebuild-config': 57.0.15(typescript@6.0.3)12808 '@expo/prebuild-config': 57.0.15(typescript@7.0.2)
12730 '@expo/require-utils': 57.0.5(typescript@6.0.3)12809 '@expo/require-utils': 57.0.5(typescript@7.0.2)
12731 '@expo/router-server': 57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)12810 '@expo/router-server': 57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
12732 '@expo/schema-utils': 57.0.212811 '@expo/schema-utils': 57.0.2
12733 '@expo/spawn-async': 1.8.012812 '@expo/spawn-async': 1.8.0
@@ -12745,7 +12824,7 @@ snapshots: · 11 unmodified lines
12745 connect: 3.7.012824 connect: 3.7.0
12746 debug: 4.4.312825 debug: 4.4.3
12747 dnssd-advertise: 1.1.412826 dnssd-advertise: 1.1.4
12748 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)12827 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
12749 expo-server: 57.0.312828 expo-server: 57.0.3
12750 fetch-nodeshim: 0.4.1012829 fetch-nodeshim: 0.4.10
12751 getenv: 2.0.012830 getenv: 2.0.0
@@ -12791,12 +12870,12 @@ snapshots: · 39 unmodified lines
12791 dependencies:12870 dependencies:
12792 node-forge: 1.4.012871 node-forge: 1.4.0
12793 12872
12794 '@expo/config-plugins@57.0.9(typescript@6.0.3)':12873 '@expo/config-plugins@57.0.9(typescript@7.0.2)':
12795 dependencies:12874 dependencies:
12796 '@expo/config-types': 57.0.212875 '@expo/config-types': 57.0.2
12797 '@expo/json-file': 11.0.112876 '@expo/json-file': 11.0.1
12798 '@expo/plist': 0.8.112877 '@expo/plist': 0.8.1
12799 '@expo/require-utils': 57.0.5(typescript@6.0.3)12878 '@expo/require-utils': 57.0.5(typescript@7.0.2)
12800 '@expo/sdk-runtime-versions': 1.0.012879 '@expo/sdk-runtime-versions': 1.0.0
12801 chalk: 4.1.212880 chalk: 4.1.2
12802 debug: 4.4.312881 debug: 4.4.3
@@ -12812,12 +12891,12 @@ snapshots: · 9 unmodified lines
12812 12891
12813 '@expo/config-types@57.0.2': {}12892 '@expo/config-types@57.0.2': {}
12814 12893
12815 '@expo/config@57.0.9(typescript@6.0.3)':12894 '@expo/config@57.0.9(typescript@7.0.2)':
12816 dependencies:12895 dependencies:
12817 '@expo/config-plugins': 57.0.9(typescript@6.0.3)12896 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
12818 '@expo/config-types': 57.0.212897 '@expo/config-types': 57.0.2
12819 '@expo/json-file': 11.0.112898 '@expo/json-file': 11.0.1
12820 '@expo/require-utils': 57.0.5(typescript@6.0.3)12899 '@expo/require-utils': 57.0.5(typescript@7.0.2)
12821 deepmerge: 4.3.112900 deepmerge: 4.3.1
12822 getenv: 2.0.012901 getenv: 2.0.0
12823 glob: 13.0.612902 glob: 13.0.6
@@ -12852,13 +12931,13 @@ snapshots: · 28 unmodified lines
12852 12931
12853 '@expo/dom-webview@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':12932 '@expo/dom-webview@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':
12854 dependencies:12933 dependencies:
12855 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)12934 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
12856 react: 19.2.312935 react: 19.2.3
12857 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)12936 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
12858 12937
12859 '@expo/dom-webview@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)':12938 '@expo/dom-webview@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)':
12860 dependencies:12939 dependencies:
12861 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)12940 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
12862 react: 19.2.612941 react: 19.2.6
12863 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)12942 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
12864 optional: true12943 optional: true
@@ -12889,9 +12968,9 @@ snapshots: · 24 unmodified lines
12889 transitivePeerDependencies:12968 transitivePeerDependencies:
12890 - supports-color12969 - supports-color
12891 12970
12892 '@expo/image-utils@0.11.5(typescript@6.0.3)':12971 '@expo/image-utils@0.11.5(typescript@7.0.2)':
12893 dependencies:12972 dependencies:
12894 '@expo/require-utils': 57.0.5(typescript@6.0.3)12973 '@expo/require-utils': 57.0.5(typescript@7.0.2)
12895 '@expo/spawn-async': 1.8.012974 '@expo/spawn-async': 1.8.0
12896 chalk: 4.1.212975 chalk: 4.1.2
12897 getenv: 2.0.012976 getenv: 2.0.0
@@ -12902,9 +12981,9 @@ snapshots: · 4 unmodified lines
12902 - supports-color12981 - supports-color
12903 - typescript12982 - typescript
12904 12983
12905 '@expo/image-utils@0.8.14(typescript@6.0.3)':12984 '@expo/image-utils@0.8.14(typescript@7.0.2)':
12906 dependencies:12985 dependencies:
12907 '@expo/require-utils': 55.0.5(typescript@6.0.3)12986 '@expo/require-utils': 55.0.5(typescript@7.0.2)
12908 '@expo/spawn-async': 1.8.012987 '@expo/spawn-async': 1.8.0
12909 chalk: 4.1.212988 chalk: 4.1.2
12910 getenv: 2.0.012989 getenv: 2.0.0
@@ -12915,9 +12994,9 @@ snapshots: · 4 unmodified lines
12915 - supports-color12994 - supports-color
12916 - typescript12995 - typescript
12917 12996
12918 '@expo/inline-modules@0.1.7(typescript@6.0.3)':12997 '@expo/inline-modules@0.1.7(typescript@7.0.2)':
12919 dependencies:12998 dependencies:
12920 '@expo/config-plugins': 57.0.9(typescript@6.0.3)12999 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
12921 transitivePeerDependencies:13000 transitivePeerDependencies:
12922 - supports-color13001 - supports-color
12923 - typescript13002 - typescript
@@ -12927,9 +13006,9 @@ snapshots: · 3 unmodified lines
12927 '@babel/code-frame': 7.29.713006 '@babel/code-frame': 7.29.7
12928 json5: 2.2.313007 json5: 2.2.3
12929 13008
12930 '@expo/local-build-cache-provider@57.0.8(typescript@6.0.3)':13009 '@expo/local-build-cache-provider@57.0.8(typescript@7.0.2)':
12931 dependencies:13010 dependencies:
12932 '@expo/config': 57.0.9(typescript@6.0.3)13011 '@expo/config': 57.0.9(typescript@7.0.2)
12933 chalk: 4.1.213012 chalk: 4.1.2
12934 transitivePeerDependencies:13013 transitivePeerDependencies:
12935 - supports-color13014 - supports-color
@@ -12939,7 +13018,7 @@ snapshots: · 3 unmodified lines
12939 dependencies:13018 dependencies:
12940 '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)13019 '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
12941 anser: 1.4.1013020 anser: 1.4.10
12942 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)13021 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
12943 react: 19.2.313022 react: 19.2.3
12944 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)13023 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
12945 stacktrace-parser: 0.1.1113024 stacktrace-parser: 0.1.11
@@ -12948,22 +13027,22 @@ snapshots: · 2 unmodified lines
12948 dependencies:13027 dependencies:
12949 '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)13028 '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
12950 anser: 1.4.1013029 anser: 1.4.10
12951 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)13030 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
12952 react: 19.2.613031 react: 19.2.6
12953 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)13032 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
12954 stacktrace-parser: 0.1.1113033 stacktrace-parser: 0.1.11
12955 optional: true13034 optional: true
12956 13035
12957 '@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6)':13036 '@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)':
12958 dependencies:13037 dependencies:
12959 '@babel/code-frame': 7.29.713038 '@babel/code-frame': 7.29.7
12960 '@babel/core': 7.29.713039 '@babel/core': 7.29.7
12961 '@babel/generator': 7.29.713040 '@babel/generator': 7.29.7
12962 '@expo/config': 57.0.9(typescript@6.0.3)13041 '@expo/config': 57.0.9(typescript@7.0.2)
12963 '@expo/env': 2.4.313042 '@expo/env': 2.4.3
12964 '@expo/json-file': 11.0.113043 '@expo/json-file': 11.0.1
12965 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)13044 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
12966 '@expo/require-utils': 57.0.5(typescript@6.0.3)13045 '@expo/require-utils': 57.0.5(typescript@7.0.2)
12967 '@expo/spawn-async': 1.8.013046 '@expo/spawn-async': 1.8.0
12968 '@jridgewell/gen-mapping': 0.3.1313047 '@jridgewell/gen-mapping': 0.3.13
12969 '@jridgewell/remapping': 2.3.513048 '@jridgewell/remapping': 2.3.5
@@ -12980,7 +13059,7 @@ snapshots: · 10 unmodified lines
12980 postcss: 8.5.1513059 postcss: 8.5.15
12981 resolve-from: 5.0.013060 resolve-from: 5.0.0
12982 optionalDependencies:13061 optionalDependencies:
12983 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)13062 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
12984 transitivePeerDependencies:13063 transitivePeerDependencies:
12985 - bufferutil13064 - bufferutil
12986 - supports-color13065 - supports-color
@@ -13002,7 +13081,7 @@ snapshots: · 15 unmodified lines
13002 dependencies:13081 dependencies:
13003 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)13082 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
13004 anser: 1.4.1013083 anser: 1.4.10
13005 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)13084 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
13006 pretty-format: 29.7.013085 pretty-format: 29.7.0
13007 react: 19.2.313086 react: 19.2.3
13008 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)13087 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
@@ -13015,7 +13094,7 @@ snapshots: · 6 unmodified lines
13015 dependencies:13094 dependencies:
13016 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)13095 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
13017 anser: 1.4.1013096 anser: 1.4.10
13018 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)13097 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
13019 pretty-format: 29.7.013098 pretty-format: 29.7.0
13020 react: 19.2.613099 react: 19.2.6
13021 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)13100 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
@@ -13065,46 +13144,46 @@ snapshots: · 43 unmodified lines
13065 base64-js: 1.5.113144 base64-js: 1.5.1
13066 xmlbuilder: 15.1.113145 xmlbuilder: 15.1.1
13067 13146
13068 '@expo/prebuild-config@57.0.15(typescript@6.0.3)':13147 '@expo/prebuild-config@57.0.15(typescript@7.0.2)':
13069 dependencies:13148 dependencies:
13070 '@expo/config': 57.0.9(typescript@6.0.3)13149 '@expo/config': 57.0.9(typescript@7.0.2)
13071 '@expo/config-plugins': 57.0.9(typescript@6.0.3)13150 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
13072 '@expo/config-types': 57.0.213151 '@expo/config-types': 57.0.2
13073 '@expo/image-utils': 0.11.5(typescript@6.0.3)13152 '@expo/image-utils': 0.11.5(typescript@7.0.2)
13074 '@expo/json-file': 11.0.113153 '@expo/json-file': 11.0.1
13075 '@react-native/normalize-colors': 0.86.313154 '@react-native/normalize-colors': 0.86.3
13076 debug: 4.4.313155 debug: 4.4.3
13077 expo-modules-autolinking: 57.0.12(typescript@6.0.3)13156 expo-modules-autolinking: 57.0.12(typescript@7.0.2)
13078 resolve-from: 5.0.013157 resolve-from: 5.0.0
13079 semver: 7.8.513158 semver: 7.8.5
13080 transitivePeerDependencies:13159 transitivePeerDependencies:
13081 - supports-color13160 - supports-color
13082 - typescript13161 - typescript
13083 13162
13084 '@expo/require-utils@55.0.5(typescript@6.0.3)':13163 '@expo/require-utils@55.0.5(typescript@7.0.2)':
13085 dependencies:13164 dependencies:
13086 '@babel/code-frame': 7.29.713165 '@babel/code-frame': 7.29.7
13087 '@babel/core': 7.29.713166 '@babel/core': 7.29.7
13088 '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)13167 '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)
13089 optionalDependencies:13168 optionalDependencies:
13090 typescript: 6.0.313169 typescript: 7.0.2
13091 transitivePeerDependencies:13170 transitivePeerDependencies:
13092 - supports-color13171 - supports-color
13093 13172
13094 '@expo/require-utils@57.0.5(typescript@6.0.3)':13173 '@expo/require-utils@57.0.5(typescript@7.0.2)':
13095 dependencies:13174 dependencies:
13096 '@babel/code-frame': 7.29.713175 '@babel/code-frame': 7.29.7
13097 '@babel/core': 7.29.713176 '@babel/core': 7.29.7
13098 '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)13177 '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)
13099 optionalDependencies:13178 optionalDependencies:
13100 typescript: 6.0.313179 typescript: 7.0.2
13101 transitivePeerDependencies:13180 transitivePeerDependencies:
13102 - supports-color13181 - supports-color
13103 13182
13104 '@expo/router-server@57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':13183 '@expo/router-server@57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
13105 dependencies:13184 dependencies:
13106 debug: 4.4.313185 debug: 4.4.3
13107 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)13186 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
13108 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))13187 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
13109 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)13188 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
13110 expo-server: 57.0.313189 expo-server: 57.0.3
@@ -13118,7 +13197,7 @@ snapshots: · 7 unmodified lines
13118 '@expo/router-server@57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':13197 '@expo/router-server@57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
13119 dependencies:13198 dependencies:
13120 debug: 4.4.313199 debug: 4.4.3
13121 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)13200 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
13122 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))13201 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))
13123 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)13202 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
13124 expo-server: 57.0.313203 expo-server: 57.0.3
@@ -13142,7 +13221,7 @@ snapshots: · 17 unmodified lines
13142 13221
13143 '@expo/ui@57.0.14(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':13222 '@expo/ui@57.0.14(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':
13144 dependencies:13223 dependencies:
13145 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)13224 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
13146 react: 19.2.313225 react: 19.2.3
13147 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)13226 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
13148 sf-symbols-typescript: 2.2.013227 sf-symbols-typescript: 2.2.0
@@ -14575,9 +14654,9 @@ snapshots: · 1426 unmodified lines
14575 '@types/react': 19.2.1614654 '@types/react': 19.2.16
14576 optional: true14655 optional: true
14577 14656
14578 '@react-navigation/core@7.21.2(react@19.2.3)':14657 '@react-navigation/core@7.21.13(react@19.2.3)':
14579 dependencies:14658 dependencies:
14580 '@react-navigation/routers': 7.6.014659 '@react-navigation/routers': 7.6.4
14581 escape-string-regexp: 4.0.014660 escape-string-regexp: 4.0.0
14582 fast-deep-equal: 3.1.314661 fast-deep-equal: 3.1.3
14583 nanoid: 3.3.1214662 nanoid: 3.3.12
@@ -14615,7 +14694,7 @@ snapshots: · 31 unmodified lines
14615 14694
14616 '@react-navigation/native@7.3.4(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':14695 '@react-navigation/native@7.3.4(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':
14617 dependencies:14696 dependencies:
14618 '@react-navigation/core': 7.21.2(react@19.2.3)14697 '@react-navigation/core': 7.21.13(react@19.2.3)
14619 escape-string-regexp: 4.0.014698 escape-string-regexp: 4.0.0
14620 fast-deep-equal: 3.1.314699 fast-deep-equal: 3.1.3
14621 nanoid: 3.3.1214700 nanoid: 3.3.12
@@ -14624,7 +14703,7 @@ snapshots: · 2 unmodified lines
14624 standard-navigation: 0.0.714703 standard-navigation: 0.0.7
14625 use-latest-callback: 0.2.6(react@19.2.3)14704 use-latest-callback: 0.2.6(react@19.2.3)
14626 14705
14627 '@react-navigation/routers@7.6.0':14706 '@react-navigation/routers@7.6.4':
14628 dependencies:14707 dependencies:
14629 nanoid: 3.3.1214708 nanoid: 3.3.12
14630 14709
@@ -14726,7 +14805,7 @@ snapshots: · 95 unmodified lines
14726 '@rolldown/binding-win32-x64-msvc@1.1.5':14805 '@rolldown/binding-win32-x64-msvc@1.1.5':
14727 optional: true14806 optional: true
14728 14807
14729 '@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)':14808 '@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)':
14730 dependencies:14809 dependencies:
14731 '@babel/core': 7.29.714810 '@babel/core': 7.29.7
14732 picomatch: 4.0.414811 picomatch: 4.0.4
@@ -14734,7 +14813,7 @@ snapshots: · 1 unmodified line
14734 optionalDependencies:14813 optionalDependencies:
14735 '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)14814 '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)
14736 '@babel/runtime': 7.29.714815 '@babel/runtime': 7.29.7
14737 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'14816 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
14738 14817
14739 '@rolldown/pluginutils@1.0.0-rc.17':14818 '@rolldown/pluginutils@1.0.0-rc.17':
14740 optional: true14819 optional: true
@@ -14960,12 +15039,12 @@ snapshots: · 219 unmodified lines
14960 dependencies:15039 dependencies:
14961 defer-to-connect: 2.0.115040 defer-to-connect: 2.0.1
14962 15041
14963 '@t3tools/mobile-markdown-text@file:apps/mobile/modules/t3-markdown-text(eb96cd030e772ab91fe21f812240338a)':15042 '@t3tools/mobile-markdown-text@file:apps/mobile/modules/t3-markdown-text(6f0a94b6f541bbd4be3f343e27991996)':
14964 dependencies:15043 dependencies:
14965 '@t3tools/client-runtime': link:packages/client-runtime15044 '@t3tools/client-runtime': link:packages/client-runtime
14966 '@t3tools/shared': link:packages/shared15045 '@t3tools/shared': link:packages/shared
14967 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)15046 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
14968 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)15047 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)
14969 expo-clipboard: 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)15048 expo-clipboard: 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
14970 expo-haptics: 57.0.2(expo@57.0.18)15049 expo-haptics: 57.0.2(expo@57.0.18)
14971 expo-symbols: 57.0.2(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)15050 expo-symbols: 57.0.2(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
@@ -15046,12 +15125,12 @@ snapshots: · 74 unmodified lines
15046 '@tailwindcss/oxide-win32-arm64-msvc': 4.3.315125 '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3
15047 '@tailwindcss/oxide-win32-x64-msvc': 4.3.315126 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3
15048 15127
15049 '@tailwindcss/vite@4.3.3(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))':15128 '@tailwindcss/vite@4.3.3(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))':
15050 dependencies:15129 dependencies:
15051 '@tailwindcss/node': 4.3.315130 '@tailwindcss/node': 4.3.3
15052 '@tailwindcss/oxide': 4.3.315131 '@tailwindcss/oxide': 4.3.3
15053 tailwindcss: 4.3.315132 tailwindcss: 4.3.3
15054 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'15133 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
15055 15134
15056 '@tanstack/devtools-event-client@0.4.3': {}15135 '@tanstack/devtools-event-client@0.4.3': {}
15057 15136
@@ -15114,7 +15193,7 @@ snapshots: · 56 unmodified lines
15114 transitivePeerDependencies:15193 transitivePeerDependencies:
15115 - supports-color15194 - supports-color
15116 15195
15117 '@tanstack/router-plugin@1.168.13(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))':15196 '@tanstack/router-plugin@1.168.13(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))':
15118 dependencies:15197 dependencies:
15119 '@babel/core': 7.29.715198 '@babel/core': 7.29.7
15120 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7)15199 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7)
@@ -15131,7 +15210,7 @@ snapshots: · 10 unmodified lines
15131 zod: 4.4.315210 zod: 4.4.3
15132 optionalDependencies:15211 optionalDependencies:
15133 '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6)15212 '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
15134 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'15213 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
15135 transitivePeerDependencies:15214 transitivePeerDependencies:
15136 - supports-color15215 - supports-color
15137 15216
@@ -15363,36 +15442,65 @@ snapshots: · 225 unmodified lines
15363 dependencies:15442 dependencies:
15364 '@types/node': 24.12.415443 '@types/node': 24.12.4
15365 15444
15366 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260604.1':15445 '@typescript/typescript-aix-ppc64@7.0.2':
15367 optional: true15446 optional: true
15368 15447
15369 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260604.1':15448 '@typescript/typescript-darwin-arm64@7.0.2':
15370 optional: true15449 optional: true
15371 15450
15372 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260604.1':15451 '@typescript/typescript-darwin-x64@7.0.2':
15373 optional: true15452 optional: true
15374 15453
15375 '@typescript/native-preview-linux-arm@7.0.0-dev.20260604.1':15454 '@typescript/typescript-freebsd-arm64@7.0.2':
15376 optional: true15455 optional: true
15377 15456
15378 '@typescript/native-preview-linux-x64@7.0.0-dev.20260604.1':15457 '@typescript/typescript-freebsd-x64@7.0.2':
15379 optional: true15458 optional: true
15380 15459
15381 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260604.1':15460 '@typescript/typescript-linux-arm64@7.0.2':
15382 optional: true15461 optional: true
15383 15462
15384 '@typescript/native-preview-win32-x64@7.0.0-dev.20260604.1':15463 '@typescript/typescript-linux-arm@7.0.2':
15385 optional: true15464 optional: true
15386 15465
15387 '@typescript/native-preview@7.0.0-dev.20260604.1':15466 '@typescript/typescript-linux-loong64@7.0.2':
15388 optionalDependencies:15467 optional: true
15389 '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260604.115468
15390 '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260604.115469 '@typescript/typescript-linux-mips64el@7.0.2':
15391 '@typescript/native-preview-linux-arm': 7.0.0-dev.20260604.115470 optional: true
15392 '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260604.115471
15393 '@typescript/native-preview-linux-x64': 7.0.0-dev.20260604.115472 '@typescript/typescript-linux-ppc64@7.0.2':
15394 '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260604.115473 optional: true
15395 '@typescript/native-preview-win32-x64': 7.0.0-dev.20260604.115474
15475 '@typescript/typescript-linux-riscv64@7.0.2':
15476 optional: true
15477
15478 '@typescript/typescript-linux-s390x@7.0.2':
15479 optional: true
15480
15481 '@typescript/typescript-linux-x64@7.0.2':
15482 optional: true
15483
15484 '@typescript/typescript-netbsd-arm64@7.0.2':
15485 optional: true
15486
15487 '@typescript/typescript-netbsd-x64@7.0.2':
15488 optional: true
15489
15490 '@typescript/typescript-openbsd-arm64@7.0.2':
15491 optional: true
15492
15493 '@typescript/typescript-openbsd-x64@7.0.2':
15494 optional: true
15495
15496 '@typescript/typescript-sunos-x64@7.0.2':
15497 optional: true
15498
15499 '@typescript/typescript-win32-arm64@7.0.2':
15500 optional: true
15501
15502 '@typescript/typescript-win32-x64@7.0.2':
15503 optional: true
15396 15504
15397 '@ungap/structured-clone@1.3.1': {}15505 '@ungap/structured-clone@1.3.1': {}
15398 15506
@@ -15409,36 +15517,36 @@ snapshots: · 10 unmodified lines
15409 optionalDependencies:15517 optionalDependencies:
15410 ajv: 6.15.015518 ajv: 6.15.0
15411 15519
15412 '@vitejs/plugin-react@6.0.2(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0)':15520 '@vitejs/plugin-react@6.0.2(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0)':
15413 dependencies:15521 dependencies:
15414 '@rolldown/pluginutils': 1.0.115522 '@rolldown/pluginutils': 1.0.1
15415 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'15523 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
15416 optionalDependencies:15524 optionalDependencies:
15417 '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)15525 '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)
15418 babel-plugin-react-compiler: 1.0.015526 babel-plugin-react-compiler: 1.0.0
15419 15527
15420 '@vitest/browser-preview@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11)':15528 '@vitest/browser-preview@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)':
15421 dependencies:15529 dependencies:
15422 '@testing-library/dom': 10.4.115530 '@testing-library/dom': 10.4.1
15423 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)15531 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)
15424 '@vitest/browser': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11)15532 '@vitest/browser': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)
15425 vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))15533 vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
15426 transitivePeerDependencies:15534 transitivePeerDependencies:
15427 - bufferutil15535 - bufferutil
15428 - msw15536 - msw
15429 - utf-8-validate15537 - utf-8-validate
15430 - vite15538 - vite
15431 15539
15432 '@vitest/browser@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11)':15540 '@vitest/browser@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)':
15433 dependencies:15541 dependencies:
15434 '@blazediff/core': 1.9.115542 '@blazediff/core': 1.9.1
15435 '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))15543 '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
15436 '@vitest/utils': 4.1.1115544 '@vitest/utils': 4.1.11
15437 magic-string: 0.30.2115545 magic-string: 0.30.21
15438 pngjs: 7.0.015546 pngjs: 7.0.0
15439 sirv: 3.0.215547 sirv: 3.0.2
15440 tinyrainbow: 3.1.015548 tinyrainbow: 3.1.0
15441 vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))15549 vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
15442 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)15550 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
15443 transitivePeerDependencies:15551 transitivePeerDependencies:
15444 - bufferutil15552 - bufferutil
@@ -15455,14 +15563,14 @@ snapshots: · 10 unmodified lines
15455 chai: 6.2.215563 chai: 6.2.2
15456 tinyrainbow: 3.1.015564 tinyrainbow: 3.1.0
15457 15565
15458 '@vitest/mocker@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))':15566 '@vitest/mocker@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))':
15459 dependencies:15567 dependencies:
15460 '@vitest/spy': 4.1.1115568 '@vitest/spy': 4.1.11
15461 estree-walker: 3.0.315569 estree-walker: 3.0.3
15462 magic-string: 0.30.2115570 magic-string: 0.30.21
15463 optionalDependencies:15571 optionalDependencies:
15464 msw: 2.12.11(@types/node@24.12.4)(typescript@6.0.3)15572 msw: 2.12.11(@types/node@24.12.4)(typescript@7.0.2)
15465 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'15573 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
15466 15574
15467 '@vitest/pretty-format@4.1.11':15575 '@vitest/pretty-format@4.1.11':
15468 dependencies:15576 dependencies:
@@ -15514,6 +15622,32 @@ snapshots: · 45 unmodified lines
15514 unrun: 0.2.3915622 unrun: 0.2.39
15515 yaml: 2.9.015623 yaml: 2.9.0
15516 15624
15625 '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)':
15626 dependencies:
15627 '@oxc-project/runtime': 0.146.0
15628 '@oxc-project/types': 0.146.0
15629 lightningcss: 1.33.0
15630 postcss: 8.5.15
15631 yuku-codegen: 0.5.48
15632 yuku-parser: 0.5.48
15633 optionalDependencies:
15634 '@types/node': 24.12.4
15635 '@voidzero-dev/vite-plus-darwin-arm64': 0.3.0
15636 '@voidzero-dev/vite-plus-darwin-x64': 0.3.0
15637 '@voidzero-dev/vite-plus-linux-arm64-gnu': 0.3.0
15638 '@voidzero-dev/vite-plus-linux-arm64-musl': 0.3.0
15639 '@voidzero-dev/vite-plus-linux-x64-gnu': 0.3.0
15640 '@voidzero-dev/vite-plus-linux-x64-musl': 0.3.0
15641 '@voidzero-dev/vite-plus-win32-arm64-msvc': 0.3.0
15642 '@voidzero-dev/vite-plus-win32-x64-msvc': 0.3.0
15643 esbuild: 0.28.1
15644 fsevents: 2.3.3
15645 jiti: 2.7.0
15646 terser: 5.48.0
15647 typescript: 7.0.2
15648 unrun: 0.2.39
15649 yaml: 2.9.0
15650
15517 '@voidzero-dev/vite-plus-darwin-arm64@0.3.0':15651 '@voidzero-dev/vite-plus-darwin-arm64@0.3.0':
15518 optional: true15652 optional: true
15519 15653
@@ -15762,7 +15896,7 @@ snapshots: · 242 unmodified lines
15762 json-schema-traverse: 1.0.015896 json-schema-traverse: 1.0.0
15763 require-from-string: 2.0.215897 require-from-string: 2.0.2
15764 15898
15765 alchemy@2.0.0-beta.65(db83c2a4e1e233e8661745115951ce85):15899 alchemy@2.0.0-beta.65(5a5e74348f57625dac72981db7114e79):
15766 dependencies:15900 dependencies:
15767 '@alchemy.run/node-utils': 0.0.515901 '@alchemy.run/node-utils': 0.0.5
15768 '@aws-sdk/credential-providers': 3.1062.015902 '@aws-sdk/credential-providers': 3.1062.0
@@ -15770,9 +15904,9 @@ snapshots: · 1 unmodified line
15770 '@distilled.cloud/aws': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15904 '@distilled.cloud/aws': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
15771 '@distilled.cloud/axiom': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15905 '@distilled.cloud/axiom': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
15772 '@distilled.cloud/cloudflare': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15906 '@distilled.cloud/cloudflare': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
15773 '@distilled.cloud/cloudflare-rolldown-plugin': 0.13.10(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)(workerd@1.20260704.1)15907 '@distilled.cloud/cloudflare-rolldown-plugin': 0.13.10(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.1.5)(workerd@1.20260704.1)
15774 '@distilled.cloud/cloudflare-runtime': 0.13.10(@distilled.cloud/cloudflare@0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/platform-bun@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6))(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15908 '@distilled.cloud/cloudflare-runtime': 0.13.10(@distilled.cloud/cloudflare@0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/platform-bun@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6))(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
15775 '@distilled.cloud/cloudflare-vite-plugin': 0.13.10(86e3ed6000e5955518fd9c0dea8322a9)15909 '@distilled.cloud/cloudflare-vite-plugin': 0.13.10(414e2eac4e6e313aabea4c365b0972ba)
15776 '@distilled.cloud/core': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15910 '@distilled.cloud/core': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
15777 '@distilled.cloud/neon': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15911 '@distilled.cloud/neon': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
15778 '@distilled.cloud/planetscale': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15912 '@distilled.cloud/planetscale': 0.30.2(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
@@ -15808,7 +15942,7 @@ snapshots: · 29 unmodified lines
15808 '@effect/sql-pg': 4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))15942 '@effect/sql-pg': 4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))
15809 drizzle-kit: 1.0.0-rc.415943 drizzle-kit: 1.0.0-rc.4
15810 drizzle-orm: 1.0.0-rc.4(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0-beta.101(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-pg@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-sqlite-bun@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(mysql2@3.22.4(@types/node@24.12.4))(pg@8.21.0)(zod@4.4.3)15944 drizzle-orm: 1.0.0-rc.4(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0-beta.101(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-pg@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@effect/sql-sqlite-bun@4.0.0-beta.103(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6)))(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(mysql2@3.22.4(@types/node@24.12.4))(pg@8.21.0)(zod@4.4.3)
15811 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'15945 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
15812 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)15946 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
15813 transitivePeerDependencies:15947 transitivePeerDependencies:
15814 - '@mongodb-js/zstd'15948 - '@mongodb-js/zstd'
@@ -16166,7 +16300,7 @@ snapshots: · 351 unmodified lines
16166 react-refresh: 0.14.216300 react-refresh: 0.14.2
16167 optionalDependencies:16301 optionalDependencies:
16168 '@babel/runtime': 7.29.716302 '@babel/runtime': 7.29.7
16169 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)16303 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
16170 expo-widgets: 57.0.15(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)16304 expo-widgets: 57.0.15(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
16171 transitivePeerDependencies:16305 transitivePeerDependencies:
16172 - '@babel/core'16306 - '@babel/core'
@@ -17078,12 +17212,12 @@ snapshots: · 905 unmodified lines
17078 17212
17079 expo-application@57.0.2(expo@57.0.18):17213 expo-application@57.0.2(expo@57.0.18):
17080 dependencies:17214 dependencies:
17081 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17215 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17082 17216
17083 expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3):17217 expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2):
17084 dependencies:17218 dependencies:
17085 '@expo/image-utils': 0.11.5(typescript@6.0.3)17219 '@expo/image-utils': 0.11.5(typescript@7.0.2)
17086 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17220 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17087 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))17221 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
17088 react: 19.2.317222 react: 19.2.3
17089 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17223 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
@@ -17091,10 +17225,10 @@ snapshots: · 1 unmodified line
17091 - supports-color17225 - supports-color
17092 - typescript17226 - typescript
17093 17227
17094 expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@6.0.3):17228 expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2):
17095 dependencies:17229 dependencies:
17096 '@expo/image-utils': 0.11.5(typescript@6.0.3)17230 '@expo/image-utils': 0.11.5(typescript@7.0.2)
17097 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)17231 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
17098 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))17232 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))
17099 react: 19.2.617233 react: 19.2.6
17100 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)17234 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
@@ -17103,10 +17237,10 @@ snapshots: · 2 unmodified lines
17103 - typescript17237 - typescript
17104 optional: true17238 optional: true
17105 17239
17106 expo-audio@57.0.4(patch_hash=fa9a3e0442ed395d4071bb406e08c3a471c9a84700bdfa0b9ad7ff144c96041a)(expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17240 expo-audio@57.0.4(patch_hash=fa9a3e0442ed395d4071bb406e08c3a471c9a84700bdfa0b9ad7ff144c96041a)(expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17107 dependencies:17241 dependencies:
17108 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17242 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17109 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)17243 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)
17110 react: 19.2.317244 react: 19.2.3
17111 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17245 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17112 17246
@@ -17126,21 +17260,21 @@ snapshots: · 13 unmodified lines
17126 17260
17127 expo-blur@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17261 expo-blur@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17128 dependencies:17262 dependencies:
17129 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17263 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17130 react: 19.2.317264 react: 19.2.3
17131 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17265 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17132 17266
17133 expo-build-properties@57.0.15(expo@57.0.18):17267 expo-build-properties@57.0.15(expo@57.0.18):
17134 dependencies:17268 dependencies:
17135 '@expo/schema-utils': 57.0.217269 '@expo/schema-utils': 57.0.2
17136 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17270 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17137 resolve-from: 5.0.017271 resolve-from: 5.0.0
17138 semver: 7.8.517272 semver: 7.8.5
17139 17273
17140 expo-camera@57.0.4(@types/emscripten@1.41.5)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17274 expo-camera@57.0.4(@types/emscripten@1.41.5)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17141 dependencies:17275 dependencies:
17142 barcode-detector: 3.2.0(@types/emscripten@1.41.5)17276 barcode-detector: 3.2.0(@types/emscripten@1.41.5)
17143 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17277 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17144 react: 19.2.317278 react: 19.2.3
17145 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17279 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17146 transitivePeerDependencies:17280 transitivePeerDependencies:
@@ -17148,14 +17282,14 @@ snapshots: · 1 unmodified line
17148 17282
17149 expo-clipboard@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17283 expo-clipboard@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17150 dependencies:17284 dependencies:
17151 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17285 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17152 react: 19.2.317286 react: 19.2.3
17153 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17287 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17154 17288
17155 expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):17289 expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):
17156 dependencies:17290 dependencies:
17157 '@expo/env': 2.4.317291 '@expo/env': 2.4.3
17158 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17292 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17159 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17293 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17160 transitivePeerDependencies:17294 transitivePeerDependencies:
17161 - supports-color17295 - supports-color
@@ -17163,7 +17297,7 @@ snapshots: · 1 unmodified line
17163 expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)):17297 expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)):
17164 dependencies:17298 dependencies:
17165 '@expo/env': 2.4.317299 '@expo/env': 2.4.3
17166 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)17300 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
17167 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)17301 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
17168 transitivePeerDependencies:17302 transitivePeerDependencies:
17169 - supports-color17303 - supports-color
@@ -17171,11 +17305,11 @@ snapshots: · 1 unmodified line
17171 17305
17172 expo-crypto@57.0.2(expo@57.0.18):17306 expo-crypto@57.0.2(expo@57.0.18):
17173 dependencies:17307 dependencies:
17174 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17308 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17175 17309
17176 expo-dev-client@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):17310 expo-dev-client@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):
17177 dependencies:17311 dependencies:
17178 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17312 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17179 expo-dev-launcher: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))17313 expo-dev-launcher: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
17180 expo-dev-menu: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))17314 expo-dev-menu: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
17181 expo-dev-menu-interface: 57.0.0(expo@57.0.18)17315 expo-dev-menu-interface: 57.0.0(expo@57.0.18)
@@ -17187,53 +17321,53 @@ snapshots: · 5 unmodified lines
17187 expo-dev-launcher@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):17321 expo-dev-launcher@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):
17188 dependencies:17322 dependencies:
17189 '@expo/schema-utils': 57.0.217323 '@expo/schema-utils': 57.0.2
17190 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17324 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17191 expo-dev-menu: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))17325 expo-dev-menu: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
17192 expo-manifests: 57.0.1(expo@57.0.18)17326 expo-manifests: 57.0.1(expo@57.0.18)
17193 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17327 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17194 17328
17195 expo-dev-menu-interface@57.0.0(expo@57.0.18):17329 expo-dev-menu-interface@57.0.0(expo@57.0.18):
17196 dependencies:17330 dependencies:
17197 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17331 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17198 17332
17199 expo-dev-menu@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):17333 expo-dev-menu@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):
17200 dependencies:17334 dependencies:
17201 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17335 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17202 expo-dev-menu-interface: 57.0.0(expo@57.0.18)17336 expo-dev-menu-interface: 57.0.0(expo@57.0.18)
17203 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17337 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17204 17338
17205 expo-device@57.0.1(expo@57.0.18):17339 expo-device@57.0.1(expo@57.0.18):
17206 dependencies:17340 dependencies:
17207 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17341 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17208 ua-parser-js: 0.7.4117342 ua-parser-js: 0.7.41
17209 17343
17210 expo-document-picker@57.0.1(expo@57.0.18):17344 expo-document-picker@57.0.1(expo@57.0.18):
17211 dependencies:17345 dependencies:
17212 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17346 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17213 17347
17214 expo-eas-client@57.0.2: {}17348 expo-eas-client@57.0.2: {}
17215 17349
17216 expo-file-system@57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):17350 expo-file-system@57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):
17217 dependencies:17351 dependencies:
17218 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17352 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17219 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17353 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17220 17354
17221 expo-file-system@57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)):17355 expo-file-system@57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)):
17222 dependencies:17356 dependencies:
17223 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)17357 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
17224 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)17358 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
17225 optional: true17359 optional: true
17226 17360
17227 expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17361 expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17228 dependencies:17362 dependencies:
17229 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17363 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17230 fontfaceobserver: 2.3.017364 fontfaceobserver: 2.3.0
17231 react: 19.2.317365 react: 19.2.3
17232 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17366 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17233 17367
17234 expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6):17368 expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6):
17235 dependencies:17369 dependencies:
17236 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)17370 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
17237 fontfaceobserver: 2.3.017371 fontfaceobserver: 2.3.0
17238 react: 19.2.617372 react: 19.2.6
17239 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)17373 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
@@ -17241,26 +17375,26 @@ snapshots: · 1 unmodified line
17241 17375
17242 expo-glass-effect@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17376 expo-glass-effect@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17243 dependencies:17377 dependencies:
17244 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17378 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17245 react: 19.2.317379 react: 19.2.3
17246 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17380 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17247 17381
17248 expo-haptics@57.0.2(expo@57.0.18):17382 expo-haptics@57.0.2(expo@57.0.18):
17249 dependencies:17383 dependencies:
17250 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17384 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17251 17385
17252 expo-image-loader@57.0.1(expo@57.0.18):17386 expo-image-loader@57.0.1(expo@57.0.18):
17253 dependencies:17387 dependencies:
17254 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17388 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17255 17389
17256 expo-image-picker@57.0.14(expo@57.0.18):17390 expo-image-picker@57.0.14(expo@57.0.18):
17257 dependencies:17391 dependencies:
17258 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17392 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17259 expo-image-loader: 57.0.1(expo@57.0.18)17393 expo-image-loader: 57.0.1(expo@57.0.18)
17260 17394
17261 expo-image@57.0.3(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17395 expo-image@57.0.3(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17262 dependencies:17396 dependencies:
17263 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17397 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17264 react: 19.2.317398 react: 19.2.3
17265 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17399 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17266 sf-symbols-typescript: 2.2.017400 sf-symbols-typescript: 2.2.0
@@ -17269,12 +17403,12 @@ snapshots: · 2 unmodified lines
17269 17403
17270 expo-keep-awake@57.0.1(expo@57.0.18)(react@19.2.3):17404 expo-keep-awake@57.0.1(expo@57.0.18)(react@19.2.3):
17271 dependencies:17405 dependencies:
17272 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17406 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17273 react: 19.2.317407 react: 19.2.3
17274 17408
17275 expo-keep-awake@57.0.1(expo@57.0.18)(react@19.2.6):17409 expo-keep-awake@57.0.1(expo@57.0.18)(react@19.2.6):
17276 dependencies:17410 dependencies:
17277 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)17411 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
17278 react: 19.2.617412 react: 19.2.6
17279 optional: true17413 optional: true
17280 17414
@@ -17290,12 +17424,12 @@ snapshots: · 9 unmodified lines
17290 17424
17291 expo-manifests@57.0.1(expo@57.0.18):17425 expo-manifests@57.0.1(expo@57.0.18):
17292 dependencies:17426 dependencies:
17293 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17427 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17294 expo-json-utils: 57.0.117428 expo-json-utils: 57.0.1
17295 17429
17296 expo-modules-autolinking@57.0.12(typescript@6.0.3):17430 expo-modules-autolinking@57.0.12(typescript@7.0.2):
17297 dependencies:17431 dependencies:
17298 '@expo/require-utils': 57.0.5(typescript@6.0.3)17432 '@expo/require-utils': 57.0.5(typescript@7.0.2)
17299 '@expo/spawn-async': 1.8.017433 '@expo/spawn-async': 1.8.0
17300 chalk: 4.1.217434 chalk: 4.1.2
17301 commander: 7.2.017435 commander: 7.2.0
@@ -17335,15 +17469,15 @@ snapshots: · 33 unmodified lines
17335 17469
17336 expo-network@57.0.1(expo@57.0.18)(react@19.2.3):17470 expo-network@57.0.1(expo@57.0.18)(react@19.2.3):
17337 dependencies:17471 dependencies:
17338 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17472 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17339 react: 19.2.317473 react: 19.2.3
17340 17474
17341 expo-notifications@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3):17475 expo-notifications@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2):
17342 dependencies:17476 dependencies:
17343 '@expo/image-utils': 0.11.5(typescript@6.0.3)17477 '@expo/image-utils': 0.11.5(typescript@7.0.2)
17344 abort-controller: 3.0.017478 abort-controller: 3.0.0
17345 badgin: 1.2.317479 badgin: 1.2.3
17346 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17480 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17347 expo-application: 57.0.2(expo@57.0.18)17481 expo-application: 57.0.2(expo@57.0.18)
17348 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))17482 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
17349 react: 19.2.317483 react: 19.2.3
@@ -17354,14 +17488,14 @@ snapshots: · 4 unmodified lines
17354 17488
17355 expo-paste-input@0.1.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17489 expo-paste-input@0.1.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17356 dependencies:17490 dependencies:
17357 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17491 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17358 react: 19.2.317492 react: 19.2.3
17359 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17493 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17360 17494
17361 expo-quick-actions@6.0.2(expo@57.0.18)(typescript@6.0.3):17495 expo-quick-actions@6.0.2(expo@57.0.18)(typescript@7.0.2):
17362 dependencies:17496 dependencies:
17363 '@expo/image-utils': 0.8.14(typescript@6.0.3)17497 '@expo/image-utils': 0.8.14(typescript@7.0.2)
17364 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17498 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17365 schema-utils: 4.3.317499 schema-utils: 4.3.3
17366 sf-symbols-typescript: 2.2.017500 sf-symbols-typescript: 2.2.0
17367 transitivePeerDependencies:17501 transitivePeerDependencies:
@@ -17370,27 +17504,27 @@ snapshots: · 2 unmodified lines
17370 17504
17371 expo-secure-store@57.0.2(expo@57.0.18):17505 expo-secure-store@57.0.2(expo@57.0.18):
17372 dependencies:17506 dependencies:
17373 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17507 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17374 17508
17375 expo-server@57.0.3: {}17509 expo-server@57.0.3: {}
17376 17510
17377 expo-sharing@57.0.17(patch_hash=8d2e3b10eb3f52036a9a086800180ec6cebf3b75bccc5b1775117a7244d4ac45)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3):17511 expo-sharing@57.0.17(patch_hash=8d2e3b10eb3f52036a9a086800180ec6cebf3b75bccc5b1775117a7244d4ac45)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2):
17378 dependencies:17512 dependencies:
17379 '@expo/config-plugins': 57.0.9(typescript@6.0.3)17513 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
17380 '@expo/config-types': 57.0.217514 '@expo/config-types': 57.0.2
17381 '@expo/plist': 0.8.117515 '@expo/plist': 0.8.1
17382 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17516 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17383 react: 19.2.317517 react: 19.2.3
17384 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17518 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17385 transitivePeerDependencies:17519 transitivePeerDependencies:
17386 - supports-color17520 - supports-color
17387 - typescript17521 - typescript
17388 17522
17389 expo-splash-screen@57.0.8(expo@57.0.18)(typescript@6.0.3):17523 expo-splash-screen@57.0.8(expo@57.0.18)(typescript@7.0.2):
17390 dependencies:17524 dependencies:
17391 '@expo/config-plugins': 57.0.9(typescript@6.0.3)17525 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
17392 '@expo/image-utils': 0.11.5(typescript@6.0.3)17526 '@expo/image-utils': 0.11.5(typescript@7.0.2)
17393 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17527 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17394 xml2js: 0.6.017528 xml2js: 0.6.0
17395 transitivePeerDependencies:17529 transitivePeerDependencies:
17396 - supports-color17530 - supports-color
@@ -17399,14 +17533,14 @@ snapshots: · 2 unmodified lines
17399 expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17533 expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17400 dependencies:17534 dependencies:
17401 await-lock: 2.2.217535 await-lock: 2.2.2
17402 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17536 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17403 react: 19.2.317537 react: 19.2.3
17404 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17538 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17405 17539
17406 expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6):17540 expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6):
17407 dependencies:17541 dependencies:
17408 await-lock: 2.2.217542 await-lock: 2.2.2
17409 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)17543 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)
17410 react: 19.2.617544 react: 19.2.6
17411 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)17545 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)
17412 optional: true17546 optional: true
@@ -17416,7 +17550,7 @@ snapshots: · 3 unmodified lines
17416 expo-symbols@57.0.2(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17550 expo-symbols@57.0.2(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17417 dependencies:17551 dependencies:
17418 '@expo-google-fonts/material-symbols': 0.4.3817552 '@expo-google-fonts/material-symbols': 0.4.38
17419 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17553 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17420 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)17554 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
17421 react: 19.2.317555 react: 19.2.3
17422 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17556 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
@@ -17424,7 +17558,7 @@ snapshots: · 1 unmodified line
17424 17558
17425 expo-updates-interface@57.0.1(expo@57.0.18):17559 expo-updates-interface@57.0.1(expo@57.0.18):
17426 dependencies:17560 dependencies:
17427 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17561 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17428 17562
17429 expo-updates@57.0.19(expo-dev-client@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17563 expo-updates@57.0.19(expo-dev-client@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17430 dependencies:17564 dependencies:
@@ -17434,7 +17568,7 @@ snapshots: · 3 unmodified lines
17434 arg: 4.1.317568 arg: 4.1.3
17435 chalk: 4.1.217569 chalk: 4.1.2
17436 debug: 4.4.317570 debug: 4.4.3
17437 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17571 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17438 expo-eas-client: 57.0.217572 expo-eas-client: 57.0.2
17439 expo-manifests: 57.0.1(expo@57.0.18)17573 expo-manifests: 57.0.1(expo@57.0.18)
17440 expo-structured-headers: 57.0.017574 expo-structured-headers: 57.0.0
@@ -17453,20 +17587,20 @@ snapshots: · 12 unmodified lines
17453 17587
17454 expo-video@57.0.3(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17588 expo-video@57.0.3(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17455 dependencies:17589 dependencies:
17456 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17590 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17457 react: 19.2.317591 react: 19.2.3
17458 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17592 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17459 17593
17460 expo-web-browser@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):17594 expo-web-browser@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)):
17461 dependencies:17595 dependencies:
17462 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17596 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17463 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17597 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17464 17598
17465 expo-widgets@57.0.15(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):17599 expo-widgets@57.0.15(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3):
17466 dependencies:17600 dependencies:
17467 '@expo/plist': 0.8.117601 '@expo/plist': 0.8.1
17468 '@expo/ui': 57.0.14(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)17602 '@expo/ui': 57.0.14(@babel/core@7.29.7)(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
17469 expo: 57.0.18(f9c992a5d7c53d81398568d3950992dc)17603 expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed)
17470 react: 19.2.317604 react: 19.2.3
17471 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)17605 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
17472 transitivePeerDependencies:17606 transitivePeerDependencies:
@@ -17476,26 +17610,26 @@ snapshots: · 3 unmodified lines
17476 - react-dom17610 - react-dom
17477 - react-native-worklets17611 - react-native-worklets
17478 17612
17479 expo@57.0.18(ecb3896f1dbe5154a21ddc585503f306):17613 expo@57.0.18(0bf40d5ad6281d8f1e92517b24812edb):
17480 dependencies:17614 dependencies:
17481 '@babel/runtime': 7.29.717615 '@babel/runtime': 7.29.7
17482 '@expo/cli': 57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@6.0.3)(utf-8-validate@6.0.6)17616 '@expo/cli': 57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2)(utf-8-validate@6.0.6)
17483 '@expo/config': 57.0.9(typescript@6.0.3)17617 '@expo/config': 57.0.9(typescript@7.0.2)
17484 '@expo/config-plugins': 57.0.9(typescript@6.0.3)17618 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
17485 '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)17619 '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
17486 '@expo/fingerprint': 0.20.1117620 '@expo/fingerprint': 0.20.11
17487 '@expo/local-build-cache-provider': 57.0.8(typescript@6.0.3)17621 '@expo/local-build-cache-provider': 57.0.8(typescript@7.0.2)
17488 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)17622 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
17489 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)17623 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
17490 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6)17624 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)
17491 '@ungap/structured-clone': 1.3.117625 '@ungap/structured-clone': 1.3.1
17492 babel-preset-expo: 57.0.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo-widgets@57.0.15)(expo@57.0.18)(react-refresh@0.14.2)17626 babel-preset-expo: 57.0.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo-widgets@57.0.15)(expo@57.0.18)(react-refresh@0.14.2)
17493 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@6.0.3)17627 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2)
17494 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))17628 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))
17495 expo-file-system: 57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))17629 expo-file-system: 57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))
17496 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)17630 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
17497 expo-keep-awake: 57.0.1(expo@57.0.18)(react@19.2.6)17631 expo-keep-awake: 57.0.1(expo@57.0.18)(react@19.2.6)
17498 expo-modules-autolinking: 57.0.12(typescript@6.0.3)17632 expo-modules-autolinking: 57.0.12(typescript@7.0.2)
17499 expo-modules-core: 57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)17633 expo-modules-core: 57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
17500 pretty-format: 29.7.017634 pretty-format: 29.7.0
17501 react: 19.2.617635 react: 19.2.6
@@ -17519,26 +17653,26 @@ snapshots: · 17 unmodified lines
17519 - utf-8-validate17653 - utf-8-validate
17520 optional: true17654 optional: true
17521 17655
17522 expo@57.0.18(f9c992a5d7c53d81398568d3950992dc):17656 expo@57.0.18(fc5a731e35a0144aab60c7305f29cbed):
17523 dependencies:17657 dependencies:
17524 '@babel/runtime': 7.29.717658 '@babel/runtime': 7.29.7
17525 '@expo/cli': 57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)(utf-8-validate@6.0.6)17659 '@expo/cli': 57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)(utf-8-validate@6.0.6)
17526 '@expo/config': 57.0.9(typescript@6.0.3)17660 '@expo/config': 57.0.9(typescript@7.0.2)
17527 '@expo/config-plugins': 57.0.9(typescript@6.0.3)17661 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
17528 '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)17662 '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
17529 '@expo/fingerprint': 0.20.1117663 '@expo/fingerprint': 0.20.11
17530 '@expo/local-build-cache-provider': 57.0.8(typescript@6.0.3)17664 '@expo/local-build-cache-provider': 57.0.8(typescript@7.0.2)
17531 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)17665 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
17532 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)17666 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
17533 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6)17667 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)
17534 '@ungap/structured-clone': 1.3.117668 '@ungap/structured-clone': 1.3.1
17535 babel-preset-expo: 57.0.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo-widgets@57.0.15)(expo@57.0.18)(react-refresh@0.14.2)17669 babel-preset-expo: 57.0.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo-widgets@57.0.15)(expo@57.0.18)(react-refresh@0.14.2)
17536 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@6.0.3)17670 expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)
17537 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))17671 expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
17538 expo-file-system: 57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))17672 expo-file-system: 57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))
17539 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)17673 expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
17540 expo-keep-awake: 57.0.1(expo@57.0.18)(react@19.2.3)17674 expo-keep-awake: 57.0.1(expo@57.0.18)(react@19.2.3)
17541 expo-modules-autolinking: 57.0.12(typescript@6.0.3)17675 expo-modules-autolinking: 57.0.12(typescript@7.0.2)
17542 expo-modules-core: 57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)17676 expo-modules-core: 57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
17543 pretty-format: 29.7.017677 pretty-format: 29.7.0
17544 react: 19.2.317678 react: 19.2.3
@@ -19474,7 +19608,7 @@ snapshots: · 1929 unmodified lines
19474 optionalDependencies:19608 optionalDependencies:
19475 msgpackr-extract: 3.0.419609 msgpackr-extract: 3.0.4
19476 19610
19477 msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3):19611 msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2):
19478 dependencies:19612 dependencies:
19479 '@inquirer/confirm': 5.1.21(@types/node@24.12.4)19613 '@inquirer/confirm': 5.1.21(@types/node@24.12.4)
19480 '@mswjs/interceptors': 0.41.919614 '@mswjs/interceptors': 0.41.9
@@ -19495,7 +19629,7 @@ snapshots: · 14 unmodified lines
19495 until-async: 3.0.219629 until-async: 3.0.2
19496 yargs: 17.7.219630 yargs: 17.7.2
19497 optionalDependencies:19631 optionalDependencies:
19498 typescript: 6.0.319632 typescript: 7.0.2
19499 transitivePeerDependencies:19633 transitivePeerDependencies:
19500 - '@types/node'19634 - '@types/node'
19501 optional: true19635 optional: true
@@ -19784,7 +19918,7 @@ snapshots: · 282 unmodified lines
19784 '@oxc-resolver/binding-win32-arm64-msvc': 11.24.219918 '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
19785 '@oxc-resolver/binding-win32-x64-msvc': 11.24.219919 '@oxc-resolver/binding-win32-x64-msvc': 11.24.2
19786 19920
19787 oxfmt@0.64.0(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)):19921 oxfmt@0.64.0(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)):
19788 dependencies:19922 dependencies:
19789 tinypool: 2.1.019923 tinypool: 2.1.0
19790 optionalDependencies:19924 optionalDependencies:
@@ -19807,7 +19941,7 @@ snapshots: · 16 unmodified lines
19807 '@oxfmt/binding-win32-arm64-msvc': 0.64.019941 '@oxfmt/binding-win32-arm64-msvc': 0.64.0
19808 '@oxfmt/binding-win32-ia32-msvc': 0.64.019942 '@oxfmt/binding-win32-ia32-msvc': 0.64.0
19809 '@oxfmt/binding-win32-x64-msvc': 0.64.019943 '@oxfmt/binding-win32-x64-msvc': 0.64.0
19810 vite-plus: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)19944 vite-plus: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
19811 19945
19812 oxlint-tsgolint@7.0.2001:19946 oxlint-tsgolint@7.0.2001:
19813 optionalDependencies:19947 optionalDependencies:
@@ -19818,7 +19952,7 @@ snapshots: · 4 unmodified lines
19818 '@oxlint-tsgolint/win32-arm64': 7.0.200119952 '@oxlint-tsgolint/win32-arm64': 7.0.2001
19819 '@oxlint-tsgolint/win32-x64': 7.0.200119953 '@oxlint-tsgolint/win32-x64': 7.0.2001
19820 19954
19821 oxlint@1.79.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)):19955 oxlint@1.79.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)):
19822 optionalDependencies:19956 optionalDependencies:
19823 '@oxlint/binding-android-arm-eabi': 1.79.019957 '@oxlint/binding-android-arm-eabi': 1.79.0
19824 '@oxlint/binding-android-arm64': 1.79.019958 '@oxlint/binding-android-arm64': 1.79.0
@@ -19840,7 +19974,7 @@ snapshots: · 15 unmodified lines
19840 '@oxlint/binding-win32-ia32-msvc': 1.79.019974 '@oxlint/binding-win32-ia32-msvc': 1.79.0
19841 '@oxlint/binding-win32-x64-msvc': 1.79.019975 '@oxlint/binding-win32-x64-msvc': 1.79.0
19842 oxlint-tsgolint: 7.0.200119976 oxlint-tsgolint: 7.0.2001
19843 vite-plus: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)19977 vite-plus: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
19844 19978
19845 p-cancelable@2.1.1: {}19979 p-cancelable@2.1.1: {}
19846 19980
@@ -21453,6 +21587,29 @@ snapshots: · 1606 unmodified lines
21453 21587
21454 typescript@6.0.3: {}21588 typescript@6.0.3: {}
21455 21589
21590 typescript@7.0.2:
21591 optionalDependencies:
21592 '@typescript/typescript-aix-ppc64': 7.0.2
21593 '@typescript/typescript-darwin-arm64': 7.0.2
21594 '@typescript/typescript-darwin-x64': 7.0.2
21595 '@typescript/typescript-freebsd-arm64': 7.0.2
21596 '@typescript/typescript-freebsd-x64': 7.0.2
21597 '@typescript/typescript-linux-arm': 7.0.2
21598 '@typescript/typescript-linux-arm64': 7.0.2
21599 '@typescript/typescript-linux-loong64': 7.0.2
21600 '@typescript/typescript-linux-mips64el': 7.0.2
21601 '@typescript/typescript-linux-ppc64': 7.0.2
21602 '@typescript/typescript-linux-riscv64': 7.0.2
21603 '@typescript/typescript-linux-s390x': 7.0.2
21604 '@typescript/typescript-linux-x64': 7.0.2
21605 '@typescript/typescript-netbsd-arm64': 7.0.2
21606 '@typescript/typescript-netbsd-x64': 7.0.2
21607 '@typescript/typescript-openbsd-arm64': 7.0.2
21608 '@typescript/typescript-openbsd-x64': 7.0.2
21609 '@typescript/typescript-sunos-x64': 7.0.2
21610 '@typescript/typescript-win32-arm64': 7.0.2
21611 '@typescript/typescript-win32-x64': 7.0.2
21612
21456 ua-parser-js@0.7.41: {}21613 ua-parser-js@0.7.41: {}
21457 21614
21458 ufo@1.6.4: {}21615 ufo@1.6.4: {}
@@ -21554,7 +21711,7 @@ snapshots: · 95 unmodified lines
21554 21711
21555 universalify@2.0.1: {}21712 universalify@2.0.1: {}
21556 21713
21557 uniwind@1.11.0(patch_hash=17d92be2eec71bb6396b402e8d034968e54b28746876d7977cb3139655f42b90)(@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6))(metro-cache@0.84.5)(metro-transform-worker@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(metro@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(tailwindcss@4.3.3):21714 uniwind@1.11.0(patch_hash=17d92be2eec71bb6396b402e8d034968e54b28746876d7977cb3139655f42b90)(@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6))(metro-cache@0.84.5)(metro-transform-worker@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(metro@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(tailwindcss@4.3.3):
21558 dependencies:21715 dependencies:
21559 '@tailwindcss/node': 4.3.321716 '@tailwindcss/node': 4.3.3
21560 '@tailwindcss/oxide': 4.3.321717 '@tailwindcss/oxide': 4.3.3
@@ -21566,7 +21723,7 @@ snapshots: · 5 unmodified lines
21566 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)21723 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
21567 tailwindcss: 4.3.321724 tailwindcss: 4.3.3
21568 optionalDependencies:21725 optionalDependencies:
21569 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6)21726 '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)
21570 metro-transform-worker: 0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)21727 metro-transform-worker: 0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)
21571 21728
21572 unpipe@1.0.0: {}21729 unpipe@1.0.0: {}
@@ -21689,25 +21846,25 @@ snapshots: · 116 unmodified lines
21689 '@types/unist': 3.0.321846 '@types/unist': 3.0.3
21690 vfile-message: 4.0.321847 vfile-message: 4.0.3
21691 21848
21692 vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0):21849 vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0):
21693 dependencies:21850 dependencies:
21694 '@oxc-project/types': 0.146.021851 '@oxc-project/types': 0.146.0
21695 '@oxlint/plugins': 1.79.021852 '@oxlint/plugins': 1.79.0
21696 '@vitest/browser': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11)21853 '@vitest/browser': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)
21697 '@vitest/browser-preview': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11)21854 '@vitest/browser-preview': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)
21698 '@vitest/expect': 4.1.1121855 '@vitest/expect': 4.1.11
21699 '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))21856 '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
21700 '@vitest/pretty-format': 4.1.1121857 '@vitest/pretty-format': 4.1.11
21701 '@vitest/runner': 4.1.1121858 '@vitest/runner': 4.1.11
21702 '@vitest/snapshot': 4.1.1121859 '@vitest/snapshot': 4.1.11
21703 '@vitest/spy': 4.1.1121860 '@vitest/spy': 4.1.11
21704 '@vitest/utils': 4.1.1121861 '@vitest/utils': 4.1.11
21705 '@voidzero-dev/vite-plus-core': 0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)21862 '@voidzero-dev/vite-plus-core': 0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)
21706 oxfmt: 0.64.0(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0))21863 oxfmt: 0.64.0(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0))
21707 oxlint: 1.79.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0))21864 oxlint: 1.79.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0))
21708 oxlint-tsgolint: 7.0.200121865 oxlint-tsgolint: 7.0.2001
21709 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'21866 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
21710 vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))21867 vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
21711 optionalDependencies:21868 optionalDependencies:
21712 '@voidzero-dev/vite-plus-darwin-arm64': 0.3.021869 '@voidzero-dev/vite-plus-darwin-arm64': 0.3.0
21713 '@voidzero-dev/vite-plus-darwin-x64': 0.3.021870 '@voidzero-dev/vite-plus-darwin-x64': 0.3.0
@@ -21751,10 +21908,10 @@ snapshots: · 37 unmodified lines
21751 optionalDependencies:21908 optionalDependencies:
21752 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'21909 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'
21753 21910
21754 vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3)):21911 vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2)):
21755 dependencies:21912 dependencies:
21756 '@vitest/expect': 4.1.1121913 '@vitest/expect': 4.1.11
21757 '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))21914 '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
21758 '@vitest/pretty-format': 4.1.1121915 '@vitest/pretty-format': 4.1.11
21759 '@vitest/runner': 4.1.1121916 '@vitest/runner': 4.1.11
21760 '@vitest/snapshot': 4.1.1121917 '@vitest/snapshot': 4.1.11
@@ -21771,11 +21928,11 @@ snapshots: · 10 unmodified lines
21771 tinyexec: 1.2.421928 tinyexec: 1.2.4
21772 tinyglobby: 0.2.1721929 tinyglobby: 0.2.17
21773 tinyrainbow: 3.1.021930 tinyrainbow: 3.1.0
21774 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)'21931 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)'
21775 why-is-node-running: 2.3.021932 why-is-node-running: 2.3.0
21776 optionalDependencies:21933 optionalDependencies:
21777 '@types/node': 24.12.421934 '@types/node': 24.12.4
21778 '@vitest/browser-preview': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11)21935 '@vitest/browser-preview': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)
21779 transitivePeerDependencies:21936 transitivePeerDependencies:
21780 - msw21937 - msw
21781 21938
pnpm-workspace.yaml+4−3
@@ -37,7 +37,7 @@ catalog: · 36 unmodified lines
37 "@effect/platform-node-shared": 4.0.0-beta.10337 "@effect/platform-node-shared": 4.0.0-beta.103
38 "@effect/sql-pg": 4.0.0-beta.10338 "@effect/sql-pg": 4.0.0-beta.103
39 "@effect/sql-sqlite-bun": 4.0.0-beta.10339 "@effect/sql-sqlite-bun": 4.0.0-beta.103
40 "@effect/tsgo": 0.13.240 "@effect/tsgo": 0.41.0
41 "@effect/vitest": 4.0.0-beta.10341 "@effect/vitest": 4.0.0-beta.103
42 "@legendapp/list": 3.3.542 "@legendapp/list": 3.3.5
43 "@noble/curves": 1.9.143 "@noble/curves": 1.9.1
@@ -47,12 +47,11 @@ catalog: · 3 unmodified lines
47 "@tailwindcss/oxide": 4.3.347 "@tailwindcss/oxide": 4.3.3
48 "@tailwindcss/vite": 4.3.348 "@tailwindcss/vite": 4.3.3
49 "@types/node": 24.12.449 "@types/node": 24.12.4
50 "@typescript/native-preview": 7.0.0-dev.20260604.1
51 effect: 4.0.0-beta.10350 effect: 4.0.0-beta.103
52 jose: 6.2.251 jose: 6.2.2
53 lightningcss: 1.33.052 lightningcss: 1.33.0
54 tailwindcss: 4.3.353 tailwindcss: 4.3.3
55 typescript: ~6.0.354 typescript: 7.0.2
56 vite: npm:@voidzero-dev/vite-plus-core@0.3.055 vite: npm:@voidzero-dev/vite-plus-core@0.3.0
57 vite-plus: 0.3.056 vite-plus: 0.3.0
58 yaml: ^2.9.057 yaml: ^2.9.0
@@ -94,6 +93,8 @@ minimumReleaseAgeExclude: · 35 unmodified lines
94 - "@anthropic-ai/claude-agent-sdk@0.3.260"93 - "@anthropic-ai/claude-agent-sdk@0.3.260"
95 94
96overrides:95overrides:
96 # Earlier React Navigation declarations create a circular type alias in TypeScript 7.
97 "@react-navigation/core": 7.21.13
97 # The dbus-next patch drops usocket from the package, but pnpm resolves from the98 # The dbus-next patch drops usocket from the package, but pnpm resolves from the
98 # registry manifest, so the edge has to be cut here as well.99 # registry manifest, so the edge has to be cut here as well.
99 "dbus-next>usocket": "-"100 "dbus-next>usocket": "-"
scripts/clean-tsgo-backups.mjs+0−24
@@ -1,24 +0,0 @@
1// Deletes stale tsgo backup files left behind by `effect-tsgo patch`.
2//
3// The patch command backs up the real tsgo binary to `tsgo.original`, and if
4// that name is taken it writes `tsgo.original.1`, `.2`, ... without ever
5// cleaning up. On runners that restore node_modules from a build cache
6// (Vercel), backups accumulate across deploys until patch hard-fails at 101
7// with "Too many backup files exist". Removing them is safe: from the second
8// patch onward the backup is just the previously-patched binary, and pnpm
9// restores the pristine one whenever the package is re-materialized.
10//
11// Runs as part of `prepare`, so it must only use node builtins.
12import * as NodeFS from "node:fs";
13
14const backups = NodeFS.globSync(
15 "node_modules/.pnpm/@typescript+native-preview-*/node_modules/@typescript/native-preview-*/lib/tsgo{,.exe}.original*",
16);
17
18for (const backup of backups) {
19 NodeFS.rmSync(backup, { force: true });
20}
21
22if (backups.length > 0) {
23 console.log(`Removed ${backups.length} stale tsgo backup(s)`);
24}
scripts/knip-schemas.ts+2−1
@@ -1,7 +1,8 @@
1// @effect-diagnostics nodeBuiltinImport:off - Knip and the TypeScript compiler host use synchronous Node paths.1// @effect-diagnostics nodeBuiltinImport:off - Knip and the TypeScript compiler host use synchronous Node paths.
2import * as NodePath from "node:path";2import * as NodePath from "node:path";
3import type { Preprocessor } from "knip";3import type { Preprocessor } from "knip";
4import ts from "typescript";4// Knip needs the legacy compiler API, which TypeScript 7 no longer exports.
5import ts from "typescript-legacy";
5 6
6// Effect 4 schemas carry this marker, including aliases and Schema.Class constructors.7// Effect 4 schemas carry this marker, including aliases and Schema.Class constructors.
7// Checking the type avoids evaluating application modules or exempting schema factories/decoders.8// Checking the type avoids evaluating application modules or exempting schema factories/decoders.
scripts/package.json+2−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
3 "private": true,3 "private": true,
4 "type": "module",4 "type": "module",
5 "scripts": {5 "scripts": {
6 "typecheck": "tsgo --noEmit",6 "typecheck": "tsc --noEmit",
7 "test": "vp test run"7 "test": "vp test run"
8 },8 },
9 "dependencies": {9 "dependencies": {
@@ -20,6 +20,7 @@ · 10 unmodified lines
20 "@effect/vitest": "catalog:",20 "@effect/vitest": "catalog:",
21 "@types/pngjs": "6.0.5",21 "@types/pngjs": "6.0.5",
22 "typescript": "catalog:",22 "typescript": "catalog:",
23 "typescript-legacy": "npm:typescript@~6.0.3",
23 "vite-plus": "catalog:"24 "vite-plus": "catalog:"
24 }25 }
25}26}