Fix red main: typecheck, lint, i18n, unit and web E2E (#222)
* Fix red main: typecheck, lint, i18n and stale unit tests Direct pushes to main left typecheck, lint and 16 unit tests red. - Typecheck: AskCard test uses the current ask block shape, the sandbox fault test calls the two-argument desktop writeFile, removing a queued message notifies with the thread's latest event seq, and the replay fixture only reads ref from steps that carry one. - Lint: format and import order. - i18n: transcript status labels were German source strings; they are English now with German translations, catalogs re-extracted, and the mobile "Failed to remove message" string is translated. - Tests follow intended behavior changes: the time instruction now closes the system prompt, short chat turns start at low reasoning, owner-owned read-only files (git objects) pass the home check, and the desktop computer may read and write host files outside its home. The old desktop write-containment suite is replaced by a host file test. - The composer task pill test mocks the Lingui macros like other tests. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TnT7eVHuaCzZKY5CnYzpr1 * Bump Expo patch releases so expo install --check passes Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TnT7eVHuaCzZKY5CnYzpr1 * Bring web E2E back in line with the new side panel The side panel lost its computer tab, which left the full computer window (take control, teach, release) unreachable from the web app. The browser view now offers an "Open in full window" button, and opening the panel no longer boots a stopped computer. Also: the slash picker scrolls instead of growing under the header, user skills come first in it, the agent overview hides an empty routines block, the hover time hides again with collapsed details, and the light destructive token meets contrast on the sidebar. E2E specs follow the new panel layout, and the cursor and hover tests no longer race the UI. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TnT7eVHuaCzZKY5CnYzpr1 --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
parent
9a753e9adb
commit
de95cf1b91
@ -617,11 +617,7 @@ export async function createApp(
|
|||||||
actor,
|
actor,
|
||||||
signal: c.req.raw.signal,
|
signal: c.req.raw.signal,
|
||||||
userAgent: c.req.header("user-agent"),
|
userAgent: c.req.header("user-agent"),
|
||||||
webOrigin: requestWebOrigin(
|
webOrigin: requestWebOrigin(c.req.header("origin"), env.webOrigin, env.extraTrustedOrigins),
|
||||||
c.req.header("origin"),
|
|
||||||
env.webOrigin,
|
|
||||||
env.extraTrustedOrigins,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
if (matched) return c.newResponse(response.body, response);
|
if (matched) return c.newResponse(response.body, response);
|
||||||
|
|||||||
@ -1542,7 +1542,12 @@ export async function removeQueuedMessage(
|
|||||||
|
|
||||||
if (result.removed) {
|
if (result.removed) {
|
||||||
// Notify subscribers so the UI updates
|
// Notify subscribers so the UI updates
|
||||||
await deps.events.notify(target.threadId, undefined).catch(() => undefined);
|
const latest = await deps.prisma.event.findFirst({
|
||||||
|
where: { threadId: target.threadId },
|
||||||
|
orderBy: { seq: "desc" },
|
||||||
|
select: { seq: true },
|
||||||
|
});
|
||||||
|
await deps.events.notify(target.threadId, latest?.seq ?? 0).catch(() => undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
return { ok: true as const, removed: result.removed };
|
return { ok: true as const, removed: result.removed };
|
||||||
|
|||||||
@ -261,6 +261,7 @@ export const DE_MESSAGES: Record<string, string> = {
|
|||||||
Eyeshadow: "Lidschatten",
|
Eyeshadow: "Lidschatten",
|
||||||
Failed: "Fehlgeschlagen",
|
Failed: "Fehlgeschlagen",
|
||||||
"Failed to refresh": "Aktualisieren fehlgeschlagen",
|
"Failed to refresh": "Aktualisieren fehlgeschlagen",
|
||||||
|
"Failed to remove message": "Nachricht konnte nicht entfernt werden",
|
||||||
"Failed to send message": "Nachricht konnte nicht gesendet werden",
|
"Failed to send message": "Nachricht konnte nicht gesendet werden",
|
||||||
"Failed to stop work": "Arbeit konnte nicht gestoppt werden",
|
"Failed to stop work": "Arbeit konnte nicht gestoppt werden",
|
||||||
"Fewer {label}": "Weniger {label}",
|
"Fewer {label}": "Weniger {label}",
|
||||||
|
|||||||
@ -274,6 +274,7 @@ export const RU_MESSAGES: Record<string, string> = {
|
|||||||
"Executor token": "Токен Executor",
|
"Executor token": "Токен Executor",
|
||||||
Failed: "Ошибка",
|
Failed: "Ошибка",
|
||||||
"Failed to refresh": "Не удалось обновить",
|
"Failed to refresh": "Не удалось обновить",
|
||||||
|
"Failed to remove message": "Не удалось удалить сообщение",
|
||||||
"Failed to send message": "Не удалось отправить сообщение",
|
"Failed to send message": "Не удалось отправить сообщение",
|
||||||
"Failed to stop work": "Не удалось остановить работу",
|
"Failed to stop work": "Не удалось остановить работу",
|
||||||
File: "Файл",
|
File: "Файл",
|
||||||
|
|||||||
@ -259,6 +259,7 @@ export const ZH_MESSAGES: Record<string, string> = {
|
|||||||
"Executor token": "Executor 令牌",
|
"Executor token": "Executor 令牌",
|
||||||
Failed: "失败",
|
Failed: "失败",
|
||||||
"Failed to refresh": "刷新失败",
|
"Failed to refresh": "刷新失败",
|
||||||
|
"Failed to remove message": "删除消息失败",
|
||||||
"Failed to send message": "发送消息失败",
|
"Failed to send message": "发送消息失败",
|
||||||
"Failed to stop work": "停止工作失败",
|
"Failed to stop work": "停止工作失败",
|
||||||
File: "文件",
|
File: "文件",
|
||||||
|
|||||||
@ -18,14 +18,14 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/metro-runtime": "57.0.17",
|
"@expo/metro-runtime": "57.0.17",
|
||||||
"@expo/ui": "57.0.25",
|
"@expo/ui": "57.0.26",
|
||||||
"@rakazo/chat-ui": "workspace:*",
|
"@rakazo/chat-ui": "workspace:*",
|
||||||
"@rakazo/contracts": "workspace:*",
|
"@rakazo/contracts": "workspace:*",
|
||||||
"@rakazo/core": "workspace:*",
|
"@rakazo/core": "workspace:*",
|
||||||
"@rakazo/ui-tokens": "workspace:*",
|
"@rakazo/ui-tokens": "workspace:*",
|
||||||
"@react-native-vector-icons/ionicons": "13.1.4",
|
"@react-native-vector-icons/ionicons": "13.1.4",
|
||||||
"@react-native-vector-icons/material-design-icons": "13.1.4",
|
"@react-native-vector-icons/material-design-icons": "13.1.4",
|
||||||
"expo": "57.0.30",
|
"expo": "57.0.31",
|
||||||
"expo-application": "57.0.3",
|
"expo-application": "57.0.3",
|
||||||
"expo-audio": "57.0.5",
|
"expo-audio": "57.0.5",
|
||||||
"expo-clipboard": "57.0.2",
|
"expo-clipboard": "57.0.2",
|
||||||
@ -37,11 +37,11 @@
|
|||||||
"expo-keep-awake": "57.0.2",
|
"expo-keep-awake": "57.0.2",
|
||||||
"expo-linking": "57.0.13",
|
"expo-linking": "57.0.13",
|
||||||
"expo-localization": "57.0.2",
|
"expo-localization": "57.0.2",
|
||||||
"expo-modules-core": "57.0.23",
|
"expo-modules-core": "57.0.24",
|
||||||
"expo-notifications": "57.0.23",
|
"expo-notifications": "57.0.24",
|
||||||
"expo-router": "57.0.28",
|
"expo-router": "57.0.29",
|
||||||
"expo-secure-store": "57.0.4",
|
"expo-secure-store": "57.0.4",
|
||||||
"expo-sharing": "57.0.23",
|
"expo-sharing": "57.0.24",
|
||||||
"expo-splash-screen": "57.0.10",
|
"expo-splash-screen": "57.0.10",
|
||||||
"expo-status-bar": "57.0.1",
|
"expo-status-bar": "57.0.1",
|
||||||
"expo-symbols": "57.0.3",
|
"expo-symbols": "57.0.3",
|
||||||
|
|||||||
@ -31,7 +31,7 @@ test("the bot's screen opens beside the chat while it works and steps back after
|
|||||||
|
|
||||||
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
||||||
await expect(sidePanel).toHaveAttribute("data-auto", "");
|
await expect(sidePanel).toHaveAttribute("data-auto", "");
|
||||||
await expect(page.getByTestId("computer-preview").locator("iframe")).toHaveAttribute(
|
await expect(page.getByTestId("oo-computer-browser-viewport").locator("iframe")).toHaveAttribute(
|
||||||
"src",
|
"src",
|
||||||
SCREEN_URL,
|
SCREEN_URL,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -26,16 +26,28 @@ test("the bot's cursor glides to where it clicks on its live screen", async ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
const preview = page.getByTestId("computer-preview");
|
const preview = page.getByTestId("oo-computer-browser-viewport");
|
||||||
await expect(preview.locator("iframe")).toHaveAttribute("src", SCREEN_URL);
|
await expect(preview.locator("iframe")).toHaveAttribute("src", SCREEN_URL);
|
||||||
const cursor = preview.getByTestId("agent-cursor");
|
const cursor = preview.getByTestId("agent-cursor");
|
||||||
await expect(cursor).toHaveCSS("opacity", "0");
|
await expect(cursor).toHaveCSS("opacity", "0");
|
||||||
|
// The click and typing last about a second, so record every action rather than racing a poll.
|
||||||
|
await cursor.evaluate((node) => {
|
||||||
|
const seen: string[] = [];
|
||||||
|
(window as unknown as { cursorActions: string[] }).cursorActions = seen;
|
||||||
|
new MutationObserver(() => seen.push(node.getAttribute("data-action") ?? "")).observe(node, {
|
||||||
|
attributeFilter: ["data-action"],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// The scripted runtime clicks the screen center (640, 400) and types.
|
// The scripted runtime clicks the screen center (640, 400) and types.
|
||||||
await rpc(page, "threads/send", { botId, text: "use your screen and type cursor-demo" });
|
await rpc(page, "threads/send", { botId, text: "use your screen and type cursor-demo" });
|
||||||
|
|
||||||
await expect(cursor).toHaveCSS("opacity", "1");
|
await expect(cursor).toHaveCSS("opacity", "1");
|
||||||
await expect(cursor).toHaveAttribute("data-action", /click|type/);
|
await expect
|
||||||
|
.poll(() =>
|
||||||
|
page.evaluate(() => (window as unknown as { cursorActions: string[] }).cursorActions),
|
||||||
|
)
|
||||||
|
.toEqual(expect.arrayContaining(["click", "type"]));
|
||||||
const layer = (await preview.getByTestId("agent-cursor-layer").boundingBox())!;
|
const layer = (await preview.getByTestId("agent-cursor-layer").boundingBox())!;
|
||||||
await expect
|
await expect
|
||||||
.poll(async () => {
|
.poll(async () => {
|
||||||
|
|||||||
@ -12,14 +12,12 @@ test("agent-attached files appear as downloadable cards", async ({ page }, testI
|
|||||||
await composer.fill("write notes/result.txt and attach it to the thread");
|
await composer.fill("write notes/result.txt and attach it to the thread");
|
||||||
await page.keyboard.press("Enter");
|
await page.keyboard.press("Enter");
|
||||||
|
|
||||||
// Scope to ArtifactFileCard text (name + mime); sidebar bot status can also
|
const fileCard = page.getByRole("button", { name: "Preview result.txt" });
|
||||||
// include the prompt path notes/result.txt once status syncs immediately.
|
|
||||||
const fileCard = page.getByRole("button", { name: /result\.txt text\/plain/ });
|
|
||||||
await expect(fileCard).toBeVisible({ timeout: 30_000 });
|
await expect(fileCard).toBeVisible({ timeout: 30_000 });
|
||||||
await captureScreenshot(page, testInfo, "current-file-card");
|
await captureScreenshot(page, testInfo, "current-file-card");
|
||||||
|
|
||||||
const downloadPromise = page.waitForEvent("download");
|
const downloadPromise = page.waitForEvent("download");
|
||||||
await fileCard.click();
|
await page.getByRole("button", { name: "Download result.txt" }).click();
|
||||||
const download = await downloadPromise;
|
const download = await downloadPromise;
|
||||||
expect(download.suggestedFilename()).toBe("result.txt");
|
expect(download.suggestedFilename()).toBe("result.txt");
|
||||||
});
|
});
|
||||||
|
|||||||
@ -114,12 +114,12 @@ test("bot creation, editing, and deletion persist", async ({ page }, testInfo) =
|
|||||||
await captureScreenshot(page, testInfo, "27a-bot-settings-model");
|
await captureScreenshot(page, testInfo, "27a-bot-settings-model");
|
||||||
await page.getByRole("button", { name: "Show computer" }).click();
|
await page.getByRole("button", { name: "Show computer" }).click();
|
||||||
const sidePanel = page.getByTestId("side-panel");
|
const sidePanel = page.getByTestId("side-panel");
|
||||||
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
await expect(sidePanel).toHaveAttribute("data-panel", /^(computer|browser)$/);
|
||||||
await expect(page.getByRole("button", { name: "Show settings" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Show settings" })).toBeVisible();
|
||||||
// Overlay may flash during boot or never appear (already ready/asleep/stopped). Assert panel
|
// Overlay may flash during boot or never appear (already ready/asleep/stopped). Assert panel
|
||||||
// chrome, then wait until any overlay has cleared — avoid Locator.or() strict-mode multi-hits.
|
// chrome, then wait until any overlay has cleared — avoid Locator.or() strict-mode multi-hits.
|
||||||
const bootOverlay = page.getByText(/Booting up .* computer/);
|
const bootOverlay = page.getByText(/Booting up .* computer/);
|
||||||
await expect(sidePanel.getByTestId("computer-preview")).toBeVisible();
|
await expect(sidePanel.getByTestId("oo-computer-browser-viewport")).toBeVisible();
|
||||||
await expect(bootOverlay).toBeHidden();
|
await expect(bootOverlay).toBeHidden();
|
||||||
await expect(sidePanel.getByText("Teach a task")).toHaveCount(0);
|
await expect(sidePanel.getByText("Teach a task")).toHaveCount(0);
|
||||||
await expect(sidePanel.getByTestId("teach-start-button")).toHaveCount(0);
|
await expect(sidePanel.getByTestId("teach-start-button")).toHaveCount(0);
|
||||||
|
|||||||
@ -39,9 +39,9 @@ test("screen connection failures stay visible and can be retried", async ({ page
|
|||||||
);
|
);
|
||||||
|
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
const preview = page.getByTestId("computer-preview");
|
const preview = page.getByTestId("oo-computer-browser-viewport");
|
||||||
await expect(preview.getByRole("alert")).toContainText("temporarily busy");
|
await expect(preview.getByRole("alert")).toContainText("temporarily busy");
|
||||||
await expect(preview.getByTestId("computer-preview-open")).toHaveCount(0);
|
await expect(page.getByTestId("computer-open")).toHaveCount(0);
|
||||||
await captureScreenshot(page, testInfo, "computer-screen-connection-error");
|
await captureScreenshot(page, testInfo, "computer-screen-connection-error");
|
||||||
|
|
||||||
failScreen = false;
|
failScreen = false;
|
||||||
@ -50,14 +50,14 @@ test("screen connection failures stay visible and can be retried", async ({ page
|
|||||||
await expect(preview.getByRole("alert")).toHaveCount(0);
|
await expect(preview.getByRole("alert")).toHaveCount(0);
|
||||||
|
|
||||||
failScreen = true;
|
failScreen = true;
|
||||||
await preview.hover();
|
await page.getByTestId("computer-open").click();
|
||||||
await preview.getByTestId("computer-preview-open").click();
|
|
||||||
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
||||||
await expect(page.getByRole("alert")).toContainText("temporarily busy");
|
const fullScreen = page.getByTestId("computer-viewport");
|
||||||
|
await expect(fullScreen.getByRole("alert")).toContainText("temporarily busy");
|
||||||
await captureScreenshot(page, testInfo, "computer-full-screen-connection-error");
|
await captureScreenshot(page, testInfo, "computer-full-screen-connection-error");
|
||||||
|
|
||||||
failScreen = false;
|
failScreen = false;
|
||||||
await page.getByRole("button", { name: "Retry screen" }).click();
|
await fullScreen.getByRole("button", { name: "Retry screen" }).click();
|
||||||
await expect(page.locator('iframe[title="Bot screen"]')).toHaveAttribute("src", screenUrl);
|
await expect(page.locator('iframe[title="Bot screen"]')).toHaveAttribute("src", screenUrl);
|
||||||
await expect(page.getByRole("alert")).toHaveCount(0);
|
await expect(page.getByRole("alert")).toHaveCount(0);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -59,9 +59,8 @@ test("computer maintenance shows durable background progress and failure recover
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await expect(page.getByTestId("computer-preview")).toBeVisible();
|
await expect(page.getByTestId("oo-computer-browser-viewport")).toBeVisible();
|
||||||
await page.getByTestId("computer-preview").hover();
|
await page.getByTestId("computer-open").click();
|
||||||
await page.getByTestId("computer-preview-open").click();
|
|
||||||
await page.getByTestId("computer-more-button").click();
|
await page.getByTestId("computer-more-button").click();
|
||||||
await page.getByRole("menuitem", { name: "Update computer", exact: true }).click();
|
await page.getByRole("menuitem", { name: "Update computer", exact: true }).click();
|
||||||
const dialog = page.getByTestId("computer-update-dialog");
|
const dialog = page.getByTestId("computer-update-dialog");
|
||||||
|
|||||||
@ -94,10 +94,11 @@ test("main conversation opens its lead's computer", async ({ page }, testInfo) =
|
|||||||
await signup(page, `main-computer-${stamp}@rakazo.test`, "password12", "Screen");
|
await signup(page, `main-computer-${stamp}@rakazo.test`, "password12", "Screen");
|
||||||
await completeOnboarding(page, undefined, { mainConversation: true });
|
await completeOnboarding(page, undefined, { mainConversation: true });
|
||||||
await expect(page).toHaveURL(/\/app\/g\//);
|
await expect(page).toHaveURL(/\/app\/g\//);
|
||||||
|
// The lead's computer opens beside the main conversation without leaving it.
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await expect(page).not.toHaveURL(/\/app\/g\//);
|
await expect(page).toHaveURL(/\/app\/g\//);
|
||||||
const sidePanel = page.getByTestId("side-panel");
|
const sidePanel = page.getByTestId("side-panel");
|
||||||
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
||||||
await expect(sidePanel.getByTestId("computer-preview")).toBeVisible();
|
await expect(sidePanel.getByTestId("oo-computer-browser-viewport")).toBeVisible();
|
||||||
await captureScreenshot(page, testInfo, "main-conversation-computer");
|
await captureScreenshot(page, testInfo, "main-conversation-computer");
|
||||||
});
|
});
|
||||||
|
|||||||
@ -80,8 +80,7 @@ test("takeover, routine, plugins, and export are reachable", async ({ page }, te
|
|||||||
expect(mainBox).not.toBeNull();
|
expect(mainBox).not.toBeNull();
|
||||||
expect(panelBox).not.toBeNull();
|
expect(panelBox).not.toBeNull();
|
||||||
expect((mainBox?.x ?? 0) + (mainBox?.width ?? 0)).toBeLessThanOrEqual(panelBox?.x ?? 0);
|
expect((mainBox?.x ?? 0) + (mainBox?.width ?? 0)).toBeLessThanOrEqual(panelBox?.x ?? 0);
|
||||||
await sidePanel.getByTestId("computer-preview").hover();
|
await sidePanel.getByTestId("computer-open").click();
|
||||||
await sidePanel.getByTestId("computer-preview-open").click();
|
|
||||||
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
||||||
await expect(page.getByRole("button", { name: "Skip", exact: true }).last()).toBeVisible();
|
await expect(page.getByRole("button", { name: "Skip", exact: true }).last()).toBeVisible();
|
||||||
await expect(page.getByRole("button", { name: "I’m done", exact: true }).last()).toBeVisible();
|
await expect(page.getByRole("button", { name: "I’m done", exact: true }).last()).toBeVisible();
|
||||||
@ -107,8 +106,7 @@ test("takeover, routine, plugins, and export are reachable", async ({ page }, te
|
|||||||
}
|
}
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
||||||
await sidePanel.getByTestId("computer-preview").hover();
|
const openComputer = sidePanel.getByTestId("computer-open");
|
||||||
const openComputer = sidePanel.getByTestId("computer-preview-open");
|
|
||||||
await expect(openComputer).toBeVisible({ timeout: 30_000 });
|
await expect(openComputer).toBeVisible({ timeout: 30_000 });
|
||||||
await openComputer.click();
|
await openComputer.click();
|
||||||
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
||||||
@ -140,6 +138,7 @@ test("takeover, routine, plugins, and export are reachable", async ({ page }, te
|
|||||||
);
|
);
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await routinesListed;
|
await routinesListed;
|
||||||
|
await sidePanel.locator('[data-tab="overview"]').click();
|
||||||
await expect(
|
await expect(
|
||||||
sidePanel.getByTestId("routine-list-row").getByText("Monday briefing"),
|
sidePanel.getByTestId("routine-list-row").getByText("Monday briefing"),
|
||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
@ -316,7 +315,7 @@ test("takeover, routine, plugins, and export are reachable", async ({ page }, te
|
|||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
}
|
}
|
||||||
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
||||||
const gear = page.getByRole("button", { name: "Show settings" });
|
const gear = page.getByRole("button", { name: "Show settings" }).first();
|
||||||
await gear.click();
|
await gear.click();
|
||||||
const downloadPromise = page.waitForEvent("download");
|
const downloadPromise = page.waitForEvent("download");
|
||||||
await page.getByRole("button", { name: "Export" }).click();
|
await page.getByRole("button", { name: "Export" }).click();
|
||||||
|
|||||||
@ -61,8 +61,12 @@ export async function createTestRoutine(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function openAgentComputerPanel(page: Page) {
|
/** Opens the side panel on the agent's overview, where its routines are listed. */
|
||||||
await page.getByTitle("Agent computer").click();
|
export async function openAgentOverview(page: Page, title = "Agent computer") {
|
||||||
|
const overview = page.getByTestId("side-panel").locator('[data-tab="overview"]');
|
||||||
|
// The header button toggles the panel, so only press it while the panel is closed.
|
||||||
|
if (!(await overview.isVisible())) await page.getByTitle(title).click();
|
||||||
|
await overview.click();
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function rpc<T>(page: Page, procedure: string, body: unknown): Promise<T> {
|
export async function rpc<T>(page: Page, procedure: string, body: unknown): Promise<T> {
|
||||||
|
|||||||
@ -1,7 +1,14 @@
|
|||||||
import type { Page } from "@playwright/test";
|
import type { Page } from "@playwright/test";
|
||||||
import { expect, test } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import type { CoachRhythm, CoachToday, Goal, Habit, Routine } from "@rakazo/contracts";
|
import type { CoachRhythm, CoachToday, Goal, Habit, Routine } from "@rakazo/contracts";
|
||||||
import { captureScreenshot, completeOnboarding, openMainBotThread, rpc, signup } from "./helpers";
|
import {
|
||||||
|
captureScreenshot,
|
||||||
|
completeOnboarding,
|
||||||
|
openAgentOverview,
|
||||||
|
openMainBotThread,
|
||||||
|
rpc,
|
||||||
|
signup,
|
||||||
|
} from "./helpers";
|
||||||
|
|
||||||
/** The nav button reads "Today" or "Today, N need you". */
|
/** The nav button reads "Today" or "Today, N need you". */
|
||||||
function openHeute(page: Page) {
|
function openHeute(page: Page) {
|
||||||
@ -142,7 +149,7 @@ test("Heute shows the coach's brief, habits and goals, checks habits off and set
|
|||||||
|
|
||||||
// The main bot's routine list names the check-ins by their key, in the UI language.
|
// The main bot's routine list names the check-ins by their key, in the UI language.
|
||||||
await openMainBotThread(page);
|
await openMainBotThread(page);
|
||||||
await page.getByTitle("Agent computer").click();
|
await openAgentOverview(page);
|
||||||
await expect(page.getByText("Morning brief", { exact: true })).toBeVisible();
|
await expect(page.getByText("Morning brief", { exact: true })).toBeVisible();
|
||||||
await expect(page.getByText("Weekly review", { exact: true })).toBeVisible();
|
await expect(page.getByText("Weekly review", { exact: true })).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|||||||
@ -15,7 +15,7 @@ test("the in-app browser previews a page and follows it back to the browser", as
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
await page.getByRole("button", { name: "Browser" }).click();
|
await page.getByTitle("Agent computer").click();
|
||||||
const browser = page.getByTestId("in-app-browser");
|
const browser = page.getByTestId("in-app-browser");
|
||||||
await browser.getByTestId("in-app-browser-mode-local").click();
|
await browser.getByTestId("in-app-browser-mode-local").click();
|
||||||
const address = browser.getByRole("textbox", { name: "Address" });
|
const address = browser.getByRole("textbox", { name: "Address" });
|
||||||
@ -42,7 +42,7 @@ test("the in-app browser previews a page and follows it back to the browser", as
|
|||||||
await page.getByTestId("side-panel").getByRole("button", { name: "Close panel" }).click();
|
await page.getByTestId("side-panel").getByRole("button", { name: "Close panel" }).click();
|
||||||
await expect(browser).toHaveCount(0);
|
await expect(browser).toHaveCount(0);
|
||||||
// The last address comes back when the browser reopens.
|
// The last address comes back when the browser reopens.
|
||||||
await page.getByRole("button", { name: "Browser" }).click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await page.getByTestId("in-app-browser-mode-local").click();
|
await page.getByTestId("in-app-browser-mode-local").click();
|
||||||
await expect(page.getByTestId("in-app-browser-frame")).toHaveAttribute(
|
await expect(page.getByTestId("in-app-browser-frame")).toHaveAttribute(
|
||||||
"src",
|
"src",
|
||||||
@ -113,7 +113,7 @@ test("on desktop the page is a native view glued to the panel", async ({ page })
|
|||||||
() => (window as unknown as { __browserCalls: Array<[string, unknown?]> }).__browserCalls,
|
() => (window as unknown as { __browserCalls: Array<[string, unknown?]> }).__browserCalls,
|
||||||
);
|
);
|
||||||
|
|
||||||
await page.getByRole("button", { name: "Browser" }).click();
|
await page.getByTitle("Agent computer").click();
|
||||||
const browser = page.getByTestId("in-app-browser");
|
const browser = page.getByTestId("in-app-browser");
|
||||||
await browser.getByTestId("in-app-browser-mode-local").click();
|
await browser.getByTestId("in-app-browser-mode-local").click();
|
||||||
await browser.getByRole("textbox", { name: "Address" }).fill("localhost:5173");
|
await browser.getByRole("textbox", { name: "Address" }).fill("localhost:5173");
|
||||||
|
|||||||
@ -73,7 +73,7 @@ test("an image in the main conversation opens and downloads from the artifact ro
|
|||||||
await expect(thumbnail).toHaveAttribute("src", /^\/api\/artifacts\/[^/?]+$/);
|
await expect(thumbnail).toHaveAttribute("src", /^\/api\/artifacts\/[^/?]+$/);
|
||||||
await thumbnail.click();
|
await thumbnail.click();
|
||||||
|
|
||||||
const dialog = page.getByRole("dialog", { name: "pixel.png" });
|
const dialog = page.getByRole("dialog", { name: "Pixel" });
|
||||||
const download = dialog.getByRole("link", { name: "Download pixel.png" });
|
const download = dialog.getByRole("link", { name: "Download pixel.png" });
|
||||||
await expect(download).toHaveAttribute("href", /\/api\/artifacts\/[^/?]+\?download=1$/);
|
await expect(download).toHaveAttribute("href", /\/api\/artifacts\/[^/?]+\?download=1$/);
|
||||||
const saved = page.waitForEvent("download");
|
const saved = page.waitForEvent("download");
|
||||||
|
|||||||
@ -92,7 +92,13 @@ test("message hover shows below-bubble actions; reply links to parent", async ({
|
|||||||
);
|
);
|
||||||
const botText = page.getByText(/i handled: hover-bot-/);
|
const botText = page.getByText(/i handled: hover-bot-/);
|
||||||
await expect(transcript.getByText(/i handled: hover-bot-/)).toBeVisible({ timeout: 20_000 });
|
await expect(transcript.getByText(/i handled: hover-bot-/)).toBeVisible({ timeout: 20_000 });
|
||||||
const botRow = transcript.locator(`[data-message-id]`).filter({ has: botText }).first();
|
// Pin the row by id: once the run settles, long replies fold their details away.
|
||||||
|
const botMessageId = await transcript
|
||||||
|
.locator(`[data-message-id]`)
|
||||||
|
.filter({ has: botText })
|
||||||
|
.first()
|
||||||
|
.getAttribute("data-message-id");
|
||||||
|
const botRow = transcript.locator(`[data-message-id="${botMessageId}"]`);
|
||||||
await expect(botRow).toBeVisible();
|
await expect(botRow).toBeVisible();
|
||||||
await expectRailAtRest(page, botRow);
|
await expectRailAtRest(page, botRow);
|
||||||
await captureScreenshot(page, testInfo, "message-actions-rest-desktop");
|
await captureScreenshot(page, testInfo, "message-actions-rest-desktop");
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import {
|
|||||||
completeOnboarding,
|
completeOnboarding,
|
||||||
createNamedBot,
|
createNamedBot,
|
||||||
createTestRoutine,
|
createTestRoutine,
|
||||||
openAgentComputerPanel,
|
openAgentOverview,
|
||||||
rpc,
|
rpc,
|
||||||
signup,
|
signup,
|
||||||
} from "./helpers";
|
} from "./helpers";
|
||||||
@ -33,7 +33,7 @@ test("routine active switch keeps its thumb inside the track", async ({ page },
|
|||||||
await completeOnboarding(page);
|
await completeOnboarding(page);
|
||||||
const botId = activeBotId(page);
|
const botId = activeBotId(page);
|
||||||
await createTestRoutine(page, botId, { name: "Toggle styling" });
|
await createTestRoutine(page, botId, { name: "Toggle styling" });
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
await page.getByRole("button", { name: /Toggle styling/ }).click();
|
await page.getByRole("button", { name: /Toggle styling/ }).click();
|
||||||
|
|
||||||
const toggle = page.getByRole("switch", { name: "Active" });
|
const toggle = page.getByRole("switch", { name: "Active" });
|
||||||
@ -89,7 +89,7 @@ test("routine editing updates in place, preserves timezone, and deletion persist
|
|||||||
expect(created.nextRunAt).not.toBeNull();
|
expect(created.nextRunAt).not.toBeNull();
|
||||||
expect(localSchedule(created.nextRunAt!, created.timezone)).toMatchObject({ hour: 9, minute: 0 });
|
expect(localSchedule(created.nextRunAt!, created.timezone)).toMatchObject({ hour: 9, minute: 0 });
|
||||||
await page.reload();
|
await page.reload();
|
||||||
await page.getByTitle("Agent computer").click();
|
await openAgentOverview(page);
|
||||||
|
|
||||||
await page.getByRole("button", { name: /Tokyo check-in/ }).click();
|
await page.getByRole("button", { name: /Tokyo check-in/ }).click();
|
||||||
await page.locator("label:has-text('Name') input").fill("Weekday check-in");
|
await page.locator("label:has-text('Name') input").fill("Weekday check-in");
|
||||||
@ -133,7 +133,7 @@ test("routine editing updates in place, preserves timezone, and deletion persist
|
|||||||
expect(await rpc<Routine[]>(page, "routines/list", { botId })).toEqual([]);
|
expect(await rpc<Routine[]>(page, "routines/list", { botId })).toEqual([]);
|
||||||
|
|
||||||
await page.reload();
|
await page.reload();
|
||||||
await page.getByTitle("Agent computer").click();
|
await openAgentOverview(page);
|
||||||
await expect(updatedButton).toHaveCount(0);
|
await expect(updatedButton).toHaveCount(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ test("a successful routine create is not reported as failed when refresh fails",
|
|||||||
name: "Persisted routine",
|
name: "Persisted routine",
|
||||||
prompt: "Run once each morning",
|
prompt: "Run once each morning",
|
||||||
});
|
});
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
await page.getByRole("button", { name: /Persisted routine/ }).click();
|
await page.getByRole("button", { name: /Persisted routine/ }).click();
|
||||||
await page
|
await page
|
||||||
.locator("label:has-text('Instruction') textarea")
|
.locator("label:has-text('Instruction') textarea")
|
||||||
@ -240,7 +240,7 @@ test("switching bots while a routine save is pending does not reopen stale state
|
|||||||
]);
|
]);
|
||||||
await page.reload();
|
await page.reload();
|
||||||
|
|
||||||
await page.getByTitle("Agent computer").click();
|
await openAgentOverview(page);
|
||||||
await page.getByRole("button", { name: /First routine/ }).click();
|
await page.getByRole("button", { name: /First routine/ }).click();
|
||||||
await page.locator("label:has-text('Name') input").fill("First routine updated");
|
await page.locator("label:has-text('Name') input").fill("First routine updated");
|
||||||
|
|
||||||
@ -280,7 +280,7 @@ test("switching bots while a routine save is pending does not reopen stale state
|
|||||||
await expect(page.getByTestId("side-panel")).toHaveAttribute("data-panel", "closed");
|
await expect(page.getByTestId("side-panel")).toHaveAttribute("data-panel", "closed");
|
||||||
await expect(page.getByRole("alert")).toHaveCount(0);
|
await expect(page.getByRole("alert")).toHaveCount(0);
|
||||||
|
|
||||||
await page.getByTitle("Agent computer").click();
|
await openAgentOverview(page);
|
||||||
await expect(page.getByRole("button", { name: /Second routine/ })).toHaveCount(1);
|
await expect(page.getByRole("button", { name: /Second routine/ })).toHaveCount(1);
|
||||||
await expect(page.getByRole("button", { name: /First routine/ })).toHaveCount(0);
|
await expect(page.getByRole("button", { name: /First routine/ })).toHaveCount(0);
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import {
|
|||||||
captureScreenshot,
|
captureScreenshot,
|
||||||
completeOnboarding,
|
completeOnboarding,
|
||||||
createTestRoutine,
|
createTestRoutine,
|
||||||
openAgentComputerPanel,
|
openAgentOverview,
|
||||||
rpc,
|
rpc,
|
||||||
signup,
|
signup,
|
||||||
} from "./helpers";
|
} from "./helpers";
|
||||||
@ -38,7 +38,7 @@ test("Slack message trigger uses the mounted messaging provider and persists", a
|
|||||||
githubEnabled: false,
|
githubEnabled: false,
|
||||||
messageProvider: "slack",
|
messageProvider: "slack",
|
||||||
});
|
});
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
const panel = page.getByTestId("side-panel");
|
const panel = page.getByTestId("side-panel");
|
||||||
await expect(panel.getByText("Slack message", { exact: true })).toBeVisible();
|
await expect(panel.getByText("Slack message", { exact: true })).toBeVisible();
|
||||||
const [routine] = await rpc<Routine[]>(page, "routines/list", { botId });
|
const [routine] = await rpc<Routine[]>(page, "routines/list", { botId });
|
||||||
@ -72,7 +72,7 @@ test("GitHub event trigger exposes signed delivery settings and persists", async
|
|||||||
githubEnabled: true,
|
githubEnabled: true,
|
||||||
messageProvider: null,
|
messageProvider: null,
|
||||||
});
|
});
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
await page.getByRole("button", { name: /Review repository events/ }).click();
|
await page.getByRole("button", { name: /Review repository events/ }).click();
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId("side-panel").getByText("Git event", { exact: true }),
|
page.getByTestId("side-panel").getByText("Git event", { exact: true }),
|
||||||
@ -111,7 +111,7 @@ test("Korean webhook routine keeps technical field labels in English", async ({
|
|||||||
crons: [],
|
crons: [],
|
||||||
webhookEnabled: true,
|
webhookEnabled: true,
|
||||||
});
|
});
|
||||||
await page.getByTitle("Agent 컴퓨터").click();
|
await openAgentOverview(page, "Agent 컴퓨터");
|
||||||
await page.getByRole("button", { name: /한국어 웹훅 확인/ }).click();
|
await page.getByRole("button", { name: /한국어 웹훅 확인/ }).click();
|
||||||
|
|
||||||
await expect(page.getByText("웹훅이 실행될 때", { exact: true })).toBeVisible();
|
await expect(page.getByText("웹훅이 실행될 때", { exact: true })).toBeVisible();
|
||||||
@ -127,7 +127,7 @@ test("routine test-run completes and survives reload", async ({ page }, testInfo
|
|||||||
await completeOnboarding(page);
|
await completeOnboarding(page);
|
||||||
const botId = activeBotId(page);
|
const botId = activeBotId(page);
|
||||||
|
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
await expect(page.getByRole("button", { name: "Test run" })).toHaveCount(0);
|
await expect(page.getByRole("button", { name: "Test run" })).toHaveCount(0);
|
||||||
await createTestRoutine(page, botId, {
|
await createTestRoutine(page, botId, {
|
||||||
name: "Daily verification",
|
name: "Daily verification",
|
||||||
@ -135,7 +135,7 @@ test("routine test-run completes and survives reload", async ({ page }, testInfo
|
|||||||
crons: ["0 9 * * 1-5"],
|
crons: ["0 9 * * 1-5"],
|
||||||
});
|
});
|
||||||
await page.reload();
|
await page.reload();
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
const routine = page.getByRole("button", { name: /Daily verification/ });
|
const routine = page.getByRole("button", { name: /Daily verification/ });
|
||||||
await expect(routine).toContainText("Weekdays at 9:00 AM");
|
await expect(routine).toContainText("Weekdays at 9:00 AM");
|
||||||
await captureScreenshot(page, testInfo, "33-routine-scheduled");
|
await captureScreenshot(page, testInfo, "33-routine-scheduled");
|
||||||
@ -148,7 +148,7 @@ test("routine test-run completes and survives reload", async ({ page }, testInfo
|
|||||||
|
|
||||||
await page.reload();
|
await page.reload();
|
||||||
await expect(page.getByText(/routine-run-now-ok/i).first()).toBeVisible();
|
await expect(page.getByText(/routine-run-now-ok/i).first()).toBeVisible();
|
||||||
await page.getByTitle("Agent computer").click();
|
await openAgentOverview(page);
|
||||||
await expect(page.getByRole("button", { name: /Daily verification/ })).toContainText(
|
await expect(page.getByRole("button", { name: /Daily verification/ })).toContainText(
|
||||||
"Weekdays at 9:00 AM",
|
"Weekdays at 9:00 AM",
|
||||||
);
|
);
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import {
|
|||||||
activeBotId,
|
activeBotId,
|
||||||
completeOnboarding,
|
completeOnboarding,
|
||||||
createTestRoutine,
|
createTestRoutine,
|
||||||
openAgentComputerPanel,
|
openAgentOverview,
|
||||||
rpc,
|
rpc,
|
||||||
signup,
|
signup,
|
||||||
} from "./helpers";
|
} from "./helpers";
|
||||||
@ -17,14 +17,14 @@ test("routines section is hidden until the Oo has one, then list toggle persists
|
|||||||
await completeOnboarding(page);
|
await completeOnboarding(page);
|
||||||
const botId = activeBotId(page);
|
const botId = activeBotId(page);
|
||||||
|
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
const panel = page.getByTestId("side-panel");
|
const panel = page.getByTestId("side-panel");
|
||||||
await expect(panel.getByText("Routines", { exact: true })).toHaveCount(0);
|
await expect(panel.getByText("Routines", { exact: true })).toHaveCount(0);
|
||||||
await expect(page.getByTestId("routine-create-button")).toHaveCount(0);
|
await expect(page.getByTestId("routine-create-button")).toHaveCount(0);
|
||||||
|
|
||||||
await createTestRoutine(page, botId, { name: "Morning check-in" });
|
await createTestRoutine(page, botId, { name: "Morning check-in" });
|
||||||
await page.reload();
|
await page.reload();
|
||||||
await openAgentComputerPanel(page);
|
await openAgentOverview(page);
|
||||||
await expect(panel.getByText("Routines", { exact: true })).toBeVisible();
|
await expect(panel.getByText("Routines", { exact: true })).toBeVisible();
|
||||||
await expect(page.getByRole("button", { name: /Morning check-in/ })).toBeVisible();
|
await expect(page.getByRole("button", { name: /Morning check-in/ })).toBeVisible();
|
||||||
|
|
||||||
|
|||||||
@ -16,18 +16,16 @@ test("teach a task records interaction and saves a draft", async ({ page }, test
|
|||||||
await expect(sidePanel.getByRole("button", { name: "Update computer" })).toHaveCount(0);
|
await expect(sidePanel.getByRole("button", { name: "Update computer" })).toHaveCount(0);
|
||||||
await expect(sidePanel.getByRole("button", { name: "Take control" })).toHaveCount(0);
|
await expect(sidePanel.getByRole("button", { name: "Take control" })).toHaveCount(0);
|
||||||
await expect(sidePanel.getByTestId("computer-more-button")).toHaveCount(0);
|
await expect(sidePanel.getByTestId("computer-more-button")).toHaveCount(0);
|
||||||
await expect(sidePanel.getByTestId("computer-preview")).toBeVisible();
|
await expect(sidePanel.getByTestId("oo-computer-browser-viewport")).toBeVisible();
|
||||||
// Showing the panel never boots the computer; its Open action is visible without hover.
|
// Showing the panel never boots the computer; its Open action is visible without hover.
|
||||||
const openButton = sidePanel.getByTestId("computer-preview-open");
|
const openButton = sidePanel.getByTestId("computer-open");
|
||||||
await expect(openButton).toBeVisible();
|
await expect(openButton).toBeVisible();
|
||||||
const botId = activeBotId(page);
|
const botId = activeBotId(page);
|
||||||
expect((await rpc<{ state: string }>(page, "computer/status", { botId })).state).toBe("stopped");
|
expect((await rpc<{ state: string }>(page, "computer/status", { botId })).state).toBe("stopped");
|
||||||
await captureScreenshot(page, testInfo, "teach-sidepanel-simple");
|
await captureScreenshot(page, testInfo, "teach-sidepanel-simple");
|
||||||
|
|
||||||
const preview = sidePanel.getByTestId("computer-preview");
|
const preview = sidePanel.getByTestId("oo-computer-browser-viewport");
|
||||||
await preview.hover();
|
|
||||||
await expect(openButton).toBeVisible();
|
await expect(openButton).toBeVisible();
|
||||||
await expect(openButton.getByText("Open", { exact: true })).toBeVisible();
|
|
||||||
await captureScreenshot(page, testInfo, "teach-sidepanel-open-hover");
|
await captureScreenshot(page, testInfo, "teach-sidepanel-open-hover");
|
||||||
|
|
||||||
await openButton.click();
|
await openButton.click();
|
||||||
|
|||||||
@ -10,7 +10,7 @@ test("blocks the composer while a skill is being taught", async ({ page }) => {
|
|||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
const sidePanel = page.getByTestId("side-panel");
|
const sidePanel = page.getByTestId("side-panel");
|
||||||
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
await expect(sidePanel).toHaveAttribute("data-panel", "computer");
|
||||||
const openButton = sidePanel.getByTestId("computer-preview-open");
|
const openButton = sidePanel.getByTestId("computer-open");
|
||||||
await expect(openButton).toBeVisible();
|
await expect(openButton).toBeVisible();
|
||||||
await openButton.click();
|
await openButton.click();
|
||||||
const chrome = page.getByTestId("computer-chrome");
|
const chrome = page.getByTestId("computer-chrome");
|
||||||
|
|||||||
@ -51,7 +51,7 @@ test("Team Computer gives bots a home folder plus shared space while Private sta
|
|||||||
|
|
||||||
const privateId = await createBot(page, "Private Writer", "dedicated");
|
const privateId = await createBot(page, "Private Writer", "dedicated");
|
||||||
await openComputerPanel(page);
|
await openComputerPanel(page);
|
||||||
await expect(page.getByText(/Private Writer['’]s screen/).last()).toBeVisible();
|
await expect(page.getByText(/Private Writer['’]s browser/).last()).toBeVisible();
|
||||||
await captureScreenshot(page, testInfo, "43-private-computer");
|
await captureScreenshot(page, testInfo, "43-private-computer");
|
||||||
await expect(readFileResponse(page, privateId, "notes/result.txt")).resolves.toMatchObject({
|
await expect(readFileResponse(page, privateId, "notes/result.txt")).resolves.toMatchObject({
|
||||||
ok: false,
|
ok: false,
|
||||||
@ -94,8 +94,7 @@ test("user control leaves another Team bot's screen available", async ({ page },
|
|||||||
// The sidebar entry for the main bot opens the main conversation; its computer is in the 1:1.
|
// The sidebar entry for the main bot opens the main conversation; its computer is in the 1:1.
|
||||||
await openMainBotThread(page);
|
await openMainBotThread(page);
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await page.getByTestId("computer-preview").hover();
|
await page.getByTestId("computer-open").click();
|
||||||
await page.getByTestId("computer-preview-open").click();
|
|
||||||
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
||||||
await page.getByRole("button", { name: "Close computer" }).click();
|
await page.getByRole("button", { name: "Close computer" }).click();
|
||||||
await expect(page.getByRole("button", { name: "Close computer" })).toHaveCount(0);
|
await expect(page.getByRole("button", { name: "Close computer" })).toHaveCount(0);
|
||||||
@ -132,8 +131,7 @@ test("a failed control release keeps the computer open for retry", async ({ page
|
|||||||
await signup(page, `team-release-${Date.now()}@rakazo.test`, "password12", "Team Release");
|
await signup(page, `team-release-${Date.now()}@rakazo.test`, "password12", "Team Release");
|
||||||
await completeOnboarding(page);
|
await completeOnboarding(page);
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await page.getByTestId("computer-preview").hover();
|
await page.getByTestId("computer-open").click();
|
||||||
await page.getByTestId("computer-preview-open").click();
|
|
||||||
const chrome = page.getByTestId("computer-chrome");
|
const chrome = page.getByTestId("computer-chrome");
|
||||||
const release = chrome.getByRole("button", { name: "Release", exact: true });
|
const release = chrome.getByRole("button", { name: "Release", exact: true });
|
||||||
await expect(release).toBeVisible();
|
await expect(release).toBeVisible();
|
||||||
@ -192,10 +190,8 @@ test("an active Team bot must be stopped before user takeover", async ({ page },
|
|||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
const sidePanel = page.getByTestId("side-panel");
|
const sidePanel = page.getByTestId("side-panel");
|
||||||
await expect(sidePanel.getByRole("button", { name: /Take control/i })).toHaveCount(0);
|
await expect(sidePanel.getByRole("button", { name: /Take control/i })).toHaveCount(0);
|
||||||
await page.getByTestId("computer-preview").hover();
|
const openBusy = sidePanel.getByTestId("computer-open");
|
||||||
const openBusy = sidePanel.getByTestId("computer-preview-open");
|
|
||||||
await expect(openBusy).toBeVisible();
|
await expect(openBusy).toBeVisible();
|
||||||
await expect(openBusy.getByText("Open", { exact: true })).toBeVisible();
|
|
||||||
await openBusy.click();
|
await openBusy.click();
|
||||||
const chrome = page.getByTestId("computer-chrome");
|
const chrome = page.getByTestId("computer-chrome");
|
||||||
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
||||||
@ -221,8 +217,7 @@ test("an active Team bot must be stopped before user takeover", async ({ page },
|
|||||||
.toBeNull();
|
.toBeNull();
|
||||||
|
|
||||||
// After stop, Open via hover is the takeover path (no Take control button).
|
// After stop, Open via hover is the takeover path (no Take control button).
|
||||||
await page.getByTestId("computer-preview").hover();
|
await page.getByTestId("computer-open").click();
|
||||||
await page.getByTestId("computer-preview-open").click();
|
|
||||||
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
await expect(page.getByRole("button", { name: "Close computer" })).toBeVisible();
|
||||||
await expect(chrome.getByText("You have control", { exact: true })).toBeVisible();
|
await expect(chrome.getByText("You have control", { exact: true })).toBeVisible();
|
||||||
await expect(chrome.getByRole("button", { name: /Take control/i })).toHaveCount(0);
|
await expect(chrome.getByRole("button", { name: /Take control/i })).toHaveCount(0);
|
||||||
@ -287,8 +282,8 @@ async function expectComposerReady(page: Page) {
|
|||||||
|
|
||||||
async function openComputerPanel(page: Page) {
|
async function openComputerPanel(page: Page) {
|
||||||
await page.getByTitle("Agent computer").click();
|
await page.getByTitle("Agent computer").click();
|
||||||
await expect(page.getByTestId("computer-preview")).toBeVisible();
|
await expect(page.getByTestId("oo-computer-browser-viewport")).toBeVisible();
|
||||||
await expect(page.getByTestId("computer-preview-open")).toHaveCount(1);
|
await expect(page.getByTestId("computer-open")).toHaveCount(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sendAndWait(page: Page, botId: string, text: string) {
|
async function sendAndWait(page: Page, botId: string, text: string) {
|
||||||
|
|||||||
@ -7,7 +7,10 @@ async function turnOnSpeaking(page: Page) {
|
|||||||
await expect(voice).toBeVisible();
|
await expect(voice).toBeVisible();
|
||||||
await expect(voice.getByRole("button", { name: "Other voice providers" })).toHaveCount(0);
|
await expect(voice.getByRole("button", { name: "Other voice providers" })).toHaveCount(0);
|
||||||
await expect(voice.getByLabel("API key", { exact: true })).toHaveCount(0);
|
await expect(voice.getByLabel("API key", { exact: true })).toHaveCount(0);
|
||||||
await voice.getByRole("switch", { name: "Speaking on or off" }).click();
|
// The app turns the local voice on by itself the first time it starts.
|
||||||
|
const speaking = voice.getByRole("switch", { name: "Speaking on or off" });
|
||||||
|
if ((await speaking.getAttribute("aria-checked")) !== "true") await speaking.click();
|
||||||
|
await expect(speaking).toHaveAttribute("aria-checked", "true");
|
||||||
await expect(voice.getByTestId("voice-carousel")).toBeVisible();
|
await expect(voice.getByTestId("voice-carousel")).toBeVisible();
|
||||||
return voice;
|
return voice;
|
||||||
}
|
}
|
||||||
@ -25,11 +28,6 @@ test("voice settings pick a voice from the carousel, speak a reply, and open a c
|
|||||||
).toHaveCount(1);
|
).toHaveCount(1);
|
||||||
await captureScreenshot(page, testInfo, "voice-composer");
|
await captureScreenshot(page, testInfo, "voice-composer");
|
||||||
|
|
||||||
const preparedOff = await rpc<{ ready: boolean }>(page, "voice/prepare", {
|
|
||||||
text: "Hello there.",
|
|
||||||
});
|
|
||||||
expect(preparedOff.ready).toBe(false);
|
|
||||||
|
|
||||||
const voice = await turnOnSpeaking(page);
|
const voice = await turnOnSpeaking(page);
|
||||||
const cards = voice.getByTestId("voice-card");
|
const cards = voice.getByTestId("voice-card");
|
||||||
// English UI lists only the English voices of the local server.
|
// English UI lists only the English voices of the local server.
|
||||||
|
|||||||
@ -47,12 +47,12 @@ it("renders primary approval button text with text-primary-foreground for contra
|
|||||||
kind: "ask",
|
kind: "ask",
|
||||||
text: "**Review before shell**\n\nThis run would push commits to a remote.",
|
text: "**Review before shell**\n\nThis run would push commits to a remote.",
|
||||||
detail: "git push",
|
detail: "git push",
|
||||||
status: "open",
|
status: "pending",
|
||||||
approvalEffectId: "effect-1",
|
approvalEffectId: "effect-1",
|
||||||
actions: [
|
actions: [
|
||||||
{ id: "allow", label: "Allow once", style: "primary" },
|
{ id: "allow", label: "Allow once" },
|
||||||
{ id: "always", label: "Always allow this tool", style: "secondary" },
|
{ id: "always", label: "Always allow this tool" },
|
||||||
{ id: "deny", label: "Deny", style: "danger" },
|
{ id: "deny", label: "Deny" },
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ it("uses text-foreground for non-approval action buttons", async () => {
|
|||||||
const block: AskBlock = {
|
const block: AskBlock = {
|
||||||
kind: "ask",
|
kind: "ask",
|
||||||
text: "Which branch should we deploy?",
|
text: "Which branch should we deploy?",
|
||||||
status: "open",
|
status: "pending",
|
||||||
actions: [
|
actions: [
|
||||||
{ id: "main", label: "main" },
|
{ id: "main", label: "main" },
|
||||||
{ id: "staging", label: "staging" },
|
{ id: "staging", label: "staging" },
|
||||||
|
|||||||
@ -17,8 +17,8 @@ export function InAppBrowser({
|
|||||||
computerScreenError,
|
computerScreenError,
|
||||||
sandboxProvider,
|
sandboxProvider,
|
||||||
booting,
|
booting,
|
||||||
onBoot,
|
|
||||||
onRefreshScreen,
|
onRefreshScreen,
|
||||||
|
onOpenComputer,
|
||||||
hideCloseButton = false,
|
hideCloseButton = false,
|
||||||
}: {
|
}: {
|
||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
@ -28,8 +28,8 @@ export function InAppBrowser({
|
|||||||
computerScreenError: React.ReactNode;
|
computerScreenError: React.ReactNode;
|
||||||
sandboxProvider: string | undefined;
|
sandboxProvider: string | undefined;
|
||||||
booting: boolean;
|
booting: boolean;
|
||||||
onBoot: () => Promise<void>;
|
|
||||||
onRefreshScreen: () => Promise<unknown>;
|
onRefreshScreen: () => Promise<unknown>;
|
||||||
|
onOpenComputer?: () => void;
|
||||||
hideCloseButton?: boolean;
|
hideCloseButton?: boolean;
|
||||||
}) {
|
}) {
|
||||||
const { t } = useLingui();
|
const { t } = useLingui();
|
||||||
@ -91,8 +91,8 @@ export function InAppBrowser({
|
|||||||
computerScreenError={computerScreenError}
|
computerScreenError={computerScreenError}
|
||||||
sandboxProvider={sandboxProvider}
|
sandboxProvider={sandboxProvider}
|
||||||
booting={booting}
|
booting={booting}
|
||||||
onBoot={onBoot}
|
|
||||||
onRefreshScreen={onRefreshScreen}
|
onRefreshScreen={onRefreshScreen}
|
||||||
|
onOpenComputer={onOpenComputer}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<div className="grid flex-1 place-items-center px-6 text-center text-ui-body-sm text-muted-foreground">
|
<div className="grid flex-1 place-items-center px-6 text-center text-ui-body-sm text-muted-foreground">
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { Trans, useLingui } from "@lingui/react/macro";
|
import { Trans, useLingui } from "@lingui/react/macro";
|
||||||
import type { Bot, ComputerStatus } from "@rakazo/contracts";
|
import type { Bot, ComputerStatus } from "@rakazo/contracts";
|
||||||
import { Button, cn, Input } from "@rakazo/ui-web";
|
import { Button, cn, Input } from "@rakazo/ui-web";
|
||||||
import { ArrowLeft, ArrowRight, ExternalLink, Loader2, RotateCw } from "lucide-react";
|
import { ArrowLeft, ArrowRight, ExternalLink, Loader2, Maximize2, RotateCw } from "lucide-react";
|
||||||
import { type FormEvent, useCallback, useEffect, useRef, useState } from "react";
|
import { type FormEvent, useCallback, useEffect, useRef, useState } from "react";
|
||||||
import { agentPointerFeed } from "../../lib/agent-pointer";
|
import { agentPointerFeed } from "../../lib/agent-pointer";
|
||||||
import { normalizeBrowserUrl } from "../../lib/browser-url";
|
import { normalizeBrowserUrl } from "../../lib/browser-url";
|
||||||
@ -34,8 +34,8 @@ export function OoComputerBrowser({
|
|||||||
computerScreenError,
|
computerScreenError,
|
||||||
sandboxProvider,
|
sandboxProvider,
|
||||||
booting,
|
booting,
|
||||||
onBoot,
|
|
||||||
onRefreshScreen,
|
onRefreshScreen,
|
||||||
|
onOpenComputer,
|
||||||
}: {
|
}: {
|
||||||
active: Bot;
|
active: Bot;
|
||||||
computer: ComputerStatus | null;
|
computer: ComputerStatus | null;
|
||||||
@ -43,8 +43,9 @@ export function OoComputerBrowser({
|
|||||||
computerScreenError: React.ReactNode;
|
computerScreenError: React.ReactNode;
|
||||||
sandboxProvider: string | undefined;
|
sandboxProvider: string | undefined;
|
||||||
booting: boolean;
|
booting: boolean;
|
||||||
onBoot: () => Promise<void>;
|
|
||||||
onRefreshScreen: () => Promise<unknown>;
|
onRefreshScreen: () => Promise<unknown>;
|
||||||
|
/** Opens the full computer window, where the user can take control or teach. */
|
||||||
|
onOpenComputer?: () => void;
|
||||||
}) {
|
}) {
|
||||||
const { t } = useLingui();
|
const { t } = useLingui();
|
||||||
const [chrome, setChrome] = useState<ChromeState>(EMPTY_CHROME);
|
const [chrome, setChrome] = useState<ChromeState>(EMPTY_CHROME);
|
||||||
@ -87,11 +88,13 @@ export function OoComputerBrowser({
|
|||||||
};
|
};
|
||||||
}, [active.id, computer?.state, refreshChrome]);
|
}, [active.id, computer?.state, refreshChrome]);
|
||||||
|
|
||||||
|
const refreshScreen = useRef(onRefreshScreen);
|
||||||
|
refreshScreen.current = onRefreshScreen;
|
||||||
|
// Showing the browser never starts a stopped computer; it only reconnects a running screen.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (computer?.state === "running" && (embeddedScreenUrl || computer?.kind === "desktop"))
|
if (computer?.state !== "running" || embeddedScreenUrl || computer?.kind === "desktop") return;
|
||||||
return;
|
void refreshScreen.current().catch(() => undefined);
|
||||||
void onBoot().catch(() => undefined);
|
}, [active.id, computer?.kind, computer?.state, embeddedScreenUrl]);
|
||||||
}, [active.id, computer?.kind, computer?.state, embeddedScreenUrl, onBoot]);
|
|
||||||
|
|
||||||
const runNav = useCallback(
|
const runNav = useCallback(
|
||||||
async (task: () => Promise<ChromeState>) => {
|
async (task: () => Promise<ChromeState>) => {
|
||||||
@ -215,6 +218,18 @@ export function OoComputerBrowser({
|
|||||||
>
|
>
|
||||||
<ExternalLink strokeWidth={1.7} className="size-icon-md" />
|
<ExternalLink strokeWidth={1.7} className="size-icon-md" />
|
||||||
</Button>
|
</Button>
|
||||||
|
{onOpenComputer && !unavailable && !computerScreenError ? (
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
variant="ghost"
|
||||||
|
size="icon-sm"
|
||||||
|
aria-label={t`Open in full window`}
|
||||||
|
data-testid="computer-open"
|
||||||
|
onClick={onOpenComputer}
|
||||||
|
>
|
||||||
|
<Maximize2 strokeWidth={1.7} className="size-icon-md" />
|
||||||
|
</Button>
|
||||||
|
) : null}
|
||||||
<div
|
<div
|
||||||
aria-hidden
|
aria-hidden
|
||||||
className={cn(
|
className={cn(
|
||||||
|
|||||||
@ -47,7 +47,11 @@ class OoAudioBus {
|
|||||||
|
|
||||||
/** Unlocks Web Audio on the user's first click, key, or tap so async SSE events can play audio. */
|
/** Unlocks Web Audio on the user's first click, key, or tap so async SSE events can play audio. */
|
||||||
bindGestureUnlock(): void {
|
bindGestureUnlock(): void {
|
||||||
if (this.unlockBound || typeof window === "undefined" || typeof window.addEventListener !== "function") {
|
if (
|
||||||
|
this.unlockBound ||
|
||||||
|
typeof window === "undefined" ||
|
||||||
|
typeof window.addEventListener !== "function"
|
||||||
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.unlockBound = true;
|
this.unlockBound = true;
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr "Browser von {0}"
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr "{0}s Browser erscheint hier, wenn der Computer läuft."
|
msgstr "{0}s Browser erscheint hier, wenn der Computer läuft."
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr "{0}s Bildschirm"
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr "{actionCount, plural, one {# Sache braucht dich} other {# Sachen brauchen dich}}"
|
msgstr "{actionCount, plural, one {# Sache braucht dich} other {# Sachen brauchen dich}}"
|
||||||
@ -182,10 +177,38 @@ msgstr "{botName} prüft die Architektur…"
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr "{botName} räumt den Weg frei…"
|
msgstr "{botName} räumt den Weg frei…"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr "{botName} baut & tüftelt"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr "{botName} prüft ein Problem"
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr "{botName} ist dran…"
|
msgstr "{botName} ist dran…"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr "{botName} antwortet"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr "{botName} liest & recherchiert"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr "{botName} denkt nach"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr "{botName} wartet auf deine Antwort"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr "{botName} arbeitet"
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "Noch {remaining} · Bot beobachtet nur"
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr "{stepCount, plural, one {# Schritt} other {# Schritte}}"
|
msgstr "{stepCount, plural, one {# Schritt} other {# Schritte}}"
|
||||||
@ -540,6 +564,10 @@ msgstr "Weiteres hinzufügen"
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr "Als Projekte hinzufügen"
|
msgstr "Als Projekte hinzufügen"
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr "Füge evOo über „Teilen“ zum Home-Bildschirm hinzu, um Push-Mitteilungen auf iOS zu aktivieren."
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Executor hinzufügen"
|
msgstr "Executor hinzufügen"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "Bot"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Bot-Bildschirm"
|
msgstr "Bot-Bildschirm"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Bot-Bildschirmvorschau"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr "Zu verknüpfender Bot"
|
msgstr "Zu verknüpfender Bot"
|
||||||
@ -1065,7 +1089,6 @@ msgstr "Durchsuchen"
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr "MCP-Server durchsuchen"
|
msgstr "MCP-Server durchsuchen"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr "Browser"
|
msgstr "Browser"
|
||||||
@ -2390,7 +2413,9 @@ msgstr "Kein Stress — wir sind jetzt da."
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Fertig"
|
msgstr "Fertig"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr "Erledigt"
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr "Punkt"
|
msgstr "Punkt"
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "{0} herunterladen"
|
msgstr "{0} herunterladen"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "{0} herunterladen"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "{name} herunterladen"
|
msgstr "{name} herunterladen"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "Erweitern"
|
msgstr "Erweitern"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr "{0} ausklappen"
|
msgstr "{0} ausklappen"
|
||||||
@ -2669,14 +2698,14 @@ msgstr "Workspace-Dateien konnten nicht geladen werden"
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr "Datei konnte nicht geöffnet werden"
|
msgstr "Datei konnte nicht geöffnet werden"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
msgid "Failed to send message"
|
|
||||||
msgstr "Nachricht konnte nicht gesendet werden"
|
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to remove message"
|
msgid "Failed to remove message"
|
||||||
msgstr "Nachricht konnte nicht entfernt werden"
|
msgstr "Nachricht konnte nicht entfernt werden"
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to send message"
|
||||||
|
msgstr "Nachricht konnte nicht gesendet werden"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to stop"
|
msgid "Failed to stop"
|
||||||
msgstr "Stoppen fehlgeschlagen"
|
msgstr "Stoppen fehlgeschlagen"
|
||||||
@ -3004,6 +3033,10 @@ msgstr "Hallo, so klinge ich, wenn wir miteinander sprechen."
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr "Bots ausblenden"
|
msgstr "Bots ausblenden"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr "Details ausblenden"
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr "Passwort verbergen"
|
msgstr "Passwort verbergen"
|
||||||
@ -3094,6 +3127,7 @@ msgstr "Bot importieren"
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "OpenAPI-JSON importieren"
|
msgstr "OpenAPI-JSON importieren"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr "In Bearbeitung"
|
msgstr "In Bearbeitung"
|
||||||
@ -3180,6 +3214,10 @@ msgstr "Isoliert"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "Seine Unterhaltung, Dateien und Routinen werden dauerhaft gelöscht. Von ihm erstellte Bots bleiben in deiner Liste."
|
msgstr "Seine Unterhaltung, Dateien und Routinen werden dauerhaft gelöscht. Von ihm erstellte Bots bleiben in deiner Liste."
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr "dazugeschaltet"
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "Zur neuesten Nachricht springen"
|
msgstr "Zur neuesten Nachricht springen"
|
||||||
@ -3792,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr "Neues Projekt"
|
msgstr "Neues Projekt"
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Weiter"
|
msgstr "Weiter"
|
||||||
|
|
||||||
@ -4051,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr "Name des Oo"
|
msgstr "Name des Oo"
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Öffnen"
|
msgstr "Öffnen"
|
||||||
|
|
||||||
@ -4080,7 +4118,7 @@ msgstr "Unterhaltung öffnen"
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr "Im Browser öffnen"
|
msgstr "Im Browser öffnen"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "In vollständigem Fenster öffnen"
|
msgstr "In vollständigem Fenster öffnen"
|
||||||
|
|
||||||
@ -4553,6 +4591,10 @@ msgstr "{0} entfernen"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr "Ordner entfernen"
|
msgstr "Ordner entfernen"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr "Aus der Warteschlange entfernen"
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr "Git-Ereignis entfernen"
|
msgstr "Git-Ereignis entfernen"
|
||||||
@ -4784,10 +4826,6 @@ msgstr "Wird ausgeführt…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr "Läuft, wenn dieser Bot eine verifizierte Nachricht von diesem Anbieter erhält."
|
msgstr "Läuft, wenn dieser Bot eine verifizierte Nachricht von diesem Anbieter erhält."
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr "Sandbox"
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -4941,10 +4979,6 @@ msgstr "Senden"
|
|||||||
msgid "Send now"
|
msgid "Send now"
|
||||||
msgstr "Jetzt gleich senden"
|
msgstr "Jetzt gleich senden"
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
|
||||||
msgid "Remove from queue"
|
|
||||||
msgstr "Aus der Warteschlange entfernen"
|
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Send reset link"
|
msgid "Send reset link"
|
||||||
msgstr "Link zum Zurücksetzen senden"
|
msgstr "Link zum Zurücksetzen senden"
|
||||||
@ -5057,6 +5091,10 @@ msgstr "Bots anzeigen"
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr "Computer anzeigen"
|
msgstr "Computer anzeigen"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr "Details anzeigen"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr "Weniger anzeigen"
|
msgstr "Weniger anzeigen"
|
||||||
@ -6129,3 +6167,11 @@ msgstr "Dein Profil"
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr "Deine Spezialisten. Ein ruhiger Ort zum Reden."
|
msgstr "Deine Spezialisten. Ein ruhiger Ort zum Reden."
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr "Vergrößern"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr "Verkleinern"
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr "{0}'s browser"
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr "{0}'s browser appears here when the computer is running."
|
msgstr "{0}'s browser appears here when the computer is running."
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr "{0}'s screen"
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgstr "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
@ -182,10 +177,38 @@ msgstr "{botName} checks the architecture…"
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr "{botName} clears the path…"
|
msgstr "{botName} clears the path…"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr "{botName} is building"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr "{botName} is checking a problem"
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr "{botName} is on it…"
|
msgstr "{botName} is on it…"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr "{botName} is replying"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr "{botName} is researching"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr "{botName} is thinking"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr "{botName} is waiting for your answer"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr "{botName} is working"
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "{remaining} left · bot is watching, not acting"
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr "{stepCount, plural, one {# step} other {# steps}}"
|
msgstr "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
@ -540,6 +564,10 @@ msgstr "Add another"
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr "Add as projects"
|
msgstr "Add as projects"
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Add Executor"
|
msgstr "Add Executor"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "Bot"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Bot screen"
|
msgstr "Bot screen"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Bot screen preview"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr "Bot to link"
|
msgstr "Bot to link"
|
||||||
@ -1065,7 +1089,6 @@ msgstr "Browse"
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr "Browse MCP servers"
|
msgstr "Browse MCP servers"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr "Browser"
|
msgstr "Browser"
|
||||||
@ -2390,7 +2413,9 @@ msgstr "Don't stress — we're here now."
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Done"
|
msgstr "Done"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr "Done"
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr "Dot"
|
msgstr "Dot"
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "Download {0}"
|
msgstr "Download {0}"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "Download {0}"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "Download {name}"
|
msgstr "Download {name}"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "Expand"
|
msgstr "Expand"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr "Expand {0}"
|
msgstr "Expand {0}"
|
||||||
@ -2669,6 +2698,10 @@ msgstr "Failed to load workspace files"
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr "Failed to open file"
|
msgstr "Failed to open file"
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr "Failed to remove message"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "Failed to send message"
|
msgstr "Failed to send message"
|
||||||
@ -3000,6 +3033,10 @@ msgstr "Hi, this is how I'll sound when we talk."
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr "Hide bots"
|
msgstr "Hide bots"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr "Hide details"
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr "Hide password"
|
msgstr "Hide password"
|
||||||
@ -3090,6 +3127,7 @@ msgstr "Import bot"
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "Import OpenAPI JSON"
|
msgstr "Import OpenAPI JSON"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr "In Bearbeitung"
|
msgstr "In Bearbeitung"
|
||||||
@ -3176,6 +3214,10 @@ msgstr "Isolated"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgstr "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr "joined"
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "Jump to latest"
|
msgstr "Jump to latest"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr "New space"
|
msgstr "New space"
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Next"
|
msgstr "Next"
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr "Oo name"
|
msgstr "Oo name"
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Open"
|
msgstr "Open"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr "Open conversation"
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr "Open in browser"
|
msgstr "Open in browser"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "Open in full window"
|
msgstr "Open in full window"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "Remove {0}"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr "Remove folder"
|
msgstr "Remove folder"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr "Remove from queue"
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr "Remove Git event"
|
msgstr "Remove Git event"
|
||||||
@ -4780,10 +4826,6 @@ msgstr "Running…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr "Runs when this bot receives a verified message from this provider."
|
msgstr "Runs when this bot receives a verified message from this provider."
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr "Sandbox"
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr "Show bots"
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr "Show computer"
|
msgstr "Show computer"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr "Show details"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr "Show less"
|
msgstr "Show less"
|
||||||
@ -6121,3 +6167,11 @@ msgstr "Your profile"
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr "Your specialists. One calm place to talk."
|
msgstr "Your specialists. One calm place to talk."
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr "Zoom in"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr "Zoom out"
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr ""
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr "Pantalla de {0}"
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -182,10 +177,38 @@ msgstr ""
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "Quedan {remaining} · el bot observa, no actúa"
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -540,6 +564,10 @@ msgstr ""
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Agregar Executor"
|
msgstr "Agregar Executor"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "Bot"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Pantalla del bot"
|
msgstr "Pantalla del bot"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Vista previa de la pantalla del bot"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr "Bot a vincular"
|
msgstr "Bot a vincular"
|
||||||
@ -1065,7 +1089,6 @@ msgstr ""
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2390,7 +2413,9 @@ msgstr ""
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Listo"
|
msgstr "Listo"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr ""
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "Descargar {0}"
|
msgstr "Descargar {0}"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "Descargar {0}"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "Descargar {name}"
|
msgstr "Descargar {name}"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "Expandir"
|
msgstr "Expandir"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr "Expandir {0}"
|
msgstr "Expandir {0}"
|
||||||
@ -2669,6 +2698,10 @@ msgstr ""
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "No se pudo enviar el mensaje"
|
msgstr "No se pudo enviar el mensaje"
|
||||||
@ -3000,6 +3033,10 @@ msgstr ""
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr "Ocultar contraseña"
|
msgstr "Ocultar contraseña"
|
||||||
@ -3090,6 +3127,7 @@ msgstr ""
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "Importar JSON de OpenAPI"
|
msgstr "Importar JSON de OpenAPI"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3176,6 +3214,10 @@ msgstr "Aislado"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "Su conversación, archivos y rutinas se eliminarán de forma permanente. Los bots que creó permanecerán en tu lista."
|
msgstr "Su conversación, archivos y rutinas se eliminarán de forma permanente. Los bots que creó permanecerán en tu lista."
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "Ir al más reciente"
|
msgstr "Ir al más reciente"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr "Nuevo space"
|
msgstr "Nuevo space"
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr ""
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "Abrir en ventana completa"
|
msgstr "Abrir en ventana completa"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "Quitar {0}"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4780,10 +4826,6 @@ msgstr "Ejecutando…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr ""
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6121,3 +6167,11 @@ msgstr ""
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr ""
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -182,10 +177,38 @@ msgstr ""
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "{remaining} शेष · बॉट देख रहा है, कार
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -540,6 +564,10 @@ msgstr ""
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Executor जोड़ें"
|
msgstr "Executor जोड़ें"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "बॉट"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "बॉट स्क्रीन"
|
msgstr "बॉट स्क्रीन"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "बॉट स्क्रीन प्रीव्यू"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1065,7 +1089,6 @@ msgstr ""
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2390,7 +2413,9 @@ msgstr ""
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "पूर्ण"
|
msgstr "पूर्ण"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr ""
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "{0} डाउनलोड करें"
|
msgstr "{0} डाउनलोड करें"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "{0} डाउनलोड करें"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "{name} डाउनलोड करें"
|
msgstr "{name} डाउनलोड करें"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "विस्तृत करें"
|
msgstr "विस्तृत करें"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2669,6 +2698,10 @@ msgstr ""
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "संदेश भेजने में विफल"
|
msgstr "संदेश भेजने में विफल"
|
||||||
@ -3000,6 +3033,10 @@ msgstr ""
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3090,6 +3127,7 @@ msgstr ""
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "OpenAPI JSON इम्पोर्ट करें"
|
msgstr "OpenAPI JSON इम्पोर्ट करें"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3176,6 +3214,10 @@ msgstr "पृथक"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "इसकी बातचीत, फ़ाइलें और रूटीन स्थायी रूप से डिलीट कर दिए जाएंगे। इसके बनाए बॉट आपकी सूची में बने रहेंगे।"
|
msgstr "इसकी बातचीत, फ़ाइलें और रूटीन स्थायी रूप से डिलीट कर दिए जाएंगे। इसके बनाए बॉट आपकी सूची में बने रहेंगे।"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "नवीनतम संदेश पर जाएँ"
|
msgstr "नवीनतम संदेश पर जाएँ"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "खोलें"
|
msgstr "खोलें"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr ""
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "पूरी विंडो में खोलें"
|
msgstr "पूरी विंडो में खोलें"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "{0} हटाएं"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4780,10 +4826,6 @@ msgstr "चल रहा है…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr ""
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6121,3 +6167,11 @@ msgstr ""
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr ""
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr "{0}의 화면"
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -182,10 +177,38 @@ msgstr ""
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "남은 시간 {remaining} · Bot은 화면만 보고 직접 조작하지
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -540,6 +564,10 @@ msgstr ""
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Executor 추가"
|
msgstr "Executor 추가"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "봇"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Bot 화면"
|
msgstr "Bot 화면"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Bot 화면 미리보기"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr "연결할 Bot"
|
msgstr "연결할 Bot"
|
||||||
@ -1065,7 +1089,6 @@ msgstr ""
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2390,7 +2413,9 @@ msgstr ""
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "완료"
|
msgstr "완료"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr ""
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "{0} 다운로드"
|
msgstr "{0} 다운로드"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "{0} 다운로드"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "{name} 다운로드"
|
msgstr "{name} 다운로드"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "펼치기"
|
msgstr "펼치기"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr "{0} 펼치기"
|
msgstr "{0} 펼치기"
|
||||||
@ -2669,6 +2698,10 @@ msgstr ""
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "메시지를 보내지 못했습니다."
|
msgstr "메시지를 보내지 못했습니다."
|
||||||
@ -3000,6 +3033,10 @@ msgstr ""
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr "비밀번호 숨기기"
|
msgstr "비밀번호 숨기기"
|
||||||
@ -3090,6 +3127,7 @@ msgstr ""
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "OpenAPI JSON 가져오기"
|
msgstr "OpenAPI JSON 가져오기"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3176,6 +3214,10 @@ msgstr "이 Bot만 사용"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "대화, 파일, 자동 실행이 영구 삭제됩니다. 이 Bot이 만든 다른 Bot은 목록에 남습니다."
|
msgstr "대화, 파일, 자동 실행이 영구 삭제됩니다. 이 Bot이 만든 다른 Bot은 목록에 남습니다."
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "최신 메시지로 이동"
|
msgstr "최신 메시지로 이동"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr "새 스페이스"
|
msgstr "새 스페이스"
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "열기"
|
msgstr "열기"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr ""
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "전체 창으로 열기"
|
msgstr "전체 창으로 열기"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "{0} 삭제"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4780,10 +4826,6 @@ msgstr "실행 중…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr ""
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6121,3 +6167,11 @@ msgstr ""
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr ""
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -182,10 +177,38 @@ msgstr ""
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "{remaining} restantes · o bot está observando, não agindo"
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -540,6 +564,10 @@ msgstr ""
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Adicionar Executor"
|
msgstr "Adicionar Executor"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "Bot"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Tela do bot"
|
msgstr "Tela do bot"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Pré-visualização da tela"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1065,7 +1089,6 @@ msgstr ""
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2390,7 +2413,9 @@ msgstr ""
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Concluído"
|
msgstr "Concluído"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr ""
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "Baixar {0}"
|
msgstr "Baixar {0}"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "Baixar {0}"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "Baixar {name}"
|
msgstr "Baixar {name}"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "Expandir"
|
msgstr "Expandir"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2669,6 +2698,10 @@ msgstr ""
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "Ocorreu um erro ao enviar a mensagem"
|
msgstr "Ocorreu um erro ao enviar a mensagem"
|
||||||
@ -3000,6 +3033,10 @@ msgstr ""
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3090,6 +3127,7 @@ msgstr ""
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "Importar OpenAPI JSON"
|
msgstr "Importar OpenAPI JSON"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3176,6 +3214,10 @@ msgstr "Isolado"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "Suas conversas, arquivos e rotinas serão excluídos permanentemente. Os bots criados ficam na sua lista."
|
msgstr "Suas conversas, arquivos e rotinas serão excluídos permanentemente. Os bots criados ficam na sua lista."
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "Ir para a mensagem mais recente"
|
msgstr "Ir para a mensagem mais recente"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr ""
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "Abrir em janela cheia"
|
msgstr "Abrir em janela cheia"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "Remover {0}"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4780,10 +4826,6 @@ msgstr "Executando..."
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr ""
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6121,3 +6167,11 @@ msgstr ""
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr ""
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr "Экран {0}"
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -182,10 +177,38 @@ msgstr ""
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "Осталось: {remaining} · бот наблюдает, но не д
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} Б"
|
msgstr "{size} Б"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -540,6 +564,10 @@ msgstr "Добавить еще"
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Добавить Executor"
|
msgstr "Добавить Executor"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "Бот"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Экран бота"
|
msgstr "Экран бота"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Предварительный просмотр экрана бота"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr "Бот для ссылки"
|
msgstr "Бот для ссылки"
|
||||||
@ -1065,7 +1089,6 @@ msgstr ""
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr "Просмотреть MCP-серверы"
|
msgstr "Просмотреть MCP-серверы"
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2390,7 +2413,9 @@ msgstr ""
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Готово"
|
msgstr "Готово"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr ""
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "Скачать {0}"
|
msgstr "Скачать {0}"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "Скачать {0}"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "Скачать {name}"
|
msgstr "Скачать {name}"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "Развернуть"
|
msgstr "Развернуть"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr "Развернуть {0}"
|
msgstr "Развернуть {0}"
|
||||||
@ -2669,6 +2698,10 @@ msgstr ""
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "Не удалось отправить сообщение"
|
msgstr "Не удалось отправить сообщение"
|
||||||
@ -3000,6 +3033,10 @@ msgstr ""
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr "Скрыть ботов"
|
msgstr "Скрыть ботов"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr "Скрыть пароль"
|
msgstr "Скрыть пароль"
|
||||||
@ -3090,6 +3127,7 @@ msgstr ""
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "Импортировать OpenAPI JSON"
|
msgstr "Импортировать OpenAPI JSON"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3176,6 +3214,10 @@ msgstr "изолированный"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "Его диалог, файлы и задачи будут безвозвратно удалены. Созданные им боты останутся в вашем списке."
|
msgstr "Его диалог, файлы и задачи будут безвозвратно удалены. Созданные им боты останутся в вашем списке."
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "Перейти к последнему"
|
msgstr "Перейти к последнему"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr "Новое пространство"
|
msgstr "Новое пространство"
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Открыть"
|
msgstr "Открыть"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr ""
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "Открыть в полном окне"
|
msgstr "Открыть в полном окне"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "Удалить {0}"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr "Удалить событие Git"
|
msgstr "Удалить событие Git"
|
||||||
@ -4780,10 +4826,6 @@ msgstr "Выполняется…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr "Запускается, когда этот бот получает проверенное сообщение от этого провайдера."
|
msgstr "Запускается, когда этот бот получает проверенное сообщение от этого провайдера."
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr "Показать ботов"
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6121,3 +6167,11 @@ msgstr ""
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr ""
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -182,10 +177,38 @@ msgstr ""
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "{remaining} kaldı · bot yalnızca izliyor"
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -540,6 +564,10 @@ msgstr ""
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "Executor ekle"
|
msgstr "Executor ekle"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "Bot"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Bot ekranı"
|
msgstr "Bot ekranı"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Bot ekranı önizlemesi"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1065,7 +1089,6 @@ msgstr ""
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2390,7 +2413,9 @@ msgstr ""
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Bitti"
|
msgstr "Bitti"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr ""
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "{0} indir"
|
msgstr "{0} indir"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "{0} indir"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "{name} indir"
|
msgstr "{name} indir"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "Genişlet"
|
msgstr "Genişlet"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2669,6 +2698,10 @@ msgstr ""
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "Mesaj gönderilemedi"
|
msgstr "Mesaj gönderilemedi"
|
||||||
@ -3000,6 +3033,10 @@ msgstr ""
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3090,6 +3127,7 @@ msgstr ""
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "OpenAPI JSON içe aktar"
|
msgstr "OpenAPI JSON içe aktar"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3176,6 +3214,10 @@ msgstr "Yalıtılmış"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "Sohbeti, dosyaları ve rutinleri kalıcı olarak silinecek. Oluşturduğu botlar listende kalır."
|
msgstr "Sohbeti, dosyaları ve rutinleri kalıcı olarak silinecek. Oluşturduğu botlar listende kalır."
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "En son mesaja git"
|
msgstr "En son mesaja git"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Aç"
|
msgstr "Aç"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr ""
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "Tam pencerede aç"
|
msgstr "Tam pencerede aç"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "{0} kaldır"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4780,10 +4826,6 @@ msgstr "Çalışıyor…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr ""
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6121,3 +6167,11 @@ msgstr ""
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@ -161,11 +161,6 @@ msgstr ""
|
|||||||
msgid "{0}'s browser appears here when the computer is running."
|
msgid "{0}'s browser appears here when the computer is running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. placeholder {0}: active.name
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "{0}'s screen"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
msgid "{actionCount, plural, one {# thing needs you} other {# things need you}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -182,10 +177,38 @@ msgstr ""
|
|||||||
msgid "{botName} clears the path…"
|
msgid "{botName} clears the path…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is checking a problem"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
msgid "{botName} is on it…"
|
msgid "{botName} is on it…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is replying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is researching"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is thinking"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is waiting for your answer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "{botName} is working"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/voice-persona-copy.ts
|
#: src/lib/voice-persona-copy.ts
|
||||||
#: src/pages/CallView.tsx
|
#: src/pages/CallView.tsx
|
||||||
msgid "{botName} is working…"
|
msgid "{botName} is working…"
|
||||||
@ -364,6 +387,7 @@ msgstr "剩余 {remaining} · Bot 只看不操作"
|
|||||||
msgid "{size} B"
|
msgid "{size} B"
|
||||||
msgstr "{size} B"
|
msgstr "{size} B"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -540,6 +564,10 @@ msgstr ""
|
|||||||
msgid "Add as projects"
|
msgid "Add as projects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/NotificationSettingsPanel.tsx
|
||||||
|
msgid "Add evOo to your Home Screen via Share to enable push on iOS."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/PluginsOverlay.tsx
|
#: src/pages/PluginsOverlay.tsx
|
||||||
msgid "Add Executor"
|
msgid "Add Executor"
|
||||||
msgstr "添加 Executor"
|
msgstr "添加 Executor"
|
||||||
@ -1024,10 +1052,6 @@ msgstr "Bot"
|
|||||||
msgid "Bot screen"
|
msgid "Bot screen"
|
||||||
msgstr "Bot 屏幕"
|
msgstr "Bot 屏幕"
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Bot screen preview"
|
|
||||||
msgstr "Bot 屏幕预览"
|
|
||||||
|
|
||||||
#: src/pages/MessagingSettingsOverlay.tsx
|
#: src/pages/MessagingSettingsOverlay.tsx
|
||||||
msgid "Bot to link"
|
msgid "Bot to link"
|
||||||
msgstr "要关联的 Bot"
|
msgstr "要关联的 Bot"
|
||||||
@ -1065,7 +1089,6 @@ msgstr ""
|
|||||||
msgid "Browse MCP servers"
|
msgid "Browse MCP servers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
#: src/pages/shell/side-panel-header.tsx
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2390,7 +2413,9 @@ msgstr ""
|
|||||||
#: src/components/ThreadCard.tsx
|
#: src/components/ThreadCard.tsx
|
||||||
#: src/pages/HeuteBrief.tsx
|
#: src/pages/HeuteBrief.tsx
|
||||||
#: src/pages/ProjectSessionTimeline.tsx
|
#: src/pages/ProjectSessionTimeline.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/project-overview.tsx
|
#: src/pages/shell/project-overview.tsx
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "完成"
|
msgstr "完成"
|
||||||
|
|
||||||
@ -2403,8 +2428,11 @@ msgstr ""
|
|||||||
msgid "Dot"
|
msgid "Dot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: activeItem.name
|
||||||
|
#. placeholder {0}: item.name
|
||||||
#. placeholder {0}: props.name
|
#. placeholder {0}: props.name
|
||||||
#: src/components/ArtifactFileCard.tsx
|
#: src/components/ArtifactFileCard.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Download {0}"
|
msgid "Download {0}"
|
||||||
msgstr "下载 {0}"
|
msgstr "下载 {0}"
|
||||||
|
|
||||||
@ -2412,7 +2440,6 @@ msgstr "下载 {0}"
|
|||||||
#: src/components/ArtifactPane.tsx
|
#: src/components/ArtifactPane.tsx
|
||||||
#: src/components/media/MediaCard.tsx
|
#: src/components/media/MediaCard.tsx
|
||||||
#: src/components/media/MediaPlayer.tsx
|
#: src/components/media/MediaPlayer.tsx
|
||||||
#: src/pages/shell/message-cards.tsx
|
|
||||||
msgid "Download {name}"
|
msgid "Download {name}"
|
||||||
msgstr "下载 {name}"
|
msgstr "下载 {name}"
|
||||||
|
|
||||||
@ -2598,6 +2625,8 @@ msgid "Expand"
|
|||||||
msgstr "展开"
|
msgstr "展开"
|
||||||
|
|
||||||
#. placeholder {0}: group.title
|
#. placeholder {0}: group.title
|
||||||
|
#. placeholder {0}: item.name
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/sidebar-group-header.tsx
|
#: src/pages/shell/sidebar-group-header.tsx
|
||||||
msgid "Expand {0}"
|
msgid "Expand {0}"
|
||||||
msgstr "展开 {0}"
|
msgstr "展开 {0}"
|
||||||
@ -2669,6 +2698,10 @@ msgstr ""
|
|||||||
msgid "Failed to open file"
|
msgid "Failed to open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/Shell.tsx
|
||||||
|
msgid "Failed to remove message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Failed to send message"
|
msgid "Failed to send message"
|
||||||
msgstr "发送消息失败"
|
msgstr "发送消息失败"
|
||||||
@ -3000,6 +3033,10 @@ msgstr ""
|
|||||||
msgid "Hide bots"
|
msgid "Hide bots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Hide details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Auth.tsx
|
#: src/pages/Auth.tsx
|
||||||
msgid "Hide password"
|
msgid "Hide password"
|
||||||
msgstr "隐藏密码"
|
msgstr "隐藏密码"
|
||||||
@ -3090,6 +3127,7 @@ msgstr ""
|
|||||||
msgid "Import OpenAPI JSON"
|
msgid "Import OpenAPI JSON"
|
||||||
msgstr "导入 OpenAPI JSON"
|
msgstr "导入 OpenAPI JSON"
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
#: src/pages/shell/run-steps.tsx
|
#: src/pages/shell/run-steps.tsx
|
||||||
msgid "In Bearbeitung"
|
msgid "In Bearbeitung"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3176,6 +3214,10 @@ msgstr "隔离"
|
|||||||
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
msgid "Its conversation, files, and routines will be permanently deleted. Bots it created stay in your list."
|
||||||
msgstr "它的对话、文件和例行任务将被永久删除。它创建的 Bot 仍留在列表中。"
|
msgstr "它的对话、文件和例行任务将被永久删除。它创建的 Bot 仍留在列表中。"
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "joined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/transcript.tsx
|
#: src/pages/shell/transcript.tsx
|
||||||
msgid "Jump to latest"
|
msgid "Jump to latest"
|
||||||
msgstr "跳到最新"
|
msgstr "跳到最新"
|
||||||
@ -3788,6 +3830,7 @@ msgid "New space"
|
|||||||
msgstr "新建工作区"
|
msgstr "新建工作区"
|
||||||
|
|
||||||
#: src/components/CookingMode.tsx
|
#: src/components/CookingMode.tsx
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4047,7 +4090,6 @@ msgid "Oo name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/ScratchpadSection.tsx
|
#: src/pages/ScratchpadSection.tsx
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "打开"
|
msgstr "打开"
|
||||||
|
|
||||||
@ -4076,7 +4118,7 @@ msgstr ""
|
|||||||
msgid "Open in browser"
|
msgid "Open in browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/computer-panel-preview.tsx
|
#: src/components/browser/OoComputerBrowser.tsx
|
||||||
msgid "Open in full window"
|
msgid "Open in full window"
|
||||||
msgstr "在完整窗口中打开"
|
msgstr "在完整窗口中打开"
|
||||||
|
|
||||||
@ -4549,6 +4591,10 @@ msgstr "移除 {0}"
|
|||||||
msgid "Remove folder"
|
msgid "Remove folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Remove from queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/RoutineEditor.tsx
|
#: src/pages/RoutineEditor.tsx
|
||||||
msgid "Remove Git event"
|
msgid "Remove Git event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4780,10 +4826,6 @@ msgstr "正在运行…"
|
|||||||
msgid "Runs when this bot receives a verified message from this provider."
|
msgid "Runs when this bot receives a verified message from this provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/shell/side-panel-header.tsx
|
|
||||||
msgid "Sandbox"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/AskCard.tsx
|
#: src/components/AskCard.tsx
|
||||||
#: src/components/MediaSettings.tsx
|
#: src/components/MediaSettings.tsx
|
||||||
#: src/components/teach/SkillDraftCard.tsx
|
#: src/components/teach/SkillDraftCard.tsx
|
||||||
@ -5049,6 +5091,10 @@ msgstr ""
|
|||||||
msgid "Show computer"
|
msgid "Show computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/transcript.tsx
|
||||||
|
msgid "Show details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/Shell.tsx
|
#: src/pages/Shell.tsx
|
||||||
msgid "Show less"
|
msgid "Show less"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6121,3 +6167,11 @@ msgstr ""
|
|||||||
#: src/pages/Welcome.tsx
|
#: src/pages/Welcome.tsx
|
||||||
msgid "Your specialists. One calm place to talk."
|
msgid "Your specialists. One calm place to talk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/shell/message-cards.tsx
|
||||||
|
msgid "Zoom out"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@ -3134,6 +3134,23 @@ export function ShellPage() {
|
|||||||
await refreshBots().catch(() => undefined);
|
await refreshBots().catch(() => undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function openComputer() {
|
||||||
|
const targetBot = active ?? coordinatorBot;
|
||||||
|
if (!targetBot) return;
|
||||||
|
const needsTakeover = !userHoldsComputerControl(computer, targetBot.id);
|
||||||
|
const blocked = computerTakeoverBlocked(computer, snapshot?.run?.status);
|
||||||
|
try {
|
||||||
|
await bootComputer({
|
||||||
|
takeControl: needsTakeover && !blocked,
|
||||||
|
overlay: (needsTakeover && !blocked) || computer?.state !== "running",
|
||||||
|
force: computer?.state !== "running",
|
||||||
|
});
|
||||||
|
setComputerOpen(true);
|
||||||
|
} catch {
|
||||||
|
// computerError already set in bootComputer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function bootComputer({
|
async function bootComputer({
|
||||||
takeControl,
|
takeControl,
|
||||||
overlay,
|
overlay,
|
||||||
@ -4609,18 +4626,13 @@ export function ShellPage() {
|
|||||||
computerScreenError={computerScreenError}
|
computerScreenError={computerScreenError}
|
||||||
sandboxProvider={bootstrapMe?.sandboxProvider}
|
sandboxProvider={bootstrapMe?.sandboxProvider}
|
||||||
booting={booting}
|
booting={booting}
|
||||||
onBoot={async () => {
|
|
||||||
const target = active ?? coordinatorBot;
|
|
||||||
if (!target) return;
|
|
||||||
await bootComputer({ takeControl: false, overlay: false, force: false });
|
|
||||||
await refreshComputerScreen(target.id);
|
|
||||||
}}
|
|
||||||
onRefreshScreen={async () => {
|
onRefreshScreen={async () => {
|
||||||
const target = active ?? coordinatorBot;
|
const target = active ?? coordinatorBot;
|
||||||
if (!target) return;
|
if (!target) return;
|
||||||
await refreshComputerScreen(target.id);
|
await refreshComputerScreen(target.id);
|
||||||
await refreshThread(target.id).catch(() => undefined);
|
await refreshThread(target.id).catch(() => undefined);
|
||||||
}}
|
}}
|
||||||
|
onOpenComputer={() => void openComputer()}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@ -6,6 +6,31 @@ import type { ThreadMessage } from "@rakazo/contracts";
|
|||||||
import { act } from "react";
|
import { act } from "react";
|
||||||
import { createRoot } from "react-dom/client";
|
import { createRoot } from "react-dom/client";
|
||||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
|
|
||||||
|
function formatTemplate(parts: TemplateStringsArray, ...values: unknown[]) {
|
||||||
|
return parts.reduce(
|
||||||
|
(text, part, index) => text + part + (index < values.length ? values[index] : ""),
|
||||||
|
"",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
vi.mock("@lingui/core/macro", () => ({
|
||||||
|
t: formatTemplate,
|
||||||
|
msg: (parts: TemplateStringsArray, ...values: unknown[]) => ({
|
||||||
|
id: parts.join(""),
|
||||||
|
message: formatTemplate(parts, ...values),
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
|
||||||
|
vi.mock("@lingui/react/macro", () => {
|
||||||
|
return {
|
||||||
|
useLingui: () => ({ t: formatTemplate }),
|
||||||
|
Trans: ({ children }: { children: React.ReactNode }) => children,
|
||||||
|
Plural: ({ value, one, other }: { value: number; one: string; other: string }) =>
|
||||||
|
(value === 1 ? one : other).replace("#", String(value)),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
import { ComposerTaskPill, extractActivePlanState, PlanCard } from "./message-cards";
|
import { ComposerTaskPill, extractActivePlanState, PlanCard } from "./message-cards";
|
||||||
|
|
||||||
// @ts-expect-error React act environment flag
|
// @ts-expect-error React act environment flag
|
||||||
|
|||||||
@ -338,7 +338,10 @@ export const Composer = memo(function Composer({
|
|||||||
const slashSkillOptions = useMemo(() => {
|
const slashSkillOptions = useMemo(() => {
|
||||||
if (slashQuery === null) return [];
|
if (slashQuery === null) return [];
|
||||||
const query = slashQuery.trim().toLowerCase();
|
const query = slashQuery.trim().toLowerCase();
|
||||||
const skills = agentSkills ?? [];
|
// The user's own skills come first so built-in ones never crowd them out of the picker.
|
||||||
|
const skills = [...(agentSkills ?? [])].sort(
|
||||||
|
(a, b) => Number(a.source !== "user") - Number(b.source !== "user"),
|
||||||
|
);
|
||||||
return skills
|
return skills
|
||||||
.filter((skill) => {
|
.filter((skill) => {
|
||||||
if (!query) return true;
|
if (!query) return true;
|
||||||
@ -603,7 +606,7 @@ export const Composer = memo(function Composer({
|
|||||||
{showSlashPicker ? (
|
{showSlashPicker ? (
|
||||||
<div
|
<div
|
||||||
data-testid="slash-picker"
|
data-testid="slash-picker"
|
||||||
className="mb-2 overflow-hidden rounded-[14px] border border-border bg-muted"
|
className="mb-2 max-h-64 overflow-y-auto rounded-[14px] border border-border bg-muted"
|
||||||
>
|
>
|
||||||
{slashSkillOptions.map((skill) => (
|
{slashSkillOptions.map((skill) => (
|
||||||
<button
|
<button
|
||||||
|
|||||||
@ -1,109 +0,0 @@
|
|||||||
import { Trans, useLingui } from "@lingui/react/macro";
|
|
||||||
import type { Bot, ComputerStatus } from "@rakazo/contracts";
|
|
||||||
import { Maximize2 } from "lucide-react";
|
|
||||||
import type { ReactNode } from "react";
|
|
||||||
import {
|
|
||||||
ComputersUnavailableHint,
|
|
||||||
computersAreUnavailable,
|
|
||||||
} from "../../components/ComputersUnavailableHint";
|
|
||||||
import { AgentCursor } from "../../components/computer/AgentCursor";
|
|
||||||
import {
|
|
||||||
computerLabel,
|
|
||||||
computerPlaceholder,
|
|
||||||
DesktopKindEmptyState,
|
|
||||||
screenIframeSandbox,
|
|
||||||
} from "./computer-screen";
|
|
||||||
import { WorkspaceFilesView } from "./workspace-files";
|
|
||||||
|
|
||||||
/** The bot's screen in the side panel: a live, non-interactive preview that opens full window. */
|
|
||||||
export function ComputerPanelPreview({
|
|
||||||
active,
|
|
||||||
computer,
|
|
||||||
computerOpen,
|
|
||||||
booting,
|
|
||||||
embeddedScreenUrl,
|
|
||||||
computerScreenError,
|
|
||||||
sandboxProvider,
|
|
||||||
onOpen,
|
|
||||||
}: {
|
|
||||||
active: Bot;
|
|
||||||
computer: ComputerStatus | null;
|
|
||||||
computerOpen: boolean;
|
|
||||||
booting: boolean;
|
|
||||||
embeddedScreenUrl: string | null;
|
|
||||||
computerScreenError: ReactNode;
|
|
||||||
sandboxProvider: string | undefined;
|
|
||||||
onOpen: () => void;
|
|
||||||
}) {
|
|
||||||
const { t } = useLingui();
|
|
||||||
// Opening the panel never starts the computer, so a resting one shows its Open action outright.
|
|
||||||
const resting =
|
|
||||||
!booting &&
|
|
||||||
computer?.state !== "running" &&
|
|
||||||
computer?.state !== "booting" &&
|
|
||||||
!computersAreUnavailable(sandboxProvider);
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<div
|
|
||||||
data-testid="computer-preview"
|
|
||||||
className="group relative aspect-[16/10] overflow-hidden rounded-[14px] border border-border bg-muted/35"
|
|
||||||
>
|
|
||||||
{computerOpen ? (
|
|
||||||
<div className="grid h-full place-items-center text-sm text-muted-foreground/80">
|
|
||||||
<Trans>Open in full window</Trans>
|
|
||||||
</div>
|
|
||||||
) : computer?.kind === "desktop" ? (
|
|
||||||
<DesktopKindEmptyState className="grid h-full place-items-center px-6 pb-10 text-center text-sm text-muted-foreground/80" />
|
|
||||||
) : computer?.state === "running" && embeddedScreenUrl && !computerScreenError ? (
|
|
||||||
<>
|
|
||||||
<iframe
|
|
||||||
title={t`Bot screen preview`}
|
|
||||||
src={embeddedScreenUrl}
|
|
||||||
sandbox={screenIframeSandbox(embeddedScreenUrl)}
|
|
||||||
className="h-full w-full border-0 bg-black"
|
|
||||||
allow="clipboard-read; clipboard-write"
|
|
||||||
style={{ pointerEvents: "none" }}
|
|
||||||
/>
|
|
||||||
<AgentCursor botId={active.id} color={active.color} name={active.name} />
|
|
||||||
</>
|
|
||||||
) : (
|
|
||||||
<div
|
|
||||||
className={`grid h-full place-items-center px-6 text-center text-sm text-muted-foreground/80 ${
|
|
||||||
resting && !computerScreenError ? "pb-11" : ""
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
{computerScreenError ??
|
|
||||||
(computersAreUnavailable(sandboxProvider) ? (
|
|
||||||
<ComputersUnavailableHint />
|
|
||||||
) : (
|
|
||||||
computerPlaceholder(
|
|
||||||
computer?.state,
|
|
||||||
booting,
|
|
||||||
computerLabel(computer?.mode, active.name),
|
|
||||||
)
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{!computerScreenError ? (
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
data-testid="computer-preview-open"
|
|
||||||
data-resting={resting ? "" : undefined}
|
|
||||||
className="absolute inset-0 flex cursor-pointer items-center justify-center opacity-0 transition-opacity group-hover:bg-overlay/40 group-hover:opacity-100 focus-visible:bg-overlay/40 focus-visible:opacity-100 data-resting:items-end data-resting:pb-3 data-resting:opacity-100"
|
|
||||||
aria-label={t`Open`}
|
|
||||||
onClick={onOpen}
|
|
||||||
>
|
|
||||||
<span className="inline-flex items-center gap-2 rounded-full bg-overlay px-3.5 py-2 text-ui-body text-foreground shadow-md">
|
|
||||||
<Maximize2 strokeWidth={1.9} aria-hidden className="size-icon-md" />
|
|
||||||
<Trans>Open</Trans>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
) : null}
|
|
||||||
</div>
|
|
||||||
<p className="mt-2 truncate text-ui-body text-muted-foreground" dir="auto">
|
|
||||||
{t`${active.name}'s screen`}
|
|
||||||
</p>
|
|
||||||
<WorkspaceFilesView botId={active.id} />
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@ -453,26 +453,26 @@ export function AgentOverview({
|
|||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Scheduled Routines for this 1:1 Agent */}
|
{/* Routines appear once the agent has one; ask in the chat to add the first. */}
|
||||||
<div className="space-y-2">
|
{routines.length > 0 ? (
|
||||||
<div className="flex items-center justify-between px-1">
|
<div className="space-y-2">
|
||||||
<span className="text-ui-label font-semibold uppercase tracking-wider text-muted-foreground">
|
<div className="flex items-center justify-between px-1">
|
||||||
<Trans>Routines</Trans>
|
<span className="text-ui-label font-semibold uppercase tracking-wider text-muted-foreground">
|
||||||
</span>
|
<Trans>Routines</Trans>
|
||||||
{onAddRoutine ? (
|
</span>
|
||||||
<Button
|
{onAddRoutine ? (
|
||||||
variant="outline"
|
<Button
|
||||||
size="xs"
|
variant="outline"
|
||||||
onClick={onAddRoutine}
|
size="xs"
|
||||||
className="gap-1 text-ui-label"
|
onClick={onAddRoutine}
|
||||||
>
|
className="gap-1 text-ui-label"
|
||||||
<Plus size={14} strokeWidth={2.2} />
|
>
|
||||||
<Trans>Routine</Trans>
|
<Plus size={14} strokeWidth={2.2} />
|
||||||
</Button>
|
<Trans>Routine</Trans>
|
||||||
) : null}
|
</Button>
|
||||||
</div>
|
) : null}
|
||||||
|
</div>
|
||||||
|
|
||||||
{routines.length > 0 ? (
|
|
||||||
<div className="rounded-xl border border-border/60 bg-card/30 p-1.5 space-y-0.5">
|
<div className="rounded-xl border border-border/60 bg-card/30 p-1.5 space-y-0.5">
|
||||||
{routines.map((routine) => (
|
{routines.map((routine) => (
|
||||||
<RoutineListRow
|
<RoutineListRow
|
||||||
@ -486,15 +486,8 @@ export function AgentOverview({
|
|||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
</div>
|
||||||
<div className="flex items-center gap-2 rounded-xl border border-border/60 bg-card/30 px-3.5 py-2.5 text-ui-body-sm text-muted-foreground">
|
) : null}
|
||||||
<Clock size={14} className="shrink-0" />
|
|
||||||
<span>
|
|
||||||
<Trans>Just ask in the chat whenever something should happen regularly.</Trans>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -752,7 +752,7 @@ export const Transcript = memo(function Transcript({
|
|||||||
dateTime={message.createdAt}
|
dateTime={message.createdAt}
|
||||||
data-testid="message-hover-time"
|
data-testid="message-hover-time"
|
||||||
className={cn(
|
className={cn(
|
||||||
"pointer-events-none absolute top-1 z-10 text-ui-label tabular-nums text-muted-foreground opacity-0 transition-opacity group-hover/message:opacity-100 group-focus-within/message:opacity-100 group-has-[[aria-expanded=true]]/message:opacity-100",
|
"pointer-events-none absolute top-1 z-10 text-ui-label tabular-nums text-muted-foreground opacity-0 transition-opacity group-hover/message:opacity-100 group-focus-within/message:opacity-100 group-has-[[data-testid=message-hover-rail]_[aria-expanded=true]]/message:opacity-100",
|
||||||
message.role === "user" ? "start-0" : "end-0",
|
message.role === "user" ? "start-0" : "end-0",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -1335,18 +1335,18 @@ function BotAnsweringRow({
|
|||||||
|
|
||||||
const label =
|
const label =
|
||||||
phase.kind === "waiting"
|
phase.kind === "waiting"
|
||||||
? t`${botName} wartet auf deine Antwort`
|
? t`${botName} is waiting for your answer`
|
||||||
: phase.kind === "concerned"
|
: phase.kind === "concerned"
|
||||||
? t`${botName} prüft ein Problem`
|
? t`${botName} is checking a problem`
|
||||||
: phase.kind === "speaking"
|
: phase.kind === "speaking"
|
||||||
? t`${botName} antwortet`
|
? t`${botName} is replying`
|
||||||
: phase.kind === "cooking"
|
: phase.kind === "cooking"
|
||||||
? t`${botName} baut & tüftelt`
|
? t`${botName} is building`
|
||||||
: phase.kind === "reading"
|
: phase.kind === "reading"
|
||||||
? t`${botName} liest & recherchiert`
|
? t`${botName} is researching`
|
||||||
: phase.kind === "working"
|
: phase.kind === "working"
|
||||||
? t`${botName} arbeitet`
|
? t`${botName} is working`
|
||||||
: t`${botName} denkt nach`;
|
: t`${botName} is thinking`;
|
||||||
|
|
||||||
const resolvedColor = color || colorDef.hex;
|
const resolvedColor = color || colorDef.hex;
|
||||||
|
|
||||||
@ -1428,7 +1428,7 @@ function BotTextBlockContent({
|
|||||||
) : (
|
) : (
|
||||||
<ChevronRight className="size-4 shrink-0" />
|
<ChevronRight className="size-4 shrink-0" />
|
||||||
)}
|
)}
|
||||||
<span>{detailsExpanded ? t`Details ausblenden` : t`Details anzeigen`}</span>
|
<span>{detailsExpanded ? t`Hide details` : t`Show details`}</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
{detailsExpanded ? (
|
{detailsExpanded ? (
|
||||||
@ -1639,11 +1639,11 @@ const MessageView = memo(function MessageView({
|
|||||||
</span>
|
</span>
|
||||||
{completedMoment === "success" ? (
|
{completedMoment === "success" ? (
|
||||||
<span className="rounded-full border border-success/30 bg-success/10 px-2 py-0.5 text-ui-label font-medium text-success">
|
<span className="rounded-full border border-success/30 bg-success/10 px-2 py-0.5 text-ui-label font-medium text-success">
|
||||||
{t`Fertig`}
|
{t`Done`}
|
||||||
</span>
|
</span>
|
||||||
) : speakerJoined ? (
|
) : speakerJoined ? (
|
||||||
<span className="rounded-full border border-primary/25 bg-primary/10 px-2 py-0.5 text-ui-label font-medium text-foreground/85">
|
<span className="rounded-full border border-primary/25 bg-primary/10 px-2 py-0.5 text-ui-label font-medium text-foreground/85">
|
||||||
{t`dazugeschaltet`}
|
{t`joined`}
|
||||||
</span>
|
</span>
|
||||||
) : (
|
) : (
|
||||||
<span className="rounded-full border border-border bg-muted px-2 py-0.5 text-ui-label font-medium text-muted-foreground">
|
<span className="rounded-full border border-border bg-muted px-2 py-0.5 text-ui-label font-medium text-muted-foreground">
|
||||||
@ -1776,7 +1776,7 @@ const MessageView = memo(function MessageView({
|
|||||||
{to}
|
{to}
|
||||||
</span>
|
</span>
|
||||||
<span className="rounded-full border border-primary/25 bg-primary/10 px-2 py-0.5 text-ui-label font-medium text-foreground/85">
|
<span className="rounded-full border border-primary/25 bg-primary/10 px-2 py-0.5 text-ui-label font-medium text-foreground/85">
|
||||||
{t`dazugeschaltet`}
|
{t`joined`}
|
||||||
</span>
|
</span>
|
||||||
<span className="text-ui-body-sm text-muted-foreground">← {from}</span>
|
<span className="text-ui-body-sm text-muted-foreground">← {from}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -100,7 +100,10 @@ export function useShellSounds({
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const botMsgs = (activeSnapshot?.messages ?? []).filter((m) => m.role === "bot").length;
|
const botMsgs = (activeSnapshot?.messages ?? []).filter((m) => m.role === "bot").length;
|
||||||
if (prevThreadId.current === (activeSnapshot?.threadId ?? null) && botMsgs > prevBotMsgCount.current) {
|
if (
|
||||||
|
prevThreadId.current === (activeSnapshot?.threadId ?? null) &&
|
||||||
|
botMsgs > prevBotMsgCount.current
|
||||||
|
) {
|
||||||
if (transcriptRunning && !callOpen) {
|
if (transcriptRunning && !callOpen) {
|
||||||
ooSound.play("interact");
|
ooSound.play("interact");
|
||||||
ooVocals.react("mhm");
|
ooVocals.react("mhm");
|
||||||
|
|||||||
@ -72,7 +72,7 @@ describe("computer home ownership", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("rejects an owner-owned file that is not writable by that owner", async () => {
|
it("accepts read-only files the owner already owns, like git objects", async () => {
|
||||||
const parent = await mkdtemp(path.join(tmpdir(), "rakazo-home-owner-mode-"));
|
const parent = await mkdtemp(path.join(tmpdir(), "rakazo-home-owner-mode-"));
|
||||||
roots.push(parent);
|
roots.push(parent);
|
||||||
const home = path.join(parent, "home");
|
const home = path.join(parent, "home");
|
||||||
@ -82,7 +82,7 @@ describe("computer home ownership", () => {
|
|||||||
await chmod(file, 0o400);
|
await chmod(file, 0o400);
|
||||||
|
|
||||||
const stat = await lstat(file);
|
const stat = await lstat(file);
|
||||||
await expect(assertComputerHomeWritable(home, stat.uid, stat.gid)).rejects.toThrow(/chown -R/);
|
await expect(assertComputerHomeWritable(home, stat.uid, stat.gid)).resolves.toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not follow symlinks while checking host-run compatibility", async () => {
|
it("does not follow symlinks while checking host-run compatibility", async () => {
|
||||||
|
|||||||
@ -1,400 +0,0 @@
|
|||||||
import type * as NodeFs from "node:fs";
|
|
||||||
import type * as NodeFsPromises from "node:fs/promises";
|
|
||||||
import {
|
|
||||||
link,
|
|
||||||
mkdir,
|
|
||||||
mkdtemp,
|
|
||||||
readFile,
|
|
||||||
realpath,
|
|
||||||
rename,
|
|
||||||
rm,
|
|
||||||
symlink,
|
|
||||||
writeFile,
|
|
||||||
} from "node:fs/promises";
|
|
||||||
import { tmpdir } from "node:os";
|
|
||||||
import path from "node:path";
|
|
||||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
||||||
|
|
||||||
const lstatRace = vi.hoisted(() => ({
|
|
||||||
after: undefined as undefined | ((target: string) => Promise<void>),
|
|
||||||
afterRealpath: undefined as undefined | ((target: string) => Promise<void>),
|
|
||||||
}));
|
|
||||||
|
|
||||||
vi.mock("node:fs", async (importOriginal) => {
|
|
||||||
const actual = await importOriginal<typeof NodeFs>();
|
|
||||||
return {
|
|
||||||
...actual,
|
|
||||||
constants: { ...actual.constants, O_NOFOLLOW: 0 },
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
vi.mock("node:fs/promises", async (importOriginal) => {
|
|
||||||
const actual = await importOriginal<typeof NodeFsPromises>();
|
|
||||||
return {
|
|
||||||
...actual,
|
|
||||||
lstat: async (target: string, options?: { bigint?: boolean }) => {
|
|
||||||
const result = await actual.lstat(target, options as never);
|
|
||||||
await lstatRace.after?.(target);
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
realpath: async (target: string) => {
|
|
||||||
const result = await actual.realpath(target);
|
|
||||||
await lstatRace.afterRealpath?.(target);
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
const { DesktopSandboxProvider } = await import("./desktop-sandbox.js");
|
|
||||||
|
|
||||||
const ctx = {
|
|
||||||
operationId: "operation",
|
|
||||||
traceId: "trace",
|
|
||||||
spaceId: "workspace",
|
|
||||||
userId: "user",
|
|
||||||
signal: new AbortController().signal,
|
|
||||||
};
|
|
||||||
const roots: string[] = [];
|
|
||||||
|
|
||||||
afterEach(async () => {
|
|
||||||
lstatRace.after = undefined;
|
|
||||||
lstatRace.afterRealpath = undefined;
|
|
||||||
await Promise.all(roots.splice(0).map((root) => rm(root, { recursive: true, force: true })));
|
|
||||||
});
|
|
||||||
|
|
||||||
async function fixture(botId: string) {
|
|
||||||
const root = await realpath(await mkdtemp(path.join(tmpdir(), "rakazo-desktop-containment-")));
|
|
||||||
roots.push(root);
|
|
||||||
const desktop = new DesktopSandboxProvider({ root });
|
|
||||||
const computer = await desktop.provision({ botId, homePath: "/unused" }, ctx);
|
|
||||||
return { root, desktop, computer };
|
|
||||||
}
|
|
||||||
|
|
||||||
async function pathExists(target: string) {
|
|
||||||
try {
|
|
||||||
await realpath(target);
|
|
||||||
return true;
|
|
||||||
} catch {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
describe("desktop sandbox write containment without O_NOFOLLOW", () => {
|
|
||||||
it("rejects an existing final symlink without changing its outside target", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("static-link");
|
|
||||||
const outside = path.join(root, "outside.txt");
|
|
||||||
await writeFile(outside, "before");
|
|
||||||
await symlink(outside, path.join(computer.providerRef, "escape.txt"));
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "escape.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
expect(await readFile(outside, "utf8")).toBe("before");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("keeps writes contained when the final name is replaced after lstat", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("swap-link");
|
|
||||||
const target = path.join(computer.providerRef, "result.txt");
|
|
||||||
const displaced = path.join(computer.providerRef, "result-original.txt");
|
|
||||||
const outside = path.join(root, "outside.txt");
|
|
||||||
await writeFile(target, "inside-before");
|
|
||||||
await writeFile(outside, "outside-before");
|
|
||||||
let swapped = false;
|
|
||||||
lstatRace.after = async (inspected) => {
|
|
||||||
if (swapped || path.basename(inspected) !== "result.txt") return;
|
|
||||||
swapped = true;
|
|
||||||
await rename(target, displaced);
|
|
||||||
await symlink(outside, target);
|
|
||||||
};
|
|
||||||
|
|
||||||
let rejected = false;
|
|
||||||
try {
|
|
||||||
await desktop.writeFile(computer, {
|
|
||||||
path: "result.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
expect(error).toHaveProperty("message", "Path escapes the computer workspace");
|
|
||||||
rejected = true;
|
|
||||||
}
|
|
||||||
expect(swapped).toBe(true);
|
|
||||||
expect(await readFile(outside, "utf8")).toBe("outside-before");
|
|
||||||
expect(await readFile(displaced, "utf8")).toBe(rejected ? "inside-before" : "after");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("rejects a parent symlink that resolves outside the workspace", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("parent-link");
|
|
||||||
const outside = path.join(root, "outside-directory");
|
|
||||||
await mkdir(outside);
|
|
||||||
await symlink(outside, path.join(computer.providerRef, "escape-directory"), "junction");
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "escape-directory/outside.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
await expect(readFile(path.join(outside, "outside.txt"), "utf8")).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not create outside directories through a parent symlink", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("parent-link-nested");
|
|
||||||
const outside = path.join(root, "outside-directory");
|
|
||||||
await mkdir(outside);
|
|
||||||
await symlink(outside, path.join(computer.providerRef, "escape-directory"), "junction");
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "escape-directory/nested/outside.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
await expect(readFile(path.join(outside, "nested/outside.txt"), "utf8")).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
await expect(readFile(path.join(outside, "nested"), "utf8")).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not write outside when a validated parent is replaced before open", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("parent-swap");
|
|
||||||
const parent = path.join(computer.providerRef, "notes");
|
|
||||||
const displaced = path.join(computer.providerRef, "notes-original");
|
|
||||||
const outside = path.join(root, "outside-directory");
|
|
||||||
await mkdir(parent);
|
|
||||||
await mkdir(outside);
|
|
||||||
await writeFile(path.join(parent, "result.txt"), "inside-before");
|
|
||||||
await writeFile(path.join(outside, "result.txt"), "outside-before");
|
|
||||||
let swapped = false;
|
|
||||||
lstatRace.afterRealpath = async (inspected) => {
|
|
||||||
if (swapped || path.basename(inspected) !== "notes") return;
|
|
||||||
swapped = true;
|
|
||||||
await rename(parent, displaced);
|
|
||||||
await symlink(outside, parent, "junction");
|
|
||||||
};
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "notes/result.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
expect(swapped).toBe(true);
|
|
||||||
expect(await readFile(path.join(outside, "result.txt"), "utf8")).toBe("outside-before");
|
|
||||||
expect(await readFile(path.join(displaced, "result.txt"), "utf8")).toBe("inside-before");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not leave an outside file when exclusive create races through a swapped parent", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("parent-swap-create");
|
|
||||||
const parent = path.join(computer.providerRef, "notes");
|
|
||||||
const displaced = path.join(computer.providerRef, "notes-original");
|
|
||||||
const outside = path.join(root, "outside-directory");
|
|
||||||
await mkdir(parent);
|
|
||||||
await mkdir(outside);
|
|
||||||
let swapped = false;
|
|
||||||
lstatRace.afterRealpath = async (inspected) => {
|
|
||||||
if (swapped || path.basename(inspected) !== "notes") return;
|
|
||||||
swapped = true;
|
|
||||||
await rename(parent, displaced);
|
|
||||||
await symlink(outside, parent, "junction");
|
|
||||||
};
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "notes/result.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
expect(swapped).toBe(true);
|
|
||||||
await expect(readFile(path.join(outside, "result.txt"), "utf8")).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not create outside directories when a parent is swapped during mkdir", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("mkdir-swap");
|
|
||||||
const parent = path.join(computer.providerRef, "notes");
|
|
||||||
const displaced = path.join(computer.providerRef, "notes-original");
|
|
||||||
const outside = path.join(root, "outside-directory");
|
|
||||||
await mkdir(parent);
|
|
||||||
await mkdir(outside);
|
|
||||||
let swapped = false;
|
|
||||||
lstatRace.afterRealpath = async (inspected) => {
|
|
||||||
if (swapped || path.basename(inspected) !== "notes") return;
|
|
||||||
swapped = true;
|
|
||||||
await rename(parent, displaced);
|
|
||||||
await symlink(outside, parent, "junction");
|
|
||||||
};
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "notes/nested/result.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
expect(swapped).toBe(true);
|
|
||||||
await expect(readFile(path.join(outside, "nested/result.txt"), "utf8")).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
await expect(readFile(path.join(outside, "nested"), "utf8")).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("rejects when path containment and the opened inode diverge after a parent swap", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("inode-diverge");
|
|
||||||
const parent = path.join(computer.providerRef, "notes");
|
|
||||||
const displaced = path.join(computer.providerRef, "notes-original");
|
|
||||||
const outside = path.join(root, "outside-directory");
|
|
||||||
await mkdir(parent);
|
|
||||||
await mkdir(outside);
|
|
||||||
await writeFile(path.join(parent, "result.txt"), "inside-before");
|
|
||||||
await writeFile(path.join(outside, "result.txt"), "outside-before");
|
|
||||||
|
|
||||||
// Force pathname opens so containment must bind directory/file inodes (Windows path).
|
|
||||||
const platform = Object.getOwnPropertyDescriptor(process, "platform");
|
|
||||||
Object.defineProperty(process, "platform", { configurable: true, value: "win32" });
|
|
||||||
try {
|
|
||||||
let notesRealpaths = 0;
|
|
||||||
lstatRace.afterRealpath = async (inspected) => {
|
|
||||||
if (path.basename(inspected) !== "notes") return;
|
|
||||||
notesRealpaths += 1;
|
|
||||||
// After writeContainedWorkspaceFile's parent realpath, point the pathname at an
|
|
||||||
// outside directory. Without binding the opened parent inode to a fresh
|
|
||||||
// contained realpath, later checks could validate a restored inside path
|
|
||||||
// while the handle still referred outside.
|
|
||||||
if (notesRealpaths !== 2) return;
|
|
||||||
await rename(parent, displaced);
|
|
||||||
await symlink(outside, parent, "junction");
|
|
||||||
};
|
|
||||||
lstatRace.after = async (inspected) => {
|
|
||||||
if (path.basename(inspected) !== "result.txt") return;
|
|
||||||
// If a child open happened, restore an inside pathname so realpath-only
|
|
||||||
// containment would incorrectly pass without an inode bind.
|
|
||||||
if (!(await pathExists(parent))) return;
|
|
||||||
await rm(parent, { force: true });
|
|
||||||
if (await pathExists(displaced)) await rename(displaced, parent);
|
|
||||||
};
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "notes/result.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
expect(notesRealpaths).toBeGreaterThanOrEqual(2);
|
|
||||||
expect(await readFile(path.join(outside, "result.txt"), "utf8")).toBe("outside-before");
|
|
||||||
// Inside content lives under the displaced original parent after the race.
|
|
||||||
expect(await readFile(path.join(displaced, "result.txt"), "utf8")).toBe("inside-before");
|
|
||||||
} finally {
|
|
||||||
if (platform) Object.defineProperty(process, "platform", platform);
|
|
||||||
else Object.defineProperty(process, "platform", { configurable: true, value: "linux" });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it("rejects a hard link whose other name is outside the workspace", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("hard-link");
|
|
||||||
const outside = path.join(root, "outside.txt");
|
|
||||||
await writeFile(outside, "outside-before");
|
|
||||||
await link(outside, path.join(computer.providerRef, "escape.txt"));
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFile(computer, {
|
|
||||||
path: "escape.txt",
|
|
||||||
content: new TextEncoder().encode("after"),
|
|
||||||
}),
|
|
||||||
).rejects.toThrow();
|
|
||||||
expect(await readFile(outside, "utf8")).toBe("outside-before");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("applies the same containment to streamed writes", async () => {
|
|
||||||
const { root, desktop, computer } = await fixture("streamed-escapes");
|
|
||||||
const outsideFile = path.join(root, "outside.txt");
|
|
||||||
const outsideDirectory = path.join(root, "outside-directory");
|
|
||||||
await writeFile(outsideFile, "outside-before");
|
|
||||||
await mkdir(outsideDirectory);
|
|
||||||
await symlink(outsideFile, path.join(computer.providerRef, "final-link.txt"));
|
|
||||||
await link(outsideFile, path.join(computer.providerRef, "hard-link.txt"));
|
|
||||||
await symlink(
|
|
||||||
outsideDirectory,
|
|
||||||
path.join(computer.providerRef, "escape-directory"),
|
|
||||||
"junction",
|
|
||||||
);
|
|
||||||
const streamed = (filePath: string) =>
|
|
||||||
desktop.writeFileStream(
|
|
||||||
computer,
|
|
||||||
{
|
|
||||||
path: filePath,
|
|
||||||
stream: (async function* () {
|
|
||||||
yield new TextEncoder().encode("after");
|
|
||||||
})(),
|
|
||||||
},
|
|
||||||
ctx,
|
|
||||||
);
|
|
||||||
|
|
||||||
for (const filePath of [
|
|
||||||
"final-link.txt",
|
|
||||||
"hard-link.txt",
|
|
||||||
"escape-directory/outside.txt",
|
|
||||||
"escape-directory/nested/outside.txt",
|
|
||||||
"../outside.txt",
|
|
||||||
]) {
|
|
||||||
await expect(streamed(filePath)).rejects.toThrow();
|
|
||||||
}
|
|
||||||
expect(await readFile(outsideFile, "utf8")).toBe("outside-before");
|
|
||||||
await expect(readFile(path.join(outsideDirectory, "outside.txt"))).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
await expect(readFile(path.join(outsideDirectory, "nested"))).rejects.toMatchObject({
|
|
||||||
code: "ENOENT",
|
|
||||||
});
|
|
||||||
|
|
||||||
await streamed("notes/result.txt");
|
|
||||||
expect(await readFile(path.join(computer.providerRef, "notes/result.txt"), "utf8")).toBe(
|
|
||||||
"after",
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("removes a streamed file whose source fails part-way", async () => {
|
|
||||||
const { desktop, computer } = await fixture("streamed-failure");
|
|
||||||
const target = path.join(computer.providerRef, "clip.mp4");
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
desktop.writeFileStream(
|
|
||||||
computer,
|
|
||||||
{
|
|
||||||
path: "clip.mp4",
|
|
||||||
stream: (async function* () {
|
|
||||||
yield new Uint8Array(1024);
|
|
||||||
throw new Error("store read failed");
|
|
||||||
})(),
|
|
||||||
},
|
|
||||||
ctx,
|
|
||||||
),
|
|
||||||
).rejects.toThrow("store read failed");
|
|
||||||
expect(await pathExists(target)).toBe(false);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("still creates and replaces ordinary workspace files", async () => {
|
|
||||||
const { desktop, computer } = await fixture("ordinary-files");
|
|
||||||
|
|
||||||
await desktop.writeFile(computer, {
|
|
||||||
path: "notes/result.txt",
|
|
||||||
content: new TextEncoder().encode("first"),
|
|
||||||
});
|
|
||||||
await desktop.writeFile(computer, {
|
|
||||||
path: "notes/result.txt",
|
|
||||||
content: new TextEncoder().encode("second"),
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(await readFile(path.join(computer.providerRef, "notes/result.txt"), "utf8")).toBe(
|
|
||||||
"second",
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -200,7 +200,7 @@ async function runOnce(options: FixtureOptions = {}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe("run instructions", () => {
|
describe("run instructions", () => {
|
||||||
it("opens with the identity, keeps custom instructions, then the user's time and profile", async () => {
|
it("opens with the identity, keeps custom instructions and the profile, and ends with the time", async () => {
|
||||||
const { request } = await runOnce({
|
const { request } = await runOnce({
|
||||||
peers: [{ id: "bot-2", name: "Planner", title: "Plans", description: "" }],
|
peers: [{ id: "bot-2", name: "Planner", title: "Plans", description: "" }],
|
||||||
});
|
});
|
||||||
@ -209,9 +209,9 @@ describe("run instructions", () => {
|
|||||||
const order = [
|
const order = [
|
||||||
"You are Builder — Builds things.\nTurns plans into working steps.",
|
"You are Builder — Builds things.\nTurns plans into working steps.",
|
||||||
"Answer in short sentences.",
|
"Answer in short sentences.",
|
||||||
"the user's time zone",
|
|
||||||
"<user>",
|
"<user>",
|
||||||
"<teammate_directory>",
|
"<teammate_directory>",
|
||||||
|
"the user's time zone",
|
||||||
].map((part) => instructions.indexOf(part));
|
].map((part) => instructions.indexOf(part));
|
||||||
expect(order.every((index) => index >= 0)).toBe(true);
|
expect(order.every((index) => index >= 0)).toBe(true);
|
||||||
expect([...order].sort((a, b) => a - b)).toEqual(order);
|
expect([...order].sort((a, b) => a - b)).toEqual(order);
|
||||||
|
|||||||
@ -88,6 +88,22 @@ describe("host-aware sandbox", () => {
|
|||||||
await desktop.destroy(computer, ctx);
|
await desktop.destroy(computer, ctx);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("reads and writes host files outside the bot computer home on desktop", async () => {
|
||||||
|
const desktop = new DesktopSandboxProvider();
|
||||||
|
const home = path.join(hostRoot, "files-home");
|
||||||
|
const computer = await desktop.provision({ botId: "files", homePath: home }, ctx);
|
||||||
|
const outside = path.join(hostRoot, "notes", "todo.txt");
|
||||||
|
await desktop.writeFile(computer, {
|
||||||
|
path: outside,
|
||||||
|
content: new TextEncoder().encode("milk"),
|
||||||
|
});
|
||||||
|
expect(new TextDecoder().decode(await desktop.readFile(computer, outside, ctx))).toBe("milk");
|
||||||
|
expect(await desktop.listFiles(computer, path.dirname(outside), ctx)).toEqual([
|
||||||
|
expect.objectContaining({ kind: "file", size: 4 }),
|
||||||
|
]);
|
||||||
|
await desktop.destroy(computer, ctx);
|
||||||
|
});
|
||||||
|
|
||||||
it("keeps shell cwd inside the bot computer home", async () => {
|
it("keeps shell cwd inside the bot computer home", async () => {
|
||||||
const desktop = new DesktopSandboxProvider();
|
const desktop = new DesktopSandboxProvider();
|
||||||
const computer = await desktop.provision({ botId: "inside", homePath: "/tmp/inside" }, ctx);
|
const computer = await desktop.provision({ botId: "inside", homePath: "/tmp/inside" }, ctx);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import { listPiperVoices, PIPER_MODELS, piperBaseUrl, synthesizePiper } from "./
|
|||||||
|
|
||||||
const GERMAN_TEXT_RE =
|
const GERMAN_TEXT_RE =
|
||||||
/[äöüß]|(?:\b(?:und|der|die|das|ist|nicht|für|mit|den|dem|des|ein|eine|ich|wir|hier|bitte|oder|hallo|projekt|habe|sind|wird)\b)/i;
|
/[äöüß]|(?:\b(?:und|der|die|das|ist|nicht|für|mit|den|dem|des|ein|eine|ich|wir|hier|bitte|oder|hallo|projekt|habe|sind|wird)\b)/i;
|
||||||
|
|
||||||
import {
|
import {
|
||||||
readVoiceAudio,
|
readVoiceAudio,
|
||||||
readVoiceJson,
|
readVoiceJson,
|
||||||
|
|||||||
@ -125,6 +125,7 @@ async function runWithModel(
|
|||||||
provider: string;
|
provider: string;
|
||||||
id: string;
|
id: string;
|
||||||
} | null>,
|
} | null>,
|
||||||
|
prompt = "Investigate why the nightly build fails.",
|
||||||
) {
|
) {
|
||||||
const runtime = new PiAgentRuntime();
|
const runtime = new PiAgentRuntime();
|
||||||
for await (const _event of runtime.run(
|
for await (const _event of runtime.run(
|
||||||
@ -132,7 +133,7 @@ async function runWithModel(
|
|||||||
botId: "b",
|
botId: "b",
|
||||||
threadId: "t",
|
threadId: "t",
|
||||||
runId: "r",
|
runId: "r",
|
||||||
prompt: "hello",
|
prompt,
|
||||||
instructions: "",
|
instructions: "",
|
||||||
history: [],
|
history: [],
|
||||||
tools: builtinAgentTools.filter((tool) => tool.name === "run_subagent"),
|
tools: builtinAgentTools.filter((tool) => tool.name === "run_subagent"),
|
||||||
@ -175,6 +176,20 @@ describe("Pi agent thinking level", () => {
|
|||||||
expect(levels.every((level) => level !== "off")).toBe(true);
|
expect(levels.every((level) => level !== "off")).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("starts short conversational turns at low reasoning, never off", async () => {
|
||||||
|
const levels = await runWithModel(
|
||||||
|
"reasoning-model",
|
||||||
|
"test",
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
"hello",
|
||||||
|
);
|
||||||
|
expect(levels).toEqual(["low", "medium"]);
|
||||||
|
});
|
||||||
|
|
||||||
it("gives subagents the parent's shared context without its full instructions", async () => {
|
it("gives subagents the parent's shared context without its full instructions", async () => {
|
||||||
fakeAgentState.subagentArgs = { name: "scout", task: "help", instructions: "Be brief." };
|
fakeAgentState.subagentArgs = { name: "scout", task: "help", instructions: "Be brief." };
|
||||||
const runtime = new PiAgentRuntime();
|
const runtime = new PiAgentRuntime();
|
||||||
|
|||||||
@ -56,7 +56,7 @@ describe.each([
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (provider instanceof DesktopSandboxProvider) {
|
if (provider instanceof DesktopSandboxProvider) {
|
||||||
await provider.writeFile(computer, escapingFile, context);
|
await provider.writeFile(computer, escapingFile);
|
||||||
expect(
|
expect(
|
||||||
new TextDecoder().decode(await provider.readFile(computer, "../outside.txt", context)),
|
new TextDecoder().decode(await provider.readFile(computer, "../outside.txt", context)),
|
||||||
).toBe("nope");
|
).toBe("nope");
|
||||||
|
|||||||
@ -48,7 +48,7 @@ export class ContactsBrowserFixture extends FakeBrowserProvider {
|
|||||||
for (const action of request.actions) {
|
for (const action of request.actions) {
|
||||||
const target = this.observed
|
const target = this.observed
|
||||||
.get(pageBrowserSessionKey(computer, context))
|
.get(pageBrowserSessionKey(computer, context))
|
||||||
?.elements.find((node) => node.ref === action.ref);
|
?.elements.find((node) => "ref" in action && node.ref === action.ref);
|
||||||
const result = await super.act(computer, { actions: [action] }, context);
|
const result = await super.act(computer, { actions: [action] }, context);
|
||||||
if (result.elements && result.tree !== undefined) {
|
if (result.elements && result.tree !== undefined) {
|
||||||
this.observed.set(pageBrowserSessionKey(computer, context), {
|
this.observed.set(pageBrowserSessionKey(computer, context), {
|
||||||
|
|||||||
@ -98,7 +98,7 @@ export const lightTokens = {
|
|||||||
mutedForeground: "#67676C",
|
mutedForeground: "#67676C",
|
||||||
accent: "#ECECE8",
|
accent: "#ECECE8",
|
||||||
accentForeground: "#1A1A1A",
|
accentForeground: "#1A1A1A",
|
||||||
destructive: "#DC2626",
|
destructive: "#CC2020",
|
||||||
destructiveForeground: "#FFFFFF",
|
destructiveForeground: "#FFFFFF",
|
||||||
border: "#E5E5E0",
|
border: "#E5E5E0",
|
||||||
input: "#DADAD4",
|
input: "#DADAD4",
|
||||||
|
|||||||
@ -81,7 +81,7 @@
|
|||||||
--muted-foreground: #67676c;
|
--muted-foreground: #67676c;
|
||||||
--accent: #ecece8;
|
--accent: #ecece8;
|
||||||
--accent-foreground: #1a1a1a;
|
--accent-foreground: #1a1a1a;
|
||||||
--destructive: #dc2626;
|
--destructive: #cc2020;
|
||||||
--destructive-foreground: #ffffff;
|
--destructive-foreground: #ffffff;
|
||||||
--border: #e5e5e0;
|
--border: #e5e5e0;
|
||||||
--input: #dadad4;
|
--input: #dadad4;
|
||||||
|
|||||||
385
pnpm-lock.yaml
generated
385
pnpm-lock.yaml
generated
@ -124,10 +124,10 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@expo/metro-runtime':
|
'@expo/metro-runtime':
|
||||||
specifier: 57.0.17
|
specifier: 57.0.17
|
||||||
version: 57.0.17(@expo/log-box@57.0.4)(expo@57.0.30)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.17(@expo/log-box@57.0.4)(expo@57.0.31)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/ui':
|
'@expo/ui':
|
||||||
specifier: 57.0.25
|
specifier: 57.0.26
|
||||||
version: 57.0.25(@babel/core@7.29.7)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(expo@57.0.30)(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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.26(@babel/core@7.29.7)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(expo@57.0.31)(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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@rakazo/chat-ui':
|
'@rakazo/chat-ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/chat-ui
|
version: link:../../packages/chat-ui
|
||||||
@ -142,73 +142,73 @@ importers:
|
|||||||
version: link:../../packages/ui-tokens
|
version: link:../../packages/ui-tokens
|
||||||
'@react-native-vector-icons/ionicons':
|
'@react-native-vector-icons/ionicons':
|
||||||
specifier: 13.1.4
|
specifier: 13.1.4
|
||||||
version: 13.1.4(@expo/config-plugins@57.0.10(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 13.1.4(@expo/config-plugins@57.0.11(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@react-native-vector-icons/material-design-icons':
|
'@react-native-vector-icons/material-design-icons':
|
||||||
specifier: 13.1.4
|
specifier: 13.1.4
|
||||||
version: 13.1.4(@expo/config-plugins@57.0.10(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 13.1.4(@expo/config-plugins@57.0.11(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo:
|
expo:
|
||||||
specifier: 57.0.30
|
specifier: 57.0.31
|
||||||
version: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
version: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-application:
|
expo-application:
|
||||||
specifier: 57.0.3
|
specifier: 57.0.3
|
||||||
version: 57.0.3(expo@57.0.30)
|
version: 57.0.3(expo@57.0.31)
|
||||||
expo-audio:
|
expo-audio:
|
||||||
specifier: 57.0.5
|
specifier: 57.0.5
|
||||||
version: 57.0.5(expo-asset@57.0.20(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3))(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.5(expo-asset@57.0.20(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3))(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-clipboard:
|
expo-clipboard:
|
||||||
specifier: 57.0.2
|
specifier: 57.0.2
|
||||||
version: 57.0.2(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.2(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-constants:
|
expo-constants:
|
||||||
specifier: 57.0.22
|
specifier: 57.0.22
|
||||||
version: 57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
version: 57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
expo-document-picker:
|
expo-document-picker:
|
||||||
specifier: 57.0.3
|
specifier: 57.0.3
|
||||||
version: 57.0.3(expo@57.0.30)
|
version: 57.0.3(expo@57.0.31)
|
||||||
expo-file-system:
|
expo-file-system:
|
||||||
specifier: 57.0.7
|
specifier: 57.0.7
|
||||||
version: 57.0.7(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
version: 57.0.7(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
expo-font:
|
expo-font:
|
||||||
specifier: 57.0.4
|
specifier: 57.0.4
|
||||||
version: 57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-image-picker:
|
expo-image-picker:
|
||||||
specifier: 57.0.20
|
specifier: 57.0.20
|
||||||
version: 57.0.20(expo@57.0.30)
|
version: 57.0.20(expo@57.0.31)
|
||||||
expo-keep-awake:
|
expo-keep-awake:
|
||||||
specifier: 57.0.2
|
specifier: 57.0.2
|
||||||
version: 57.0.2(expo@57.0.30)(react@19.2.3)
|
version: 57.0.2(expo@57.0.31)(react@19.2.3)
|
||||||
expo-linking:
|
expo-linking:
|
||||||
specifier: 57.0.13
|
specifier: 57.0.13
|
||||||
version: 57.0.13(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.13(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-localization:
|
expo-localization:
|
||||||
specifier: 57.0.2
|
specifier: 57.0.2
|
||||||
version: 57.0.2(expo@57.0.30)(react@19.2.3)
|
version: 57.0.2(expo@57.0.31)(react@19.2.3)
|
||||||
expo-modules-core:
|
expo-modules-core:
|
||||||
specifier: 57.0.23
|
specifier: 57.0.24
|
||||||
version: 57.0.23(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.24(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-notifications:
|
expo-notifications:
|
||||||
specifier: 57.0.23
|
specifier: 57.0.24
|
||||||
version: 57.0.23(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
version: 57.0.24(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-router:
|
expo-router:
|
||||||
specifier: 57.0.28
|
specifier: 57.0.29
|
||||||
version: 57.0.28(g4j4eccbq55cdx6seppnbr26mi)
|
version: 57.0.29(hxvmgldwlh3qxc7bmblv6vntvy)
|
||||||
expo-secure-store:
|
expo-secure-store:
|
||||||
specifier: 57.0.4
|
specifier: 57.0.4
|
||||||
version: 57.0.4(expo@57.0.30)
|
version: 57.0.4(expo@57.0.31)
|
||||||
expo-sharing:
|
expo-sharing:
|
||||||
specifier: 57.0.23
|
specifier: 57.0.24
|
||||||
version: 57.0.23(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
version: 57.0.24(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-splash-screen:
|
expo-splash-screen:
|
||||||
specifier: 57.0.10
|
specifier: 57.0.10
|
||||||
version: 57.0.10(expo@57.0.30)(typescript@6.0.3)
|
version: 57.0.10(expo@57.0.31)(typescript@6.0.3)
|
||||||
expo-status-bar:
|
expo-status-bar:
|
||||||
specifier: 57.0.1
|
specifier: 57.0.1
|
||||||
version: 57.0.1(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.1(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-symbols:
|
expo-symbols:
|
||||||
specifier: 57.0.3
|
specifier: 57.0.3
|
||||||
version: 57.0.3(expo-font@57.0.4)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.3(expo-font@57.0.4)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-updates:
|
expo-updates:
|
||||||
specifier: 57.0.26
|
specifier: 57.0.26
|
||||||
version: 57.0.26(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 57.0.26(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react:
|
react:
|
||||||
specifier: 19.2.3
|
specifier: 19.2.3
|
||||||
version: 19.2.3
|
version: 19.2.3
|
||||||
@ -688,7 +688,7 @@ importers:
|
|||||||
version: link:../ui-tokens
|
version: link:../ui-tokens
|
||||||
'@ronradtke/react-native-markdown-display':
|
'@ronradtke/react-native-markdown-display':
|
||||||
specifier: 9.0.3
|
specifier: 9.0.3
|
||||||
version: 9.0.3(@expo/config-plugins@57.0.10(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
version: 9.0.3(@expo/config-plugins@57.0.11(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react-markdown:
|
react-markdown:
|
||||||
specifier: 10.1.0
|
specifier: 10.1.0
|
||||||
version: 10.1.0(@types/react@19.2.18)(react@19.2.3)
|
version: 10.1.0(@types/react@19.2.18)(react@19.2.3)
|
||||||
@ -2198,8 +2198,8 @@ packages:
|
|||||||
'@expo-google-fonts/material-symbols@0.4.43':
|
'@expo-google-fonts/material-symbols@0.4.43':
|
||||||
resolution: {integrity: sha512-jJzgVcbkJnl48X5iBFNaL5CQHwoBElJapl8unc2Ri8DnyuBR+gRiuAD4gu3ESZjjo3sknIoYIwloOsWzKbLknQ==}
|
resolution: {integrity: sha512-jJzgVcbkJnl48X5iBFNaL5CQHwoBElJapl8unc2Ri8DnyuBR+gRiuAD4gu3ESZjjo3sknIoYIwloOsWzKbLknQ==}
|
||||||
|
|
||||||
'@expo/cli@57.0.31':
|
'@expo/cli@57.0.32':
|
||||||
resolution: {integrity: sha512-NPTMPGQ9i3KzULyP1bzp8hMggoe3QlkfICw388zJuj0UhqfGHEZURkJFuHBksb/ndTjfrCrCBOO0HQz/9QzXIw==}
|
resolution: {integrity: sha512-3p1qL/pvWblGNwDE1bt2wh/NUiGpSer61s5GKKFfpEpBkZTYnqve0pdK1UvEFzJGT6PW9vX2RofQQ2LP6MgvDQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
expo: '*'
|
expo: '*'
|
||||||
@ -2217,6 +2217,9 @@ packages:
|
|||||||
'@expo/config-plugins@57.0.10':
|
'@expo/config-plugins@57.0.10':
|
||||||
resolution: {integrity: sha512-XFcj01blofSohoOxibrPsrsFPt2gAigrcWE3s6Vg+rSHvP9QVEfnyfmJNVsuIVT0EjY/1rZVJ4SajNDR5cJjpA==}
|
resolution: {integrity: sha512-XFcj01blofSohoOxibrPsrsFPt2gAigrcWE3s6Vg+rSHvP9QVEfnyfmJNVsuIVT0EjY/1rZVJ4SajNDR5cJjpA==}
|
||||||
|
|
||||||
|
'@expo/config-plugins@57.0.11':
|
||||||
|
resolution: {integrity: sha512-lnNF0cNXqLQPpQVeb/AAu7O0KhdwMFx99rJkO11mrd0IbQDhnOVObpgaR/Ja2D1jAOoKuqk55jwS4l+ZD1j7aw==}
|
||||||
|
|
||||||
'@expo/config-types@57.0.2':
|
'@expo/config-types@57.0.2':
|
||||||
resolution: {integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==}
|
resolution: {integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==}
|
||||||
|
|
||||||
@ -2322,8 +2325,8 @@ packages:
|
|||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@expo/router-server@57.0.13':
|
'@expo/router-server@57.0.14':
|
||||||
resolution: {integrity: sha512-A25869lSp6916GiYjz1y1S/Kfi5qn7S1xepycFv8x8VOrulLBbv0byXl6o3BSLh5nLBx5RiMTjBFM2u+K7JsrA==}
|
resolution: {integrity: sha512-8776d+wDmkGCg0KqefAb/zwu5s2ieRg5UK3CbltrplhdzIXf+BDBlttu9p9R+fBOxg+Rrf0HKedInjn83yEeFg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@expo/metro-runtime': ^57.0.17
|
'@expo/metro-runtime': ^57.0.17
|
||||||
expo: '*'
|
expo: '*'
|
||||||
@ -2357,8 +2360,8 @@ packages:
|
|||||||
'@expo/sudo-prompt@9.3.2':
|
'@expo/sudo-prompt@9.3.2':
|
||||||
resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==}
|
resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==}
|
||||||
|
|
||||||
'@expo/ui@57.0.25':
|
'@expo/ui@57.0.26':
|
||||||
resolution: {integrity: sha512-/BbxsKh/LSIFDnWAHRHfJdCcnqHY7WNcWXjld0soKnYXDUbImjvsFK7y5dqq2XZTbOMyf44BpgAWKUR/B8huCA==}
|
resolution: {integrity: sha512-sEvRjKK08nCq4sXo5PjDckA9OBpxFokCXs5MakWlI1wT1gQNvyliWn/Dwic8XC6YPTN/TbnEp2X/SEduD9+I3Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': '*'
|
'@babel/core': '*'
|
||||||
expo: '*'
|
expo: '*'
|
||||||
@ -2996,6 +2999,7 @@ packages:
|
|||||||
'@opentelemetry/propagator-jaeger@2.10.0':
|
'@opentelemetry/propagator-jaeger@2.10.0':
|
||||||
resolution: {integrity: sha512-yw/IX8DL470dSMZJoE82ScfYGp7JWZ/G8kFJo35ZILUVTB2jFPTOaioN+8s09pH0RHsWNhweVZb+ZnjJJpCChg==}
|
resolution: {integrity: sha512-yw/IX8DL470dSMZJoE82ScfYGp7JWZ/G8kFJo35ZILUVTB2jFPTOaioN+8s09pH0RHsWNhweVZb+ZnjJJpCChg==}
|
||||||
engines: {node: ^18.19.0 || >=20.6.0}
|
engines: {node: ^18.19.0 || >=20.6.0}
|
||||||
|
deprecated: Package no longer supported. See https://github.com/open-telemetry/opentelemetry-js/pull/7077
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||||
|
|
||||||
@ -3026,12 +3030,14 @@ packages:
|
|||||||
'@opentelemetry/sdk-trace-base@2.10.0':
|
'@opentelemetry/sdk-trace-base@2.10.0':
|
||||||
resolution: {integrity: sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==}
|
resolution: {integrity: sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==}
|
||||||
engines: {node: ^18.19.0 || >=20.6.0}
|
engines: {node: ^18.19.0 || >=20.6.0}
|
||||||
|
deprecated: Use @opentelemetry/sdk-trace package
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@opentelemetry/api': '>=1.3.0 <1.10.0'
|
'@opentelemetry/api': '>=1.3.0 <1.10.0'
|
||||||
|
|
||||||
'@opentelemetry/sdk-trace-node@2.10.0':
|
'@opentelemetry/sdk-trace-node@2.10.0':
|
||||||
resolution: {integrity: sha512-GZK/G6oZyBLGlH1pUgeDch7D91KoHd2uotUGIkWCPi9GI5T9X0p4L7nNAMDR1BQjkRYoDqo+ddfVx9t5Uhys+Q==}
|
resolution: {integrity: sha512-GZK/G6oZyBLGlH1pUgeDch7D91KoHd2uotUGIkWCPi9GI5T9X0p4L7nNAMDR1BQjkRYoDqo+ddfVx9t5Uhys+Q==}
|
||||||
engines: {node: ^18.19.0 || >=20.6.0}
|
engines: {node: ^18.19.0 || >=20.6.0}
|
||||||
|
deprecated: Use @opentelemetry/sdk-trace package
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||||
|
|
||||||
@ -6003,8 +6009,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-OJh6rMMIIZ/dfwOk2FufJjjsUSw5Boy1Y5Tl+zbBmua/FcD03eEg097dkYIf3iBHVkQ6q9eR08qT88qxvnelow==}
|
resolution: {integrity: sha512-OJh6rMMIIZ/dfwOk2FufJjjsUSw5Boy1Y5Tl+zbBmua/FcD03eEg097dkYIf3iBHVkQ6q9eR08qT88qxvnelow==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
expo-modules-core@57.0.23:
|
expo-modules-core@57.0.24:
|
||||||
resolution: {integrity: sha512-vZQoSlhqU6me5K4KCl42yXB0x3zqAiG2FAjzHmbuez77CslJJQ+82cmJoHC3tN5X8o/KxRArJejKNQIeciyoXA==}
|
resolution: {integrity: sha512-2AY+JgjZiWXIx1zXVhx2JaLEsZOH2NDAqJCSnPQyoCcUa9QEHAzpn2++omq+OvrsmsQCJcVrHe6cKz8FSnpLLQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
react-native: '*'
|
react-native: '*'
|
||||||
@ -6013,20 +6019,20 @@ packages:
|
|||||||
react-native-worklets:
|
react-native-worklets:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
expo-modules-jsi@57.1.2:
|
expo-modules-jsi@57.1.3:
|
||||||
resolution: {integrity: sha512-DYhBwO0fqcKIUma4jF16zRDP/m6ZbawEZbo4eX3gdekREIFqrrz8HKWXydgNUqOyOQcUkdrkZatxi2I9+V6E8g==}
|
resolution: {integrity: sha512-pwVO1gvObX2tpIjfJzGn86yBOmOBhMLxAD81n2SHnfZk6lvbbqQhag64MHEeh29E/8vg23/Dzmf3JTmJSwbQYQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react-native: '*'
|
react-native: '*'
|
||||||
|
|
||||||
expo-notifications@57.0.23:
|
expo-notifications@57.0.24:
|
||||||
resolution: {integrity: sha512-KdHROY5tvbzlDJImJKF91F8GRpV4hP+RLPC7NJgiFNyzb0clETpV0hJNdbFrfyubZf+cqx88+WuwFsH9Yl+kzg==}
|
resolution: {integrity: sha512-Hi5PBQlcrDDQ3MTqkH28NkUfeTvr80cXv1xUlvYaxy4AOmgkd3jDN1s7fWzaO5CYyb42BC5mPlIin6C3DJJzxA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
expo: '*'
|
expo: '*'
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
react-native: '*'
|
react-native: '*'
|
||||||
|
|
||||||
expo-router@57.0.28:
|
expo-router@57.0.29:
|
||||||
resolution: {integrity: sha512-KrW7dGtZ1A9ocpt/Gq1RKczfoAkJ+2LrxweVcEq/FZcJ+eFsaKC9f60ER3uzWJ9n9mb+dbeSPewYOMzG6KMK2Q==}
|
resolution: {integrity: sha512-jm3ZVLm40zZc7XpfvGjZqgoaWjNOEht5mXAxi5RC8gqUQxSq4PRTMy49TXsYlDncVPZFgFPXaE2vOLrsv7Cpsw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@expo/log-box': ^57.0.4
|
'@expo/log-box': ^57.0.4
|
||||||
'@expo/metro-runtime': ^57.0.17
|
'@expo/metro-runtime': ^57.0.17
|
||||||
@ -6066,8 +6072,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-aK+LdKzauHSGmsOStZtyxdzv0zWssCkxTw3m4QuOhfDSJsZaMRTd9O41d8ixU/QfELTbaJ0oRNcF7JFV/7O9YQ==}
|
resolution: {integrity: sha512-aK+LdKzauHSGmsOStZtyxdzv0zWssCkxTw3m4QuOhfDSJsZaMRTd9O41d8ixU/QfELTbaJ0oRNcF7JFV/7O9YQ==}
|
||||||
engines: {node: '>=20.16.0'}
|
engines: {node: '>=20.16.0'}
|
||||||
|
|
||||||
expo-sharing@57.0.23:
|
expo-sharing@57.0.24:
|
||||||
resolution: {integrity: sha512-fN+jrqoWwOpIo+X4utiu/ayCWym23DMgvrTJUHoopkBeO6rEa79ZY4f6ApOlRxvEx2NgQgJEQX+cbPJrjOSRog==}
|
resolution: {integrity: sha512-q3+9V8Xa41S4KWe0bq2e2FuByeVBHu04G3lk5TqS030fWe3QdNHeSEbUn51RqxfcxMPa53NWVkVYP967xqtL3w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
expo: '*'
|
expo: '*'
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
@ -6113,8 +6119,8 @@ packages:
|
|||||||
expo-dev-client:
|
expo-dev-client:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
expo@57.0.30:
|
expo@57.0.31:
|
||||||
resolution: {integrity: sha512-dpNWbsqiAHkgInOBClv5PxKCSMAly1n0oBVoIjS/yv8LQtRgDqSkWAnJq16cExndKrgONxdItY+O3J8u6MNYlw==}
|
resolution: {integrity: sha512-+9AJvHZMLIY/Tv6r5Tpu84vWfI75FBTnineYqjjlHAU138IPg2gYQKn9FQFetCB9YScwyc7STk7WGHSCHAdTiQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@expo/dom-webview': '*'
|
'@expo/dom-webview': '*'
|
||||||
@ -8243,8 +8249,8 @@ packages:
|
|||||||
'@types/react': '>=18'
|
'@types/react': '>=18'
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
|
|
||||||
react-native-drawer-layout@4.2.10:
|
react-native-drawer-layout@4.2.12:
|
||||||
resolution: {integrity: sha512-O6TQdZ5LSm3dqnuR4rX9KPtE+9dVg7jsezEYz1l01rkQTe4fQvYZIoPu2sZFl5X2N70uhRdjnPULySVR3sBUwA==}
|
resolution: {integrity: sha512-qYmntEctkMSodN7pnC2llV21nswImLFPHJeT3PJXSJqZdU4jzDATR8iVi66sXkrtoOLJ2+EvXxgd7sMMpV4ViA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
react-native: '*'
|
react-native: '*'
|
||||||
@ -9723,6 +9729,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==}
|
resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
|
|
||||||
|
xcode@4.0.0:
|
||||||
|
resolution: {integrity: sha512-dDaoWzc9EP2fp9FS9PVZUkyvFxY4y1TOV9pcKaKLk++Ei/qb97XDFEVP7GnW7Osii/TzVABJ0jq2F+9/lq0TVA==}
|
||||||
|
engines: {node: '>=14.17.0'}
|
||||||
|
|
||||||
xdg-app-paths@5.5.1:
|
xdg-app-paths@5.5.1:
|
||||||
resolution: {integrity: sha512-hI3flOB4PLZIy5prbtTpirobtPE2ZtZ52szO+2mM9Efp6ErM398La+C1lIpNWDfNoQk+6Lsi6nMcCwVB7pxeMQ==}
|
resolution: {integrity: sha512-hI3flOB4PLZIy5prbtTpirobtPE2ZtZ52szO+2mM9Efp6ErM398La+C1lIpNWDfNoQk+6Lsi6nMcCwVB7pxeMQ==}
|
||||||
engines: {node: '>= 6.0'}
|
engines: {node: '>= 6.0'}
|
||||||
@ -11407,26 +11417,26 @@ snapshots:
|
|||||||
|
|
||||||
'@expo-google-fonts/material-symbols@0.4.43': {}
|
'@expo-google-fonts/material-symbols@0.4.43': {}
|
||||||
|
|
||||||
'@expo/cli@57.0.31(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.28)(expo@57.0.30)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)':
|
'@expo/cli@57.0.32(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.29)(expo@57.0.31)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/code-signing-certificates': 0.0.6
|
'@expo/code-signing-certificates': 0.0.6
|
||||||
'@expo/config': 57.0.10(typescript@6.0.3)
|
'@expo/config': 57.0.10(typescript@6.0.3)
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
'@expo/devcert': 1.2.1
|
'@expo/devcert': 1.2.1
|
||||||
'@expo/env': 2.4.3
|
'@expo/env': 2.4.3
|
||||||
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
||||||
'@expo/inline-modules': 0.1.8(typescript@6.0.3)
|
'@expo/inline-modules': 0.1.8(typescript@6.0.3)
|
||||||
'@expo/json-file': 11.0.1
|
'@expo/json-file': 11.0.1
|
||||||
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/metro': 56.0.2
|
'@expo/metro': 56.0.2
|
||||||
'@expo/metro-config': 57.0.13(expo@57.0.30)(typescript@6.0.3)
|
'@expo/metro-config': 57.0.13(expo@57.0.31)(typescript@6.0.3)
|
||||||
'@expo/metro-file-map': 57.0.4
|
'@expo/metro-file-map': 57.0.4
|
||||||
'@expo/osascript': 2.7.1
|
'@expo/osascript': 2.7.1
|
||||||
'@expo/package-manager': 1.13.1
|
'@expo/package-manager': 1.13.1
|
||||||
'@expo/plist': 0.8.1
|
'@expo/plist': 0.8.1
|
||||||
'@expo/prebuild-config': 57.0.19(typescript@6.0.3)
|
'@expo/prebuild-config': 57.0.19(typescript@6.0.3)
|
||||||
'@expo/require-utils': 57.0.6(typescript@6.0.3)
|
'@expo/require-utils': 57.0.6(typescript@6.0.3)
|
||||||
'@expo/router-server': 57.0.13(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.28)(expo-server@57.0.3)(expo@57.0.30)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
'@expo/router-server': 57.0.14(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.29)(expo-server@57.0.3)(expo@57.0.31)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/schema-utils': 57.0.2
|
'@expo/schema-utils': 57.0.2
|
||||||
'@expo/spawn-async': 1.8.0
|
'@expo/spawn-async': 1.8.0
|
||||||
'@expo/ws-tunnel': 2.0.0(ws@8.21.3)
|
'@expo/ws-tunnel': 2.0.0(ws@8.21.3)
|
||||||
@ -11443,7 +11453,7 @@ snapshots:
|
|||||||
connect: 3.7.0
|
connect: 3.7.0
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
dnssd-advertise: 1.1.6
|
dnssd-advertise: 1.1.6
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-server: 57.0.3
|
expo-server: 57.0.3
|
||||||
fetch-nodeshim: 0.4.10
|
fetch-nodeshim: 0.4.10
|
||||||
getenv: 2.0.0
|
getenv: 2.0.0
|
||||||
@ -11470,7 +11480,7 @@ snapshots:
|
|||||||
ws: 8.21.3
|
ws: 8.21.3
|
||||||
zod: 3.25.76
|
zod: 3.25.76
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
expo-router: 57.0.28(g4j4eccbq55cdx6seppnbr26mi)
|
expo-router: 57.0.29(hxvmgldwlh3qxc7bmblv6vntvy)
|
||||||
react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@expo/dom-webview'
|
- '@expo/dom-webview'
|
||||||
@ -11508,7 +11518,26 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
'@expo/config-plugins@57.0.10(typescript@7.0.2)':
|
'@expo/config-plugins@57.0.11(typescript@6.0.3)':
|
||||||
|
dependencies:
|
||||||
|
'@expo/config-types': 57.0.2
|
||||||
|
'@expo/json-file': 11.0.1
|
||||||
|
'@expo/plist': 0.8.1
|
||||||
|
'@expo/require-utils': 57.0.6(typescript@6.0.3)
|
||||||
|
'@expo/sdk-runtime-versions': 1.0.0
|
||||||
|
chalk: 4.1.2
|
||||||
|
debug: 4.4.3
|
||||||
|
getenv: 2.0.0
|
||||||
|
glob: 13.0.6
|
||||||
|
semver: 7.8.5
|
||||||
|
slugify: 1.6.9
|
||||||
|
xcode: 4.0.0
|
||||||
|
xml2js: 0.6.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
- typescript
|
||||||
|
|
||||||
|
'@expo/config-plugins@57.0.11(typescript@7.0.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/config-types': 57.0.2
|
'@expo/config-types': 57.0.2
|
||||||
'@expo/json-file': 11.0.1
|
'@expo/json-file': 11.0.1
|
||||||
@ -11521,7 +11550,7 @@ snapshots:
|
|||||||
glob: 13.0.6
|
glob: 13.0.6
|
||||||
semver: 7.8.5
|
semver: 7.8.5
|
||||||
slugify: 1.6.9
|
slugify: 1.6.9
|
||||||
xcode: 3.0.1
|
xcode: 4.0.0
|
||||||
xml2js: 0.6.0
|
xml2js: 0.6.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -11532,7 +11561,7 @@ snapshots:
|
|||||||
|
|
||||||
'@expo/config@57.0.10(typescript@6.0.3)':
|
'@expo/config@57.0.10(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
'@expo/config-types': 57.0.2
|
'@expo/config-types': 57.0.2
|
||||||
'@expo/json-file': 11.0.1
|
'@expo/json-file': 11.0.1
|
||||||
'@expo/require-utils': 57.0.6(typescript@6.0.3)
|
'@expo/require-utils': 57.0.6(typescript@6.0.3)
|
||||||
@ -11560,9 +11589,9 @@ snapshots:
|
|||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
'@expo/dom-webview@57.0.1(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@expo/dom-webview@57.0.1(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
@ -11607,7 +11636,7 @@ snapshots:
|
|||||||
|
|
||||||
'@expo/inline-modules@0.1.8(typescript@6.0.3)':
|
'@expo/inline-modules@0.1.8(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
@ -11625,16 +11654,16 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
'@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/dom-webview': 57.0.1(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/dom-webview': 57.0.1(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
anser: 1.4.10
|
anser: 1.4.10
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
stacktrace-parser: 0.1.11
|
stacktrace-parser: 0.1.11
|
||||||
|
|
||||||
'@expo/metro-config@57.0.13(expo@57.0.30)(typescript@6.0.3)':
|
'@expo/metro-config@57.0.13(expo@57.0.31)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/code-frame': 7.29.7
|
'@babel/code-frame': 7.29.7
|
||||||
'@babel/core': 7.29.7
|
'@babel/core': 7.29.7
|
||||||
@ -11660,7 +11689,7 @@ snapshots:
|
|||||||
postcss: 8.5.28
|
postcss: 8.5.28
|
||||||
resolve-from: 5.0.0
|
resolve-from: 5.0.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bufferutil
|
- bufferutil
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -11677,11 +11706,11 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@expo/metro-runtime@57.0.17(@expo/log-box@57.0.4)(expo@57.0.30)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@expo/metro-runtime@57.0.17(@expo/log-box@57.0.4)(expo@57.0.31)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
anser: 1.4.10
|
anser: 1.4.10
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
pretty-format: 29.7.0
|
pretty-format: 29.7.0
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
@ -11733,7 +11762,7 @@ snapshots:
|
|||||||
'@expo/prebuild-config@57.0.19(typescript@6.0.3)':
|
'@expo/prebuild-config@57.0.19(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/config': 57.0.10(typescript@6.0.3)
|
'@expo/config': 57.0.10(typescript@6.0.3)
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
'@expo/config-types': 57.0.2
|
'@expo/config-types': 57.0.2
|
||||||
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
||||||
'@expo/json-file': 11.0.1
|
'@expo/json-file': 11.0.1
|
||||||
@ -11767,17 +11796,17 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@expo/router-server@57.0.13(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.28)(expo-server@57.0.3)(expo@57.0.30)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
|
'@expo/router-server@57.0.14(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.29)(expo-server@57.0.3)(expo@57.0.31)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-constants: 57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-constants: 57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
expo-font: 57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-font: 57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-server: 57.0.3
|
expo-server: 57.0.3
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@expo/metro-runtime': 57.0.17(@expo/log-box@57.0.4)(expo@57.0.30)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/metro-runtime': 57.0.17(@expo/log-box@57.0.4)(expo@57.0.31)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-router: 57.0.28(g4j4eccbq55cdx6seppnbr26mi)
|
expo-router: 57.0.29(hxvmgldwlh3qxc7bmblv6vntvy)
|
||||||
react-dom: 19.2.3(react@19.2.3)
|
react-dom: 19.2.3(react@19.2.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -11792,9 +11821,9 @@ snapshots:
|
|||||||
|
|
||||||
'@expo/sudo-prompt@9.3.2': {}
|
'@expo/sudo-prompt@9.3.2': {}
|
||||||
|
|
||||||
'@expo/ui@57.0.25(@babel/core@7.29.7)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(expo@57.0.30)(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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@expo/ui@57.0.26(@babel/core@7.29.7)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(expo@57.0.31)(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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
sf-symbols-typescript: 2.2.0
|
sf-symbols-typescript: 2.2.0
|
||||||
@ -13134,39 +13163,39 @@ snapshots:
|
|||||||
react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@react-native/assets-registry': 0.86.3
|
'@react-native/assets-registry': 0.86.3
|
||||||
expo-font: 57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-font: 57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
|
|
||||||
'@react-native-vector-icons/ionicons@13.1.4(@expo/config-plugins@57.0.10(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@react-native-vector-icons/ionicons@13.1.4(@expo/config-plugins@57.0.11(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@react-native-vector-icons/common': 13.0.3(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@react-native-vector-icons/common': 13.0.3(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@react-native-vector-icons/get-image'
|
- '@react-native-vector-icons/get-image'
|
||||||
- '@react-native/assets-registry'
|
- '@react-native/assets-registry'
|
||||||
- expo-font
|
- expo-font
|
||||||
|
|
||||||
'@react-native-vector-icons/material-design-icons@13.1.4(@expo/config-plugins@57.0.10(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@react-native-vector-icons/material-design-icons@13.1.4(@expo/config-plugins@57.0.11(typescript@6.0.3))(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@react-native-vector-icons/common': 13.0.3(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@react-native-vector-icons/common': 13.0.3(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@react-native-vector-icons/get-image'
|
- '@react-native-vector-icons/get-image'
|
||||||
- '@react-native/assets-registry'
|
- '@react-native/assets-registry'
|
||||||
- expo-font
|
- expo-font
|
||||||
|
|
||||||
'@react-native-vector-icons/material-design-icons@13.1.4(@expo/config-plugins@57.0.10(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@react-native-vector-icons/material-design-icons@13.1.4(@expo/config-plugins@57.0.11(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@react-native-vector-icons/common': 13.0.3(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@react-native-vector-icons/common': 13.0.3(@react-native/assets-registry@0.86.3)(expo-font@57.0.4)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@expo/config-plugins': 57.0.10(typescript@7.0.2)
|
'@expo/config-plugins': 57.0.11(typescript@7.0.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@react-native-vector-icons/get-image'
|
- '@react-native-vector-icons/get-image'
|
||||||
- '@react-native/assets-registry'
|
- '@react-native/assets-registry'
|
||||||
@ -13372,9 +13401,9 @@ snapshots:
|
|||||||
|
|
||||||
'@rolldown/pluginutils@1.0.1': {}
|
'@rolldown/pluginutils@1.0.1': {}
|
||||||
|
|
||||||
'@ronradtke/react-native-markdown-display@9.0.3(@expo/config-plugins@57.0.10(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
'@ronradtke/react-native-markdown-display@9.0.3(@expo/config-plugins@57.0.11(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@react-native-vector-icons/material-design-icons': 13.1.4(@expo/config-plugins@57.0.10(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@react-native-vector-icons/material-design-icons': 13.1.4(@expo/config-plugins@57.0.11(typescript@7.0.2))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
css-to-react-native: 3.2.0
|
css-to-react-native: 3.2.0
|
||||||
markdown-it: 14.3.0
|
markdown-it: 14.3.0
|
||||||
markdown-it-ins: 4.0.0
|
markdown-it-ins: 4.0.0
|
||||||
@ -14537,7 +14566,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
|
|
||||||
babel-preset-expo@57.0.16(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo@57.0.30)(react-refresh@0.14.2):
|
babel-preset-expo@57.0.16(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo@57.0.31)(react-refresh@0.14.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/generator': 7.29.8
|
'@babel/generator': 7.29.8
|
||||||
'@babel/helper-module-imports': 7.29.7
|
'@babel/helper-module-imports': 7.29.7
|
||||||
@ -14584,7 +14613,7 @@ snapshots:
|
|||||||
react-refresh: 0.14.2
|
react-refresh: 0.14.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@babel/runtime': 7.29.7
|
'@babel/runtime': 7.29.7
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -15856,85 +15885,85 @@ snapshots:
|
|||||||
|
|
||||||
expect-type@1.4.0: {}
|
expect-type@1.4.0: {}
|
||||||
|
|
||||||
expo-application@57.0.3(expo@57.0.30):
|
expo-application@57.0.3(expo@57.0.31):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
|
|
||||||
expo-asset@57.0.20(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
expo-asset@57.0.20(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-constants: 57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-constants: 57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
expo-audio@57.0.5(expo-asset@57.0.20(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3))(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-audio@57.0.5(expo-asset@57.0.20(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3))(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-asset: 57.0.20(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo-asset: 57.0.20(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
expo-clipboard@57.0.2(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-clipboard@57.0.2(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
expo-constants@57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3)):
|
expo-constants@57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/env': 2.4.3
|
'@expo/env': 2.4.3
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
expo-document-picker@57.0.3(expo@57.0.30):
|
expo-document-picker@57.0.3(expo@57.0.31):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
|
|
||||||
expo-eas-client@57.0.5: {}
|
expo-eas-client@57.0.5: {}
|
||||||
|
|
||||||
expo-file-system@57.0.7(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3)):
|
expo-file-system@57.0.7(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
expo-font@57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-font@57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
fontfaceobserver: 2.3.0
|
fontfaceobserver: 2.3.0
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
expo-glass-effect@57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-glass-effect@57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
expo-image-loader@57.0.1(expo@57.0.30):
|
expo-image-loader@57.0.1(expo@57.0.31):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
|
|
||||||
expo-image-picker@57.0.20(expo@57.0.30):
|
expo-image-picker@57.0.20(expo@57.0.31):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-image-loader: 57.0.1(expo@57.0.30)
|
expo-image-loader: 57.0.1(expo@57.0.31)
|
||||||
|
|
||||||
expo-json-utils@57.0.2: {}
|
expo-json-utils@57.0.2: {}
|
||||||
|
|
||||||
expo-keep-awake@57.0.2(expo@57.0.30)(react@19.2.3):
|
expo-keep-awake@57.0.2(expo@57.0.31)(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
|
|
||||||
expo-linking@57.0.13(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-linking@57.0.13(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo-constants: 57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-constants: 57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
invariant: 2.2.4
|
invariant: 2.2.4
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
@ -15942,15 +15971,15 @@ snapshots:
|
|||||||
- expo
|
- expo
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
expo-localization@57.0.2(expo@57.0.30)(react@19.2.3):
|
expo-localization@57.0.2(expo@57.0.31)(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
rtl-detect: 1.1.2
|
rtl-detect: 1.1.2
|
||||||
|
|
||||||
expo-manifests@57.0.2(expo@57.0.30):
|
expo-manifests@57.0.2(expo@57.0.31):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-json-utils: 57.0.2
|
expo-json-utils: 57.0.2
|
||||||
|
|
||||||
expo-modules-autolinking@57.0.16(typescript@6.0.3):
|
expo-modules-autolinking@57.0.16(typescript@6.0.3):
|
||||||
@ -15963,40 +15992,40 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
expo-modules-core@57.0.23(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-modules-core@57.0.24(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/expo-modules-macros-plugin': 0.6.1
|
'@expo/expo-modules-macros-plugin': 0.6.1
|
||||||
expo-modules-jsi: 57.1.2(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-modules-jsi: 57.1.3(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
invariant: 2.2.4
|
invariant: 2.2.4
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
react-native-worklets: 0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
|
|
||||||
expo-modules-jsi@57.1.2(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3)):
|
expo-modules-jsi@57.1.3(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
expo-notifications@57.0.23(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
expo-notifications@57.0.24(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
||||||
abort-controller: 3.0.0
|
abort-controller: 3.0.0
|
||||||
badgin: 1.2.3
|
badgin: 1.2.3
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-application: 57.0.3(expo@57.0.30)
|
expo-application: 57.0.3(expo@57.0.31)
|
||||||
expo-constants: 57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-constants: 57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
expo-router@57.0.28(g4j4eccbq55cdx6seppnbr26mi):
|
expo-router@57.0.29(hxvmgldwlh3qxc7bmblv6vntvy):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/metro-runtime': 57.0.17(@expo/log-box@57.0.4)(expo@57.0.30)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/metro-runtime': 57.0.17(@expo/log-box@57.0.4)(expo@57.0.31)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/schema-utils': 57.0.2
|
'@expo/schema-utils': 57.0.2
|
||||||
'@expo/ui': 57.0.25(@babel/core@7.29.7)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(expo@57.0.30)(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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/ui': 57.0.26(@babel/core@7.29.7)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(expo@57.0.31)(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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.3)
|
'@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.3)
|
||||||
'@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
'@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
||||||
'@react-native-masked-view/masked-view': 0.3.2(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@react-native-masked-view/masked-view': 0.3.2(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
@ -16004,12 +16033,12 @@ snapshots:
|
|||||||
color: 4.2.3
|
color: 4.2.3
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
escape-string-regexp: 4.0.0
|
escape-string-regexp: 4.0.0
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-constants: 57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-constants: 57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
expo-glass-effect: 57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-glass-effect: 57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-linking: 57.0.13(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-linking: 57.0.13(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-server: 57.0.3
|
expo-server: 57.0.3
|
||||||
expo-symbols: 57.0.3(expo-font@57.0.4)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-symbols: 57.0.3(expo-font@57.0.4)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
fast-deep-equal: 3.1.3
|
fast-deep-equal: 3.1.3
|
||||||
invariant: 2.2.4
|
invariant: 2.2.4
|
||||||
nanoid: 3.3.18
|
nanoid: 3.3.18
|
||||||
@ -16018,7 +16047,7 @@ snapshots:
|
|||||||
react-fast-compare: 3.2.2
|
react-fast-compare: 3.2.2
|
||||||
react-is: 19.2.8
|
react-is: 19.2.8
|
||||||
react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
react-native-drawer-layout: 4.2.10(react-native-gesture-handler@2.32.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3))(react-native-reanimated@4.5.1(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
react-native-drawer-layout: 4.2.12(react-native-gesture-handler@2.32.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3))(react-native-reanimated@4.5.1(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react-native-safe-area-context: 5.7.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
react-native-safe-area-context: 5.7.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react-native-screens: 4.26.2(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
react-native-screens: 4.26.2(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
server-only: 0.0.1
|
server-only: 0.0.1
|
||||||
@ -16039,56 +16068,56 @@ snapshots:
|
|||||||
- react-native-worklets
|
- react-native-worklets
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
expo-secure-store@57.0.4(expo@57.0.30):
|
expo-secure-store@57.0.4(expo@57.0.31):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
|
|
||||||
expo-server@57.0.3: {}
|
expo-server@57.0.3: {}
|
||||||
|
|
||||||
expo-sharing@57.0.23(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
expo-sharing@57.0.24(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
'@expo/config-types': 57.0.2
|
'@expo/config-types': 57.0.2
|
||||||
'@expo/plist': 0.8.1
|
'@expo/plist': 0.8.1
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
expo-splash-screen@57.0.10(expo@57.0.30)(typescript@6.0.3):
|
expo-splash-screen@57.0.10(expo@57.0.31)(typescript@6.0.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
||||||
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
'@expo/image-utils': 0.11.6(typescript@6.0.3)
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
xml2js: 0.6.0
|
xml2js: 0.6.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
expo-status-bar@57.0.1(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-status-bar@57.0.1(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
|
|
||||||
expo-structured-headers@57.0.1: {}
|
expo-structured-headers@57.0.1: {}
|
||||||
|
|
||||||
expo-symbols@57.0.3(expo-font@57.0.4)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-symbols@57.0.3(expo-font@57.0.4)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo-google-fonts/material-symbols': 0.4.43
|
'@expo-google-fonts/material-symbols': 0.4.43
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-font: 57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-font: 57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
sf-symbols-typescript: 2.2.0
|
sf-symbols-typescript: 2.2.0
|
||||||
|
|
||||||
expo-updates-interface@57.0.2(expo@57.0.30):
|
expo-updates-interface@57.0.2(expo@57.0.31):
|
||||||
dependencies:
|
dependencies:
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
|
|
||||||
expo-updates@57.0.26(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
expo-updates@57.0.26(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/code-signing-certificates': 0.0.6
|
'@expo/code-signing-certificates': 0.0.6
|
||||||
'@expo/plist': 0.8.1
|
'@expo/plist': 0.8.1
|
||||||
@ -16096,11 +16125,11 @@ snapshots:
|
|||||||
arg: 4.1.3
|
arg: 4.1.3
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
expo: 57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo: 57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-eas-client: 57.0.5
|
expo-eas-client: 57.0.5
|
||||||
expo-manifests: 57.0.2(expo@57.0.30)
|
expo-manifests: 57.0.2(expo@57.0.31)
|
||||||
expo-structured-headers: 57.0.1
|
expo-structured-headers: 57.0.1
|
||||||
expo-updates-interface: 57.0.2(expo@57.0.30)
|
expo-updates-interface: 57.0.2(expo@57.0.31)
|
||||||
getenv: 2.0.0
|
getenv: 2.0.0
|
||||||
glob: 13.0.6
|
glob: 13.0.6
|
||||||
ignore: 5.3.2
|
ignore: 5.3.2
|
||||||
@ -16111,35 +16140,35 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
expo@57.0.30(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.28)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
expo@57.0.31(@babel/core@7.29.7)(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-router@57.0.29)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.29.7
|
'@babel/runtime': 7.29.7
|
||||||
'@expo/cli': 57.0.31(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.28)(expo@57.0.30)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
'@expo/cli': 57.0.32(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.17)(expo-constants@57.0.22)(expo-font@57.0.4)(expo-router@57.0.29)(expo@57.0.31)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
'@expo/config': 57.0.10(typescript@6.0.3)
|
'@expo/config': 57.0.10(typescript@6.0.3)
|
||||||
'@expo/config-plugins': 57.0.10(typescript@6.0.3)
|
'@expo/config-plugins': 57.0.11(typescript@6.0.3)
|
||||||
'@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/fingerprint': 0.20.14
|
'@expo/fingerprint': 0.20.14
|
||||||
'@expo/local-build-cache-provider': 57.0.9(typescript@6.0.3)
|
'@expo/local-build-cache-provider': 57.0.9(typescript@6.0.3)
|
||||||
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/metro': 56.0.2
|
'@expo/metro': 56.0.2
|
||||||
'@expo/metro-config': 57.0.13(expo@57.0.30)(typescript@6.0.3)
|
'@expo/metro-config': 57.0.13(expo@57.0.31)(typescript@6.0.3)
|
||||||
'@ungap/structured-clone': 1.3.3
|
'@ungap/structured-clone': 1.3.3
|
||||||
babel-preset-expo: 57.0.16(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo@57.0.30)(react-refresh@0.14.2)
|
babel-preset-expo: 57.0.16(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo@57.0.31)(react-refresh@0.14.2)
|
||||||
expo-asset: 57.0.20(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
expo-asset: 57.0.20(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
|
||||||
expo-constants: 57.0.22(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-constants: 57.0.22(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
expo-file-system: 57.0.7(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
expo-file-system: 57.0.7(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))
|
||||||
expo-font: 57.0.4(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-font: 57.0.4(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
expo-keep-awake: 57.0.2(expo@57.0.30)(react@19.2.3)
|
expo-keep-awake: 57.0.2(expo@57.0.31)(react@19.2.3)
|
||||||
expo-modules-autolinking: 57.0.16(typescript@6.0.3)
|
expo-modules-autolinking: 57.0.16(typescript@6.0.3)
|
||||||
expo-modules-core: 57.0.23(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
expo-modules-core: 57.0.24(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
pretty-format: 29.7.0
|
pretty-format: 29.7.0
|
||||||
react: 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))(@types/react@19.2.18)(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))(@types/react@19.2.18)(react@19.2.3)
|
||||||
react-refresh: 0.14.2
|
react-refresh: 0.14.2
|
||||||
whatwg-url-minimum: 0.1.2
|
whatwg-url-minimum: 0.1.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@expo/dom-webview': 57.0.1(expo@57.0.30)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/dom-webview': 57.0.1(expo@57.0.31)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
'@expo/metro-runtime': 57.0.17(@expo/log-box@57.0.4)(expo@57.0.30)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
'@expo/metro-runtime': 57.0.17(@expo/log-box@57.0.4)(expo@57.0.31)(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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
react-dom: 19.2.3(react@19.2.3)
|
react-dom: 19.2.3(react@19.2.3)
|
||||||
react-native-web: 0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
react-native-web: 0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
||||||
react-native-webview: 13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
react-native-webview: 13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3)
|
||||||
@ -18604,7 +18633,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
react-native-drawer-layout@4.2.10(react-native-gesture-handler@2.32.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3))(react-native-reanimated@4.5.1(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
react-native-drawer-layout@4.2.12(react-native-gesture-handler@2.32.0(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3))(react-native-reanimated@4.5.1(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@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))(@types/react@19.2.18)(react@19.2.3))(react@19.2.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
color: 4.2.3
|
color: 4.2.3
|
||||||
react: 19.2.3
|
react: 19.2.3
|
||||||
@ -20220,6 +20249,10 @@ snapshots:
|
|||||||
simple-plist: 1.3.1
|
simple-plist: 1.3.1
|
||||||
uuid: 7.0.3
|
uuid: 7.0.3
|
||||||
|
|
||||||
|
xcode@4.0.0:
|
||||||
|
dependencies:
|
||||||
|
simple-plist: 1.3.1
|
||||||
|
|
||||||
xdg-app-paths@5.5.1:
|
xdg-app-paths@5.5.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
os-paths: 4.4.0
|
os-paths: 4.4.0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user